OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 626|回复: 3

[国产FPGA] 《ATK-DFPGL22G 之FPGA开发指南》第三十七章 双路高速AD实验

[复制链接]

1061

主题

1072

帖子

2

精华

超级版主

Rank: 8Rank: 8

积分
4407
金钱
4407
注册时间
2019-5-8
在线时间
1196 小时
发表于 2023-12-16 14:33:01 | 显示全部楼层 |阅读模式
本帖最后由 正点原子运营 于 2023-12-16 14:32 编辑

第三十七章 双路高速AD实验


1)实验平台:正点原子 ATK-DFPGL22G开发板

2) 章节摘自【正点原子】ATK-DFPGL22G之FPGA开发指南_V1.0


4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/fpga/zdyz-PGL22G.html

5)正点原子官方B站:https://space.bilibili.com/394620890

6)FPGA技术交流QQ群:435699340

155537c2odj87vz1z9vj6l.jpg

155537nfqovl2gg9faaol9.png

ADC(Analog to Digital Converter即模数转换器)是大多数系统中必不可少的组成部件,用于将连续的模拟信号转换成离散的数字信号,它们是连接模电电路和数字电路必不可少的桥梁。在很多场合下,ADC的转换速度甚至直接决定了整个系统的运行速度。本章我们将使用双路高速AD模块采集外部模拟信号转换成数字信号,并在Debugger中查看信号波形。
本章包括以下几个部分:
1.1          简介
1.2          实验任务
1.3          硬件设计
1.4          软件设计
1.5          下载验证

1.1 简介
本章我们使用的高速双路AD模块是正点原子推出的一款高速双路模数转换模块(ATK_DUAL_HS_AD),高速AD转换芯片由恩瑞浦公司生产的,型号是3PA1030。
ATK_DUAL_HS_AD模块的硬件结构图如下图所示。                        
image001.png
图 37.1.1 ATK_DUAL_HS_AD模块硬件结构图
3PA1030芯片的输入模拟电压转换范围是0V~2V,所以电压输入端需要先经过电压衰减电路,使输入的-5V~+5V之间的电压衰减到0V~2V之间,然后经过3PA1030芯片将模拟电压信号转换成数字信号。
下面我们介绍下这个芯片。
3PA1030芯片
3PA1030是一款恩瑞浦推出的单电压芯片,10位,50 MSPS(Million Samples Per Second,每秒采样百万次)模数转换器,集成片上采样保持放大器和基准电压源。具有高性能低功耗的特点。
3PA1030的内部功能框图如下图所示:

image003.png
图 37.1.2 3PA1030内部功能框图
3PA1030在时钟(CLK)的驱动下工作,3PA1030内置片内采样保持放大器(SHA),同时采用多级差分流水线架构,保证了50MSPS的数据转换速率下全温度范围内无失码;3PA1030内部集成了基准源,根据系统需要也可以选择外部高精度基准满足系统的要求。
3PA1030输出的数据以二进制格式表示,当输入的模拟电压超出量程时,会拉高OVR信号;当输入的模拟电压在量程范围内时,OVR信号为低电平,因此可以通过OVR信号来判断输入的模拟电压是否在测量范围内。另外3PA1030有一个OE信号,当该信号为高电平时3PA1030输出呈高阻态,低电平则可以正常输出。
3PA1030的时序图如下图所示:
image005.png
图 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;当3PA1030的模拟输入接口连接+5V电压时,AD输出的数据为1023。
当3PA1030模拟输入端接-5V至+5V之间变化的正弦波电压信号时,其转换后的数据也是成正弦波波形变化,转换波形如下图所示:

image007.png
图 37.1.4 3PA1030正弦波模拟电压值(左)、数据(右)
由上图可知,输入的模拟电压范围在-5V至5V之间,按照正弦波波形变化,最终得到的数据也是按照正弦波波形变化。

1.2 实验任务
本节实验任务是使用FPGA开发板及双路AD扩展模块(ATK_DUAL_HS_AD模块)实现双路模数的转换,并在ILA中查看波形。本实验我们模拟输入源来自信号发生器,一个是正弦波,频率1Mhz,幅值9V;另一个是三角波,频率1Mhz,幅值5V。两路模拟信号分别接在双路AD模块的模拟信输入端。

