差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
dds_verilog [2023/03/20 15:44]
gongyu [2. DAC的选用说明]
dds_verilog [2023/03/20 16:33] (当前版本)
gongyu [4. “任意”信号生成]
行 44: 行 44:
 无论采用任何一款DAC,第一步就是要验证从FPGA的逻辑到DAC是否正常工作(尤其是FPGA和R-2R网络连接时管脚的分配),最简单的就是输出固定的数字,看输出的直流电压是否是你换算出来应该得到的模拟量,如下图所示: 无论采用任何一款DAC,第一步就是要验证从FPGA的逻辑到DAC是否正常工作(尤其是FPGA和R-2R网络连接时管脚的分配),最简单的就是输出固定的数字,看输出的直流电压是否是你换算出来应该得到的模拟量,如下图所示:
  
-{{ ::​DDS_Training_DC.png?800 |}} <WRAP centeralign>​ 产生直流电压用来验证FPGA到DAC的链路是否能够正常工作</​WRAP>​ +{{drawio>​ACDLK_DDS_DC.png}} <WRAP centeralign>​ 产生直流电压用来验证FPGA到DAC的链路是否能够正常工作</​WRAP>​
-{{drawio>​ACDLK_DDS_DC.png}}+
  
 <code verilog> <code verilog>
行 66: 行 65:
  
 ##### 3.1 生成方波 ##### 3.1 生成方波
-{{ ::​DDS_Training_Square.png?800 |}}+{{drawio>​ACDLK_DDA_Squre.png}}
 DDS常被用来产生周期性的信号,第一步我们先看看如何产生一个方波信号,下面是代码: DDS常被用来产生周期性的信号,第一步我们先看看如何产生一个方波信号,下面是代码:
 <code verilog> <code verilog>
行 94: 行 93:
 ##### 3.2 生成锯齿波 ##### 3.2 生成锯齿波
  
-{{ ::​DDS_Training_Sawtooth.png?800 |}}+{{drawio>​ACDLK_DDA_SAWTOOTH.png}}
  
 我们再看看锯齿波是如何轻松实现的,只需要将上面的代码的最后两行更换成这样: 我们再看看锯齿波是如何轻松实现的,只需要将上面的代码的最后两行更换成这样:
行 107: 行 106:
  
 根据下面的图示方法实现三角波也不难: 根据下面的图示方法实现三角波也不难:
-{{ ::​DDS_Training_Triangle.png?800 |}}+{{drawio>​ACDLK_DDA_Triangle.png}}
  
 <code verilog> <code verilog>
行 133: 行 132:
 {{ :​heartwave.jpeg |}}<WRAP centeralign>​ 用查找表的方式生成的心型模拟信号波形 </​WRAP>​ {{ :​heartwave.jpeg |}}<WRAP centeralign>​ 用查找表的方式生成的心型模拟信号波形 </​WRAP>​
  
-参见[[steptrainingboardddsacode|用于小脚丫FPGA综合技能训练板的DDS培训代码]],在这个页面中有一段lookup table的代码,示例中使用的为8位地址波表(出于演示的方便,采用了更少的位数)、10位精度的DAC。基于正弦波的对称性,在这个波表中我们只保存了1/​4个周期的波形,其它3个1/​4周期的波形可以基于对称性来实现,周期的选择采用地址的高两位 - 示例中的phase[7:​6]。+参见[[https://​www.eetree.cn/​wiki/​steptrainingboardddsacode|用于小脚丫FPGA综合技能训练板的DDS培训代码]],在这个页面中有一段lookup table的代码,示例中使用的为8位地址波表(出于演示的方便,采用了更少的位数)、10位精度的DAC。基于正弦波的对称性,在这个波表中我们只保存了1/​4个周期的波形,其它3个1/​4周期的波形可以基于对称性来实现,周期的选择采用地址的高两位 - 示例中的phase[7:​6]。
  
 <code verilog> <code verilog>