差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 上一修订版 两侧同时换到之后的修订记录 | ||
pwm_verilog [2022/05/07 12:04] gongyu [4. PWM用作DDS的DAC产生任意波形] |
pwm_verilog [2022/05/07 13:09] gongyu [5. 双PWM产生更高频率的信号] |
||
---|---|---|---|
行 148: | 行 148: | ||
PWM-DAC可以用来产生任意波形,DDS的逻辑部分与采用高速并行DAC是一样的,只是用一根线代替了高速并行DAC的8、10或12根数据线,这在管脚数量受限的场合又要想得到任意波形,采用PWM-DAC就更有优势。得益于FPGA内部时钟可以运行高达400MHz(比如小脚丫外部12MHz通过内部PLL可以得到396MHz的内部时钟),用PWM-DAC的方式生成一个等效于10bit的DAC,其对应的DAC转换率可以到396MHz/1024,约为387Ksps,也就是说相当于一个10位精度、387Ksps的并行DAC,降低精度,比如8bit,可以得到1.55Msps的转换率;另一个极端,如果你想得到16位的精度,能够保证到396MHz/65536,约为6Ksps | PWM-DAC可以用来产生任意波形,DDS的逻辑部分与采用高速并行DAC是一样的,只是用一根线代替了高速并行DAC的8、10或12根数据线,这在管脚数量受限的场合又要想得到任意波形,采用PWM-DAC就更有优势。得益于FPGA内部时钟可以运行高达400MHz(比如小脚丫外部12MHz通过内部PLL可以得到396MHz的内部时钟),用PWM-DAC的方式生成一个等效于10bit的DAC,其对应的DAC转换率可以到396MHz/1024,约为387Ksps,也就是说相当于一个10位精度、387Ksps的并行DAC,降低精度,比如8bit,可以得到1.55Msps的转换率;另一个极端,如果你想得到16位的精度,能够保证到396MHz/65536,约为6Ksps | ||
- | ^DAC精度^转换率^ | + | ^DAC精度^转换率^生成模拟信号(搭配合适的滤波器,比如7阶椭圆滤波器,截止频率为转换率的40%)^ |
- | |6|6.19Msps| | + | |6|6.19Msps|2.5MHz| |
- | |8|1.55Msps| | + | |8|1.55Msps|600KHz| |
- | |10|387Ksps| | + | |10|387Ksps|150KHz| |
- | |12|97Ksps| | + | |12|97Ksps|40KHz| |
- | |16|6Ksps| | + | |16|6Ksps|2.4KHz| |
--- | --- | ||
行 169: | 行 169: | ||
{{ ::pulse-width-modulation-implementation-using-fpga-and-cpld-ics.pdf |采用FPGA和CPLD实现PWM的方法 }},这是一篇非常基础的文章,详细介绍了PWM的构成原理、构成方式、以及应用。 | {{ ::pulse-width-modulation-implementation-using-fpga-and-cpld-ics.pdf |采用FPGA和CPLD实现PWM的方法 }},这是一篇非常基础的文章,详细介绍了PWM的构成原理、构成方式、以及应用。 | ||
- | ### 3. 双PWM产生更高频率的信号 | + | ### 5. 双PWM产生更高频率的信号 |
- | - 设置FPGA内部工作频率为12MHz x 33 = 396MHz(有时序报警,但可以忽略) | + | 如果将PWM和R-2R的原理结合起来,会如何?比如如果你的板子上有两根数字IO,能否通过这两根数字IO上的PWM-DAC得到更好的性能提升?比如我们如果想得到一个10位分辨率的DAC,如果只是用1根数字IO,396MHz的主频,相当于转换率为396MHz/1024, 如果用2根数字IO,两个PWM输出,一个PWM负责10位中的高5位,另一个PWM负责处理10位中的低5位,二者之间合成的时候按照R-2R的原理,也就是其中一个的负载阻抗是另一个的1/32,转换率就提升了32倍,也就是最高转换率可以达到396MHz/32 = 12.375Msps,理论上生成5MHz以内的任意波形是没有问题了。 |
- | - 设置PWM DAC的精度为8位,使用两个输出管脚分别驱动外部电阻1.5K和24K(1.5x16),查找表的高4位分配给连接1.5K的输出管脚,查找表的低4位分配给连接24K的输出管脚。 | + | {{ :daul_pwm_schem_sm.jpg |}} |
- | - DAC的转换时钟为12MHz*33/16 = 24.75MHz,相当于一个24.75MHz的并行8位DAC,正弦波表的查找时钟也使用这个24.75MHz的时钟 | + | |
+ | 如果要生成我们最常用的8位DAC呢? | ||
+ | - 设置FPGA内部工作频率为12MHz x 33 = 396MHz | ||
+ | - 设置PWM DAC的精度为8位,使用两个输出管脚分别驱动外部电阻1.5K和24K(1.5x16),查找表的高4位分配给连接1.5K的输出管脚,查找表的低4位分配给连接24K(1.5K的16倍)的输出管脚。 | ||
+ | - DAC的转换时钟为12MHz*33/16 = 24.75MHz,相当于一个24.75MHz的并行8位DAC,正弦波表的查找时钟也使用这个24.75MHz的时钟,最高可以生成10MHz的任意波形(按照主时钟40%的转换率 + 7阶椭圆滤波器的方式) | ||
Verilog代码: | Verilog代码: |