当前位置: 首页 > news >正文

校园网站规划与建设申请百度账号注册

校园网站规划与建设,申请百度账号注册,中国机械加工信息网,网站内容由什么组成部分组成1、实验内容 现在很多电脑PC或者工控机主板上面都集成了PCIe插座,可以直接插入PCIe板卡,优点是卡槽标准,插拔简单,传输速度极快。对于高速采集测试测量领域,PCIe用途非常广泛,最大极限带宽可以到6.6GB/s,这个速度可以直接用来做高速示波器卡、数字化仪、RF射频板卡和视频…

1、实验内容
现在很多电脑PC或者工控机主板上面都集成了PCIe插座,可以直接插入PCIe板卡,优点是卡槽标准,插拔简单,传输速度极快。对于高速采集测试测量领域,PCIe用途非常广泛,最大极限带宽可以到6.6GB/s,这个速度可以直接用来做高速示波器卡、数字化仪、RF射频板卡和视频采集卡了。

本节实验我们准备采用黑金提供的AN108模块(AD9280),上面有一颗8位高速ADC芯片,结合PCIe总线实现一个采样率(最大32MS/s)可调节的PCIe数据采集卡,直接插到PC或者工控机或者工业树莓派上使用。

下面我们先来回顾一下PCIe接口和AN108硬件模块等相关内容。

黑金设计的ARTIX7-100T FPGA开发板(AX7103)上已经把PCIe接口引出来了,做成了X4接口模式,如图61-1所示。 在这里插入图片描述
图61-1:带PCIe X4接口的Aritx7 FPGA开发板(黑金AX7103)

用户可以直接将这个开发板插到工控机或者电脑主板上的PCIe母座里面,由于PCIe不支持热插拔,所以用户接入的时候,一定把机箱电源关掉,防止烧坏板卡;当然,如果用户闲PCIe插拔比较麻烦,还可以到淘宝上买一根PCIe延长线,将机箱里面的PCIe母座引出来,方便做实验。

由于我们已经把复杂的PCIe DMA通信协议封装成了LabVIEW FPGA下的Socket CLIP,用户只需要根据四线握手协议来调用对应的CLIP端口就可以了。 这部分我们在前面几节里面已经介绍过了。

本节PCIe DMA通信实验重点向大家讲解以下8个方面的内容:

  1. PCIe DMA通信下位机(FPGA)应用程序开发。
  2. PCIe 硬件驱动加载与识别(INF文件)。
  3. PCIe DMA通信上位机(PC)应用程序开发。
  4. FPGA内部多线程之间的数据交互与数据缓冲:FIFO。
  5. FPGA内部不同速率之间的匹配机制:四线握手。
  6. PCIe DMA通信IP核全双工通信的读写机制。
  7. PCIe DMA通信数据格式和类型转换(大小端与字节数组)(下行和上行都是小端)。
  8. 8位ADC芯片的数据读取方法(参考本书前面的“实验14:8位ADC数据采集实验-AD9280”)

关于PCIe DMA下位机(FPGA)通信应用程序开发,指的是FPGA芯片中的代码编写。譬如,本节实验我们准备开发一个基于PCIe 传输的高速采集卡,将ADC采集到的数据通过PCIe DMA实时发送到PC上,这段代码我们可以利用图形化的LabVIEW编程语言来开发,替代传统的VHDL/Verilog语言,这里我们称之为下位机LabVIEW FPGA编程。本节实验下位机FPGA程序里面的用户线程,我们会利用AD9280芯片(8位)采集外部真实的Sine正弦信号,然后发送到上位机进行显示或者流盘。

关于PCIe 硬件驱动加载与识别,可以参考前面7.3.2节里面的内容,不熟悉的用户一定要看一下,因为这个起到承上启下的作用。

关于PCIe DMA通信上位机(PC端)应用程序开发,指的是运行在windows或者linux系统中的LabVIEW上位机程序,用户可以通过LabVIEW调用我们封装好的FPGA PCIe lvlib库里面的多态VI与下位机FPGA进行PCIe DMA通信交互。我们把上位机收发线程分成两个独立的while循环来处理,这样调试起来方便一些。当然,如果有些用户不会LabVIEW,也可以使用C\C++\C#\Python来调用我们封装好的DLL驱动进行上位机程序开发。

