一、DDS:(Direct Digital Synthesis,直接数字频率合成技术),可用于生成不同频率的、不同波形的信号。在FPGA内部初始化一个ROM,用来保存波形数据,然后按照一定频率将ROM中的数据输出到DAC就行。
二、生成.mif文件,用来初始化ROM
1、生成.mif的方法:
Quartus自带的工具(File--New--Memory Initialization File),或者其他波形生成软件,比如Guagle_wave,
.mif如图1所示。
![](https://img-blog.csdnimg.cn/20200114185839203.png)
注:图为用notepad++打开的.mif文件,可用notepad++中的列操作批量修改数据。alt+A+鼠标拖动:选中列;alt+c:在光标列插入数值或字符;
2、生成ROM IP及初始化
创建一个1端口的ROM,如图2所示。
![](https://img-blog.csdnimg.cn/20200114190514105.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODQ4NjIwNA==,size_16,color_FFFFFF,t_70)
设置ROM的位宽和深度,如图3所示。
![](https://img-blog.csdnimg.cn/20200114190657625.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODQ4NjIwNA==,size_16,color_FFFFFF,t_70)
添加之前生成的.mif文件,如图4所示。
![](https://img-blog.csdnimg.cn/20200114190804572.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODQ4NjIwNA==,size_16,color_FFFFFF,t_70)
三、在FPGA工程模块中例化ROM,如图5所。.
![](https://img-blog.csdnimg.cn/2020011419205267.png)
四、仿真和实测结果,如图6所示。
![](https://img-blog.csdnimg.cn/20200115194114548.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODQ4NjIwNA==,size_16,color_FFFFFF,t_70)
注:
1、Modelsim仿真时不能识别.mif文件,可将.mif转换为.hex文件,方法如下:https://blog.csdn.net/weixin_38486204/article/details/88344879
用.mif或者.hex初始化,在生成的ROM文件中都能看到:
![](https://img-blog.csdnimg.cn/20200115194643326.png)
2、在仿真时一定确认Quartus生成ROM文件中需要使用的仿真库,在Modelsim中编译了altera_mf--altsyncram才能进行仿真,如图8。
![](https://img-blog.csdnimg.cn/20200115193341152.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODQ4NjIwNA==,size_16,color_FFFFFF,t_70)
五、工程链接(FPGA工程、仿真文件):
链接://download.csdn.net/download/weixin_38486204/12104785