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的任意波形发生器设计+电路图+仿真图
-
-
-
-
-
-
-
杂拟谷盗体内共生菌沃尔...
十二层带中心支撑钢结构...
java+mysql车辆管理系统的设计+源代码
电站锅炉暖风器设计任务书
乳业同业并购式全产业链...
酸性水汽提装置总汽提塔设计+CAD图纸
中考体育项目与体育教学合理结合的研究
当代大学生慈善意识研究+文献综述
河岸冲刷和泥沙淤积的监测国内外研究现状
大众媒体对公共政策制定的影响