提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
FPGA——adc采样发送到上位机
前言
本项目使用FPGA-ZYNQ-7020采集8通道ADC数据,通过以太网上传到上位机显示波形
PL部分包括数据的获取与处理,数据从PL传递到PS
PS部分包括以太网的发送,由PL到PS的中断触发
本文章不详细讲解背后原理 但保证每一步足够详细,跟着就能实现。
本人FPGA平台 大磊FPGA7020开发板 vivado2020.2 vitis2020.2 匿名上位机公开版
一、PL部分
该部分主要有 ① PL端的block design;② PL端IP-------axi_lite自定义 用于PL-PS端数据交互
1.PL端AXI_Lite IP自定义
打开vivado,新建工程 注意,此时无需勾选该选项
选择芯片XC7Z020CLG_400并进入主界面,读者可根据自己开发板自行选择芯片。
开始新建IP 如图所示
第7步:我将寄存器配置为14个,包括有,8个PL→PS的adc数据,3个PS→PL的PID数据,3个PID数据的检查(PL→PS),因为不知道实际读取到了没有,需要检查一下。
第9步,选择 edit-ip 即编辑IP。我们需要对IP进行编辑才可以使用。
点击finish后会自动打开我们刚创建好的AXI_Lite这个IP的vivado工程。如图
第11步,打开ip_axi_lite_v1_0.v文件,准备在如图所示位置添加数据接口
根据前文所说,有8+3个 PL→PS的数据,3个PS→PL的数据,
所以,添加接口代码如下
第11步结束
第12步 还是在ip_axi_lite_v1_0.v文件中,在文件的下边 找到ip_axi_lite_v1_0_S00_AXI的例化(红色箭头),并准备在如图所示蓝色箭头位置添加接口代码
接口代码
.A1_data0(A1_data0),
.A1_data1(A1_data1),
.A3_data0(A3_data0),
.A3_data1(A3_data1),
.B1_data0(B1_data0),
.B1_data1(B1_data1),
.B3_data0(B3_data0),
.B3_data1(B3_data1),
.PL_PPPPP(PL_PPPPP),
.PL_IIIII(PL_IIIII),
.PL_DDDDD(PL_DDDDD),
.PS_PPPPP(PS_PPPPP),
.PS_IIIII(PS_IIIII),
.PS_DDDDD(PS_DDDDD),
如图所示
第12步结束
第13步:打开ip_axi_lite_v1_0_S00_AXI.v文件 在如图所示位置copy第11步中代码,最后如图所示
第13步结束
第14步,打开ip_axi_lite_v1_0_S00_AXI.v文件,在文件下方约四百多行,修改为如图所示
可以理解为,11个数据在这里从PL流到PS
在文件下方约三百多行位置 修改为如图所示
可以理解为,3个数据在这里从PS流到PL
第14步结束,AXI_Lite IP的代码部分修改完成。
第15步,完成IP的封装 如图所示
可以在图中看到11个input 与 3 个 output,点击review and package
第15步结束,IP封装完成。PL与PS数据交互的桥梁已经打通。当然,这只是一条乡间小路,想要高速公路可以使用AXI_DMA等,我不会,还没学。
2.PL端block_design
1:打开vivado,新建工程,勾选可拓展,选择芯片平台,并creat a block design。
注意
block已经新建完成
2 向block中添加自己使用到的ip(注意添加IP路径),我用到了
①adc驱动(all_ip_0 自编)
②数据滤波(adc_filter_0自编/adc_data_handle_0自编)
③axi_lite (ip_axi_lite_0自编/axi_transfer_0自编)
④clk
⑤ PS (ZYNQ7)
注意:clk按自己需求配置即可,我配置为50M ,是PLL,locked是我当成复位来使用的。
PS端的配置为①:以太网配置(电压1.8v,开启MDIO,引脚速度为fast,参考正点原子即可)②:uart0配置(参考正点原子即可) ③ 中断配置(如图)④ DDR配置(参考正点原子或自身开发板的说明)⑤ QSPI配置(参考原子)
3:按自己的信号走向连接线,我的如图
注意,ip_concat是将两个中断连接到了PS的中断上,如果只有一个中断信号来源,比如如果我图中只有一个data_valid, 那么直接将data_valid连接到IRQ_F2P即可。
3 如图所示
完成后如图所示
4 此时,Platform setup依然有问题,点击
5 查看分配的AXI地址,点击address editor ,如图
到此,PL端的Block design设计暂时结束,有关PID的6个引脚暂时没有用到,就先放着,等我写到下边再回来用这几个。
6 如图所示,步骤三和步骤四需要时间,请内耐心等待,结束后如下图所示
7:自行配置引脚,并generate bitstream。
8:准备导出XSA文件到vitis
修改文件位置,我一般在vivado工程下新建一个vitis文件夹内放置xsa文件 next完之后直接finish
9:打开刚才的vitis文件夹,看xsa文件是否生成成功。
10,加载vitis并选择刚才的vitis文件夹作为workspace
11:新建vitis工程
create application project →next→create a new platform hardware(xsa)→browse(选择刚才生成的xsa文件)→next→给工程命名(adc_pl_ps_eth)→ next → next → 选择 Empty Application → Finish
新建完成如图所示
二、PS部分
前言;硬件平台的搭建已经结束,接下来进行PS部分的配置
1.基本配置
首先配置BSP
PARAMETER mem_size = 524288
PARAMETER memp_n_pbuf = 2048
PARAMETER memp_n_udp_pcb = 1024
PARAMETER n_rx_descriptors = 256
PARAMETER n_tx_descriptors = 256
PARAM