锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

【正点原子FPGA连载】第三十七章双路高速AD实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

时间:2022-10-25 12:30:01 7p8pin连接器

1)实验平台:正点原子新起点V2开发板
2)平台采购地址:https://detail.tmall.com/item.htm?id=609758951113
2)全套实验源码 手册 视频下载地址:http://www.openedv.com/thread-300792-1-1.html
3)正点原子FPGA感兴趣的同学可以加群讨论:994244016
4)关注正点原子微信官方账号,获取最新信息更新
在这里插入图片描述

芯片由恩瑞浦生产,型号为3PA1030。
ATK_DUAL_HS_AD如下图所示。

图 37.1.1 ATK_DUAL_HS_AD模块硬件结构图
3PA1030芯片的输入模拟电压转换范围为0V2V,因此,电压输入端需要通过电压衰减电路输入-5V 5V电压衰减为0V~2V之间,然后通过3PA1030芯片将模拟电压信号转换为数字信号。
让我们介绍一下这个芯片。
3PA1030芯片
3PA1030是恩瑞浦推出的单电压芯片,10位,50位 MSPS(Million Samples Per Second,模数转换器每秒采样100万次),集成片采样保持放大器和基准电压源。具有高性能、低功耗的特点。
3PA内部功能框图如下图所示:

图 37.1.2 3PA1030内部功能框图
3PA1030在时钟(CLK)工作,3PA1030内置片采样保持放大器(SHA),同时采用多级差分流水线架构,保证50MSPS数据转换率下全温范围内无失码;3PA基准源集成在1030内部,外部高精度基准也可根据系统需要选择满足系统要求。
3PA1030输出的数据以二进制格式表示,当输入的模拟电压超过量程时,会拉高OVR当输入的模拟电压在范围内时,OVR信号为低电平,可通过OVR判断输入的模拟电压是否在测量范围内。另外3PA1030有一个OE当信号为高电时,通常是3PA1030输出呈高阻态,低电平则可正常输出。
3PA如下图所示:

图 37.1.3 3PA1030时序图
上图中,S1,S2,S3分别是三个采样点,可以看出芯片沿着时钟的采样上升。需要注意的是,3PA1030芯片的最大转换速度是50MSPS,即输入时钟的最大频率为50MHz。
3PA1030支持输入的模拟电压范围为0V至2V,0V对应输出的数字信号为0,2V对应输出的数字信号为1023。DA输出电压范围为-5V 5V,因此在3PA1030模拟输入端增加电压衰减电路,使-5V 5V之间的电压转换为0V至2V之间。所以实际上对于我们的用户来说,当3PA1030模拟输入接口连接-5V电压时,AD输出数据为0;当3PA模拟输入接口连接1030 5V电压时,AD输出数据为1023。
当3PA1030模拟输入端接-5V至 5V当正弦波电压信号之间发生变化时,转换后的数据也发生变化,转换波形如下图所示:

图 37.1.4 3PA1030正弦波模拟电压值(左),数据(右)
从上图可以看出,输入的模拟电压范围为-5V至5V之间,根据正弦波形变化,最终数据也根据正弦波形变化。

37.2实验任务
本节的实验任务是使用新的起点开发板和双路AD扩展模块(ATK_DUAL_HS_AD模块)实现双路模数的转换signaltap检查波形。在本实验中,我们模拟双路输入源DA扩展模块分别连接两个模拟信号AD模块模拟信输入端。
37.3硬件设计
ATK_DUAL_HS_AD模块电路主要包括扩展口,AD芯片、电源电路模块和低通滤波器、衰减电路。以下是扩展端口的电源电路。

图 37.3.1 扩展口及电源电路
从上图可以看出,双路AD用于模块的管脚连接到P这些管脚包括十位数据、时钟和电源信号。U2用于将5V电压转成VCC (2.8V)供U1使用,U1将VCC 转成了VCC-(-2.8V),±2.8V双电源输放电压TPH2501使用。U3负责将5V电压转成VCC(3.3V)。
如下图所示。

图 37.3.2 3PA1030原理图
上下两个电路是一样的,我们以上面的电路为例。上图中输入的模拟信号IN1(V1)通过衰减电路获得AD_IN1(VO)两个模拟电压信号之间的关系是信号VO=VI/5 1,即当VI=5V时,VO=2V;VI=-5V时,VO=0V。
ATK_DUAL_HS_AD如下图所示。

图 37.3.3 ATK_DUAL_HS_AD模块实物图
各端口信号的管脚分布如下表所示。
表 37.3.1双路高速AD转换实验管脚分配
信号名 方向 管脚 端口说明

对应的QSF约束语句如下:
set_location_assignment PIN_M2 -to sys_clk

set_location_assignment PIN_R14 -to ad0_oe
set_location_assignment PIN_P6 -to ad0_data[9]
set_location_assignment PIN_N8 -to ad0_data[7]
set_location_assignment PIN_K9 -to ad0_data[5]
set_location_assignment PIN_L10 -to ad0_data[3]
set_location_assignment PIN_N9 -to ad0_data[1]

