欢迎来到天天文库
浏览记录
ID:33574462
大小:394.00 KB
页数:7页
时间:2019-02-27
《实验6_正弦信号发生器设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验6_正弦信号发生器设计一、工作原理正弦信号发生器工作原理框图如下:VHDL顶层设计(singt.vhd)8位D/A正弦波数据存储ROM6位地址计数器其中正弦波数据存储器采用6位地址线,8位数据线。即可存储26(64个8位数据)个字节数据。由FPGA中的宏功能模块实现。D/A输出信号频率f与地址计数器输入时钟信号CLK频率f0、每周期波形数据点数的关系如下:f=f0/64二、定制波形数据存储文件初始化数据存储文件有两种格式:.mif文件和.hex文件。建立.mif文件过程如下:1、执行“File→New”菜单,弹出建立文件对话框如下:选择“Mem
2、oryInitializationFile”选项建立数据存储文件,其字节数取:64;数据位宽取:8位,并输入64个8位数据如下图所示:2、执行“File→Save”菜单,将上面的数据存储文件保存在工程目录data文件夹内。文件命名为:romd.mif。如下图所示:三、定制宏功能模块(LPM_ROM)元件1、执行“Tools→MegaWizardPlug-InManager”菜单,弹出如下图所示对话框:选择“Createanewcustom…”定制一个新的模块。单击“Next”按钮,打开如下对话框:在左栏选择“LPM_ROM”,在左上角分别选择:Cy
3、clone器件、VHDL语言方式,以及需要输出的ROM数据存储文件目录及文件名,假设定义为romd.vhd2、单击“Next”按钮,弹出如下对话框:选择存储文件数据宽度为8位,字节数为64,选择双时钟方式。单击“Next”按钮,弹出如下对话框:3、单击“Next”按钮,弹出如下对话框:在图中设置初始化数据存储文件的路径,以及此存储文件的名称ROM1。4、单击“Next”按钮,弹出如下对话框:5、单击“Next”按钮,弹出如下对话框:6、单击“Finish”按钮,完成宏功能模块文件的定制。7、打开定制好的宏功能模块文件romd.vhd,可以看到其中调
4、用初始化数据文件的语句为:init_file=>"E:/EDA2/第七章/实例1_正弦信号发生器设计/data/romd.mif",将其修改为:init_file=>"./data/romd.mif", 即采用相对路径,以便于移动到其它路径。四、完成顶层文件设计1、编辑顶层文件VHDL源程序如下:-------------------------------------------------------模块功能:正弦波发生器顶层设计文件--入口参数:时钟信号clk--出口参数:8位数据输出:dout--程序编写:zqp--创建时间:2007-10
5、-16--联系方式:QQ:30871641--修改日志:--NO.1:----------------------------------------------------LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--使用标准逻辑矢量USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYsingtISPORT(clk:INSTD_LOGIC;dout:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--8位波形数据输出END;ARCHITECTUREoneOFsingtISCO
6、MPONENTromd--调用波形数据存储文件PORT(address:INSTD_LOGIC_VECTOR(5DOWNTO0);--6位地址信号inclock:INSTD_LOGIC;--地址锁存时钟q:OUTSTD_LOGIC_VECTOR(7DOWNTO0)--8位数据输出);ENDCOMPONENT;SIGNALq1:STD_LOGIC_VECTOR(5DOWNTO0);--内部节点作为地址计数器BEGINPROCESS(clk)BEGINIFCLK'EVENTANDCLK='1'THENq1=q1+1;ENDIF;ENDPROCESS;u
7、1:romdPORTMAP(address=>q1,q=>dout,inclock=>clk);--元件例化END;2、建立工程编译3、建立矢量波形文件仿真建立矢量波形文件仿真得到仿真波形图如下:
此文档下载收益归作者所有