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

下载本文档

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

文档简介

1、 课程设计题 目 基于fpga智能函数发生器设计 学生姓名 学号 0813014043 所在院(系) 物电学院 专业班级 电子082 指导教师 完成地点 501实验室 2011 年 12 月 27 日基于fpga智能函数发生器的设计(陕西理工学院 电信工程系(电子信息工程专业,082班)指导教师:摘要 fpga实现智能函数发生器设计介绍了一种基于fpga的智能函数发生器的设计.采用eda技术对此设计进行功能仿真和时序仿真,在eda系统开发平台上实现程序下载,同时在示波器上观察波形输出.关键词函数发生器 fpga edadesign of intelligent function signal

2、generator based on fpga(shaanxi university of technology department of communication engineering electronic information engineering major class082)guide teacher: han tuanjunabstract fpga intelligent function generator design introduced one kind based on the fpga intelligent function generator design

3、. using eda technology to design the function simulation and timing simulation, in the development of eda system platform to achieve program download, while in the oscilloscope to observe the waveform output.key word function generator fpga eda 目录1.智能函数器发生原理和系统实现21.1智能函数发生器的性能指标21.2仿真软件介绍及操作步骤31.21q

4、uartus ii软件简介31.22quartus ii软件设计流程42.智能函数器设计52.1设计的基本原理和思路52.2总体方案设计53.单元模块的设计73.1递增斜波信号产生模块:73.2递减斜波信号产生模块83.3三角波信号产生模块103.4阶梯波信号产生模块113.5方波信号产生模块133.6正弦波信号产生模块143.7波形输出选择器模块163.8函数发生器的顶层设计184.设计总结215.致谢226.参考文献231.智能函数器发生原理和系统实现1.1智能函数发生器的性能指标综合市场 上的函数 发生器的指 标和自身 的硬件情 况以及考 虑到其应 用的不同的 场合, 该智能 函数发 生

5、器的 设计要 求如下 :该 函 数 发 生 器 采 用 直 接 数 字 频 率 合 成 (dds-digital direct frequ encysynthesis) 技术实现,可以产生 范围为 1 180 khz 的三角波、正弦 波、 方波递增斜波 ,递减 斜波。该函数发生 器可以 实现波 形的幅 度可调 以及可 以叠加 直流。此函数发生 器在共 分为四 个档,分别为 1hz100hz、100hz1khz、1khz10khz、10khz80khz,在这 四个档 位内的 最小可 调节频 率分别 为 1hz、10 hz、100hz、1 khz。该函数发生 器有四 个按键,五个数码管,一个调节幅

6、度的旋钮,一个调剂叠加直 流分量 的旋钮 以及一 个波形 输出端 口,其 四个按 键的具 体功能 如下:按键 1:任何状态下按下此键都输出频率为 1hz 的方 波按键 2:波形选择键:通过 此按键 可选择 波形。每按一次键,波形就改变一次, 波形在 方波、 正弦波 、三角 波,递 增斜波 ,递减 斜波五 种波形 间切换 。按键 3:频率档位选择键:通过按键选择频率档位。每按 一次键,选择一个频率 档位,共分为四个档,分别为 1hz100hz,100hz1khz,1khz 10khz,10khz80khz。按键 4:频率步进选择键:通过按键选择频率的步进值。每按一次键,步进值则 根据此 时所处

7、的频率 的档位 的不同 而改变 :当频 率处于 1hz100hz 时 ,步进值 为 1 hz,当频率为 100hz1khz 时,其步进值为 10hz,当频率处于 1khz10khz 时,其步进值为 100hz,当频率为 10khz80khz,其 步进值 为 1khz。此函数发生 器具有 五个数 码管, 用一个 数码管 的 1 5 来区 分当前 的波形 种类, 1 代表方波, 2,代表三角波,3 代表正弦波,4 代表 递增斜 波, 5 代表递减斜波 。一个 用于显 示档位 ,1 代表 1hz1 00hz 的档位,2 代表 1 00hz1 khz 档位, 3 代表 1khz10 khz 档位,4

8、代表 1 0khz80khz 档位。还有三位用于显示当 前波形 的频率1.2仿真软件介绍及操作步骤1.21quartus ii软件简介1)quartus ii软件介绍quartus ii 是alera公司推出的一款功能强大,兼容性最好的eda工具软件。该软件界面友好、使用便捷、功能强大,是一个完全集成化的可编程逻辑设计环境,具有开放性、与结构无关、多平台完全集成化丰富的设计库、模块化工具、支持多种硬件描述语言及有多种高级编程语言接口等特点。quartus ii是altera公司推出的cpld/fpga开发工具,quartus ii提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全

