名称: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
阅读全文