• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的数字频率计设计VHDL代码ISE仿真

07/31 11:24
409
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2406031S454961.doc

共1个文件

名称:基于FPGA数字频率计设计VHDL代码ISE仿真

软件:ISE

语言:VHDL

代码功能:

数字频率计

1.输入为矩形脉冲,频率范围 10Hz~100kHz;

2.用五位数码管显示;只显示最后的结果,不要将计数过程显示出来;

3.单位为 Hz 和 kHz 两档,自动切换。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序运行

4. 管脚约束

5. 程序仿真

5.1 整体仿真图

5.2 控制模块仿真图

5.3 计数器模块仿真图

5.4 锁存器模块仿真图

5.5 显示模块仿真图

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--计数器模块
ENTITY counter IS
   PORT (
      signal_in  : IN STD_LOGIC;--被测信号
      en         : IN STD_LOGIC;--1S闸门信号
      rst        : IN STD_LOGIC;--复位
      number     : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)--频率值32位,8个数,每个数4位,共32位
   );
END counter;
ARCHITECTURE trans OF counter IS
--最大99MHz=99_000_000Hz共8个
   SIGNAL num_0 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";
   SIGNAL num_1 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";
   SIGNAL num_2 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";
   SIGNAL num_3 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";
   SIGNAL num_4 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";
   SIGNAL num_5 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";
   SIGNAL num_6 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";
   SIGNAL num_7 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";
BEGIN
   
   number <= (num_7 & num_6 & num_5 & num_4 & num_3 & num_2 & num_1 & num_0);--单位Hz
   
   --计数,计数1s内的信号周期数,计数值就是频率值
   PROCESS (signal_in, rst)
   BEGIN
      IF (rst = '1') THEN
         num_0 <= "0000";
         num_1 <= "0000";
         num_2 <= "0000";
         num_3 <= "0000";
         num_4 <= "0000";
         num_5 <= "0000";
         num_6 <= "0000";
         num_7 <= "0000";
      ELSIF (signal_in'EVENT AND signal_in = '1') THEN
         IF (en = '1') THEN--计数,低位都是9,则高位加1,低位清零,例如加到999,则变为1000
            IF (num_7 = "1001" AND num_6 = "1001" AND num_5 = "1001" AND num_4 = "1001" AND num_3 = "1001" AND num_2 = "1001" AND num_1 = "1001" AND num_0 = "1001") THEN
               num_0 <= "0000";
               num_1 <= "0000";
               num_2 <= "0000";
               num_3 <= "0000";
   num_4 <= "0000";
   num_5 <= "0000";
   num_6 <= "0000";
   num_7 <= "0000";
            ELSIF (num_6 = "1001" AND num_5 = "1001" AND num_4 = "1001" AND num_3 = "1001" AND num_2 = "1001" AND num_1 = "1001" AND num_0 = "1001") THEN
               num_0 <= "0000";
               num_1 <= "0000";
               num_2 <= "0000";
               num_3 <= "0000";
               num_4 <= "0000";
               num_5 <= "0000";
               num_6 <= "0000";
               num_7 <= num_7 + "0001";--低位为9,则高位加1,低位清零

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=820

  • 2-2406031S454961.doc
    下载

相关推荐