欢迎来到天天文库
浏览记录
ID:39469671
大小:377.50 KB
页数:14页
时间:2019-07-04
《VHDL-WAVE课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、华南理工大学广州学院数字系统设计(VHDL)课程报告题目:简易波形发生器姓名:曾祥安学号:201130085225序号:1学院:电子信息工程学院班级:11级电信2班指导老师:李欣完成时间:2014-01-02简易波形发生器一、功能及原理介绍本课设选择了“简易波形发生器”作为课设题目。波形的产生有很多种方法,比如有DDS芯片产生波形,单片机产生波形,可编程逻辑器件产生等。FPGA是可编程门阵列,它能通过硬件描述语言如VHDL和Verilog对实体器件的功能描述实现各种功能的电路模块。从规模上说,小到可以点一盏灯,大到可以做出一个复杂的芯片内核。作为FPGA的课程设计,我当然
2、是要选用FPGA来实现波形的产生的了。课设并没有使用实验室的实验箱作为硬件平台,而是选用了自己买的板,使用的芯片是CycloneII的EP2C8Q208C8N。在我的设计中,我产生了五种波形,分别是方波、三角波、减锯齿波、增锯齿波还有正弦波。其中前四种波形是直接通过编写VHDL文件来实现的,而正弦波的实现则通过LPM_ROM的方法间接产生的。LPM_ROM的方法是在Quartusii的开发界面中按照一定的操作步骤先建立一个ROM,我设定的ROM大小为128*8Byte,即是说这个ROM能放128个字节。通过MIFmaker软件生成包含128个正弦波数据点的mif文件,然后
3、把这个文件在创建ROM的某个步骤中选中,把这些数据在生成ROM的同时也把波形数据烧写进去,于是乎ROM里面就含有了正弦波的数据了。要想产生正弦波就需要在7根地址线上通过ROM地址自增器由0000000到1111111的线性递增来实现。选中波形存储的某个单元,某个单元的数据就会被输出,于是就能达到产生正弦波的目的。除了五个波形产生的模块,还需要一个数据选择器来对五路波形有选择性地单个输出。在我的FPGA开发板上,我使用了四个拨码开关,三个用来选择波形,一个用来控制异步复位信号。二、VHDL编程实现(1)方波libraryieee;useieee.std_logic_1164
4、.all;useieee.std_logic_unsigned.all;entitysquareisport(clk,reset:instd_logic;q:outstd_logic_vector(7downto0));endsquare;architecturebehavofsquareissignala:std_logic;beginprocess(clk,reset)variabletmp:std_logic_vector(7downto0);beginifreset='0'thena<='0';elsifrising_edge(clk)theniftmp="111
5、11111"thentmp:="00000000";elsetmp:=tmp+1;endif;iftmp<="10000000"thena<='1';elsea<='0';endif;endif;endprocess;process(clk,a)beginifrising_edge(clk)thenifa='1'thenq<="11111111";elseq<="00000000";endif;endif;endprocess;endbehav;(2)三角波libraryieee;useieee.std_logic_1164.all;useieee.std_logic_u
6、nsigned.all;--程序包entitytriangleis--定义三角波实体port(clk,reset:instd_logic;q:outstd_logic_vector(7downto0));endtriangle;architecturebehavoftriangleis--定义三角波结构体beginprocess(clk,reset)--进程开始variabletmp:std_logic_vector(7downto0);--定义中间变量tmp、avariablea:std_logic;beginifreset='0'then--复位信号设置tmp:="0
7、0000000";elsifrising_edge(clk)then--捕捉时钟信号上升沿ifa='0'then--a=0时依次输出三角波上升沿iftmp="11111110"thentmp:="11111111";a:='1';elsetmp:=tmp+1;endif;else--a=1时依次输出三角波下降沿iftmp="00000001"thentmp:="00000000";a:='0';elsetmp:=tmp-1;endif;endif;endif;q<=tmp;--输出信号q=tmpendprocess;endbe
此文档下载收益归作者所有