关于FIFO的概念和操作,可以参考前面的“实验4-串口通信”,里面有详细的介绍和演示过程。

关于四线握手制的工作过程和原理,也可以参考前面的“实验4-串口通信”,这里不再赘述。

关于PCIe DMA通信IP核全双工通信机制,我们会通过两个独立的收发线程来演示。发送和接收可以同时并行执行,而且是8个上行和8个下行同时全双工工作。

最后一个需要注意的问题是,PCIe DMA下位机跟上位机之间的通信数据格式和数据类型,需要匹配上才能正确解析,因为Xillybus底层IP核走的是小端格式,而上位机LabVIEW里面默认是大端格式,因此,在前面7.4节里面,强调了FPGA里面数据格式转换的重要性;另外,模拟或者采集的AD波形,对应的数据类型跟PCIe内部的字节数组之间需要通过“强制类型转换”函数转换一下才能看到正确的波形曲线。

下面带着大家一起,利用LabVIEW编写符合标准四线握手制的PCIe DMA总线收发FPGA程序,来实现一个基于FPGA的PCIe 8位数据采集卡(最大采样率32MS/s,采集电压范围±5V),采集外部真实的Sine正弦信号,通过PCIe总线发送给上位机PC,同时还能接收上位机PC下发的指令和参数对FPGA板卡进行采样率和使能采集等控制。

2、硬件资源

2.1、先回顾一下PCIe总线接口方面的硬件知识

黑金设计的带PCIe接口的ARTIX7开发板,内部走线连接示意图如图61-2所示。可以看出,PCIe时钟走线是经过AC耦合的。一共使用了4对差分收发总线,所以最大位宽支持X4模式。 在这里插入图片描述
图61-2:Aritx7 FPGA开发板内部的PCIe走线连接示意图

打开本书配套的光盘/云盘里面1号文件夹里面的AX7103底板原理图,然后找到PCIe接口这部分原理图,如图61-3所示。 在这里插入图片描述
图61-3:打开PCIe底板原理图,找到PCIe总线互联的3大类引脚

这些引脚其实可以分成3类:PCIe总线复位引脚;PCIe总线差分时钟输入引脚;PCIe总线不同位宽的差分数据引脚。这3类引脚在前面图7-52里面都定义过了,如果用户自己画的板子或者网上买的其他家的板子引脚定义不一样,那么照葫芦画瓢对应修改一下就可以了。

然后,打开插在AX7103开发板上的核心板AC7100原理图,找到PCIe复位引脚,就是J20,如图61-4所示。接着需要寻找一下PCIe的差分时钟引脚,这个引脚非常重要,如果找不到或者设置不对,那么PCIe总线肯定初始化不了;在核心板原理图上可以看到有两个MGT_CLK信号,但是实际接到PCIe插槽的是MGT_CLK1,也就是F10,如图61-5所示。 在这里插入图片描述
图61-4:在AC7100核心板上找到PCIe复位引脚:J20 在这里插入图片描述
图61-5:在核心板AC7100原理图上找到PCIe差分时钟输入引脚:F10

但是细心的用户可能发现了,黑金的AC7100核心板在画板子布局布线的时候,将PCIe X4模式下的数据收发差分对引脚0和1弄反了,2和3是对的,如图61-6所示。这个细节导致无数用户付出了惨痛代价。很多用传统Verilog开发FPGA的用户,看原理图不仔细,或者说黑金太随意了,为了自己的布局方便,把0跟1故意调换了一下,那么在Vivado里面默认的PCIe引脚就不对了,必须要人为调整才行。 在这里插入图片描述
图61-6:仔细检查一下PCIe X4或者X8数据差分对顺序是否正确

为了方便我们广大LabVIEW FPGA用户开发,我们特地在顶层xdc里面将PCIe X4全部引脚定义拉出来,用户只要自己根据实际情况修改就行,而无需在网表里面定义,简化了编程的繁琐,也避免了一些不必要的错误。希望这一点能够引起开发者的注意!!!重要的事情说三遍,0跟1互换了,所以引脚定义也要变,如图61-7所示。 在这里插入图片描述
图61-7:PCIe数据差分对引脚要跟原理图保持一致

2.2、再回顾一下8位高速ADC芯片AD9280相关的硬件内容

