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

异步清零同步使能计数器设计VHDL代码Quartus仿真

08/22 09:22
892
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240913153050636.doc

共1个文件

名称:异步清零同步使能计数器设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

异步清零同步使能计数器数码管显示

1、计数器为9位

2、异步清零,同步使能

3、数码管显示计数值

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

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. 仿真图

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--异步清零,同步使能计数器
ENTITY counter IS
   PORT (
      clk       : IN STD_LOGIC;--时钟
      rst_n     : IN STD_LOGIC;--复位
      enable_p  : IN STD_LOGIC;--使能
      count     : OUT STD_LOGIC_VECTOR(9 DOWNTO 0);--计数器输出
      c_out     : OUT STD_LOGIC;--进位
  HEX0     : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管0
  HEX1     : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管1
  HEX2     : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) --数码管2
   );
END counter;
ARCHITECTURE behave OF counter IS
   SIGNAL cnt : STD_LOGIC_VECTOR(9 DOWNTO 0);
BEGIN
   PROCESS (clk, rst_n)
   BEGIN
      IF (rst_n = '0') THEN
         cnt <= "0000000000";--异步清零
         c_out <= '0';
      ELSIF (clk'EVENT AND clk = '1') THEN
         IF (enable_p = '1') THEN--同步使能
            IF (cnt = "1111111111") THEN--计数到最大
               cnt <= "0000000000";
               c_out <= '1';--进位
            ELSE
               cnt <= cnt + "0000000001";--计数
               c_out <= '0';
            END IF;
         ELSE--不使能,不计数
            cnt <= cnt;
            c_out <= '0';
         END IF;
      END IF;
   END PROCESS;
   
   --输出
   count <= cnt;
   
    process(cnt)
    begin 
      case cnt(3 downto 0) is
 when "0000" => HEX0<="1000000";--- Display "0"
 when "0001" => HEX0<="1111001";--- Display "1"
 when "0010" => HEX0<="0100100";--- Display "2"
 when "0011" => HEX0<="0110000";--- Display "3"
 when "0100" => HEX0<="0011001";--- Display "4"
 when "0101" => HEX0<="0010010";--- Display "5"
 when "0110" => HEX0<="0000010";--- Display "6"
 when "0111" => HEX0<="1111000";--- Display "7"
 when "1000" => HEX0<="0000000";--- Display "8"
 when "1001" => HEX0<="0010000";--- Display "9"
 when "1010" => HEX0<="0001000";--- Display "A"
 when "1011" => HEX0<="0000011";--- Display "B"
 when "1100" => HEX0<="1000110";--- Display "C"
 when "1101" => HEX0<="0100001";--- Display "D"
 when "1110" => HEX0<="0000110";--- Display "E"
 when "1111" => HEX0<="0001110";--- Display "F"
 when others => NULL;
      end case;
    end process;

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

  • 2-240913153050636.doc
    下载

相关推荐