9、部特性,包括:可利用原理图、结构框图、veriloghdl、ahdl和vhdl完成电路描述,并将其保存为设计实体文件;芯片平面布局连线编辑;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用signaltap ii逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的edif网表文件、vhdl网表文件和verilog网表文件;能生成第三方eda软件使用的vhdl网表文件和verilog网表文件。1.22quar

10、tus ii软件设计流程(1) 打开quartus ii软件。(2) 选择路径。注意:工作目录名不能有中文。(3) 添加设计文件。(4) 选择fpga器件。family选择cyclone,240,8。(5) 建立原理图或用vhdl语言描述设计电路。(6) 对原理图或用vhdl语言进行编译,无误后进行添加信号。(7) 对上述电路进行仿真。(8) 进行管脚分配。(9) 全局编译。(10) 采用jtag或as模式进行下载测试。2.智能函数器设计2.1设计的基本原理和思路本设计采用 直接频 率合成 的方式 设计函 数信号 发生单 元。直接频率合成的基本原理是:首先设定一个 (或多个)基准频率,将这 个

11、(或多个)基 准频率变换成另一 个 ( 或 多 个 ) 合 乎 质 量 要 求 的 所 需 频 率 。 直 接 频 率 合 成 技 术 (direct digital frequ ency synthsis)就是把要输出的波形,预先归一化处理后,采样足够的点数,存储 于波形 存储器 中,在需要输出时,将波形从存储器中读出,经过 数/模转换,再通过后续模拟电路 处理输出。dds 信 号产生单元主要有由 相位累加器、只读存储 器、数模转换器组成。存储器中存储的是波形一个周期内不同相位对于函数波形 幅值的 编码,通过时钟触发相位累加器累加,相位累加器的输出作为地址取出存储器存储的值, 该值进入 d/

12、a 转换为 相应的模拟信号,通 过一个周期内相位的 累加我 们就可 以得到 一个周 期的信 号输出 ,该信号通过后续模拟电路处理就可以 得到我 们想要 的函数 波形。2.2总体方案设计本论文设计的函数信号发生器主要由波形选择部分,波形发生部分和输出部分组成,其硬件结构图如图2.2所。其中波形选择部分是数据选择器电路;波形发生部分包括递增斜波产生电路,递减斜波产生电路,三角波产生电路,斜梯波产生电路,正弦波产生电路和方波产生电路;输出部分是数/模转换电路。其中数/模转换模块是通过硬件实现的,其它都是依靠软件实现的。根据实验箱的硬件资源,本次设计选用altera公司max7000s系列的epm71

13、28slc8415作为主控芯片。它是一种基于乘积项结构的复杂可编程逻辑器件,它的基本逻辑单元是由一些与、或阵列加上触发器构成,其中与或阵列完成组合逻辑功能,触发器完成时序逻辑。它的逻辑控制灵活,可反复编程,有利于系统的扩展和修改,而且其集成度高,保密性好。在实际应用中,它体积小、功耗低、价格便宜,维护和升级都十分方便,具有较好的应用前景。图2.2硬件结构图数模转换器原理d/a转换器输入的是数字量,经转换后输出的是模拟量。有关d/a转换器的技术性能很多,例如分辨率、建立时间、接口形式、偏移量误差以及线形度等等。分辨率是d/a转换器对输入量变化敏感程度的描述,与输入数字量的位数有关。数字量位数越多

14、,分辨率也就越高。建立时间是描述d/a转换速度快慢的一个参数,指从输入数字量变化到输出并达到终值误差正负(1/2)lsb(最低有效位)时所需时间。通常以建立时间来表示转换速度。d/a转换器与微机借口方便与否,主要决定于转换器本身是否带数据锁存器。总的来说有两类d/a转换器,一类是不带锁存器的,另一类是带锁存器的。带锁存器的d/a转换器,可以把它看作一个输出口,因此可直接在数据总线上,而不是另加锁存器。偏移量误差是指输入数据量为0的时候,输出模拟量对0的偏移量。这种误差可以通过dac的外接vref和电位计加以调整。线形度是指dac的实际转换特性曲线和理想直线之间的最大偏差。d/a转换器有2大类:

