名称:异步清零同步使能计数器设计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
阅读全文
892