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
### 回答1: SPI (Serial Peripheral Interface) 是一种串行外设接口标准,它通常用于在微控制器或微处理器与外部设备之间进行高速数据传输。ADC (Analog-to-Digital Converter) 是模数转换器的缩写,用于将模拟信号转换为数字信号。FPGA (Field-Programmable Gate Array) 是一种可编程的逻辑芯片,它由大量可编程的逻辑元件和存储单元组成。 在实际应用中,SPI、ADCFPGA常常结合使用。SPI接口可以用于将ADC的输出信号传输给FPGA进行数字处理。ADC将模拟信号转换为数字信号后,通过SPI接口将数据传输给FPGA,以供进行进一步的分析、处理和控制。 FPGA作为可编程的逻辑芯片,可以根据具体需求进行编程,实现各种不同的功能。在这种结构中,FPGA可以接收SPI接口传来的ADC数据,并根据预设的逻辑对数据进行处理。FPGA具有并行处理的优势,能够高效地对大量数据进行实时处理。 例如,当需要对传感器采集的模拟信号进行数字滤波、数字信号处理、数据压缩等操作时,可以将ADC输出的数据传输给FPGA,使用其灵活的逻辑结构和强大的计算能力进行实时处理。同时,FPGA的可编程性也使得系统可以根据不同的需求进行灵活的修改和升级。 总的来说,SPI、ADCFPGA是一种常见的组合,可以用于实现高速、高精度的模拟信号采集和数字信号处理。这种结构广泛应用于工业自动化、通信、医疗等领域,具有较好的性能和可扩展性。 ### 回答2: SPI(串行外设接口)是一种通信协议,用于在数字系统中传输数据ADC(模数转换器)是一种将连续模拟信号转换为数字信号的设备,它可以被连接到FPGA(现场可编程门阵列)。 SPI ADC是一种集成了SPI接口的ADC,它可以直接与FPGA进行通信。FPGA是一种可编程的逻辑芯片,可以通过编程来实现不同的电路功能。 使用SPI ADC连接到FPGA的好处之一是,ADC可以将模拟信号转换为数字信号,并通过SPI接口将其传输到FPGAFPGA可以通过编程来处理这些数字信号,实现各种功能,例如滤波、数据分析等。 SPI ADC通常具有多个通道,因此可以同时转换多个模拟信号。这对于需要同时处理多个传感器数据的应用非常有用。FPGA可以通过SPI接口一次性接收多个通道的数据,并使用编程逻辑进行处理。 另一个优点是SPI ADC的接口简单易用。SPI协议定义了如何进行数据传输和通信的规则,因此FPGA只需按照这些规则编程即可与SPI ADC进行通信。 总之,SPI ADCFPGA之间的连接可以实现模拟信号的数字转换和快速数据处理。这种连接对于需要高速、高精度和多通道采集数据的应用非常有用,例如传感器网络、音频处理等。 ### 回答3: SPI(Serial Peripheral Interface)是一种串行外围设备接口,ADC(Analog-to-Digital Converter)是模拟到数字转换器,FPGA(Field-Programmable Gate Array)是可编程逻辑门阵列。 SPI ADC FPGA是一种常见的组合,通常用于将模拟信号转换为数字信号并进行处理。SPI是一种通信协议,可以实现FPGAADC之间的数据传输。 ADC负责将来自传感器或其他模拟源的连续时间模拟信号转换为离散时间数字信号。这些数字信号可以被FPGA读取和处理。SPI接口是一种简单但有效的方式来将ADCFPGA连接起来。 在SPI通信中,FPGA充当主设备(Master),而ADC则为外围设备(Slave)。FPGA通过向ADC发送时钟信号、数据信号和控制信号来控制数据的传输。ADC接收到这些信号后,会将模拟信号转换为数字信号,并将其通过SPI接口发送FPGAFPGA接收到ADC发送的数字信号后,可以对其进行进一步的处理和分析。FPGA可以实现多种功能,如滤波、数据处理、存储等。通过使用FPGA,可以实现高速、高精度的信号处理和系统控制。 总之,SPI ADC FPGA是一种常见的组合,可以实现模拟信号的数字化和信号处理。通过FPGA的可编程性,可以根据实际应用需求进行灵活的设计和开发。这种组合在许多领域,如测量仪器、通信系统、工业控制等方面得到了广泛应用。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值