1、VHDL简易信号发生器中国计量学院光学与电子科技学院课程设计报告课程设计名称 集成电路课程设计 系 电科系 专业班级 学 号 姓 名 成 绩 指导老师 2012 年 月 日概述函数信号发生器是一种能够产生多种波形,如三角波、 锯齿波、矩形波(含方波)、正弦波等波形的电路。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。现在我们通过对函数信号发生器的原理以及构成设计一个能变换出三角波、正弦波、方波的简易发生器。本设计采用FPGA来设计制作多功能信号发生器。在实验室用EDA完成设计并进行引脚锁定下载连接用SignalTap II Logic Analyer调试。一、设计原理本设计由信号产生
2、,信号选择,信号控制输出三大模块组合而成。其中信号产生模块有:三角波模块、方波模块、正弦波模块。本设计采用K0K2这三个按键为信号选择开关,选择信号产生模块输出的信号。其控制模块(SIG_CONTROL)是由数据选择器实现对以上三种信号的选择,并产生相应波形。其结构框图如下:二、设计原理概述(1) 函数信号发生器的结构:三角波信号、方波信号、正弦信号的发生器各一个,数据选择器。(2) VHDL 顶层设计。(3) SignalTap II Logic Analyer的仿真分析。(4) 顶层文件在FPGA中实现,通过外加按键控制波形输出,三个波形数据由三个信号发生模块(delta三角波、 squa
3、re方波、 sin正弦波)提供,信号发生器时钟由实验箱提供。三、设计步骤(1)三角波、方波和正弦波源文件的编写并把VHDL程序转换成原理图。(2) 数据选择器的源文件编写,并把VHDL程序转换成原理图。(3) 用原理图完成函数发生器的设计。(4) 编译完成后,建立 SingnalTap的工程文件。(5) 锁定引脚,下载连接。(6) 运行程序并观察结果。(7)记录数据完成报告。四、软件设计流程及源程序代码4.1 软件设计流程:1.设计原理图。2.分别编写各函数发生器,数据选择器的程序,并作为低层文件。3.建顶层文件,并调用底层文件,定义信号量进行列话语句。4.生成实验原理电路图。4.2各信号发生
4、器及数据选择器源程序及原理图:1三角波程序及其原理图 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY delta ISport(clk,clrn:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END delta;ARCHITECTURE a OF delta ISBEGINPROCESS(clk,clrn) VARIABLE tmp:STD_LOGIC_VECTOR(7 DOWNTO 0); VARIABLE f:STD_LOGIC
5、;BEGIN IF clrn=0 THEN tmp:=00000000; ELSIF clkEVENT AND clk=1 THEN IF f=0 THEN IF tmp=11111110 THEN tmp:=11111111; f:=1; ELSE tmp:=tmp+1; END IF; ELSE IF tmp =00000001 THEN tmp:=00000000; f:=0; ELSE tmp:=tmp-1; END IF; END IF; END IF; q=tmp;END PROCESS;END a;原理图如下: 图2.三角波信号发生器原理图2方波程序及其原理图 LIBRARY I
6、EEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY square ISPORT(clk,clrn: IN STD_LOGIC; q: OUT STD_LOGIC_VECTOR(7 downto 0);END square;ARCHITECTURE a OF square IS SIGNAL f: STD_LOGIC;BEGIN PROCESS(clk, clrn) VARIABLE tmp:STD_LOGIC_VECTOR(7 downto 0); BEGIN IF clrn=0 THEN tmp:=00
7、000000; ELSE IF clkevent and clk=1 THEN IF tmp=11111111 THEN tmp:=00000000; ELSE tmp:=tmp+1;END IF; IF tmp10000000 THEN f=1; ELSE f=0;END IF; END IF; END IF; END PROCESS; PROCESS(clk,f) BEGIN IF clkevent and clk=1 THEN IF f=1 THEN q=11111111; ELSE q=00000000;END IF; END IF; END PROCESS;END a;原理图如下:
8、图3.方波信号发生器原理图3正弦波程序及其原理图 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity sin is port (clk,clrn:in std_logic; q:out integer range 255 downto 0); end sin; architecture a of sin is begin process(clk,clrn) variable tmp:integer range 63 downto 0; begin if clrn=0 then qq
9、qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqnull; end case; end if;end if; end process; end a;原理图如下:图4.正弦波信号发生器原理图4数据选择器程序及其原理图 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sig_control ISPORT(delta,square,sin:IN STD_LOGIC; d0,d1,d2:IN STD_LOGIC_V
10、ECTOR(7 DOWNTO 0); q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END sig_control;ARCHITECTURE behave OF sig_control IS SIGNAL sel:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN selqqqNULL; END CASE;END PROCESS;END behave;原理图如下:图5.数据选择器原理图4.3信号发生器的顶层文件原理图由三个函数信号发生器以及数据选择器设计实验顶层文件原理图,如图6示 图6.函数信号发生器顶层文件原理图五、信号发生器的时序仿真与硬件测试5
11、.1仿真与测试流程1.各模块时序仿真结果。2.进行嵌入式逻辑分析,连接数到模转换芯片,并改变其波形种类和频率,用SignalTap II Logic Analyer进行观察。3.观察记录,得到模拟信号波形5.2时序仿真1.当选择信号K0置1,K1、K2置0时,信号发生器输出波形为三角波,其时序仿真波形如图7所示。图7.三角波时序仿真图2.当选择信号K1置1,K0、K2置0时,信号发生器输出波形为方波,其时序仿真波形如图8所示。图8.方波时序仿真图3.当选择信号K2置1,K0、K1置0时,信号发生器输出波形为正弦波,其时序仿真波形如图9所示。图9.正弦波时序仿真图5.3引脚锁定,如图10所示图1
12、0.引脚锁定图5.4 SignalTap II实时测试1.编译完成后,建立 SingnalTap的工程文件,如图11所示:图112.连接好实验箱后,将编译产生的SOF格式文件配置进FPGA中,进行硬件测试,如图12所示:图123.下载连接,运行程序并观察结果。 当选择信号K0置1时,其余按键置0,信号发生器输出三角波,其模拟信号波形如图13所示:图13.三角波模拟信号波形 当选择信号K1置1时,其余按键置0,信号发生器输出方波,其模拟信号波形如图14所示:图14.方波模拟信号波形当选择信号K2置1时,其余按键置0,信号发生器输出正弦波,其模拟信号波形如图15所示:图15.正弦波模拟信号波形六、
13、总结及心得体会6.1遇到的问题及解决方案1:三个波形文件的数据波形的输入解决方法:利用波形发生器软件建立三个形的.mif 文件后保存,并利用 Quartus软件后,即可建立 LPM_ROM 的文件。 2:顶层文件原理图的制作方法:利用数据选择器、三个波形的ROM为底层文件连线,完成顶层文件的制作。3:在程序编写时,明白变量(Variable)与信号(Signal)的作用及区别.4:在一个文件夹中只允许有一个工程,建立顶层文件时需要把所有相关的数和文件导入工程。5:引脚锁定的解决方法:根据顶层文件设计中各输入输出单元的功能,选择式后,再根据所选择硬件模块的要求来完成引脚功能的锁定。6:用Sign
14、alTap II Logic Analyer之前,要锁定下载引脚.6.2 心得体会通过设计此函数发生器,进一步了解和学习了EDA的电子设计,并且熟悉了用嵌入式逻辑分析仪(SignalTap II Logic Analyer)测试波形,用MegaWizard Plug-In Manager建立.mif文件ROM.了解EDA的设计流程:设计输入综合适配仿真编程下载硬件测试.更加巩固和掌了所学的VHDL语言的一些语法结构,例如:if.then.else,case,when.else等语句。并且通过此次的课程设计不仅培养我们动手和独立思考的能力,而且还能让我们在实践操作中更好的运用书本上所学的知识,从而加深理解所学知识。七、参考文献1包明 编著. EDA技术与可编程器件的应用 ,北京航空航天大学出版社2董艳燕 孙一翎 陈亮编著.可编程逻辑器件PLD 实验讲义
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1