四位十进制频率计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

四位十进制频率计

————————————————————————————————作者:————————————————————————————————日期:

一、设计任务与要求

1.设计4位十六进制频率计,学习较复杂的数字系统设计方法;

2.深入学习数字系统设计的方法与步骤;

3.用元件例化语句写出频率计的顶层文件;

4.用VHDL硬件描述语言进行模块电路的设计;

5.设计硬件要求:PC机,操作系统为Windows2000/XP,本课程所用系统均为

max+plus II 5.1设计平台,GW48系列SOPC/EDA实验开发系统。

二、总体框图

2.1工作原理以及方案

原理工作说明:

根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。这3个信号可以由一个测频控制信号发生器产生,即图(a)中的TESTCTL,它的设计要求是,TESTCTL的计数使能信号CNT_EN 能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT4B的ENA使能端进行同步控制。当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要产生一个锁存信号LOAD,在该信号上升沿时,将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。其工作时序波形如图(a)。

图(a) 频率计测频控制器TESTCTL测控时序图

2.2选择的设计方案:

1.根据频率计的工作原理,将电路划分成控制器、计数器、锁存器和LED显示几个模

块,

控制器——产生1秒脉宽的计数允许信号、锁存信号和计数器清零信号

计数器——对输入信号的脉冲数进行累计

锁存器——锁存测得的频率值

LED显示——将频率值显示在数码管上

2.根据图(a)、(b)及(1)(2)描述的4位十进制频率计的工作原理,利用max+ plusII

5.1对以上三者的程序进行文本编辑输入和仿真测试并根据图(b),写出频率计的顶

层文件,并给出其测频时序波形,及其分析。

3.频率计设计硬件验证。编译、综合和适配频率计顶层设计文件,并编程下载进入目

标器件中。本实验目标器件是EP1K30TC144-3,实验电路选择模式0,4个数码管(数码4-1:PIO31-PIO16)显示测频输出;待测频率输入FIN由clock0输入,频率

可选4Hz、256HZ . . .或更高;1HZ测频控制信号F1HZ可由clock2输入(用电路帽选选1Hz)。

2.3、总体框图

三、选择器件

1.装有Quartus II软件的微型计算机。计算机的硬件尽可能高,至少可以实现

Quartus II软件的使用。

2.硬件实现的芯片为PFGA/CPLD,芯片管脚的数量要保证足够设计的程序所要

使用的数量,并且使其所有管脚都有可分配的管脚,可以实现Quartus II上综

合、适配的程序下载后可以顺利实现。

四、功能模块

(1)、十六进制计数

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT4B IS

PORT (CLK : IN STD_LOGIC;

RST : IN STD_LOGIC;

ENA : IN STD_LOGIC;

OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT : OUT STD_LOGIC );

END CNT4B;

ARCHITECTURE behav OF CNT4B IS

SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

P_REG: PROCESS(CLK, RST, ENA)

BEGIN

IF RST = '1' THEN CQI <= "0000";

ELSIF CLK'EVENT AND CLK = '1' THEN

IF ENA = '1' THEN CQI <= CQI + 1;

END IF;

END IF;

OUTY <= CQI ;

END PROCESS P_REG ; --进位输出

COUT<=CQI(0) AND CQI(1) AND CQI(2) AND CQI(3); END behav;

仿真图

(2)扫描仪模块

--seltime

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

use ieee.std_logic_arith.all;

entity seltime is

port(

clk1,reset:in std_logic;

D1,D2,D3,D4:in std_logic_vector(3 downto 0);

daout:out std_logic_vector(3 downto 0);

sel:out std_logic_vector(2 downto 0));

end seltime;

architecture fun of seltime is

signal count:std_logic_vector(2 downto 0);

begin

sel<=count;

process(clk1,reset)

begin

if(reset='0')then

count<="000";

elsif(clk1 'event and clk1='1')then

if(count>="011")then

相关文档
最新文档