END rt3;
 经过编译后生成模块文件,其D型触发器的模块文件如图4-3所示。

                         
                    图4-3 D型触发器的模块文件       
4.3.2 计数器的设计
    计数是一种简单基本的运算,计数器是实现这种逻辑运算的电路。计数器在电子设计中的主要作用是对脉冲个数进行计数,来实现对所求参数的测量、计数和控制功能。计数器的组成主要有计数单元和一些控制门。计数单元是由一系列有存储功能的各种触发器构成的,这些触发器有D触发器、RS触发器、JK触发器以及D触发器等。计数器在现代电子设计系统中具有广泛的应用,如在电子计算机的控制中对指令地址进行计数,以便顺序取出一条指令。在运算中作乘法、除法运算剑法、减法次数,又如在数字仪器中对脉冲的计数等等。计数器可以用来显示产品的工作状态,一般来说,常见的有3为和4位的。很显然,3位的最大能显示到999,4位的最大可以显示到9999。本设计对计数要求比较高,因为要对200MHz的信号进行计数,故采用32位的计数器,器计数值最大为4294967296,足以达到设计要求。
     在Quartus II中使用文本输入的方法,定制一个满足要求的32位计数器。新建一个工程,然后新建一个VHDL文本,输入程序进行调试仿真。本设计需要两个32位计数器,分别对标准信号和被测信号进行计数。
    标准信号的VHDL程序如下:
    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    USE IEEE.STD_UNSIGNED_1164.ALL;
    USE IEEE.STD_LOGIC_ARITH.ALL;
    ENTITY c_counter IS
    PORT(
      clk   :in std_logic;
      clr   :in std_logic;
      c_en  :in std_logic;
      c_cnt :buffer std_logic_vector(31 downto0)
       );
     END c_counter;
    ARCHITECTURE rt1 OF c_counter IS
     BEGIN
    PROCESS(clr,clk)
        BEGIN
         IF clr='1' THEN
           c_cnt<=(OTHERS=>'0');
        ELSIF rising_edge(clk) then
         IF c_en='1'THEN
             c_cnt<=c_cnt+'1';
            END IF;
          END IF;
       END PROCESS;
      END ARCHITECTURE;
在计数器完成计数后,需要将计数结果送入锁存器进行锁存,故在设计被测信号计数器时,将锁存器的使能控制信号over添加了进来,被测信号计数器的输出端over与锁存器的使能端相连,这样就能很好的完成计数和锁存功能了。被测信号计数器的VHDL程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY s_counter IS
 PROT(
      s_en  :in std_logic;
上一篇:GSM远程家电遥控开关设计+仿真图+源码
下一篇:基于FPGA的任意波形发生器设计+电路图+仿真图

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

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

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

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

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

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

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

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

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

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

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

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

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

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

《醉青春》导演作品阐述

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

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