set_location_assignment PIN_T14 -to ad0_clk
set_location_assignment PIN_N6 -to ad0_otr
set_location_assignment PIN_M8 -to ad0_data[8]
set_location_assignment PIN_8 -to ad0_data[6]
set_location_assignment PIN_L9 -to ad0_data[4]
set_location_assignment PIN_M9 -to ad0_data[2]
set_location_assignment PIN_P9 -to ad0_data[0]

set_location_assignment PIN_R7 -to ad1_oe
set_location_assignment PIN_R8 -to ad1_data[9]
set_location_assignment PIN_R9 -to ad1_data[7]
set_location_assignment PIN_R10 -to ad1_data[5]
set_location_assignment PIN_R11 -to ad1_data[3]
set_location_assignment PIN_R12 -to ad1_data[1]

set_location_assignment PIN_T7 -to ad1_clk
set_location_assignment PIN_T8 -to ad1_otr
set_location_assignment PIN_T9 -to ad1_data[8]
set_location_assignment PIN_T10 -to ad1_data[6]
set_location_assignment PIN_T11 -to ad1_data[4]
set_location_assignment PIN_G2 -to ad1_data[2]
set_location_assignment PIN_T13 -to ad1_data[0]
37.4程序设计
根据本章的实验任务,高速双路AD模块同时采集两路外部模拟信号,在模块内部实现模数转换,将转换后的数字信号传给FPGA管脚,FPGA内部逻辑分析仪通过抓取数据将外部的模拟信号呈现出来。
图 37.4.1是根据本章实验任务画出的系统框图。我们事先准备两路模拟信号源,本实验我们使用信号发生器产生模拟输入源。接到双路AD芯片的信号输入端,在双路AD内部实现AD转换,将转换后的信号送给FPGA,在这里,FPGA只需要给AD芯片输出驱动时钟信号(AD_CLK)和使能信号(AD_OE),AD芯片便可完成模拟采集并转换成数字信号。
高速双路AD实验的系统框图如图 37.4.1所示:

图 37.4.1 双路AD系统框图
通过对系统框图的分析,我们输出一个时钟,然后在signaltap中抓取芯片的输出信号。我们给出顶层模块代码如下所示:

1  module hs_dual_ad(
2      input                 sys_clk     ,  
3      //AD0
4      input     [9:0]       ad0_data     ,   //AD0数据
5      input                 ad0_otr      ,   //输入电压超过量程标志
6      output                ad0_clk      ,   //AD0(AD9280)采样时钟
7      output                ad0_oe       ,
8      //AD1
9      input     [9:0]       ad1_data     ,  //AD0数据
10     input                 ad1_otr      ,  //输入电压超过量程标志
11     output                ad1_clk      ,  //AD1(AD9280)采样时钟 
12     output                ad1_oe       
13     );
14     
15  //*****************************************************
16 //** main code
17 //***************************************************** 
18 // ad0_oe=0,正常模式;ad0_oe=1,高阻
19 wire clk_50m;
20 wire clk_50m_deg;
21 assign ad0_oe =  1'b0;
22 assign ad1_oe =  1'b0;
23 assign  ad0_clk = clk_50m_deg;
24 assign  ad1_clk = clk_50m_deg;
25 
26 
27 pll u_pll(
28  .inclk0 (sys_clk),
29  .c0 (clk_50m_deg),
30  .c1 (clk_50m)
31  );
32 
33 endmodule

代码第21到22行产生双路AD的两个输出使能信号,ad0_oe和ad1_oe,请注意,它们是低电平有效,所以我们直接赋值0。23行到24行,产生驱动AD芯片的时钟,ad0_clk和ad1_clk,他们都是由clk_50m偏移90°得来的,这是为了在signaltap采集数据时不会采集到数据边沿,使采到的数据更正确。其中clk_50m由时钟模块产生,大小是50M。
37.5下载验证
将高速双路AD模块插入新起点开发板P6扩展口,连接时注意扩展口电源引脚方向和开发板电源引脚方向一致,然后将下载器一端连接电脑,另一端与开发板上对应端口连接,最后连接电源线并打开电源开关
新起点开发板硬件连接实物图如下图所示:
图 37.5.1 新起点开发板硬件连接实物图
将工程生成的sof文件下载到FPGA中后, 连接后在signaltap中观察ad_data数据的变化,观察到的波形如下图所示。

图 37.5.2 AD数据接收模块采集到的signaltap波形图
由上图可知,输入的ad_data数据分别为2路正弦波,说明双路AD实验验证成功。
另外,在这里介绍一下如何将数据设置成波形图显示。首先选中signaltap波形图中的ad_data,右键选择Bus Display Format,然后选择Unsigned即可,如下图所示:

图 37.5.3 signaltap波形显示设置界面

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章