软件:Quartus
语言:Verilog
代码功能:
8位频率计的设计与实现
实验目的:设计并制作一个8位频率计
实验内容:根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为秒的输入信号脉冲计数允许的信号:1秒计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期作好准备。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在实验箱验证,实验箱如下,其他实验箱可以修改管脚适配:
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序运行
管脚分配
RTL图
4. 程序仿真
4.1 整体仿真图
4.2 控制模块仿真图
4.3 计数器模块仿真图
4.4 锁存器模块仿真图
5.5 显示模块仿真图
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; --控制模块 ENTITY Frq_Ctrl IS PORT ( clk : IN STD_LOGIC;--时钟1000Hz en : OUT STD_LOGIC;--使能--1S的闸门信号 rst : OUT STD_LOGIC;--清零 lat : OUT STD_LOGIC--锁存 ); END Frq_Ctrl; ARCHITECTURE trans OF Frq_Ctrl IS SIGNAL count : integer := 0; BEGIN --计数器0~1050 PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN IF (count = 1050) THEN--为减小仿真时间,计数值减小1000倍,以下同理 count <= 0; ELSE count <= count + 1; END IF; END IF; END PROCESS; --使能 PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN--50_00 IF (count < 999) THEN--1秒的使能信号,在1s内计数脉冲数就是频率值 en <= '1'; ELSE en <= '0'; END IF; END IF; END PROCESS; --锁存 PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN--计数值减小1000倍,以下同理 IF (count < 1020 AND count > 1010) THEN lat <= '1'; ELSE lat <= '0'; END IF; END IF; END PROCESS; --清零 PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN--计数值减小1000倍 IF (count < 1040 AND count > 1030) THEN rst <= '1'; ELSE rst <= '0'; END IF; END IF; END PROCESS; END trans;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=421
阅读全文