

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

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

脉冲是控制量子计算机中量子比特的模拟信号。使用 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>

帧是一种软件抽象，既充当量子程序中的时钟，又充当相位。每次使用时，时钟时间都会递增，并且有状态的载波信号由频率定义。向量子比特传输信号时，帧决定量子比特的载波频率、相位偏移以及波形包络的发射时间。在 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>

端口是一种软件抽象，代表任何控制量子比特的 input/output 硬件组件。它可以帮助硬件供应商提供一个接口，用户可以通过该界面进行交互以操作和观测量子比特。端口有一个表示连接器名称的单个字符串。该字符串还显示了最小时间增量，该增量指定了我们可以定义波形的精细程度。

```
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_cn/braket/latest/developerguide/images/gaussianwaveform.png)


上图描绘了从 `GaussianWaveform` 中创建的高斯波形。我们选择的脉冲长度为 100 纳米，宽度为 25 纳米，振幅为 0.1（任意单位）。波形在脉冲窗口中居中。`GaussianWaveform` 接受布尔参数 `zero_at_edges`（图例中的 ZaE）。设置为 `True` 时，此参数会偏移高斯波形，使 t=0 和 t= `length` 处的点为零，并重新缩放其振幅，使最大值与 `amplitude` 参数相对应。