位十进制频率计的设计.doc
文本预览下载声明
4位十进制频率计的设计
实验目的:
设计一个4位十进制频率计,学习复杂数字系统的设计方法。
实验原理:
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的脉冲计数允许信号,1秒计数结束后,计数值(即所测信号频率)锁入锁存器,并为下一次测频作准备,即将计数器清零。
试验内容:
1、根据频率计的工作原理,将电路划分成控制器、计数器、锁存器和LED显示几个模块,
控制器——产生1秒脉宽的计数允许信号、锁存信号和计数器清零信号
计数器——对输入信号的脉冲数进行累计
锁存器——锁存测得的频率值
LED显示——将频率值显示在数码管上
顶层文件框图如下:
2、用元件例化语句写出频率计的顶层文件。
--------------------------------------------------------------------------
程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY FREQTEST IS
PORT (CLK1HZ,FSIN:IN STD_LOGIC;
D:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));
END ENTITY FREQTEST;
ARCHITECTURE FD1 OF FREQTEST IS
COMPONENT COUTER16D IS
PORT (FIN,ENABL,CLR:IN STD_LOGIC;
DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));
END COMPONENT;
COMPONENT FTCTRL IS
PORT (CLKK:IN STD_LOGIC;
CNT_EN:OUT STD_LOGIC;
RST_CNT:OUT STD_LOGIC;
LOAD:OUT STD_LOGIC);
END COMPONENT;
COMPONENT REG16D IS
PORT (LK:IN STD_LOGIC;
DIN:IN STD_LOGIC_VECTOR(15 DOWNTO 0);
DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));
END COMPONENT;
SIGNAL X,Y,Z:STD_LOGIC;
SIGNAL E:STD_LOGIC_VECTOR(15 DOWNTO 0);
BEGIN
U1:COUTER16D PORT MAP(FIN=FSIN,ENABL=X,CLR=Y,DOUT=E);
U2:FTCTRL PORT MAP(CLKK=CLK1HZ,CNT_EN=X,RST_CNT=Y,LOAD=Z);
U3:REG16D PORT MAP(DIN=E,LK=Z,DOUT=D);
--U4:DECL7S PORT MAP(A=O0,LED7S=DO0);
--U5:DECL7S PORT MAP(A=O1,LED7S=DO1);
--U6:DECL7S PORT MAP(A=O2,LED7S=DO2);
--U7:DECL7S PORT MAP(A=O3,LED7S=DO3);
END ARCHITECTURE FD1;
用VHDL硬件描述语言进行模块电路的设计。
各模块电路的VHDL描述:LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT (EN,CLK,RST:IN STD_LOGIC;
CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT:OUT STD_LOGIC);
END CNT10;
ARCHITECTURE BEHAV OF CNT10 IS
BEGIN
PROCESS(CLK,EN)
VARIABLE CQI :STD_LOGIC_VECTOR(3 DOWNTO 0):=0000;
BEGIN
IF (RST = 1) THEN CQI:=(OTHERS =0);
ELSIF(CLKEVENT AND CLK = 1) THEN
IF EN=1 THEN
IF CQI9 THEN CQI:= CQI+1;
ELSE CQI:=(OTHERS=0);
END IF;
END IF;
END IF;
IF CQI=9 THEN COUT=1;
ELSE COUT =0;
END IF;
CQ = CQI;
END PROCESS;
END BEHAV;
16位锁存器:
LIBRARY IEEE;
显示全部