1.3 硬件设计
ATK_DUAL_HS_AD模块电路主要包括扩展口,AD芯片,电源电路模块和低通滤波器,衰减电路。下面是扩展口电源电路部分。

image008.png
图 37.3.1 扩展口及电源电路
由上图可知,双路AD模块使用到的管脚连接道路P4扩展口上,这些管脚包括十位的数据,时钟以及电源等信号。U2用于将5V电压转成VCC+(2.8V)供U1使用,U1将VCC+转成了VCC-(-2.8V),±2.8V电压供双电源运放TPH2501使用。U3负责将5V电压转成VCC(3.3V)。
衰减电路原理图如下图所示。

image010.png
图 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模块的实物图如下图所示。

image012.png
图 37.3.3 ATK_DUAL_HS_AD模块实物图
本实验中,各端口信号的管脚分配如下表所示。


QQ截图20231216142446.png
表 37.3.1双路高速AD转换实验管脚分配
对应的fdc约束语句如下所示:
  1. #时序约束
  2. define_attribute {p:sys_clk} {PAP_IO_DIRECTION}{INPUT}
  3. define_attribute {p:sys_clk}{PAP_IO_LOC} {B5}
  4. define_attribute {p:sys_clk}{PAP_IO_VCCIO} {3.3}
  5. define_attribute {p:sys_clk} {PAP_IO_STANDARD}{LVCMOS33}
  6. define_attribute {p:sys_clk}{PAP_IO_NONE} {TRUE}
  7. define_attribute {p:sys_rst_n}{PAP_IO_DIRECTION} {INPUT}
  8. define_attribute {p:sys_rst_n}{PAP_IO_LOC} {G5}
  9. define_attribute {p:sys_rst_n}{PAP_IO_VCCIO} {1.5}
  10. define_attribute {p:sys_rst_n}{PAP_IO_STANDARD} {LVCMOS15}
  11. define_attribute {p:sys_rst_n}{PAP_IO_NONE} {TRUE}
  12. define_attribute {p:ad0_data[9]}{PAP_IO_DIRECTION} {INPUT}
  13. define_attribute {p:ad0_data[9]}{PAP_IO_LOC} {K15}
  14. define_attribute {p:ad0_data[9]}{PAP_IO_VCCIO} {3.3}
  15. define_attribute {p:ad0_data[9]}{PAP_IO_STANDARD} {LVCMOS33}
  16. define_attribute {p:ad0_data[9]}{PAP_IO_NONE} {TRUE}
  17. define_attribute {p:ad0_data[8]}{PAP_IO_DIRECTION} {INPUT}
  18. define_attribute {p:ad0_data[8]}{PAP_IO_LOC} {H13}
  19. define_attribute {p:ad0_data[8]}{PAP_IO_VCCIO} {3.3}
  20. define_attribute {p:ad0_data[8]}{PAP_IO_STANDARD} {LVCMOS33}
  21. define_attribute {p:ad0_data[8]}{PAP_IO_NONE} {TRUE}
  22. define_attribute {p:ad0_data[7]}{PAP_IO_DIRECTION} {INPUT}
  23. define_attribute {p:ad0_data[7]}{PAP_IO_LOC} {J15}
  24. define_attribute {p:ad0_data[7]}{PAP_IO_VCCIO} {3.3}
  25. define_attribute {p:ad0_data[7]}{PAP_IO_STANDARD} {LVCMOS33}
  26. define_attribute {p:ad0_data[7]}{PAP_IO_NONE} {TRUE}
  27. define_attribute {p:ad0_data[6]}{PAP_IO_DIRECTION} {INPUT}
  28. define_attribute {p:ad0_data[6]}{PAP_IO_LOC} {G18}
  29. define_attribute {p:ad0_data[6]}{PAP_IO_VCCIO} {3.3}
  30. define_attribute {p:ad0_data[6]}{PAP_IO_STANDARD} {LVCMOS33}
  31. define_attribute {p:ad0_data[6]}{PAP_IO_NONE} {TRUE}
  32. define_attribute {p:ad0_data[5]} {PAP_IO_DIRECTION}{INPUT}
  33. define_attribute {p:ad0_data[5]}{PAP_IO_LOC} {J14}
  34. define_attribute {p:ad0_data[5]}{PAP_IO_VCCIO} {3.3}
  35. define_attribute {p:ad0_data[5]}{PAP_IO_STANDARD} {LVCMOS33}
  36. define_attribute {p:ad0_data[5]}{PAP_IO_NONE} {TRUE}
  37. define_attribute {p:ad0_data[4]}{PAP_IO_DIRECTION} {INPUT}
  38. define_attribute {p:ad0_data[4]}{PAP_IO_LOC} {G17}
  39. define_attribute {p:ad0_data[4]}{PAP_IO_VCCIO} {3.3}
  40. define_attribute {p:ad0_data[4]}{PAP_IO_STANDARD} {LVCMOS33}
  41. define_attribute {p:ad0_data[4]}{PAP_IO_NONE} {TRUE}
  42. define_attribute {p:ad0_data[3]}{PAP_IO_DIRECTION} {INPUT}
  43. define_attribute {p:ad0_data[3]}{PAP_IO_LOC} {H16}
  44. define_attribute {p:ad0_data[3]}{PAP_IO_VCCIO} {3.3}
  45. define_attribute {p:ad0_data[3]}{PAP_IO_STANDARD} {LVCMOS33}
  46. define_attribute {p:ad0_data[3]}{PAP_IO_NONE} {TRUE}
  47. define_attribute {p:ad0_data[2]}{PAP_IO_DIRECTION} {INPUT}
  48. define_attribute {p:ad0_data[2]}{PAP_IO_LOC} {F18}
  49. define_attribute {p:ad0_data[2]}{PAP_IO_VCCIO} {3.3}
  50. define_attribute {p:ad0_data[2]}{PAP_IO_STANDARD} {LVCMOS33}
  51. define_attribute {p:ad0_data[2]}{PAP_IO_NONE} {TRUE}
  52. define_attribute {p:ad0_data[1]}{PAP_IO_DIRECTION} {INPUT}
  53. define_attribute {p:ad0_data[1]}{PAP_IO_LOC} {J16}
  54. define_attribute {p:ad0_data[1]}{PAP_IO_VCCIO} {3.3}
  55. define_attribute {p:ad0_data[1]}{PAP_IO_STANDARD} {LVCMOS33}
  56. define_attribute {p:ad0_data[1]}{PAP_IO_NONE} {TRUE}
  57. define_attribute {p:ad0_data[0]}{PAP_IO_DIRECTION} {INPUT}
  58. define_attribute {p:ad0_data[0]}{PAP_IO_LOC} {F17}
  59. define_attribute {p:ad0_data[0]} {PAP_IO_VCCIO}{3.3}
  60. define_attribute {p:ad0_data[0]}{PAP_IO_STANDARD} {LVCMOS33}
  61. define_attribute {p:ad0_data[0]}{PAP_IO_NONE} {TRUE}
  62. define_attribute {p:ad1_data[9]}{PAP_IO_DIRECTION} {INPUT}
  63. define_attribute {p:ad1_data[9]}{PAP_IO_LOC} {L16}
  64. define_attribute {p:ad1_data[9]}{PAP_IO_VCCIO} {3.3}
  65. define_attribute {p:ad1_data[9]}{PAP_IO_STANDARD} {LVCMOS33}
  66. define_attribute {p:ad1_data[9]}{PAP_IO_NONE} {TRUE}
  67. define_attribute {p:ad1_data[8]}{PAP_IO_DIRECTION} {INPUT}
  68. define_attribute {p:ad1_data[8]} {PAP_IO_LOC}{L13}
  69. define_attribute {p:ad1_data[8]}{PAP_IO_VCCIO} {3.3}
  70. define_attribute {p:ad1_data[8]}{PAP_IO_STANDARD} {LVCMOS33}
  71. define_attribute {p:ad1_data[8]}{PAP_IO_NONE} {TRUE}
  72. define_attribute {p:ad1_data[7]}{PAP_IO_DIRECTION} {INPUT}
  73. define_attribute {p:ad1_data[7]}{PAP_IO_LOC} {M16}
  74. define_attribute {p:ad1_data[7]}{PAP_IO_VCCIO} {3.3}
  75. define_attribute {p:ad1_data[7]}{PAP_IO_STANDARD} {LVCMOS33}
  76. define_attribute {p:ad1_data[7]}{PAP_IO_NONE} {TRUE}
  77. define_attribute {p:ad1_data[6]}{PAP_IO_DIRECTION} {INPUT}
  78. define_attribute {p:ad1_data[6]}{PAP_IO_LOC} {L12}
  79. define_attribute {p:ad1_data[6]}{PAP_IO_VCCIO} {3.3}
  80. define_attribute {p:ad1_data[6]}{PAP_IO_STANDARD} {LVCMOS33}
  81. define_attribute {p:ad1_data[6]}{PAP_IO_NONE} {TRUE}
  82. define_attribute {p:ad1_data[5]}{PAP_IO_DIRECTION} {INPUT}
  83. define_attribute {p:ad1_data[5]}{PAP_IO_LOC} {L18}
  84. define_attribute {p:ad1_data[5]}{PAP_IO_VCCIO} {3.3}
  85. define_attribute {p:ad1_data[5]}{PAP_IO_STANDARD} {LVCMOS33}
  86. define_attribute {p:ad1_data[5]}{PAP_IO_NONE} {TRUE}
  87. define_attribute {p:ad1_data[4]}{PAP_IO_DIRECTION} {INPUT}
  88. define_attribute {p:ad1_data[4]}{PAP_IO_LOC} {K18}
  89. define_attribute {p:ad1_data[4]}{PAP_IO_VCCIO} {3.3}
  90. define_attribute {p:ad1_data[4]}{PAP_IO_STANDARD} {LVCMOS33}
  91. define_attribute {p:ad1_data[4]}{PAP_IO_NONE} {TRUE}
  92. define_attribute {p:ad1_data[3]}{PAP_IO_DIRECTION} {INPUT}
  93. define_attribute {p:ad1_data[3]}{PAP_IO_LOC} {L17}
  94. define_attribute {p:ad1_data[3]}{PAP_IO_VCCIO} {3.3}
  95. define_attribute {p:ad1_data[3]}{PAP_IO_STANDARD} {LVCMOS33}
  96. define_attribute {p:ad1_data[3]}{PAP_IO_NONE} {TRUE}
  97. define_attribute {p:ad1_data[2]}{PAP_IO_DIRECTION} {INPUT}
  98. define_attribute {p:ad1_data[2]}{PAP_IO_LOC} {K17}
  99. define_attribute {p:ad1_data[2]}{PAP_IO_VCCIO} {3.3}
  100. define_attribute {p:ad1_data[2]}{PAP_IO_STANDARD} {LVCMOS33}
  101. define_attribute {p:ad1_data[2]}{PAP_IO_NONE} {TRUE}
  102. define_attribute {p:ad1_data[1]}{PAP_IO_DIRECTION} {INPUT}
  103. define_attribute {p:ad1_data[1]}{PAP_IO_LOC} {J18}
  104. define_attribute {p:ad1_data[1]}{PAP_IO_VCCIO} {3.3}
  105. define_attribute {p:ad1_data[1]}{PAP_IO_STANDARD} {LVCMOS33}
  106. define_attribute {p:ad1_data[1]}{PAP_IO_NONE} {TRUE}
  107. define_attribute {p:ad1_data[0]}{PAP_IO_DIRECTION} {INPUT}
  108. define_attribute {p:ad1_data[0]}{PAP_IO_LOC} {H18}
  109. define_attribute {p:ad1_data[0]}{PAP_IO_VCCIO} {3.3}
  110. define_attribute {p:ad1_data[0]}{PAP_IO_STANDARD} {LVCMOS33}
  111. define_attribute {p:ad1_data[0]}{PAP_IO_NONE} {TRUE}
  112. define_attribute {p:ad0_clk}{PAP_IO_DIRECTION} {OUTPUT}
  113. define_attribute {p:ad0_clk} {PAP_IO_LOC}{H17}
  114. define_attribute {p:ad0_clk}{PAP_IO_VCCIO} {3.3}
  115. define_attribute {p:ad0_clk}{PAP_IO_STANDARD} {LVCMOS33}
  116. define_attribute {p:ad0_clk}{PAP_IO_DRIVE} {4}
  117. define_attribute {p:ad0_clk}{PAP_IO_NONE} {TRUE}
  118. define_attribute {p:ad0_clk}{PAP_IO_SLEW} {SLOW}
  119. define_attribute {p:ad0_oe}{PAP_IO_DIRECTION} {OUTPUT}
  120. define_attribute {p:ad0_oe}{PAP_IO_LOC} {K14}
  121. define_attribute {p:ad0_oe}{PAP_IO_VCCIO} {3.3}
  122. define_attribute {p:ad0_oe}{PAP_IO_STANDARD} {LVCMOS33}
  123. define_attribute {p:ad0_oe}{PAP_IO_DRIVE} {4}
  124. define_attribute {p:ad0_oe}{PAP_IO_NONE} {TRUE}
  125. define_attribute {p:ad0_oe}{PAP_IO_SLEW} {SLOW}
  126. define_attribute {p:ad1_clk}{PAP_IO_DIRECTION} {OUTPUT}
  127. define_attribute {p:ad1_clk}{PAP_IO_LOC} {M13}
  128. define_attribute {p:ad1_clk}{PAP_IO_VCCIO} {3.3}
  129. define_attribute {p:ad1_clk}{PAP_IO_STANDARD} {LVCMOS33}
  130. define_attribute {p:ad1_clk}{PAP_IO_DRIVE} {4}
  131. define_attribute {p:ad1_clk}{PAP_IO_NONE} {TRUE}
  132. define_attribute {p:ad1_clk}{PAP_IO_SLEW} {SLOW}
  133. define_attribute {p:ad1_oe}{PAP_IO_DIRECTION} {OUTPUT}
  134. define_attribute {p:ad1_oe}{PAP_IO_LOC} {M17}
  135. define_attribute {p:ad1_oe}{PAP_IO_VCCIO} {3.3}
  136. define_attribute {p:ad1_oe}{PAP_IO_STANDARD} {LVCMOS33}
  137. define_attribute {p:ad1_oe}{PAP_IO_DRIVE} {4}
  138. define_attribute {p:ad1_oe}{PAP_IO_NONE} {TRUE}
  139. define_attribute {p:ad1_oe}{PAP_IO_SLEW} {SLOW}
  140. define_attribute {p:ad0_otr}{PAP_IO_DIRECTION} {INPUT}
  141. define_attribute {p:ad0_otr}{PAP_IO_LOC} {H14}
  142. define_attribute {p:ad0_otr}{PAP_IO_VCCIO} {3.3}
  143. define_attribute {p:ad0_otr}{PAP_IO_STANDARD} {LVCMOS33}
  144. define_attribute {p:ad0_otr}{PAP_IO_NONE} {TRUE}
  145. define_attribute {p:ad1_otr}{PAP_IO_DIRECTION} {INPUT}
  146. define_attribute {p:ad1_otr}{PAP_IO_LOC} {M14}
  147. define_attribute {p:ad1_otr}{PAP_IO_VCCIO} {3.3}
  148. define_attribute {p:ad1_otr}{PAP_IO_STANDARD} {LVCMOS33}
  149. define_attribute {p:ad1_otr}{PAP_IO_NONE} {TRUE}
