差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
dds_verilog [2020/08/22 21:39]
gongyu
dds_verilog [2022/06/23 21:44] (当前版本)
gongyusu [7. 系统构成示例]
行 3: 行 3:
  
 ### 1. 用以学习和体验DDS的开源平台 ### 1. 用以学习和体验DDS的开源平台
-硬禾学堂专门设计了用以学习DDS的平台:+硬禾学堂专门设计了通过小脚丫FPGA来学习数字系统应用的平台: 
 +  * [[stepfpga_training_board|小脚丫FPGA综合技能训练平台]] 
 +{{ :​fpgatrainingboard.png |}} 
 +{{ :​howtouse_traingingboard.png?​800 |}}<WRAP centeralign>​ 基于小脚丫FPGA的综合训练口袋实验系统沟通 </​WRAP>​
  
-  - [[dds_awg_open_platform|任意波形信号源/​可编程直流开源学习平台]] +以及一款针对高校子设计竞赛训练平台 
-  ​[[stepfpga_training_board|小脚丫FPGA综合技能训练平台]]+  ​[[contest_training_board|小脚丫FPGA综合技能训练平台]] 
 +{{ :​contest_training_board1.png |}} 
 +{{ :​fpga_contest_training_block.png |}} 
 +<WRAP centeralign>​ 基于小脚丫FPGA的电赛训练平台 </​WRAP>​
  
-{{ :​dds_boards.png?​800 |}}<WRAP centeralign>​ 两款用于DDS学习和体验的FPGA平台 </​WRAP>​ +这两款平台可以支持任意一款的[[stepfpga|小脚丫FPGA核心板]],第一款平台的[[DAC]]部分都是由R-2R网络构成的,第二款平台上使用通用的高速DAC IC,它们的代码基本上一致的,通用高速DAC IC会需要转换时钟进行同步,而R-2R只需要数据线,无需时钟
- +
-这两款平台可以支持任意一款的[[stepfpga|小脚丫FPGA核心板]],它们的[[DAC]]部分都是由R-2R网络构成的,DDS部分的代码通用的,不同的输出电平调节方式以及对应于每个电阻节点的管脚顺序+
  
 它们都能通过FPGA中的Verilog逻辑编程实现以下的功能并能达到相应的性能: 它们都能通过FPGA中的Verilog逻辑编程实现以下的功能并能达到相应的性能:
   * DDS的主时钟选择为12M(案例中前面的例子)和120MHz(案例中后面的例子,由小脚丫外部的12MHz输入时钟,通过内部[[PLL]]倍频到120MHz),使用120MHz的时钟能够生成0 - 15MHz(用8个点构成一个周期波形),甚至更高频率的正弦波波形,输出的信号波形可以是正弦波、三角波、锯齿波、方波等;   * DDS的主时钟选择为12M(案例中前面的例子)和120MHz(案例中后面的例子,由小脚丫外部的12MHz输入时钟,通过内部[[PLL]]倍频到120MHz),使用120MHz的时钟能够生成0 - 15MHz(用8个点构成一个周期波形),甚至更高频率的正弦波波形,输出的信号波形可以是正弦波、三角波、锯齿波、方波等;
-  * 由于R-2R后面的运算放大器的性能限制,为保证在不同的频率上实现恒定的信号幅度 ,这两款板子的最高输出频率做了一定的限制,其中: +  * 由于R-2R后面的运算放大器的性能限制,为保证在不同的频率上实现恒定的信号幅度 ,这两款板子的最高输出频率做了一定的限制 ​- 第一款平台的输出信号带宽保证到2MHz,信号幅度为0.5-3V电赛训练的输出信号带宽可以达15MHz,信号幅度为2Vpp。 
-    * DDS任意信号发生器/​可调直流电压开源平台的输出信号带宽保证到5MHz,信号幅度+/-1.5V可调直流偏置+/​-1.5V可调; +  * 第一款板子都可以通过[[UART]]同PC连接,通过PC上的软件(比如LabView或用QT等自编)对FPGA中的参数进行设置,进而调节DDS输出信号的波形、频率、幅度和直流偏移等。
-    * 小脚丫FPGA综合技能训练平台的输出信号带宽保证2MHz,信号幅度为0.5-3V。 +
-  * 款板子都可以通过[[UART]]同PC连接,通过PC上的软件(比如LabView或用QT等自编)对FPGA中的参数进行设置,进而调节DDS输出信号的波形、频率、幅度和直流偏移等,第一款板子还可以调节双通道直流电压的输出+
  
 下面我们来看看在这两款平台上通过DDS能够实现的任意波形及实现方法、相关的Verilog代码。 下面我们来看看在这两款平台上通过DDS能够实现的任意波形及实现方法、相关的Verilog代码。
行 71: 行 73:
 wire cnt_tap = cnt[7]; ​            // 取出计数器的其中1位(bit 7 = 第8位) wire cnt_tap = cnt[7]; ​            // 取出计数器的其中1位(bit 7 = 第8位)
 assign dac_data = {10{cnt_tap}}; ​  // 重复10次作为10位DAC的值 ​ assign dac_data = {10{cnt_tap}}; ​  // 重复10次作为10位DAC的值 ​
 +assign dac_clk= clk; 
  
 endmodule endmodule
行 109: 行 112:
 --- ---
  
-### 4. 任意形状且可以任意频率的信号生成+### 4. 任意信号生成
 为了产生任意波形,DDS依赖两个技巧: ​ 为了产生任意波形,DDS依赖两个技巧: ​
  
行 429: 行 432:
 assign dac_dat = amp_dat[17:​8];​ //​取高十位输出,相当于右移8位 assign dac_dat = amp_dat[17:​8];​ //​取高十位输出,相当于右移8位
 </​code>​ </​code>​
 +
 +