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