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的任意波形发生器设计+电路图+仿真图

认知无线电网络中基于双...

基于TCP/IP技术的转向架振动测试系统设计

基于PM2.5浓度的健康出行路径规划及实现

基于涡旋电磁波的新型雷达成像技术研究

基于相关滤波器的长期跟踪算法研究

基于ZigBee协议轨道交通环...

基于QT的图像处理系统设计

国内外无刷直流电动机研究现状

多元化刑事简易程序构建探讨【9365字】

浅谈传统人文精神茬大學...

高校网球场馆运营管理初探【1805字】

浅谈新形势下妇产科护理...

拉力采集上位机软件开发任务书

中国古代秘书擅权的发展和恶变

《醉青春》导演作品阐述

辩护律师的作证义务和保...

谷度酒庄消费者回访调查问卷表