复制代码

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

image015.png
图37.4.1 双路AD系统框图
顶层模块的原理图如下图所示:

image016.png
图 37.4.2 顶层模块原理图
通过对原理图的分析,我们可以将代码分成两个模块,一个是clk_wiz_0模块用来生成对应的时钟去驱动AD外设模块,一个用来例化ila IP核。所以这么一分析我们的代码结构还是非常简单的。我们给出顶层模块代码如下所示:
  1. 1 module hs_dual_ad(
  2. 2       input                sys_clk      ,   //系统时钟
  3. 3      input                sys_rst_n    ,   
  4. 4       //AD0
  5. 5       input     [9:0     ad0_data     /* synthesis PAP_MARK_DEBUG="1" */,   //AD0数据
  6. 6       input              ad0_otr      /* synthesis PAP_MARK_DEBUG="1" */,   //输入电压超过量程标志
  7. 7       output              ad0_clk      ,   //AD0采样时钟
  8. 8       output              ad0_oe       ,   //AD0输出使能
  9. 9       //AD1
  10. 10      input     [9:0     ad1_data     /* synthesis PAP_MARK_DEBUG="1" */,   //AD1数据
  11. 11      input              ad1_otr      /* synthesis PAP_MARK_DEBUG="1" */,   //输入电压超过量程标志
  12. 12      output               ad1_clk      ,   //AD1采样时钟  
  13. 13      output              ad1_oe          //AD1输出使能  
  14. 14      );
  15. 15
  16. 16  wire [9:0 ad0_data_n;
  17. 17  wire [9:0 ad1_data_n;
  18. 18  wire       ad0_otr_n ;
  19. 19  wire       ad1_otr_n ;
  20. 20      
  21. 21  assign ad0_data_n = ad0_data/*synthesis PAP_MARK_DEBUG="1" */;
  22. 22  assign ad1_data_n = ad1_data/*synthesis PAP_MARK_DEBUG="1" */;
  23. 23  assign ad0_otr_n = ad0_otr/*synthesis PAP_MARK_DEBUG="1" */;
  24. 24  assign ad1_otr_n = ad1_otr/*synthesis PAP_MARK_DEBUG="1" */;
  25. 25 //wire define
  26. 26 wire clk_out1;
  27. 27 wire clk_out2/* synthesis PAP_MARK_DEBUG="1" */;
  28. 28 wire CLK_OUT1;
  29. 29 wire CLK_OUT2;
  30. 30 //*****************************************************
  31. 31 //**                    main code
  32. 32 //*****************************************************  
  33. 33 assign  ad0_oe =  1'b0;
  34. 34 assign  ad1_oe =  1'b0;
  35. 35 assign  ad0_clk = CLK_OUT1;
  36. 36 assign  ad1_clk = CLK_OUT1;
  37. 37 assign  clk_out2 = CLK_OUT2/* synthesis PAP_MARK_DEBUG="1"*/;
  38. 38 pll u_pll
  39. 39   (// Clock in ports
  40. 40     .clkin1(sys_clk),      // IN
  41. 41     //Clock out ports
  42. 42     .clkout0(CLK_OUT1),     // OUT
  43. 43     .clkout1(CLK_OUT2)
  44. 44 );    //OUT     
  45. 45  
  46. 46
  47. 47 endmodule
复制代码

代码第33到34行产生双路AD的两个输出使能信号,ad0_oe和ad1_oe,请注意,它们是低电平有效,所以我们直接赋值0。35行到36行,产生驱动AD芯片的时钟,ad0_clk和ad1_clk,他们都是由PLL产生。

1.5 下载验证
将高速双路AD模块插入FPGA开发板扩展口,连接时注意扩展口电源引脚方向和开发板电源引脚方向一致,然后将下载器一端连接电脑,另一端与开发板上对应端口连接,最后连接电源线并打开电源开关。
FPGA开发板硬件连接实物图如下图所示:

image018.png
图37.5.1 FPGA开发板硬件连接实物图

image020.png
图 37.5.2 信号发生器与双路AD模块的连接图1

image021.png
图 37.5.3 信号发生器与双路AD模块的连接图2
使用SMA转BNC线将信号发生器与AD模块如图 37.5.3所示进行连接。
将工程生成的比特流文件下载到FPGA中,运行程序后在Debugger中观察ad_data数据的变化,观察到的波形如下图所示。

image023.png

image025.png
图 37.5.4 AD数据接收模块采集到的波形图
由上图可知,输入的ad_data数据分别为三角波和正弦波,频率和幅值与信号发生器发的设定相一致,说明AD-DA实验验证成功。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2024-3-7
在线时间
1 小时
发表于 2024-3-7 16:49:45 | 显示全部楼层
请问这个不是使用PGL22G板子自带AD来进行信号采集的吧?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2024-1-3
在线时间
2 小时
发表于 2024-3-9 10:59:20 | 显示全部楼层
请问一下,这里面说时钟信号都是由pll产生的,请问如何例化ila IP核,是通过第17章ip核之pll实验里面ip_pll.v源文件实现的吗,我不知道如何把这两个实验结合起来,能不能出一出具体的视频啊
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2024-1-3
在线时间
2 小时
发表于 2024-3-9 11:11:31 | 显示全部楼层
文章里说用另一个clk_wiz_0模块来生成对应的时钟去驱动AD外设模块,我在文档教程里找了半天没有看到,想问一下这个模块具体的位置在哪里啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-29 11:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表