本章节继续FPGA学习。本章是基于大佬写的《基于FPGA的目标反射回波检测算法及其实现》,自己用硬件去实现DA转换
原文链接在这里:https://www.cnblogs.com/helesheng/p/9414652.html
博主介绍了详细的步骤在这里我就不重复了,自己实际用的时候,因为目前只是学习到了PL部分,博主用的PMOD在我使用的开发板中属于PS部分,因此IO口我用的其他引脚代替的(不知道影响大不大)。
一.MCP4822简介
这是MCP4822是双通道12位电压输出DAC,通过SPI协议与FPGA进行通信。注意芯片的寄存器写入命令是16位的
因此在配置的时候要注意前面四位数据格式。传输过程大致为:
具体spi通信部分还请看上面的原文链接。
二.硬件实现仿真部分
实验中通过DDS生成正弦波,然后通过dac进行输出波形,实验结果如下:
vivado利用仿真实验波形如下:
数据位设置为unsigned decimal
实际示波器图形:
我这里选择了2X增益,所以最大电压可以达到4.08V,但是图形为什么不是正弦波呢?查看手册得知:所以这个DA芯片只能输出正值即没有符号的数。(欢迎大佬批评指正)
如果想要输出负的电压,可以参考:
ps:因为mcp4822属于低速串口da转换器,因此输出频率有限
上面显示mcp4822的稳定时间为4.5us左右,此处应该是指将数字量转换为模拟电压输出的时间。同时spi时序是指将数据写入da芯片中的时间,与fpga使用的时钟有关系,但是要满足手册上的时序要求。
作者能力有限,难免存在错误和纰漏,请大佬不吝赐教。