EDA课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖北职业技术学院《EDA技术》课程设计报告
题目动态输出4位十进制频率计的设计所在学院电子信息工程学院
专业班级电信08304
学生姓名马强
学号08024839
指导教师王芳
完成日期2010年11月18 日
目录
一、概述 (3)
二、设计正文 (4)
(一)设计目的 (4)
(二)设计实现 (4)
1、端口说明 (4)
2、Cnt10模块说明 (5)
3、Tctl模块说明 (6)
4、锁存器reg16模块说明 (8)
5、Scan_led模块说明 (9)
6、顶层文件仿真 (10)
7、硬件下载 (11)
三、总结 (13)
四、感言 (14)
五、参考文献 (15)
概述
此次设计的主要目的是学习掌握频率计的设计方法;掌握动态扫描输出电路的实现方法;学习较复杂的数字系统设计方法。通过单位时间(1秒)内频率的计数来实现频率计的设计。此设计主要用四位十进制计数器,所以频率计数范围为100~9999Hz。然后锁存防止闪烁显示,最后由译码扫描显示电路输出到数码管进行显示输出。并且下载后会有一秒钟的延时后才会显示输出所计频率输出。设计下载后能够进行仿真频率的计数和静态显示,但是分频的设计程序有所缺陷导致长时间显示后会有1Hz的抖动。通过这次的设计能够更清楚的理解VHDL程序的描述语言,进行简单程序的编写和仿真。
动态输出4位十进制频率计的设计
一、目的
1.学习掌握频率计的设计方法。
2.掌握动态扫描输出电路的实现方法。
3.学习较复杂的数字系统设计方法
二、设计实现
4位十进制频率计外部接口如图1所示,顶层文件如图2所示,包含4中模块;Tctl、reg16、scan_led和4个cnt10。
(1)端口说明
F1Hz:给Tctl模块提供1Hz的频率输入。
Fin:被测频率输入。
scan_led:给scan_led模块提供扫描输入频率输入。
bt[1..0]:片选信号输出。
sg[6..0]:译码信号输出。
cout:进位输出。
图一四位十进制频率计的外部接口
图二四位十进制频率计顶层文件
(2)cnt10模块说明
cnt10为含异步清零和同步时钟使能的十进制计数器,采用级联的方法进行计数,计数范围与所用cnt10级联个数有关,本次设计采用的是四个cnt10的级联,所以测频范围为0~9999Hz。
计数模块cnt10的源代码如下所示:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY cnt10 IS
PORT(rst,en,clk:IN STD_LOGIC;
Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
cout:OUT STD_LOGIC);
END cnt10;
ARCHITECTURE BEHAV OF cnt10 IS
SIGNAL cnt:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(rst,en,clk)
BEGIN
IF rst='1'THEN cnt<="0000";
ELSIF(clk'EVENT AND clk='1')AND en='1'THEN
IF cnt="1001"THEN
cnt<="0000";
cout<='1';
ELSE
cnt<=cnt+1;
cout<='0';
END IF;
END IF;
END PROCESS;
Q<=cnt;
END BEHAV;
(3)Tctl模块说明
根据频率的定义和测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期做准备的计数器清0信号。这三个信号可以由一个测频控制信号发生器Tctl产生,其设计要求是Tctl的计数使能信号en能产生一个1秒脉宽的周期信号,并对频率计的每一计数器cnt10的en使能进行同步控制、当en 高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号load的上升沿将计数器前1秒钟的计数值锁存进各锁存器reg16中,并由外部的译码器译出并显示计数值。锁存信号之后,必须有一清零信号rst对计数器进行清零,为下1秒钟的技术操作做准备。
控制模块Tctl源代码如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY Tctl IS
PORT ( clkk: IN STD_LOGIC;
en,rst,load: OUT STD_LOGIC);
END;
ARCHITECTURE behav OF Tctl IS
SIGNAL div2clk: STD_LOGIC;
BEGIN
PROCESS(clkk)
BEGIN
IF clkk'EVENT AND clkk='1'THEN div2clk <= NOT div2clk;
END IF;
END PROCESS;
PROCESS (clkk, div2clk)
BEGIN
IF clkk='0' AND div2clk='0' THEN
rst<='1';
ELSE rst<= '0';
END IF;
END PROCESS;
load<= NOT div2clk;
en<=div2clk;
END behav;
Tctl工作时序波形图如图三所示:
图三频率计测频控制器Tctl侧可控时序图图中clkk的频率为1Hz,en的高电平持续时间为1秒,此时计数器开始工作,当en低电平的时候停止计数,并将计数值经过load 锁存的reg16中最后通过scan_led译码显示输入。en的计时长度为