实验三 VHDL设计输入及时钟频率仿真与测试-PPT精品文档
VHDL范例PPT课件

B4:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CO4:OUT STD_LOGIC); END COMPONENT ADDER4B; SIGNAL SC:STD_LOGIC; --4位加法器的进位标志 BEGIN U1:ADDER4B --例化(安装)一个4位二进制加法器U1 PORT MAP(C4=>C8,A4=>A8(3 DOWNTO 0),
7.3 1秒计时电路的设计 外部输入的频率为1KHz,要求产生一个1S的时钟信号
1Kz ( 1/1000 秒) 10分频 (1/100秒) 10分频 (1/10秒) 10分频 1秒
CLK(1KHz)
10 clk001 10 clk01 10
分
分
分
频
频
频
clk1s
第7章 VHDL设计应用实例
(1)10分频的VHDL语言描述
第7章 VHDL设计应用实例
BEGIN A5<='0'& A4;
--将4位加数矢量扩为5位,为进位提供空间 B5<='0'& B4;
--将4位被加数矢量扩为5位,为进位提供空间 S5<=A5+B5+C4 ; S4<=S5(3 DOWNTO 0);
CO4<=S5(4); END ARCHITECTURE ART;
END ENTITY ADDER8B; ARCHITECTURE ART OF ADDER8B IS COMPONENT ADDER4B IS
--对要调用的元件ADDER4B的界面端口进行定义 PORT(C4:IN STD_LOGIC;
基于VHDL设计的频率计

基于VHDL设计的频率计专业:信息工程学号:姓名:一、实验任务及要求1、设计一个可测频率的数字式频率计,测量范围为1Hz~12MHz。
该频率计的逻辑图如图所示。
2、用层次化设计方法设计该电路,编写各个功能模块的程序。
3、仿真各功能模块,通过观察有关波形确认电路设计是否正确。
4、完成电路设计后,用实验系统下载验证设计的正确性。
二、设计说明与提示由上图可知8位十进制数字频率计,由一个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器CNT10、一个32位锁存器REG32B组成。
1、测频控制信号发生器设计要求。
频率测量的基本原理是计算每秒种内待测信号的脉冲个数。
这就要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同不控制。
当TSTEN高电平时允许计数、低电平时停止计数,并保持其所计的数。
在停止计数期间,首先需要一个锁存信号Load的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B中,并由外部的7段译码器译出并稳定显示。
设置锁存器的好处是为了显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
锁存信号之后,必须有一清零信号CLR_CNT对计数器进行清零,为下1秒钟的计数操作做准备。
测频控制信号发生器的工作时序如下图。
为了产生这个时序图,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上沿到来时使其值翻转。
其中控制信号时钟CLK的频率1Hz,那么信号TSTEN的脉宽恰好为1秒,可以用作闸门信号。
然后根据测频的时序要求,可得出信号Load和CLR_CNT 的逻辑描述。
由图可见,在计数完成后,即计数使能信号TSTEN在1秒的高电平后,利用其反相值的上跳沿产生一个锁存信号Load,0.5秒后,CLR_CNT产生一个清零信号上跳沿。
高质量的测频控制信号发生器的设计十分重要,设计中要对其进行仔细的实时仿真(TIMING SIMULATION),防止可能产生的毛剌。
vhdl课程设计频率计

vhdl课程设计频率计一、课程目标知识目标:1. 掌握VHDL语言的基本语法和程序结构;2. 了解频率计的工作原理和设计方法;3. 学会使用VHDL语言设计简单的数字电路系统。
技能目标:1. 能够运用VHDL语言编写简单的程序代码;2. 能够运用所学知识设计并实现一个功能完整的频率计;3. 能够运用仿真工具对所设计的频率计进行测试和验证。
情感态度价值观目标:1. 培养学生对电子设计领域的兴趣和热情;2. 培养学生的团队协作意识和解决问题的能力;3. 培养学生严谨的科学态度和良好的工程素养。
课程性质:本课程为电子技术专业课程,旨在培养学生的硬件描述语言编程能力和电子系统设计能力。
学生特点:学生已具备一定的电子技术基础和编程能力,对数字电路和VHDL 语言有一定了解。
教学要求:结合学生特点和课程性质,将课程目标分解为具体的学习成果,注重理论与实践相结合,提高学生的实际操作能力。
在教学过程中,注重引导学生主动探究、积极实践,培养学生的创新意识和实际工程能力。
二、教学内容1. VHDL语言基础:- 数据类型、运算符和表达式;- 顺序语句和并行语句;- 进程语句和敏感列表;- 子程序和包的使用。
2. 频率计原理:- 频率计的基本工作原理;- 数字频率计的计数方法;- 频率计的误差分析和改进措施。
3. VHDL设计频率计:- 设计流程和需求分析;- 模块划分和接口设计;- 代码编写和调试;- 仿真测试和验证。
4. 教学内容的安排和进度:- 第一周:VHDL语言基础学习;- 第二周:频率计原理学习;- 第三周:VHDL设计频率计实践;- 第四周:代码调试、仿真测试和课程总结。
教材章节关联:1. VHDL语言基础:参考教材第3章;2. 频率计原理:参考教材第5章;3. VHDL设计频率计:参考教材第6章。
教学内容注重理论与实践相结合,按照教学大纲逐步推进,使学生能够系统地掌握VHDL语言和频率计的设计方法。
在教学过程中,结合实例进行分析和讲解,提高学生的实际操作能力。
实验三 VHDL设计输入及时钟频率仿真与测试ppt课件

三、ModelSim Simulator中的时序仿真及周期丈量 方法
1、在Sources子窗口选中fpq3-behavioral,点击菜单 Project New Source弹出图3-4对话框,左栏选 Test Bench Waveform,输入文件名fpq3_twb。
6、 View VHDL Intantiation Template的作用
双击〔Design Entry Utilities 下级〕View VHDL Intantiation Template,生成后在View VHDL Intantiation Template前会打上一个绿色的✔,同样不能保证设计语法
没有错误,必需查看控制子窗口能否有报错、警告,假设
有要根据指出的错误进展修正,直到控制子窗口没有报错 和警告。用鼠标选中View VHDL Intantiation Template, 点击鼠标右键选Open Without Updating,在右面的MDI子 窗口自动显示生成的fpq3.vhi文本,当fpq3作为元件被上 层VHDL程序被调用时,可以将fpq3.vhi文本中的调用元件 阐明、端口映射框架复制过去,参与上层VHDL程序的对 应端口就可以完成上层VHDL程序中fpq3元件调用语句和 端口映射语句。
实验三 VHDL设计输入及时钟频率
仿真和测试
一、实验内容
1、VHDL设计输入的方法学习。 2、利用言语模板进展VHDL设计输入。 3、如何运用控制子窗口的提示更改语法错误。
综合技术的运用学习。 4、时序仿真时周期的丈量方法
二、用VHDL设计一个六分频器
基于vhdl数字频率计设计说明书

一、设计功能与要求设计数字频率计,满足如下功能:(1)用VHDL语言完成数字频率计的设计及仿真。
(2)频率测量范围:1∼10KHz,分成两个频段,即1∼999Hz,1KHz∼10KHz,用三位数码管显示测量频率,且用LED(发光二极管)来表示所显示单位,我们这里定义亮绿灯表示以Hz为单位,亮红灯表示以KHz为单位。
(3)具有自动校验和测量两种功能,即既能用于标准时钟的校验,同时也可以用于未知信号频率的测量。
(4)具有超量程报警功能,在超出目前所选量程档的测量范围时,会发出音响报警信号。
二、设计思路通过计算已知单位时间内待测信号的脉冲个数来计算被测信号的频率,同时通过动态扫描方式在三个数码管上显示出测得频率值。
如下图1的系统框图所示,计数器对CP信号进行计数,在1秒定时结束后,将计数器结果送锁存器锁存,并通过时钟下降沿将不再变化的测量值送至数码管显示。
在下一个计数时钟信号上升沿到来时,再次重新计数。
图1 系统设计框架图系统各个模块介绍如下:(1)测量/校验选择模块:输入信号:选择信号selin,被测信号measure,标准校验信号test;输出信号:CP;当selin=0时,为测量状态,CP=measure;当selin=1时,为校验状态,CP=test。
校验与测量共用一个电路,只是被测信号CP不同而已。
(2)测频控制信号发生器(二分频):输入信号:1Hz时钟信号clk;输出信号:1秒钟高电平基准信号clk1(周期为2秒);(3)四级十进制计数器模块(带进位C):输入信号:clk1、CP,用于计数开始、清零、锁存。
输出信号:q4~q1设置超出量程档测量范围示警信号alert。
若被测信号频率小于1KHz(K=0),则计数器只进行三级十进制计数,最大显示值为999.Hz,如果被测信号频率超过此范围,示警信号扬声器报警;若被测信号为1KHz~10KHz (K=1),计数器进行四位十进制计数,取高三位显示,最大显示值为9.99KHz,如果被测信号频率超过此范围, 示警信号扬声器报警。
EDA技术及应用VHDL第三潭会生详解PPT课件

3.实验要求 (1) 画出系统的原理框图,说明系统中各主要组成部分 的功能。 (2) 编写各个VHDL源程序。 (3) 根据系统的功能,选好测试用例,画出测试输入信 号波形或编好测试程序。 (4) 根据选用的EDA实验开发装置编好用于硬件验证 的管脚锁定表格或文件。 (5) 记录系统仿真、逻辑综合及硬件验证结果。 (6) 记录实验过程中出现的问题及解决办法。 4.参考资料 本书4.3节、4.4节、4.5节、5.1节、5.2节和6.1节。
第9页/共35页
7.4 实验四:数字频率计的设计
1.实验目的 (1) 熟悉Quartus Ⅱ/ISE Suite/ispLEVER软件 的基本使用方法。 (2) 熟悉GW48-CK或其他EDA实验开发系统的基 本使用方法。 (3) 学习VHDL基本逻辑电路的综合设计应用。 2.实验内容 设计并调试好8位十进制数字频率计,并用GW48CK或其他EDA实验开发系统(事先应选定拟采用的实验 芯片的型号)进行硬件验证。
第4页/共35页
2.实验内容 序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号, 这在数字通信领域有广泛的应用。现要求设计一个8位的序列检测器,在 检测过程中,任何一位不相等都将回到初始状态重新开始检测;当一串待 检测的串行数据进入检测器后,若此数在每一位的连续检测中都与预置的 密 码 数 相 同 , 则 输 出 “ A” , 否 则 输 出 “ B ” 。 用GW48-CK或其他EDA实验开发系统(事先应选定拟采用的实验芯 片的型号)进行硬件验证。
第5页/共35页
3.实验要求 (1) 画出系统的原理框图,说明系统中各主要组成部分的功能。 (2) 编写各个VHDL源程序。 (3) 根据系统的功能,选好测试用例,画出测试输入信号波形或编好测试程 序。 (4) 根据选用的EDA实验开发装置编好用于硬件验证的管脚锁定表格或文 件。 (5) 记录系统仿真、逻辑综合及硬件验证结果。 (6) 记录实验过程中出现的问题及解决办法。 4.参考资料 本书4.3节、4.4节、4.5节、5.1节、5.2节和3.9.2节。
vhdl数字时钟设计精选全文完整版
可编辑修改精选全文完整版一、题目分析1、功能介绍(1)具有时、分、秒计数显示功能,以24小时循环计时。
(2)时钟计数显示时有LED灯的花样显示。
(3)具有调节小时、分钟及清零的功能。
(4)具有整点报时功能。
2、总体方框图3、性能指标及功能设计1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。
2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。
我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。
3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。
可以根据我们自己任意时间的复位。
4)蜂鸣器在整点时有报时信号产生,蜂鸣器报警。
产生“滴答.滴答”的报警声音。
5)LED灯在时钟显示时有花样显示信号产生。
即根据进位情况,LED不停的闪烁,从而产生“花样”信号。
二、选择方案1、方案选择方案一:根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。
采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。
显示:小时采用24进制,而分钟均是采用6进制和10进制的组合。
方案二:根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。
采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。
显示:小时采用24进制,而分钟和秒均60进制。
终上所述,考虑到试验时的简单性,故我选择了方案二。
三、细化框图根据自顶向下的方法以及各功能模块的的功能实现上述设计方案应系统细化框图:四、编写程序、仿真和分析1、秒计数器1)VHDL 语言描述程序见附录 2)秒计数器的仿真波形图3)波形分析利用60进制计数器完成00到59的循环计数功能,当秒计数至59时,再来一个时钟脉冲则产生进位输出,即enmin=1;reset 作为复位信号低电平有效,数字时钟控制单元 时调整 分调整使能端信号 CLK 信号时显示 分显示 秒显示24进制 60进制 60进制LED 显示整点报花样显即高电平时正常循环计数,低电平清零。
VHDL数字频率计设计课件
CQ=>DIN (27 DOWNTO 24),CARRY_OUT=>CARRY7); U8:CNT10 PORT MAP(CLK=>CARRY7,CLR=>CLR_CNT,ENA=>TSTEN,
3) 测频控制信号发生器的源程序TESTCTL.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
--测频控制信号发生器
USE IEEE.STD_LOGIC_UNSIGNED.ALL
ENTITY TESTCTL IS
PORT (CLK:IN STD_LOGIC;
PORT(CLK,CLR,ENA:IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC);
END COMPONENT; COMPONENT REG32B --待调用的32位锁存器端口定义
...
COMPONENT TESTCTL --待调用的测频控制信号发生器端口定义 ...
CQ=>DIN (31 DOWNTO 28),CARRY_OUT=>CARRY8); U9:REG32B PORT MAP(LOAD=>LOAD,DIN=>DIN(31 DOWNTO 0),DOUT=>DOUT); END ART;
3. 硬件逻辑验证
选择实验电路结构图NO.0,由5.2节的实验电路结构图NO.0 和图6.5确定引脚的锁定,测频控制器时钟信号CLK(1 Hz)可接 CLOCK1,待测频FSIN可接CLOCK0,8位数码显示输出 DOUT[31..0]接PIO47~PIO16。
EDA技术-VHDL-5.10 采用测频法的数字频率计程序设计与仿真
5.10 采用测频法的数字频率计程序设计与仿真实验1.实验目的掌握测频法数字频率计的基本原理,设计VHDL程序实现其基本功能。
2.实验原理系统组成的框图如图5.10.1所示,图中从左至右包括时基产生与测频时序控制电路模块,以及待测信号脉冲计数电路和锁存与译码显示控制电路模块。
图5.10.1 系统组成框图(1)控制模块控制十进制计数器的计数及锁存器的工作,当计数器计数时,锁存器锁存前一次的计数状态,当计数器停止计数则锁存器接收计数器的计数数据,因此控制模块控制计数器与锁存器交替工作。
(2)计数器由于需要使用LED显示频率,所以采用的是10进制可清零、使能功能的计数器模块(3)锁存模块接收四个计数器传输的信号进行锁存。
(4)译码显示模块一共有6个LED需要显示,所以需要6个译码模块。
3.实验内容(1)完成各基本模块的设计,并对各模块进行功能仿真,得到仿真波形。
(2)设计顶层文件,将各模块结合在一起,构成频率计整体,并进行仿真,检查程序功能是否完善。
(3)对设计进行引脚配置并下载。
4.实验预习与思考(1)了解测频原理197(2)锁存模块在该系统的必要性。
(3)编写顶层设计文件时应当注意的问题。
5.程序设计与仿真(1)程序设计①顶层文件(freq_top.vhd)源程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity freq_top isPort (CLKIN,RESET,QING1: IN STD_LOGIC; --控制信号DQ1,DQ2,DQ3,DQ4 : OUT STD_LOGIC_VECTOR (6 DOWNTO 0);--4位十进制数输出COUTT : OUT STD_LOGIC);--进位输出end freq_top;architecture Behavioral of freq_top isCOMPONENT TESTCTL —元件说明PORT ( rst, clkk : in std_logic;cnt_en, rst_cnt, load : out std_logic);END COMPONENT;COMPONENT CNT10PORT ( CLK,RST,EN : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC );END COMPONENT;COMPONENT REG4BPort ( load, QING : in std_logic;din : in std_logic_vector(3 downto 0);dout : out std_logic_vector(3 downto 0));END COMPONENT;COMPONENT DECL7SPORT (A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) );END COMPONENT;--定义中间信号SIGNAL N : STD_LOGIC_VECTOR (24 DOWNTO 0); --秒分频SIGNAL M : STD_LOGIC_VECTOR (11 DOWNTO 0); --被测信号198SIGNAL FIN,F1HZ,EN_S,RST_S,LOAD_S : STD_LOGIC;SIGNAL CQ1,CQ2,CQ3,CQ4 : STD_LOGIC_VECTOR (3 DOWNTO 0);SIGNAL COUT1,COUT2,COUT3 : STD_LOGIC;SIGNAL DOUT1,DOUT2,DOUT3,DOUT4 : STD_LOGIC_VECTOR (3 DOWNTO 0);beginPROCESS(CLKIN,RESET)BEGINIF RESET='1' THEN N<=(OTHERS=>'0'); M<=(OTHERS=>'0');ELSIF(CLKIN'EVENT AND CLKIN='1')THENN<=N+1; M<=M+1;END IF;END PROCESS;F1HZ<=N(24);FIN<=M(11);--元件例化U1:TESTCTL PORT MAP (RST=>RESET,CLKK=>F1HZ,CNT_EN=>EN_S,RST_CNT=>RST_S, LOAD=>LOAD_S);U2 : CNT10 PORT MAP (FIN, RST_S, EN_S, CQ1, COUT1);U3 : CNT10 PORT MAP (COUT1, RST_S, EN_S, CQ2, COUT2);U4 : CNT10 PORT MAP (COUT2, RST_S, EN_S, CQ3, COUT3);U5 : CNT10 PORT MAP (COUT3, RST_S, EN_S, CQ4, COUTT);U6 : REG4B PORT MAP (LOAD_S, QING1, CQ1, DOUT1);U7 : REG4B PORT MAP (LOAD_S, QING1, CQ2, DOUT2);U8 : REG4B PORT MAP (LOAD_S, QING1, CQ3, DOUT3);U9 : REG4B PORT MAP (LOAD_S, QING1, CQ4, DOUT4);U10 : DECL7S PORT MAP (DOUT1, DQ1);U11 : DECL7S PORT MAP (DOUT2, DQ2);U12 : DECL7S PORT MAP (DOUT3, DQ3);U13 : DECL7S PORT MAP (DOUT4, DQ4);end Behavioral;②十进制计数器模块(cnt10.vhd)源程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity cnt10 isPort (CLK,RST,EN : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC );end cnt10;199architecture Behavioral of cnt10 isbeginPROCESS(CLK, RST, EN)V ARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";BEGINIF RST = '1' THEN CQI := (OTHERS =>'0');ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENIF CQI < "1001" THEN CQI := CQI + 1;ELSE CQI :=(OTHERS=>'0');END IF;END IF;END IF;IF CQI = "0000" THEN COUT <= '1';ELSE COUT<= '0';END IF;CQ <= CQI;END PROCESS;end Behavioral;③四位锁存器模块(reg4b.vhd)源程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity reg4b isPort ( load : in std_logic;qing : in std_logic;din : in std_logic_vector(3 downto 0);dout : out std_logic_vector(3 downto 0));end reg4b;architecture Behavioral of reg4b isbeginprocess(load,qing,din)beginif qing = '1' then dout <= "0000";elsif load'event and load = '1' then dout <= din ;end if ;end process;200end Behavioral;④控制模块(testctl.vhd)源程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity testctl isPort ( rst, clkk : in std_logic;cnt_en, rst_cnt, load : out std_logic);end testctl;architecture Behavioral of testctl issignal div2clk : std_logic;beginprocess( clkk ,rst)beginif rst = '1' then div2clk <= '0' ;elsif clkk'event and clkk = '1' then div2clk <= not div2clk;end if;end process;process ( clkk, div2clk )beginif clkk = '0' and div2clk='0' then rst_cnt <= '1';else rst_cnt <= '0';end if;end process;load <= not div2clk;cnt_en <= div2clk;end Behavioral;(2)仿真①四位锁存器仿真结果如图5.10.2所示。
vhdl课程设计(电子钟+闹铃)
数字钟的设计、系统功能概述一)、系统实现的功能:1、具有“时” 、“分”、“秒”的十进制数字显示(小时从00 ~ 23)。
2、具有手动校时、校分、校秒的功能。
3、有定时和闹钟功能,能够在设定的时间发出闹铃声。
4、能进行整点报时。
从59分50秒起,每隔2秒发一次低音“嘟”的信号,连续5次,最后一次为高音“嘀”的信号。
二)、各项设计指标:1、显示部分采用的6 个LED 显示器,从高位至低位分别显示时、分、秒。
2、有一个设置调闹钟定时时间、正常时间的按钮,选择调的对象。
3、有三个按钮分别调时、分、秒的时间。
4、有一个按钮用作开启/关闭闹铃。
5、另外需要两个时钟信号来给系统提供脉冲信号,使时钟和闹钟正常工作,分别为1Hz、1kHz 的脉冲。
二、系统组成以及系统各部分的设计1、系统结构描述//要求:系统(或顶层文件)结构描述,各个模块(或子程序)的功能描述;(一)系统的顶层文件:1、顶层文件图:(见下页)2、各模块的解释:(1)、7 个输入量clk_1khz 、clk_1hz 、key_slt、key_alarm 、sec_set、min_set、hour_set:其中clk_1khz 为闹铃模块提供时钟,处理后能产生“嘟” 、“嘀”和变化的闹铃声音;clk_1hz 为计时模块提供时钟信号,每秒计数一次;key_slt 选择设置对象:定时或正常时间;key_alarm 能够开启和关闭闹铃;sec_set、min_set、hour_set 用于设置时间或定时,与key_slt 相关联。
各按键输出为脉冲信号。
(2)、CNT60_A_SEC 模块:这个模块式将clk_1hz 这个时钟信号进行60 进制计数,并产生一个分钟的触发信号。
该模块能将当前计数值实时按BCD 码的格式输出。
将该输出接到两位LED 数码后能时时显示秒的状态。
通过alarm_clk 可以选择设置对象为时间还是定时值。
在设置时间模式上,key 上的一个输入脉冲可以将clk 的输入信号加一。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验内容
1、VHDL设计输入的方法学习。 2、利用语言模板进行VHDL设计输入。 3、如何运用控制子窗口的提示更改语法错误。 综合技术的应用学习。 4、时序仿真时周期的测量方法
二、用VHDL设计一个六分频器
1、新建一个(Project Name)名为TEST_3项目,在图3-1对 话框中,左栏选VHDL Module,File栏中输入FPQ3,点 击下一步。
图3-7
运行Simulate Behavioral Model,链接ModelSim SE。 通过wave-default窗口观察输出波形cp。方法:点击菜单 ViewZoomZoom full和Zoom in观察输出波形。由于是 6分频器比较容易判别结果是否正确。如果是100分频器, 通过数数就很不合理。此软件有测试标尺,可以通过测试 标尺值来计算设计结果是否正确。 方法介绍如下: 在ModelSim SE波形界面先用鼠标点击要测量波形周 期的上升沿或下降沿(粗选定),再点击图标 (鼠标点 击的是下降沿)或图标 (鼠标点击的是上升沿),来准 确选取,再点击图标 和图标 或 及图标 使纵向标 尺在所选波形的一个周期两端,此时在界面下方,两根纵 向标尺分别显示周期两端时间坐标值,两根纵向标尺之间 为所测波形周期值。点击图标 再点击纵向标尺,纵向 标尺将被删除。请测一下CLK及CP的周期值,用CP的周 期值除以CLK的周期值值为多少?,此值就是分频数。如 图3-8。
图3-3
4、在VHDL编译窗口中关键字为蓝色(如 end ; port 等), 数据类型为粉红色,注释为绿色。库名、实体名、端口名、 结构体名、均为黑色。这样有助于发现输入错误。
完整的6分频器VHDL程序如下(也可以自己设计):
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity FPQ3 is Port ( CLK : in std_logic; CP : out std_logic); end FPQ3; architecture Behavioral of FPQ3 is signal a:integer range 0 to 6; begin process(CLK) begin if (CLK'event and CLK='1') then
图3-1
2、在图3-2对话框中第一栏输入端口名。第二栏中通过下 拉菜单输入端口方向。第三栏和第四栏为需输入的端口总 线最高位(MSB)和最低位(LSB),通过点击空格,弹 出的上下箭头输入需要值,信号量(std_logic、bit)不用 输入。
图3-2
3、完成后在右面的MDI子窗口自动生成VHDL语言描述的库、 实体以及结构体框架(如图3-3),在结构体中输入设计 内容,就完成了该电路的VHDL设计。
7、综合技术的应用 在Processes子窗口中,展开Synthesize-XST。XST是 Xilinx Synthesis Technology的缩写。直接双击 Synthesize-XST,如果有错误,会在Synthesize-XST前 打红色,在View Synthesis Report前打绿色的✔,可以 阅读综合报告来发现错误,也可以从控制子窗口找错。如 果都正确,在Synthesize-XST前打绿色的✔,在View Synthesis Report前打绿色的✔,Check Syntax打绿色的 ✔。点击View RTL Schematic,在ESC窗口,可以看到 由VHDL程序自动生成的RTL Schematic模块(上层), 通过层次进入下级可以一层一层到达最底层原理图。点击 View Synthesis Report阅读综合报告(FPQ3.SYS)和点 击图标打开的报告。
图3—5
如图3-6在Sources 子窗口选Behavioral Simultion 和 fpq3_tw,在Processes 在窗口选Processes ,运行 Generate Expected Simulation Results,观察测试窗口的 输出波形。
图3-6
如果设置不合适,可以点击图面的空白处弹出如图3-7的 下拉菜单,选中下拉菜单中的项,重新设置仿真参数 的时钟和长度。
5、生成VHDL模块 结构体内输入完毕后进行保存。在Processes子窗口中, 双击(Design Entry Utilities 下级)Create Schematic Symbol,运行后在Create Schematic Symbol前会打上一 个绿色的✔,表示VHDL模块生成。但不能保证设计语法 没有错误。要通过双击Processes子窗口中的SynthesizXST子项Check Syntax进行语法检测,必须查看控制子 窗口是否有报错、警告,根据指出的错误进行修改,直到 控制子窗口没有报错和警告。
6、 View VHDL Intantiation Template的作用 双击(Design Entry Utilities 下级)View VHDL Intantiation Template,生成后在View VHDL Intantiation Template前会打上一个绿色的✔,同样不能保证设计语法 没有错误,必须查看控制子窗口是否有报错、警告,如果 有要根据指出的错误进行修改,直到控制子窗口没有报错 和警告。用鼠标选中View VHDL Intantiation Template, 点击鼠标右键选Open Without Updating,在右面的MDI子 窗口自动显示生成的fpq3.vhi文本,当fpq3作为元件被上 层VHDL程序被调用时,可以将fpq3.vhi文本中的调用元件 说明、端口映射框架复制过去,加入上层VHDL程序的对 应端口就可以完成上层VHDL程序中fpq3元件调用语句和 端口映射语句。
三、ModelSim Simulator中的时序仿真及周期测量 方法
1、在Sources子窗口选中fpq3-behavioral,点击菜单 ProjectNew Source弹出图3-4对话框,左栏选 Test Bench Waveform,输入文件名fpq3_twb。
图3-4
完成后弹出图3-5对话框。根据图3—5输入数值。点击OK, 在右面显示测试波形,保存一下。
if a=5 then a<=0; else a<=a+1; end if; case a is when 0|1|2=>CP<='1'; when 3|4|5=>CP<='0'; when others=>CP<='Z'; end case; end if; end process; end Behavioral;