用于RF收发器的简单基带处理器
备前的中间正交信号上经过BPSK调制和解调。因此,中间信号频率和数据的位速率是采样速率的八分之一。基带处理器模块及上述设计细节如图2和3所示。
图2. BBP发送功能框图
图3. BBP接收功能框图
发送器读取数据字节(字符宽度),并将其转换为带有表头或前同步码的数据包。将CRC添加到数据包末端。然后,对数据包数据进行加扰和串行处理。在连接到收发器之前,单个位数据相位调制余弦(I)和正弦(Q)函数。
在接收方向,离线模块恢复并跟踪时序间隔和调制信号的相对相位。该信息用于从输入的ADC样本中恢复串行数据。然后组装到数据包,并进行解扰。在数据包结束时,比较CRC,如果不匹配,则丢弃数据包。如果CRC匹配,数据传递给终端用户。
实现
BBP设计在硬件中实施和测试。硬件是两个评估板的组合:具有Zynq FPGA设备的Xilinx ZC706评估板,以及具有AD9361收发器的AD-FMCOMMS3-EBZ评估板。ADI提供支持该硬件的完整参考设计。该开源设计在主要工具版本中免费提供,可获得完全支持和更新。硬件详细信息参见下列URL:
ZC706AD-FMCOMMS3-EBZ
Zynq SOC
AD9361
ADI GitHub库
ZC706和AD-FMCOMMS3-EBZ HDL参考设计
AXI AD9361 IP
ADI参考设计是支持Linux®框架的嵌入式系统。包含围绕ARM®处理器的各种外设。AD9361设备连接到axi_AD9361 IP外设。它在RF设备和系统存储器之间传输原始采样数据。外设和设备通过Linux内核驱动程序进行初始化和控制。BBP则作为连接到axi_AD9361的另一个IP外设。出于历史原因,BBP IP命名为axi_xcomm2ip。Linux中的用户空间应用程序用于在系统之间控制、发送和接收数据。
在ADI参考设计中,在发送方向,axi_AD9361 IP连接到解包模块(util_upack),在接收方向,连接到打包模块(util_cpack)。在发送方向,BBP数据插入解包模块和AD9361内核之间。为了使其不影响默认数据路径,BBP支持可选的数据路径多路复用器,以选择解包数据源或BBP数据源。BBP允许参考设计数据路径作为默认路径,并仅在启用时选择BBP数据源。在接收方向,BBP仅连接到AD9361内核。参考设计数据路径不受影响。这允许框架不受妨碍地引导和设置系统。在系统设置后,启用BBP,可通过覆盖默认数据路径来进行数据传输。以ADI参考设计实施的BBP的框图如图4所示。
图4. BBP IP框图
本文中讨论的设计、初始化和数据传输使用一对这种硬件。设置仅需一对HDMI®监视器、键盘和鼠标及天线。系统彼此完全不同步,但需要相同设置。在每个方向,数据在不同载波上传输。设备1的发射载波频率和设备2的接收载波频率相同,但在另一个方向上不同。然而,如果回送中使用单个设备,发射和接收载波必须具有相同的频率。BBP的HDL设计采用ADI库模块。
表1. BBP寄存器映射
控制(微处理器)接口
AXI-Lite接口用于通过处理器控制和监控BBP。使用ADI公共库(hdl/library/common/up_axi.v)中的up_axi模块,可以轻松推断该接口模块。该模块将AXI-Lite接口转换为简单内存,如读取和写入总线。和任何其他ADI IP一样,添加内部寄存器和内存。寄存器映射如表1所示。
up_axi模块端口及其端口映射如下所述。up_rstn:AXI接口复位(异步低电平有效),连接到s_axi_aresetn。
up_clk:AXI接口时钟,连接到s_axi_aclk。
up_axi_*:AXI接口信号,连接到等效s_axi_*端口。
up_wreq, up_waddr, up_wdata, up_wack:内部写入接口,up_wreq信号与地址和数据一同置位,以指示写入请求。请求需要通过up_wack端口应答。
如下所示,实施简单的寄存器写入。
always @(negedge up_rstn or posedge up_clk)begin
if (up_rstn == 0) begin
up_wack up_reg0 end else begin
up_wack if ((up_wreq_s == 1’b1) && (up_waddr == UP_
REG0_ADDRESS)) begin
up_reg0 end
end
end
模块在二者之间执行地址转换。AXI接口使用字节地址,但内部总线使用DWORD地址。结果是,up_axi模块丢弃AXI地址的两个最低有效位,以生成内部DWORD地址。
up_rreq, up_raddr, up_rdata, up_rack:内部读取接口,up_rreq信号与地址一同置位,以指示读取请求。请求需要与读取数据一同通过up_rack端口应答。
如下所示,实施与上述相同的寄存器用于读取。
always @(negedge up_rstn or posedge up_clk)begin
if (up_rstn == 0) begin
up_rack up_rdata end else begin
up_rack if ((up_rreq_s == 1’b1) && (up_raddr == UP_
REG0_ADDRESS)) begin
up_rdata end else begin
up_rdata end
end
end
相同地址转换也适用于读龋读取数据仅在请求时驱动,否则设置为零。这是因为up_axi模块将单个读取数据从各个地址组传递到
- 针对基站和卫星通信的高线性度RF前端解决方案(07-10)
- 对比ADI两代TD-SCDMA射频IC得到的启示(05-02)
- 应用于基站的WiMAX CPE收发器介绍(07-11)
- 基站功率放大器的监控和控制(07-03)
- ADI RF信号源解决方案(10-20)
- 用于可靠的电容传感器接口的模拟前端IC测量方法(07-30)