清风陪你学FPGA(4)——三相正弦波发生器
本帖最后由 清风403 于 2015-11-20 14:13 编辑前几天一个同学问我,三相正弦波发生器用FPGA怎么做,我仔细思考了一下,回想到之前做过的信号发生器,三相无非也就是改变信号发生器的输出相位罢了,今天我将我的思路以及制作的过程分享给大家。
我们都知道,FPGA是数字器件,所以无法输出模拟信号,所以输出必须是一个多少位的数字信号,这个数字信号经过DAC转换,才可以成为模拟信号。那么我们如何得到这个数字信号呢?
1. 首先我们需要将正弦信号离散化(一个周期内);
2. 然后对离散化的信号进行处理,处理成我们可以输出的数字信号(这里我们假设是8位的数字信号);
3. 将这些离散化的信号依次存入到一个RAM中(宽度8,深度256),通过RAM的地址控制数字信号的输出。
以上三个步骤的前两步需要用到其他的软件来帮助,这里我比较熟悉matlab,虽然比较麻烦,但是方法很通用,以下是matlab代码:
打开Quartus II软件,新建一个mif文件,宽度8,深度256,将a.txt文件中的数据全部粘贴到mif文件中。之后用软件自带的IP核生成一个单口ram,并将这个mif文件导入到ram中,这样一个具有离散数据的ram就制作成功了。
下面的任务就是代码的编写,首先我们需要通过这个ram实例化三个dds_ram_model1、dds_ram_model2、dds_ram_model3,输出数据只要将ram的wr置于低电平,并输入相应的地址就可以了。
下面是我的代码:
测试文件代码:
仿真波形如下:
我的分享也会发在我的公共号里面,有兴趣的可以扫描一下公共号加一下
好了,今天的分享就到这里了。 电梯控制器程序设计与仿真.doc
http://www.fpgaw.com/forum.php?mod=viewthread&tid=83918&fromuid=54563
(出处: 集成电路技术分享)
清风陪你学FPGA(4)——三相正弦波发生器
页:
[1]