

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon Braket 上的脈衝控制
<a name="braket-pulse-control"></a>

脈衝是控制量子電腦中 qubit 的類比訊號。透過 Amazon Braket 上的特定裝置，您可以存取脈衝控制功能，以使用脈衝提交電路。您可以透過 Braket SDK、使用 OpenQASM 3.0 或直接透過 Braket APIs 存取脈衝控制。首先，介紹在 Braket 中用於脈衝控制的一些關鍵概念。

**Topics**
+ [影格](#braket-frame)
+ [連接埠](#braket-port)
+ [波形](#braket-waveform)
+ [使用 Hello Pulse](braket-hello-pulse.md)
+ [使用脈衝存取原生閘道](braket-native-gate-pulse.md)

## 影格
<a name="braket-frame"></a>

框架是一種軟體抽象，可同時做為量子程式和階段中的時鐘。每個用量的時鐘時間和由頻率定義的具狀態電信業者訊號都會遞增。將訊號傳輸到 qubit 時，影格會決定 qubit 的載波頻率、相位移，以及發出波形信封的時間。在 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>

連接埠是一種軟體抽象，代表控制 qubit 的任何輸入/輸出硬體元件。它有助於硬體供應商提供一個界面，使用者可以與之互動以操作和觀察 qubit。連接埠的特徵是代表連接器名稱的單一字串。此字串也會公開最小時間增量，指定我們可以定義波形的精細程度。

```
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) 波形的衍生移除。您可以透過 `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.5 秒，振幅為 0.10 a. u.\]](http://docs.aws.amazon.com/zh_tw/braket/latest/developerguide/images/gaussianwaveform.png)


上圖描述從 建立的高斯波形`GaussianWaveform`。我們選擇 100 ns 的脈衝長度、25 ns 的寬度，以及 0.1 的振幅 （任意單位）。波形以脈衝視窗為中心。 `GaussianWaveform`接受布林引數 `zero_at_edges`（圖例中的 ZaE)。設為 時`True`，此引數會偏移高斯波形，讓 t=0 和 t=`length` 的點位於零，並重新調整其振幅，讓最大值對應至`amplitude`引數。