课程设计(论文)-基于FPGA的智能函数发生器的设计.doc_第1页
课程设计(论文)-基于FPGA的智能函数发生器的设计.doc_第2页
课程设计(论文)-基于FPGA的智能函数发生器的设计.doc_第3页
课程设计(论文)-基于FPGA的智能函数发生器的设计.doc_第4页
课程设计(论文)-基于FPGA的智能函数发生器的设计.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于fpga的智能函数发生器的设计学生姓名:x x学生学号:2 0 xxxxxxxxx 一、设计要求1.设计一个能产生递增、递减斜波,方波,三角波,正弦波,阶梯波智能函数发生器;2.要求能自主选择输出波形,并能调整输出频率。二、设计原理递增、递减斜波是以一定常数递增、递减来产生的。三角波的产生是在输出波形的前半周期内从0累加到最大值255(8位),在后半周期从最大值递减到0来实现的。阶梯波阶梯波是以一定的常数递增的。正弦波的产生原理是基于奈奎斯特采样定律,先对模拟信号采集,经过量化后存入查表中,再由相位累加器产生地址,通过对查表寻址,得到离散化波形序列,最后经过d/a转换输出模拟波形。方波的产生是在输出波形的前半周期输出低电平,后半周期输出高电平,从而得到占空比为50%的方波信号。通过所设计的智能函数发生器可以得到递增、递减斜波,方波,三角波,正弦波和阶梯波六种波形,这些波形的产生都是通过fpga的核心芯片,各种运算都在fpga中进行,直接输出选择的波形。三、设计内容与步骤设计的智能函数发生器就是为了得到得到递增、递减斜波,方波,三角波,正弦波和阶梯波六种波形,可以通过按钮来选择输出波形,并且具有复位的功能。智能函数发生器总体框图如图1.1所示;图中输入clk为时钟信号,用于调整输出波形的频率;输入reset为复位信号;输入sel2.0为选择信号,用于选择输出波形;输出q接在d/a转换的数据端,就可以在d/a转换器的输出端得到各种不同的函数波形。图1.1 智能函数发生器总体框图1.递增斜波模块的设计:递增斜波模块zeng见图1.2。它是递增斜波产生模块。图1.2 模块zeng递增斜波模块zeng的vhdl程序设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity zeng is port(clk,reset:in std_logic; q:out std_logic_vector(7 downto 0);end zeng;architecture zeng_arc of zeng is begin process(clk,reset) variable tmp:std_logic_vector(7 downto 0); begin if reset=0 then tmp:=00000000; elsif clkevent and clk=1 then if tmp=11111111 then tmp:=00000000; else tmp:=tmp+1; end if; end if; q=tmp; end process;end zeng_arc;2.递减斜波模块的设计:递减斜波模块jian见图1.3。它是递减斜波产生模块。图1.3 模块jian递减斜波模块zeng的vhdl程序设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jian is port(clk,reset:in std_logic; q:out std_logic_vector(7 downto 0);end jian;architecture jian_arc of jian is begin process(clk,reset) variable tmp:std_logic_vector(7 downto 0); begin if reset=0 then tmp:=11111111; elsif clkevent and clk=1 then if tmp=00000000 then tmp:=11111111; else tmp:=tmp-1; end if; end if; q=tmp; end process;end jian_arc;3.三角波模块的设计:三角波模块delta见图1.4。它是三角波产生的模块。图1.4 模块delta三角波模块delta的vhdl程序设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity delta is port(clk,reset:in std_logic; q:out std_logic_vector(7 downto 0);end delta;architecture delta_arc of delta is begin process(clk,reset) variable tmp:std_logic_vector(7 downto 0); variable a:std_logic; begin if reset=0 then tmp:=00000000; elsif clkevent and clk=1 then if a=0 then if tmp=11111110 then tmp:=11111111;a:=1; else tmp:=tmp+1; end if; else if tmp=00000001 then tmp:=00000000;a:=0; else tmp:=tmp-1; end if; end if; end if; q=tmp; end process;end delta_arc;4.阶梯波模块的设计:阶梯波模块ladder见图1.5。它是阶梯波产生的模块,改变递增的常数,可改变阶梯的多少。图1.5 模块ladder阶梯波模块ladder的vhdl程序设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ladder is port(clk,reset:in std_logic; q:out std_logic_vector(7 downto 0);end ladder;architecture ladder_arc of ladder is begin process(clk,reset) variable tmp:std_logic_vector(7 downto 0); variable a:std_logic; begin if reset=0 then tmp:=00000000; elsif clkevent and clk=1 then if a=0 then if tmp=11111111 then tmp:=00000000;a:=1; else tmp:=tmp+16;a:=1; end if; a:=0; end if; end if; q=tmp; end process;end ladder_arc;5.正弦波模块的设计:正弦波模块sin见图1.6。它是正弦波产生的模块。图1.6 模块sin正弦波模块sin的vhdl程序设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sin is port(clk,clr:in std_logic; d:out integer range 0 to 255);end sin;architecture sin_arc of sin is begin process(clk,clr) variable tmp:integer range 0 to 63; begin if clr=0 then dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddnull; end case; end if; end process;end sin_arc;6.方波模块的设计:方波模块square见图1.7。它是方波产生的模块。图1.7 模块square方波模块square的vhdl程序设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity square is port(clk,clr:in std_logic; q:out integer range 0 to 255);end square;architecture square_arc of square issignal a:bit; begin process(clk,clr) variable cnt:integer range 0 to 63; begin if clr=0 then a=0; elsif clkevent and clk=1 then if cnt63 then cnt:=cnt+1; else cnt:=0;a=not a; end if; end if; end process; process(clk,a) begin if clkevent and clk=1 then if a=1 then q=255; else qqqqqqqnull; end case; end process;end ch61a_arc;四、设计工具 计算机一台,quartus 软件五、设计结果1.若输入时钟信号clk为100mhz,复位信号reset=1;当选择信号sel=000时,输出q应为递增斜波,如图1.9所示:图1.9 递增斜波 注:仿真为时序仿真,所以输出波形存在瑕疵。2.若输入时钟信号clk为100mhz,复位信号reset=1;当选择信号sel=001时,输出q应为递减斜波,如图1.10所示:图1.10 递减斜波 注:仿真为时序仿真,所以输出波形存在瑕疵。3.若输入时钟信号clk为100mhz,复位信号reset=1;当选择信号sel=010时,输出q应为三角波,如图1.11(a)、1.11(b)所示:图1.11(a) 三角波最高点处图1.11(b) 三角波最低点处 注:仿真为时序仿真,所以输出波形存在瑕疵。4.若输入时钟信号clk为100mhz,复位信号reset=1;当选择信号sel=011时,输出q应为递增常数为20(十进制)的阶梯波,如图1.12所示:图1.12 递增常数为20(十进制)的阶梯波 注:仿真为时序仿真,所以输出波形存在瑕疵。5.若输入时钟信号clk为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论