15、一类是在电子线路中使用,不能使能控制端口,只有数字量输入和模拟量输出;另一类带有使能控制端口,可以与微机直接连接。此实验中采用后者的lm358,以实现数字信号到模拟信号的转换。lm358转换模块8位d/a,i/o口定义如下:d0d7:数据总线,输入口;/ce:转换允许,低电平有效;/cs:片选,低电平有效;有两种输出方式。第一种,将短路子接在左侧的两个铜柱上,d/a转换输出到d/a out区域的第六个孔输出;第二种,将短路子接在右侧的两个铜柱上,d/a转换输出接到lm358的同相输入端。lm358单电源二运放。与ad558配合,将ad558的输出接到lm358的同相输入端,作为他的同相输入信号

16、;在lm358的右上脚,有test in模块,他的信号可作为lm358的反相输入端。3.单元模块的设计3.1递增斜波信号产生模块: 递增斜波产生原理:当复位信号为1时,每当检测到时钟上升沿时,计数器值加1,当增加到最大后清零。计数值增加呈现线性关系,因此输出的波形是递增的斜波。(a)程序library ieee;-锯齿波递增use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity juchibo_ad isport (clk,reset:in std_logic; q:out std_logic_vector(7 do

17、wnto 0);end;architecture behave of juchibo_ad isbegin process(clk,reset) variable tmp: std_logic_vector(7 downto 0);begin if reset=0 then tmp:=00000000;elsif clk event and clk=1 thenif tmp=11111111 then tmp:=00000000;else tmp:=tmp+1;end if;end if;q=tmp;end process;end(b)递增斜波仿真波形:图3.11递增锯齿波仿真波形(c)递增斜

18、波信号产生模块元件图:图3.12递增斜波元件图3.2递减斜波信号产生模块递减斜波产生原理:当复位信号为1时,每当检测到时钟上升沿时,计数器值减1,当增加到0后赋值到最大。计数值减少呈现线性关系,因此输出的波形是递减的斜波。(a)程序library ieee;-锯齿波递减use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity juchibo_ji isport ( clk,reset:in std_logic; q:out std_logic_vector(7 downto 0);end;architecture be

19、have of juchibo_ji isbegin process(clk,reset) variable tmp: std_logic_vector(7 downto 0);begin if reset=0 then tmp:=11111111;elsif clkevent and clk=1 thenif tmp=00000000 then tmp:=11111111;else tmp:=tmp-1;end if;end if;q=tmp;end process;end;(b)递减斜波仿真波形:图3.21递减锯齿波原件图(c)递减斜波信号产生模块元件图:图3.22递减斜波元件图3.3三角

20、波信号产生模块三角波产生原理:三角波是对称的,每边呈线性变化,所以可以根据数据做简单运算,就可以得到三角波。(a)程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sanjiaobo isport(reset:in std_logic; clk:in std_logic; q:out std_logic_vector(7 downto 0);end;architecture behave of sanjiaobo isbeginprocess(clk,reset)variable

21、tmp:std_logic_vector(7 downto 0);variable a:std_logic;begin if reset=0 then q=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

22、;end;(b)三角波仿真波形:图3.31三角波仿真波形(c)三角波信号产生模块元件图:图3.32三角波元件图3.4阶梯波信号产生模块阶梯波产生原理:数据的递增是以一定的阶梯常数往上增加,所以输出的波形是呈现阶梯状的,而不是,完全呈现是直线增长。(a) 程序library ieee;-阶梯波use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jietibo isport (clk,reset:in std_logic;q:out std_logic_vector(7 downto 0);end;architect

23、ure behave of jietibo isbeginprocess(clk,reset) variable tmp: std_logic_vector(7 downto 0);begin if reset=0 thentmp:=00000000; elsif clk event and clk=1 then if tmp=11111111 then tmp:=00000000; else tmp:=tmp+16; end if; end if;q=tmp;end process;end;(b)阶梯波仿真波形:图3.41阶梯波仿真波形(c)阶梯波信号产生模块元件图:图3.42阶梯波元件图3

24、.5方波信号产生模块方波产生原理:其内部计数到达64时,根据输出标志a的数值输出对应的数值,当a=0是输出0,也就是方波周期中的低电平,当a=1,输出255,也就是方波周期中的高电平。连续的输出便成了观测的方波波形。(a)程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fangbo is port(clk,reset:in std_logic; q:out std_logic_vector(7 downto 0);end;architecture behave of fangbo

25、 issignal a:std_logic;begin process(clk,reset) variable tmp:std_logic_vector(7 downto 0); begin if reset=0 then a=0; elsif clkevent and clk=1 then if tmp=11111111 then tmp:=00000000; else tmp:=tmp+1; end if; if tmp=10000000 then a=1;elsea=0;end if;end if; end process; process(clk,a) -信号输出 begin if c

26、lkevent and clk=1 then if a=1 then q=11111111; else q=00000000; end if; end if; end process; end;(b)方波仿真波形:图3.51方波仿真波形(c)方波信号产生模块元件图:图3.52方波元件图3.6正弦波信号产生模块 正弦波产生原理:通过循环不断地从波形数据rom文件中依次读取正弦波一个周期在时域上64个采样点的波形数据送入波形dac,从而产生正弦波。其频率取决于读取数据的速度。(a) 程序library ieee; -正弦波use ieee.std_logic_1164.all;use ieee.s

27、td_logic_unsigned.all;entity zhengxianbo is port(clk,reset:in std_logic; d:out integer range 0 to 255);end;architecture behave of zhengxianbo is begin process(clk,reset) variable tmp:integer range 0 to 63; begin if reset=0 then dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddnull; e

28、nd case; end if; end process; end;(b)正弦波仿真波形:图3.61正弦波仿真波形(c)正弦波信号产生模块元件图: 图3.62正弦波元件图3.7波形输出选择器模块选择器产生原理:选择器是一个6选1的数据选择器,其中sel为波形数据选择端口,d0d6为8位二进制输入端口,q为8位二进制输出端口。该模块可以根据外部开关的状态选择相应的输出波形。(a) 程序library ieee;-选择器use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xuanzeqi isport ( sel:

29、in std_logic_vector(2 downto 0);d1,d2,d3,d4,d5,d6:in std_logic_vector(7 downto 0);q:out std_logic_vector(7 downto 0);end;architecture behave of xuanzeqi isbeginprocess(sel)begincase sel iswhen 001=qqqqqqnull;end case;end process;end;(b)选择器仿真波形:图3.71选择器波形图(c)选择器信号产生模块元件图:图3.72选择器元件图3.8函数发生器的顶层设计(a)将上

30、述模块生成符号,供顶层电路调用。这些模块分别是:递增锯齿波产生模块,递减锯齿波产生模块,三角波产生模块,阶梯波产生模块,方波产生模块,正弦波信号产生模块,选择器。顶层电路的连接如图所示:图3.81顶层电路图(b)波形选择电路与输出波形对应表:s2.0 对应的波形 001递增斜波 010递减斜波 011三角波 100阶梯波 101方波 110正弦波 其他 others无波形产生图3.82电路波形对应图 (c)管脚分配:图3.83电路管脚分配图4设计总结经过本周关于基于fpga的智能函数器发生器的的课程设计,我vhdl的应用有了更深的了解。当然在课程设计的过程中,不可避免的碰到了许多问题。对于代码

31、的前后顺序及调用掌握得还不够好;对于一些相关的应用软件没能熟练掌握。通过这几天的思考,以及参考网上的程序和听取同学的讲解,最终还是把问题解决了。通过本次课程设计,又使我学到了许多书本上无法学到的知识,也使也深该体会到vhdl技术应用领域的广泛,不仅使我对学过的vhdl知识有了很多的巩固,同时也对vhdl这一门课程产生了更大的兴趣。要做好一个课程设计,就必须做到:在设计程序之前,对所用vhdl有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常,我们应该将每次遇到的问题记录下来,并分析清楚,将之一一解决5致谢本课题在选题及研究过

温馨提示

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

评论

0/150

提交评论