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