1、vhdl实验21 8福建农林大学计算机与信息学院信息工程类实验报告课程名称:VHDL数字系统设计姓 名:系:电子信息工程系专 业:电子信息工程 年 级:2010级学 号:指导教师: 职 称:讲师2013年 11 月 13 日实验项目列表序号实验项目名称成绩指导教师1实验一 数控分频器的设计孙奇燕2实验二 嵌入式锁相环PLL应用孙奇燕3实验三 正弦信号发生器孙奇燕4实验四 频率计孙奇燕567891011121314151617181920福建农林大学计算机与信息学院信息工程类实验报告系: 电子信息工程系 专业: 电子信息工程 年级: 2010级 姓名: 学号: 实验课程: 实验室号: 田C407
2、 实验设备号: 10 实验时间: 11.12 指导教师签字: 成绩: 实验一 数控分频器的设计1实验目的和要求学习数控分频器的设计、分析和测试方法。2实验原理信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,详细设计程序如例1所示。数控分频器的仿真波形如图1所示:输入不同的CLK频率和预置值D,给出如图1的时序波形。图1 当给出不同输入值D时,FOUT输出不同频率(CLK周期=50ns)3主要仪器设备(实验用的软硬件环境)实验的硬件环境是:微机一台GW48 EDA实验开发系统一套电源线一根十芯JTAG口线一根USB下载线
3、一根USB下载器一个示波器实验的软件环境是:Quartus II 9.0软件4操作方法与实验步骤(1)创建工程,并命名位test。(2)打开QuartusII,建立VHDL文件,并输入设计程序。保存为DVF.(3)选择目标器件。Acex1kEP1K100QC208-3。(4)启动编译。(5)建立仿真波形图。(6)仿真测试和波形分析。(7)引脚锁定编译。(8)编程下载。(9)硬件测试5实验内容及实验数据记录在实验系统上硬件验证例5-20的功能。可选实验电路模式1(第一章图4);键2/键1负责输入8位预置数D(PIO7-PIO0);CLK由clock0输入,频率选65536Hz或更高(确保分频后落
4、在音频范围);输出FOUT接扬声器(SPKER)。编译下载后进行硬件测试:改变键2/键1的输入值,可听到不同音调的声音。6实验数据处理与分析1)实验代码【例1】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF IS PORT ( CLK : IN STD_LOGIC; D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); FOUT : OUT STD_LOGIC );END;ARCHITECTURE one OF DVF IS SIGNAL FULL : S
5、TD_LOGIC;BEGIN P_REG: PROCESS(CLK) VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLKEVENT AND CLK = 1 THEN IF CNT8 = 11111111 THEN CNT8 := D; -当CNT8计数计满时,输入数据D被同步预置给计数器CNT8 FULL = 1; -同时使溢出标志信号FULL输出为高电平 ELSE CNT8 := CNT8 + 1; -否则继续作加1计数 FULL = 0; -且输出溢出标志信号FULL为低电平 END IF; END IF; END PROC
6、ESS P_REG ; P_DIV: PROCESS(FULL) VARIABLE CNT2 : STD_LOGIC; BEGIN IF FULLEVENT AND FULL = 1 THEN CNT2 := NOT CNT2; -如果溢出标志信号FULL为高电平,D触发器输出取反 IF CNT2 = 1 THEN FOUT = 1; ELSE FOUT = 0; END IF; END IF; END PROCESS P_DIV ;END;2.)实验仿真2.1输入代码2.2编译测试2.3引脚锁定2.4软件仿真结果2.5VHDL文本输入法时序仿真波形 错误波形 调试后得到正确波形3)硬件相关部
7、分的测试2)仿真波形3)硬件测试结果可以听到不同的蜂鸣器声音,改变CLK的选择项可以变换声音的频率。7质疑、建议、问题讨论通过本次试验,我基本掌握了QUARTUS开发环境的应用,熟练的建立文件、编译文件、以及工程仿真的整个流程和波形文件的建立和仿真。福建农林大学计算机与信息学院信息工程类实验报告系: 电子信息工程系 专业: 电子信息工程 年级: 2010级 姓名: 学号: 实验课程: 实验室号: 田C407 实验设备号: 10 实验时间: 11.12 指导教师签字: 成绩: 实验二 嵌入式锁相环PLL应用1实验目的和要求学习使用Cyclone器件中的嵌入式锁相环,为以后的设计作准备。2实验原理
8、锁相环路(PLL)亦称自动相位控制(APC)电路,它是一种利用相位误差消除频率误差的反馈控制系统。如图1所示,由鉴相器(相位比较器)、环路滤波器(低通滤波器)和压控振荡器三个基本部件组成。3主要仪器设备(实验用的软硬件环境)实验的硬件环境是:微机一台GW48 EDA实验开发系统一套电源线一根十芯JTAG口线一根USB下载线一根USB下载器一个示波器实验的软件环境是:Quartus II 9.0软件4操作方法与实验步骤 1.打开QuartusII,创建一新工程,工程名称为PLLs,顶层实体名为GW_PLL。 2.建立PLL模块 3.创建顶层文件并仿真PLL模块4.实测PLL模块5实验内容及实验数
9、据记录调用PLL的LPM模块创建GW_PLL.vhd的顶层文件编译并仿真。修改PLL的输出频率,再次编译仿真。步骤如下: (一)建立PLL模块1、首先创建一新工程,工程名称为PLLs,顶层实体名为GW_PLL。2、在QuartusII的Tools菜单中选择MegaWizard Plug-In Manager,对弹出的界面选择Create a new custom项,定制一个新的模块。在弹出的对话框,在左栏选择I/O项下的ALTPLL,再选Cyclone器件和VHDL语言方式,最后输入设计文件存放的路径和文件名,如d:PLLsPLL50.vhd。单击Next按钮后弹出图1 所示的窗口。2、在图1
10、 所示窗口中首先设置参考时钟频率inclk0为50MHz,注意,这个时钟频率不能低于16MHz,接着在图1所示的窗口中选择锁相环的工作模式(选择内部反馈通道的通用模式)。单击Next按钮后即进入图2所示的窗口。在此窗口主要选择PLL的控制信号,如PLL的使能控制pllena;异步复位areset;锁相输出locked等。为了简便,在此消去所有控制信号。选择第一个输出时钟信号c0相对于输入时钟的倍频因子是2,图3所示的窗口中选中Use this c1,即选择另一输出时钟端c1,相对输入时钟的倍频因子是1/2,时钟相移和时钟占空比不变,保持原来默认的数据。4、连续点击“Next”完成设计。(二)创
11、建顶层文件并仿真PLL模块(参考EDA技术与VHDL第7章)下例是调用了锁相环PLL50模块的顶层设计文件,,顶层文件用VHDL编写,保存为GW_PLL.vhd,用set as top level Entity设为顶层文件编译并仿真。图 1 选择参考时钟为50MHz(输入频率不能小于16MHz)图 2 选择控制信号图 3 选择输出频率为75MHz 图 4 修改输出频率选择(三)实测PLL模块对于工程GW_PLL,选择器件为EP1C3TC144,锁相环的频率输入端只能是pin16和pin17脚,在此不仿锁在pin17上,恰好对应实验箱的clock2(clock5对应pin16),所以在实验中要用
12、一短线将Clock0的50MHz信号引接到clock5的输入端(要拔去其上的短路帽,引过来的短线接靠左排上任一针上),输出可锁定于任何一I/O口上。在此锁在GW48箱上右排座下端的标有“IO26”上,它对应pin67。编译后下载,用频率计测试此端的频率输出,应该为75MHz。6实验数据处理与分析1.实验代码2.引脚锁定3.实验测试4.测得波形7质疑、建议、问题讨论虽然在本次实验中遇到了一些问题,刚开始由于程序有错误不能编译成功,经过耐心的修改最终成功编译,但在波形仿真时由于延时冲突问题不能出现正确结果,又经过重新从编译,最终成功做完实验。福建农林大学计算机与信息学院信息工程类实验报告系: 电子
13、信息工程系 专业: 电子信息工程 年级: 2010级 姓名: 学号: 实验课程: 实验室号: 田C407 实验设备号: 10 实验时间: 11.12 指导教师签字: 成绩: 实验三 正弦信号发生器1实验目的和要求进一步熟悉QuartusII及其LPM_ROM与FPGA硬件资源的使用方法。2实验原理正弦信号发生器由三部分组成:数据计数器或地址发生器、数据ROM和D/A。顶层文件SINGT.VHD在FPGA中实现,包含两部分:ROM的地址发生器由5位计数器担任,正弦数据存储器ROM由LPM_ROM构成。该结构可以达到最优设计,LPM_ROM底层是FPGA中的EAB或ESB等。对每周期的正弦波形采样
14、64个点,地址发生器的时钟CLK的输入频率f0与D/A输出的频率f间的关系是f=f0/64。3主要仪器设备(实验用的软硬件环境)实验的硬件环境是:微机一台GW48 EDA实验开发系统一套电源线一根十芯JTAG口线一根USB下载线一根USB下载器一个示波器实验的软件环境是:Quartus II 9.0软件4操作方法与实验步骤根据例1,在Quartus II上完成正弦信号发生器设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。最后在实验系统上实测。信号输出的D/A使用实验系统上的DAC0832,注意其转换速率是1s,其引脚功能简述如下:ILE:数据锁存允许信号,高电平有效,系统板上已
15、直接连在5V上;WR1、WR2:写信号1、2,低电平有效;XFER:数据传送控制信号,低电平有效;VREF:基准电压,可正可负,10V10V;RFB:反馈电阻端;IOUT1/IOUT2:电流输出端。D/A转换量是以电流形式输出的,所以必须将电流信号变为电压信号;AGND/DGND:模拟地与数字地。在高速情况下,此二地的连接线必须尽可能短,且系统的单点接地点须接在此连线的某一点上。建议选择GW48系统的电路模式No.5,由第一章对应的电路图可见,DAC0832的8位数据口D7.0分别与FPGA的PIO31、30.、24相连,如果目标器件是EP1CQ240,则对应的引脚是:21,41,128,13
16、2,133,134,135,136;时钟CLK接系统的clock0,对应的引脚是28,选择的时钟频率不能太高(转换速率1s,)。还应该注意,DAC0832电路须接有+/12V电压:GW48系统的+/-12V电源开关在系统左侧上方。然后下载SINGT.sof到FPGA中;波形输出在系统左下角,将示波器的地与GW48系统的地(GND)相接,信号端与“AOUT”信号输出端相接。如果希望对输出信号进行滤波,将GW48系统左下角的拨码开关的“8”向下拨,则波形滤波输出,向上拨则未滤波输出,这可从输出的波形看出。基本步骤如下 :一、顶层文件设计1 创建工程和编辑设计文件 正弦信号发生器的结构由3部分组成(
17、1):数据计数器或地址发生器、数据ROM和D/A。性能良好的正弦信号发生器的设计要求此3部分具有高速性能,且数据ROM在高速条件下,占用最少的逻辑资源,设计流程最便捷,波形数据获最方便。图1所示是此信号发生器结构图,顶层文件SINGT.VHD在FPGA中实现,包含2个部分:ROM的地址信号发生器由5位计数器担任,和正弦数据ROM,拒此,ROM由LPM_ROM模块构成能达到最优设计,LPM_ROM底层是FPGA中的EAB或ESB等。地址发生器的时钟CLK的输入频率f0与每周期的波形数据点数(在此选择64点),以及D/A输出的频率f的关系是:f = f0 /64图1 正弦信号发生器结构图2 创建工
18、程 3 编译前设置在对工程进行编译处理前,必须作好必要的设置。具体步骤如下:1、选择目标芯片;2、选择目标器件编程配置方式;3、选择输出配置;4 编译及了解编译结果5 正弦信号数据ROM定制(包括设计ROM初始化数据文件)6 仿真 7 引脚锁定、下载和硬件测试 8 使用嵌入式逻辑分析仪进行实时测试9 对配置器件编程 10 了解此工程的RTL电路图5实验内容及实验数据记录1)系统方框图2)实验代码【正弦信号发生器顶层设计】LIBRARY IEEE; -正弦信号发生器源文件USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENT
19、ITY SINGT IS PORT ( CLK : IN STD_LOGIC; -信号源时钟 DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );-8位波形数据输出END;ARCHITECTURE DACC OF SINGT ISCOMPONENT data_rom -调用波形数据存储器LPM_ROM文件:data_rom.vhd声明 PORT(address : IN STD_LOGIC_VECTOR (5 DOWNTO 0);-6位地址信号 inclock : IN STD_LOGIC ;-地址锁存时钟 q : OUT STD_LOGIC_VECTOR (
20、7 DOWNTO 0) );END COMPONENT; SIGNAL Q1 : STD_LOGIC_VECTOR (5 DOWNTO 0); -设定内部节点作为地址计数器 BEGINPROCESS(CLK ) -LPM_ROM地址发生器进程 BEGINIF CLKEVENT AND CLK = 1 THEN Q1Q1, q = DOUT,inclock=CLK);-例化END;3)输入代码4)编译测试5)引脚配置5)RTL电路图选择菜单ToolsRTLViewer即弹出图3-35所示的工程singt的RTL电路图,由图可以了解该工程的电路结构。其中,六个D触发器构成6位锁存器,他们与加法器构
21、成6位计数器,即波形数据ROM的地址发生器。6)正弦信号ROM定制6.1设计ROM初始化数据文件。6.1.1建立.mif格式文件。6.1.2建立.hex格式文件。6实验数据处理与分析仿真结果如下7质疑、建议、问题讨论实验中出现很多小问题,最后在请教同学的途经下一一排查了,在此次实验中我了解到做实验需要耐心、细心,不断地发现错误,认识理解错误,从而改正的过程。福建农林大学计算机与信息学院信息工程类实验报告系: 电子信息工程系 专业: 电子信息工程 年级: 2010级 姓名: 学号: 实验课程: 实验室号 田C407 实验设备号: 10 实验时间: 11.12 指导教师签字: 成绩: 实验四 频率
22、计1实验目的和要求设计8位16进制频率计,学习较复杂的数字系统设计方法。2实验原理根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期作好准备。测频控制信号可以由一个独立的发生器来产生。3主要仪器设备(实验用的软硬件环境)实验的硬件环境是:微机一台GW48 EDA实验开发系统一套电源线一根十芯JTAG口线一根USB下载线一根USB下载器一个示波器实验的软件环境是:Quartus II 9.0软件4操作方法与实验步骤根据测频原理,测频控制时序可以如图1所示。设计要求是:FTCTRL的
23、计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计中的32位二进制计数器COUNTER32B(图2)的ENABL使能端进行同步控制。当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进锁存器REG32B中,并由外部的16进制7段译码器译出,显示计数值。设置锁存器的好处是数据显示稳定,不会由于周期性的清0信号而不断闪烁。锁存信号后,必须有一清0信号RST_CNT对计数器进行清零,为下1秒的计数操作作准备。图1 频率计测频控制器FTCTRL测控时序图图2 频率计电路框图5实验内容及
24、实验数据记录分别仿真测试模块例1、例2和例3,再结合例4完成频率计的完整设计和硬件实现,并给出其测频时序波形及其分析。建议选实验电路模式5;8个数码管以16进制形式显示频输出;待测频率输入FIN由clock0输入,频率可选4Hz、256HZ、3Hz.50MHz等;1HZ测频控制信号CLK1HZ可由clock2输入(用跳线选1Hz)。注意,这时8个数码管的测频显示值是16进制的。(实验中可以将50MHz频率用线引向Clock2,但要拔除其上的短路帽)6实验数据处理与分析1)实验代码【例1】LIBRARY IEEE; -测频控制电路USE IEEE.STD_LOGIC_1164.ALL;USE I
25、EEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FTCTRL IS PORT (CLKK : IN STD_LOGIC; - 1Hz CNT_EN : OUT STD_LOGIC; - 计数器时钟使能 RST_CNT : OUT STD_LOGIC; - 计数器清零 Load : OUT STD_LOGIC ); - 输出锁存信号 END FTCTRL;ARCHITECTURE behav OF FTCTRL IS SIGNAL Div2CLK : STD_LOGIC;BEGIN PROCESS( CLKK ) BEGIN IF CLKKEVENT AND CLKK = 1
26、 THEN - 1Hz时钟2分频 Div2CLK = NOT Div2CLK; END IF; END PROCESS; PROCESS (CLKK, Div2CLK) BEGIN IF CLKK=0 AND Div2CLK=0 THEN RST_CNT=1;- 产生计数器清零信号 ELSE RST_CNT = 0; END IF; END PROCESS; Load = NOT Div2CLK; CNT_EN = Div2CLK;END behav;【例2】LIBRARY IEEE; -32位锁存器USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B IS PO
27、RT ( LK : IN STD_LOGIC; DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );END REG32B;ARCHITECTURE behav OF REG32B ISBEGIN PROCESS(LK, DIN) BEGIN IF LKEVENT AND LK = 1 THEN DOUT = DIN; END IF; END PROCESS;END behav;【例3】LIBRARY IEEE; -32位计数器USE IEEE.STD_LOGIC_1164.ALL;
28、USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER32B IS PORT (FIN : IN STD_LOGIC; - 时钟信号 CLR : IN STD_LOGIC; - 清零信号 ENABL : IN STD_LOGIC; - 计数使能信号 DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); - 计数结果 END COUNTER32B;ARCHITECTURE behav OF COUNTER32B IS SIGNAL CQI : STD_LOGIC_VECTOR(31 DOWNTO 0);BEGIN PROCESS
29、(FIN, CLR, ENABL) BEGIN IF CLR = 1 THEN CQI 0); - 清零 ELSIF FINEVENT AND FIN = 1 THEN IF ENABL = 1 THEN CQI = CQI + 1; END IF; END IF; END PROCESS; DOUT = CQI;END behav;【例4】LIBRARY IEEE; -频率计顶层文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FREQTEST IS PORT ( CLK1HZ : IN STD_LOGIC; FSIN : IN STD_LOGIC; DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );END FREQTEST;ARCHITECTURE struc OF FREQTEST ISCOMPONENT
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1