clr :in std_logic;
sign :in std_logic;
over :out std_logic;
s_cnt :buffer std_logic_vector(31 downto o)
);
END s_counter;
ARCHITECTURE rt2 OF s_counter IS
signal TEMP:std_logic:='0';
BEGIN
PROCESS(clr,sign)
BEGIN
IF clr='1' THEN
s_cnt<=(OTHERS=>'0');
ELSIF rising_edge(sign)THEN
IF s_en='1'THEN
s_cnt<=s_cnt+'1';
END IF;
END IF;
END PROCESS;
PROCESS(s_en)
BEGIN
IF falling_edge(s_en)THEN
IF s_en='0' THEN
TEMP<='1';
END IF;
END IF;
END PROCESS;
over<=TEMP;
END ARCHITECTURE;
经过编译后生成模块文件,标准信号计数器的模块文件如图4-4,被测信号计数器的模块文件如图4-5。
图4-4 标准信号计数器模块 图4-5 被测信号计数器模
4.3.3 锁存器的设计
锁存器是一种对脉冲电平敏感的储存单元电路,它可以在特定输入脉冲电平作用下改变状态。锁存,就是把信号暂存以文持某种电平状态。锁存器的主要作用是缓存,其次完成高速的控制其与慢速的外设的不同步问题,再次是解决驱动的问题,最后是解决一个I/O既能输入又能输出的问题。
本设计主要是使用其缓存的作用。当计数器完成计数后,将计数结果先进行锁存,然后在启动CPU进行计数。这样就可以保证CPU在读数时不受影响。在这里使用的是一个2路32位锁存器。锁存器的VHDL程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164,ALL;
ENTITY ffd IS
PROT(
CLR :in std_logic;
LOAD :in std_logic;
DATA_EN :out std_logic;
DATA1_IN :in std_logic_vector(31 downto 0);
DATA2_IN :in std_logic_vector(31 downto 0);
DATA1_OUT :out std_logic_vector(31 downto 0);
DATA2_OUT :out std_logic_vector(31 downto 0)
);
END ENTITY;
ARCHITECTURE ONE OF ffd IS
BEGIN
PROCESS(CLR,LOAD)
BEGIN
IF CLR='1' THEN
DATA1_OUT<=(others=>'0');
DATA2_OUT<=(others=>'0');
DATA_EN<='0';
ELSIF LOAD='1' THEN
DATA1_OUT<=DATA1_IN;
DATA2_OUT<=DATA2_IN;
DATA_EN<='1';
- 上一篇:GSM远程家电遥控开关设计+仿真图+源码
- 下一篇:基于FPGA的任意波形发生器设计+电路图+仿真图
-
-
-
-
-
-
-
高警觉工作人群的元情绪...
江苏省某高中学生体质现状的调查研究
巴金《激流三部曲》高觉新的悲剧命运
g-C3N4光催化剂的制备和光催化性能研究
中国传统元素在游戏角色...
现代简约美式风格在室内家装中的运用
C++最短路径算法研究和程序设计
NFC协议物理层的软件实现+文献综述
上市公司股权结构对经营绩效的影响研究
浅析中国古代宗法制度