1、2023 年 2 月 25 日第 7 卷第 4 期现代信息科技Modern Information Technology Feb.2023 Vol.7 No.472722023.022023.02收稿日期:2022-10-26基于 ZYNQ7000 Linux 的数据发射系统设计和实现冯祥虎,肖世伟,杨美娜,杜军(哈尔滨师范大学 计算机科学与信息工程学院,黑龙江 哈尔滨 150025)摘 要:针对传统平台传输信号频率固定、开发过程复杂的情况,对信号发射系统进行了相关研究,设计一款基于 ZYNQ-7000 和 AD(AD9767)架构的嵌入式信号发射系统。该系统以 ZYNQ-7000 为数字信号
2、发射平台,搭配 AD 转换芯片,在 Linux操作系统下通过 AXI-DMA 的方式实现信号的自定义发射。系统数据传输速率快,发射信号频率可灵活自定义,开发前景良好,且具有集成度高、小型化的特点,为后续更多的功能开发提供了无限的可能。关键词:ZYNQ-7000;Linux 操作系统;AD 转换;AXI DMA 传输中图分类号:TN919.5 文献标识码:A 文章编号:2096-4706(2023)04-0072-03Design and Implementation of Data Transmission System Based on ZYNQ7000 LinuxFENG Xianghu,
3、XIAO Shiwei,YANG Meina,DU Jun(School of Computer Science and Information Engineering,Harbin Normal University,Harbin 150025,China)Abstract:Aiming at the conditions of fixed transmission signal frequency and complex development process of traditional platform,the signal transmission system is studied
4、 and an embedded signal transmission system based on ZYNQ-7000 and AD(AD9767)architecture is designed.The system uses ZYNQ-7000 as the digital signal transmission platform,with AD conversion chip,and achieves customized signal transmission through AXI-DMA under Linux operating system.The system has
5、fast data transmission rate,flexible customization of transmission signal frequency,good development prospect,high integration and miniaturization,which provides unlimited possibilities for further function development.Keywords:ZYNQ-7000;Linux operating system;AD conversion;AXI DMA transmission0 引 言
6、随着芯片行业的日渐壮大,芯片资源越来越丰富,能够搭载各种复杂的框架,从而能够灵活便捷地实现多种功能。软件无线电技术是一种基于软件定义的无线电广播通信技术,除了最基本的射频收发器和放大器、混频器以外,利用软件实现各种功能(如工作频段、调制解调类型、通信协议等),并使宽带模数转换器尽可能靠近天线。不同的功能对应着不同的软件模块,使用时只需调用相应的功能模块即可。不仅提高了系统的灵活性,还节约了时间成本。而 Linux 操作系统具有超强的灵活性,用户可以通过剪裁系统满足不同项目的需求。另外,它的开源性决定了它具有丰富的系统资源,硬件资源能够得到更加充分的利用。不仅如此,Linux 操作系统还可在特定
7、的硬件条件下进行安装,安装过程灵活便捷1。本文采用 Digilent 开发的 ZYBO 板作为主控板,搭配由AD9767 芯片构成的 AD 子板,借鉴软件无线电的原理,基于 Linux 操作系统在中频信号波段设计一款信号发射平台,实现能够自定义频率和波形的中频发射信号的功能,为后续的进一步开发奠定基础。1 硬件模块设计方案总体硬件设计图如图 1 所示。DOI:10.19850/ki.2096-4706.2023.04.019ZYNQDDRUARTARMAXI 总线接口可编程逻辑AD9767模拟信号图 1 硬件设计图1.1 ZYNQ-7000 芯片ZYNQ-7000 是 Xilinx 公司率先推
8、出的可扩展处理平台Zynq 系列,它包含一个双核 ARM Cortex-A9,而且它将 PS与 PL 端集成在一起,以充分使用它的资源,发挥其优势。该芯片的设计以 ARM 处理器(PS 端)为核心,以可编程逻辑电路(PL 端)作为扩展。采用由 Digilent 开发的低成本 ZYNQ 开发板 ZYBO 作为核心板卡,该板卡使用的是Xilinx XC7Z010-CLG400 芯片,含有两片 512 M 的 DDR3 内存(1 066 Mps 带宽),具有外部的 EEPROM 和 micro SD卡槽,还有 1G 以太网 PHY 和 5 个 PMOD 接口。ZYBO 板卡支持三种默认编程模式,分别
9、是 JTAG 编程模式、QSPI编程模式和 SD 卡编程模式2。1.2 数模转换芯片 AD9767AD9767 是一个双通道 14 位的 CMOS DAC,芯片内含有两个高品质内核,另外还集成一个基准电压源和一些数字接口电路,采用 48 引脚小型 LQFP 封装。器件提供出色的交流和直流性能,可以实现高达 125 M 的模数转换率,输出73732023.022023.02第 4 期电压的范围为 5 V 到-5 V3。1.3 AXI4 总线介绍AXI 总线用于维系 PS 与 PL 之间的通信,大大提高了ZYNQ-7000 的性能。AXI 是一种面向高性能、高带宽、低延迟的片内总线协议,该协议是
10、AMBA 3.0 协议中最重要的部分。无需借助复杂的桥接,该协议就可以实现高频率的操作。它有三种总线类型,分别是 AXI4、AXI4-Lite 和 AXI-Stream4,本次用到的总线类型主要是 AXI-Stream 总线。它的核心思想是流式处理数据,由于在传输过程中没有地址接口,这样就不涉及读写数据的概念,只有简单的发送与接收,能够实现无限制的数据突发传输,减少了延时,所以它支持面向高速数据流的传输。AXI-Stream 只能在 PL 中实现,不能直接与 PS 相连,因此必须通过 AXI-Lite 或 AXI4 进行转换,PL 部分也有相应的 AXI 总线接口,这样就能完成 PS 到 PL
11、 的互联。AXI-DMA 由 Xilinx 公司提供,为内存与 AXI4-Stream 外设之间提供高宽带的直接存储访问,scatter/gather 功能可将 CPU 从数据搬移任务中解放出来。1.4 AXI-DMA 介绍AXI DMA 相比于 AXI 内存映射,它提供了更高带宽的直接内存访问通道5。在 PL 端添加 AXI DMA IP 核,ZYNQ 芯片通过 AXI_HP 接口进行高速的数据传输,无需CPU 接入,提高了数据的访问效率。在简单的 DMA 模式下,当需要进行数据的高速传输时,只需配置相应的 DMA控制寄存器即可完成想要的功能。这种模式下,所占用的FPGA 资源较少,节省了不
12、必要的硬件开销。当外设发生请求时,DMA 控制器会向 CPU 发出总线请求,CPU 响应该信号后,释放总线控制权,DMA 控制器接管,进行DMA 操作。数据传输完成后,发出结束信号,释放总线,CPU 恢复对总线的控制。因此,当 PL 的外设与存储器之间需要高速的数据传输并且数据传输量偏大时,就可以选择这种模式。DMA 工作流程图如图 2 所示。外设对 DMA控制器发送请求DMA 向 CPU发送请求CPU 响应 DMA控制器的请求DMA 控制器回应外设DMA 传送结束DMA 传送进行DMA 控制器发出控制信号DMA 控制器发送内存地址图 2 DMA 工作流程1.5 硬件工程模块设计根据硬件设计方
13、案,基于 Vivado 2018.3 搭建工程。在Vivado 工程中主要添加了 Zynq-7000 的 IP 核、AXI-DMA IP核和 AD9767 IP 核。首先配置 ZYNQ 的 PS 端时钟、复位、uart 端口等,使 PS 部分能够搭载 Linux 操作系统正常工作。在 AD9767 的自定义 IP 核中增加一个深度为 1 024 的 FIFO模块,用于 DMA 和 ADC 的时钟对齐。由于 DMA 有传输中断的现象,若 ADC 的发射速度过快,会导致 ADC 无数据可发,从而使得 ADC 输出不连续。因此增加一个 FIFO模块,在 DMA 传输中断时,ADC 能在下一次 DMA
14、 传输之前有剩余的数据可供传输,保证输出模拟信号的连续性。AXI-DMA IP 核负责通过 AXI 接口从主机的 DDR 中获取已经定义好的数字信号,然后将数据流搬运至 AD9767 IP 核的FIFO 当中,这样 AD 模块就能源源不断地进行模数转换,产生连续的模拟信号。其中 dac_data13:0 用于发送 FIFO 中存储的 14 位数字信号。AD9767 IP 核引脚和 RTL 实现如图 3、图 4 所示。ad9767_send_0ad9767_send_v1.0(Pre-Production)S00_AXIs00_axisdac_clkdac_rst_ndac_data13:0wr
15、ts00_axis_aresetns00_axis_aclks00_axi_aclks00_axi_aresetn图 3 AD9767 IP 核引脚图ad9767_send_v1_0_S00_AXI_instad9767_send_v1_0_S00_AXIsend_instad9767_senderS_AXIS_CLKS_AXIS_treadyS_AXIS_tvaliddac_clkdac_rst_nsend_startS_AXIS_RSTNS_AXIS_tdata15:0dac_data13:0S_AXIS_tready_iRTL_INVI0Odac_buf_rd_iRTL_ANDI0I1O
16、=dac_buf_rd0_iRTL_EQOI01:0I11:0V=B01dac_data_iRTL_MUXI0S=2b01I1S=defaultOS1:0dac_data_reg13:0RTL_REG_ASYNCCCECLRDQfifo_wr_data_reg15:0RTL_REG_ASYNCCCECLRDQfifo_wr_en_regRTL_REG_ASYNCCCLRDQfifo_wr_en0_iRTL_ANDI0I1Orst0_iRTL_INVI0Osend_start_d0_regRTL_REG_ASYNCCCLRDQsend_start_d1_regRTL_REG_ASYNCCCLRDQsend_start_d2_regRTL_REG_ASYNCCCLRDQstate_iRTL_MUXI01:0V=B01,S=2b00I11:0S=defaultO1:0S1:0state_i_0RTL_MUXI0S=2b00I1S=2b01I2S=defaultOS1:0state_reg1:0RTL_REG_ASYNCCCECLRDQstate0_iRTL_ANDI0I1Ostate1_iR