

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Braket의 펄스 제어
<a name="braket-pulse-control"></a>

펄스는 양자 컴퓨터의 큐비트를 제어하는 아날로그 신호입니다. Amazon Braket의 특정 디바이스를 사용하면 펄스 제어 기능에 액세스하여 펄스를 사용해 회로를 제출할 수 있습니다. OpenQASM 3.0을 사용하여 Braket SDK를 통해 또는 Braket API를 통해 직접 펄스 제어에 액세스할 수 있습니다. 먼저 Braket의 펄스 제어에 대한 몇 가지 주요 개념을 소개합니다.

**Topics**
+ [프레임](#braket-frame)
+ [포트](#braket-port)
+ [파형](#braket-waveform)
+ [Hello Pulse 작업](braket-hello-pulse.md)
+ [펄스를 사용하여 네이티브 게이트에 액세스](braket-native-gate-pulse.md)

## 프레임
<a name="braket-frame"></a>

프레임은 양자 프로그램 내에서 시계 역할과 위상 역할을 모두 수행하는 소프트웨어 추상화입니다. 시계 시간은 각 사용량과 주파수로 정의된 상태 저장 캐리어 신호에 따라 증가합니다. 신호를 큐비트로 전송할 때 프레임은 큐비트의 캐리어 주파수, 위상 오프셋 및 파형 엔벨로프가 방출되는 시간을 결정합니다. Braket Pulse에서 프레임 구성은 디바이스, 주파수 및 위상에 따라 달라집니다. 디바이스에 따라 사전 정의된 프레임을 선택하거나 포트를 제공하여 새 프레임을 인스턴스화할 수 있습니다.

```
from braket.aws import AwsDevice
from braket.pulse import Frame, Port

# Predefined frame from a device
device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3")
drive_frame = device.frames["Transmon_5_charge_tx"]

# Create a custom frame
readout_frame = Frame(frame_id="r0_measure", port=Port("channel_0", dt=1e-9), frequency=5e9, phase=0)
```

## 포트
<a name="braket-port"></a>

포트는 큐비트를 제어하는 모든 입력/출력 하드웨어 구성 요소를 나타내는 소프트웨어 추상화입니다. 이를 통해 하드웨어 공급업체는 사용자가 큐비트를 조작하고 관찰하기 위해 상호 작용할 수 있는 인터페이스를 제공할 수 있습니다. 포트는 커넥터의 이름을 나타내는 단일 문자열로 특성화됩니다. 또한 이 문자열은 파형을 얼마나 세밀하게 정의할 수 있는지를 지정하는 최소 시간 증분을 표시합니다.

```
from braket.pulse import Port

Port0 = Port("channel_0", dt=1e-9)
```

## 파형
<a name="braket-waveform"></a>

파형은 출력 포트에서 신호를 방출하거나 입력 포트를 통해 신호를 캡처하는 데 사용할 수 있는 시간 종속 엔벨로프입니다. 복소수 목록을 통해 또는 하드웨어 공급자로부터 목록을 생성하는 파형 템플릿을 사용하여 직접 파형을 지정할 수 있습니다.

```
from braket.pulse import ArbitraryWaveform, ConstantWaveform
import numpy as np

cst_wfm = ConstantWaveform(length=1e-7, iq=0.1)
arb_wf = ArbitraryWaveform(amplitudes=np.linspace(0, 100))
```

 Braket Pulse는 상수 파형, 가우시안 파형, DRAG(Derivative Removal by Adiabatic Gate) 파형을 포함한 표준 파형 라이브러리를 제공합니다. 다음 예제와 같이 `sample` 함수를 통해 파형 데이터를 검색하여 파형의 모양을 그릴 수 있습니다.

```
from braket.pulse import GaussianWaveform
import numpy as np
import matplotlib.pyplot as plt

zero_at_edge1 = GaussianWaveform(1e-7, 25e-9, 0.1, True)
# or zero_at_edge1 = GaussianWaveform(1e-7, 25e-9, 0.1)
zero_at_edge2 = GaussianWaveform(1e-7, 25e-9, 0.1, False)

times_1 = np.arange(0, zero_at_edge1.length, drive_frame.port.dt)
times_2 = np.arange(0, zero_at_edge2.length, drive_frame.port.dt)

plt.plot(times_1, zero_at_edge1.sample(drive_frame.port.dt))
plt.plot(times_2, zero_at_edge2.sample(drive_frame.port.dt))
```

![\[ZaE = True(하단 곡선) 및 ZaE = False(상단 곡선)의 두 가지 경우에 대해 시간 경과에 따른 진폭을 보여주는 그래프입니다. 곡선은 0.10a. u.의 진폭으로 약 0.5초에 정점을 이루는 종 모양을 갖습니다.\]](http://docs.aws.amazon.com/ko_kr/braket/latest/developerguide/images/gaussianwaveform.png)


위의 이미지는 `GaussianWaveform`에서 생성된 가우시안 파형을 보여줍니다. 펄스 길이 100ns, 너비 25ns, 진폭 0.1(임의 단위)을 선택했습니다. 파형은 펄스 창 중앙에 위치합니다. `GaussianWaveform`은 부울 인수`zero_at_edges`(범례의 ZaE)를 허용합니다. `True`로 설정하면 이 인수는 t=0 및 t=`length`의 점이 0이 되도록 가우시안 파형을 오프셋하고 최대값이 `amplitude` 인수에 해당하도록 진폭의 크기를 재조정합니다.