名称:2位十进制计数器数码管显示设计VHDL代码modelsim仿真
软件:modelsim
语言:VHDL
代码功能:
2位十进制计数器数码管显示
1、计数0~99,计数到99回0
2、使用数码管显示
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
计数器
1. 程序文件
2. Testbench
3. 程序编译
4. 仿真图
复位清零
计数到99回到0 重新开始
数码管输出对应编码
数字锁
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENTITY counter IS PORT ( clk : IN STD_LOGIC; reset : IN STD_LOGIC; digit1 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); digit2 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END counter; ARCHITECTURE behave OF counter IS SIGNAL cnt_10 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";--计数器十位 SIGNAL cnt_1 : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";--计数器个位 SIGNAL digit1_Hex : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000"; SIGNAL digit2_Hex : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000"; BEGIN PROCESS (clk, reset) BEGIN IF (reset = '1') THEN cnt_10 <= "0000"; cnt_1 <= "0000"; ELSIF (clk'EVENT AND clk = '1') THEN IF (cnt_10 = "1001" AND cnt_1 = "1001") THEN--计数到99时回0 cnt_10 <= "0000"; cnt_1 <= "0000"; ELSIF (cnt_1 = "1001") THEN--个位记到9以后十位进1 cnt_10 <= cnt_10 + "0001"; cnt_1 <= "0000"; ELSE cnt_10 <= cnt_10; cnt_1 <= cnt_1 + "0001";--计个位 END IF; END IF; END PROCESS; --7段数码管显示,低电平点亮, --第7位为小数点,第6位为g,第5位为f,第4位为e, --第3位为d,第2位为c,第1位为b,第0位为a, --数码管1 PROCESS (cnt_1) BEGIN CASE cnt_1 IS WHEN "0000" => digit1_Hex <= "11000000"; WHEN "0001" => digit1_Hex <= "11111001"; WHEN "0010" => digit1_Hex <= "10100100"; WHEN "0011" => digit1_Hex <= "10110000"; WHEN "0100" => digit1_Hex <= "10011001"; WHEN "0101" => digit1_Hex <= "10010010"; WHEN "0110" => digit1_Hex <= "10000010"; WHEN "0111" => digit1_Hex <= "11111000"; WHEN "1000" => digit1_Hex <= "10000000"; WHEN "1001" => digit1_Hex <= "10011000"; WHEN OTHERS => digit1_Hex <= "11000000"; END CASE;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1121
阅读全文
661