本节实验需要用到的ADC采集模块是黑金设计的AN108高速AD/DA模块,这款模块上面同时集成了AD和DA芯片,可以直接插到AX7103开发板的扩展口上面,简单易用。

本节实验我们开发的是PCIe采集卡,所以会用到AN108模块上的AD芯片9280,另外一块DA芯片我们在后续的PCIe函数信号发生器板卡实验里面会用到。

AD9280芯片位于AN108的左下角,如图61-8所示。精度不高,只有8位,但是采样率很高,最高可以达到32MS/s。 在这里插入图片描述
图61-8:AN108模块上的AD9280芯片实物图

AD9280这款芯片的内部结构图,如图61-9所示。可以看出,芯片内部有个1V的基准参考电压,所以这款芯片的输入范围是02V。对用户来说,只要给定一个CLK采样时钟信号,然后直接读取Data0Data7引脚上的数据就可以了。 在这里插入图片描述
在这里插入图片描述
图61-9:AD9280芯片内部结构图

打开本书配套的光盘/云盘1号文件夹里面的AN108模块原理图,找到AD9280芯片这部分接线原理图,如图61-10所示。 在这里插入图片描述
图61-10:AD9280电路原理图

AD9280芯片上的AIN输入范围比较小,只有0~2V,很难满足实际应用,所以我们还需要在信号进入AD芯片之前,加上一片AD8065芯片构建前端衰减电路,如图61-11所示。 在这里插入图片描述
图61-11:AD8065衰减电路原理图

AD8065芯片可以将AN108模块BNC接口的实际输入电压范围-5V-+5V(10Vpp)衰减后变成满足 AD9280芯片所能接受的输入电压范围(0~2V)。二者之间的转换公式如下。 在这里插入图片描述
 当AN108模块BNC端的输入电压Vin=5(V)的时候,衰减后到AD的信号Vad=2(V)。
 当AN108模块BNC端的输入电压Vin=-5(V)的时候,衰减后到AD的信号Vad=0(V)。

黑金在设计AN108这个模块的时候,1脚和2脚分别表示GND和VCC,所以在把这个模块插入到AX7103开发板右上角的40针扩展口(J11)上,模块的Pin1脚和开发板扩展口的 Pin1 脚要对齐,如图61-12所示。 在这里插入图片描述
图61-12:AN108模块的1脚和2脚必须与主板一致

通过查看AN108模块与AX7103扩展口之间的线序关系,可以发现AD9280的8位数据引脚和转换时钟CLK引脚分别占用的是扩展口J11的21~29号引脚,如图61-13所示。 在这里插入图片描述
图61-13:AN108模块上的AD芯片9280占用的扩展口引脚序号
然后在AX7103主板原理图里面找到扩展口J11上面的这些引脚序号,如图61-14所示。通过与FPGA芯片引脚逐一对比可以找到二者之间的映射关系,如图61-15所示。 在这里插入图片描述
图61-14:FPGA开发板上的扩展口引脚序号图 在这里插入图片描述
图61-15:AD9280芯片与FPGA引脚映射关系

3、FPGA PCIe DMA下位机ADC采集程序开发(AD9280)

下面,我们带着用户一起利用LabVIEW开发一个FPGA PCIe DMA下位机FPGA数据采集应用程序,这个程序可以下载到FPGA芯片里面运行,为了更加全面形象的展示PCIe总线通信的魅力,我们模拟一个PCIe高速数据采集卡,将8位AD芯片采集到的Sine正弦信号通过64位位宽的PCIe DMA上行通道ch0发送到上位机进行显示,上位机通过8位位宽的下行通道ch4下发不同的指令参数来控制FPGA开始采集、停止采集和调整采集频率。以此向大家展示FPGA与PC之间通过PCIe总线进行双向高速通信的过程。

提醒:之所以使用64位位宽的ch0作为ADC数据上行通道,而没有选择位宽刚好是8位的ch4/5/6/7,是因为我们提供的B版本PCIE Data CLIP模板里面,ch4/5/6/7通道的吞吐率比较低,只有几MB/s,而AD9280芯片的最大采样率可以到32MS/s,换算成字节为单位,也就是32MB/s;当然我们可以在Xillybus官网上重新修改每个通道的带宽,但是需要重新编译。为此,这里我们给用户演示另外一种实现方式,就是并转串,将ADC每个采样周期读取的8位数据(U8)按照小端格式(因为PCIe CLIP通道默认是小端格式)拼接成64位(U64),再经过ch0发送到上位机PC,因为ch0的带宽是720MB/s,可以完全胜任AD9280的极限采样率。

