软件: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
阅读全文
459