3.1、LabVIEW FPGA项目创建
1)启动LabVIEW 2015 SP1软件,用户可以点击左上角的“文件>>新建”或者直接点击“新建”下方的“项目”选项。这里我们也可以直接打开前面实验里面已经创建好的“My_FPGA_Starter_Board_Artix7_AX7103.lvproj”这个项目,如图61-16所示。 在这里插入图片描述
图61-16:打开前面创建过的LabVIEW项目

由于本章我们引入了PCIe总线通信,之前创建的FPGA终端里面没有添加PCIe Socket CLIP,所以,我们需要先右击“我的电脑”选择新建“终端和设备”,如图61-17所示;然后再在弹出来的FPGA终端选择列表里面,选择一个带PCIe X4接口8通道的ARTIX7-100T FPGA终端设备,如图61-18所示。其中,B版本的PCIe总线带宽要比A版本的高一倍,也就是800MB/s,本书我们选择B版本进行测试,A版本感兴趣的用户可以自行测试。点击“确定”按钮后,创建好的ARTIX7 PCIe FPGA终端设备如图61-19所示。

提醒:新建含有FPGA PCIe Socket CLIP的过程,在前面实验54里面已经创建过了,所以这里可以忽略,如果是用户自己新建的项目,那么参考上面的步骤走一遍就可以了。 在这里插入图片描述
图61-17:右击我的电脑选择新建“终端和设备” 在这里插入图片描述
图61-18:选择一个PCIe X4 8通道的B版本ARTIX7-100T FPGA终端
在这里插入图片描述
图61-19:创建成功后的ARTIX7 FPGA PCIe终端设备

2)右击FPGA终端,选择“新建>>虚拟文件夹”,如图61-20所示。将添加到FPGA终端里面的虚拟文件夹,重命名为“实验61-PCIe DMA+8位ADC(模拟数据采集卡)”,如图61-21所示。 在这里插入图片描述
图61-20:右击FPGA终端,新建一个虚拟文件夹 在这里插入图片描述
图61-21:将虚拟文件夹重命名为“实验61-PCIe DMA+8位ADC(模拟数据采集卡)”

3.2、LabVIEW FPGA EIO节点与FIFO创建

1) 新建按键KEY和LED灯的EIO节点

(1)由于本节所有的PCIe通信实验里面都会用到LED指示灯和按键KEY等EIO资源,所以,我们可以在FPGA终端上面右击,选择“新建>>FPGA I/O”,如图61-22所示。然后在弹出来的I/O资源选择对话框里面,找到AX7103 FPGA开发板上的LED和KEY对应的管脚资源,如图61-23所示。单击对话框中间的“向右箭头”按钮,将这些引脚对应的EIO节点添加到右侧的FPGA资源列表里面,如图61-24所示。

提醒:实际上LED灯和按键KEY的EIO节点在前面实验54里面已经创建过了,所以这里可以忽略,如果是用户自己新建的项目,那么参考上面的步骤做一遍就可以了。 在这里插入图片描述
图61-22:新建FPGA I/O EIO节点 在这里插入图片描述
图61-23:找到AX7103开发板上LED指示灯和KEY按键对应的EIO节点 在这里插入图片描述
图61-24:将LED和KEY EIO节点全部添加到右侧的可用列表中

点击“确定”按钮后,这些EIO节点会被添加到FPGA终端项目里面,如图61-25所示。 在这里插入图片描述
图61-25:LED灯和KEY按键的EIO节点被添加到FPGA终端项目里面
(在前面做实验54的时候已经添加过了)

2) 新建AD9280芯片对应的EIO节点

(1)右击“FPGA终端 3”,选择“新建>>FPGA I/O”,如图61-26所示。然后在弹出来的I/O资源选择对话框里面,找到AN108模块上的AD9280芯片对应到AX7103 FPGA开发板J11扩展口关联的管脚资源(10P~14P),如图61-27所示。单击对话框中间的“向右箭头”按钮,将这些引脚资源添加到右侧的FPGA资源列表里面,如图61-28所示。因为,Vivado编译器不支持同一个物理IO在xdc约束文件里面有多处定义,所以这里我们直接使用原始的扩展口IO名称。在这里插入图片描述
图61-26:新建FPGA I/O EIO节点 在这里插入图片描述
图61-27:找到AD9280对应FPGA(XC7A100T)芯片上的引脚EIO节点 在这里插入图片描述
图61-28:将AD9280芯片的EIO节点添加到右侧的可用列表中

点击“确定”按钮后,这些EIO节点被添加到FPGA终端项目里面,如图61-29所示。 在这里插入图片描述
图61-29:AD9280芯片EIO节点被添加到FPGA终端项目里面

3) 新建FIFO

我们可以将PCIE通信IP核看成一个独立的功能模块,类似MCU里面的子函数或者子VI,FPGA程序只需要关心如何将不同类型的数据(U64、U32、U16、U8)通过PCIe总线发送出去以及收到的数据怎么反馈给FPGA用户程序,这个中间的桥梁,可以采用FIFO缓冲区来实现。FIFO非常适合在不同的线程之间传递数据,而且设计合理的话,数据不会丢失或者被覆盖。

注意:FPGA用户线程相当于生产者,PCIe DMA发送线程相当于消费者,所以,二者之间有个速率匹配的问题,生产者发送数据的速度不能快于消费者。比如,本节实验里面,我们使用的8位AD9280芯片最大采样率是32MS/s,需要的通道带宽至少大于32MB/s的上行通道(默认情况下,能满足这个指标的只有ch0和ch1)才能把下位机FPGA采集的数据无损的传输给上位机PC,否则会造成数据丢失。后面我们会根据具体程序进一步分析二者之间的速度匹配问题。

(1)右击FPGA终端项目,选择新建一个子的“虚拟文件夹”,如图61-30所示。然后重命名为“FIFO_ADC”,这个虚拟文件夹专门用来存放接下来我们创建的各种ADC芯片的FIFO缓冲区资源,如图61-31所示。 在这里插入图片描述
图61-30:新建一个子虚拟文件夹 在这里插入图片描述
图61-31:将虚拟文件夹重命名为“FIFO_ADC”

(2)右击子虚拟文件夹“FIFO_ADC”,选择“新建>>FIFO”,如图61-32所示。

提醒:考虑到后续我们需要将8个8位的AD92

http://www.ds6.com.cn/news/36048.html

相关文章:

  • 深圳建站模板目前网络推广平台
  • 建设网站要求钦州seo
  • 手机网站模板免费八宿县网站seo优化排名
  • 重庆网站建设哪家公司哪家好有什么好用的搜索引擎
  • 滁州做网站短视频怎么赚钱
  • 加盟类网站怎么做原版百度
  • 简述网站开发的步骤百度权重等级
  • 宿迁网站建设推广公司百度首页 百度一下
  • 纯静态单页网站百度网盘app
  • 公司企业网站怎么建设网站优化及推广方案
  • 查看网站备案信息seo实战密码电子书
  • 个人网站的首页零基础怎么做电商
  • 高端网站开发注意事项新闻今天最新消息
  • 介绍一个做美食的网站2023免费推广入口
  • 山西公司网站建设十大广告投放平台
  • 济南高端网站建设电商培训机构需要什么资质
  • 宝安建设与住宅局网站想做一个网站
  • 大连甘井子区地图泰安网站seo推广
  • 网站开发+兼职项目怎么接广告推广
  • 网站建设山东聚搜网络一x郑州seo服务
  • 南京网站制作哪家专业seo描述快速排名
  • 编程教学网站推荐关键字参数
  • 沧州英文模板建站环球网广东疫情最新消息
  • 秦皇岛网站推广报价黄冈地区免费网站推广平台
  • 用什么工具建设网站企业网站优化方案
  • 静态网站 搜索功能汕头seo计费管理
  • 陕西住房城乡建设网站公司网站建设北京
  • 个人 可以备案做分类信息网站吗网络营销的四大基础理论
  • 哈尔滨 微网站设计百度广告上的商家可靠吗
  • 开票开网站建设费湖南网站推广优化