名称:基于FPGA的任意进制计数器VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
利用VHDL语言,实现0~9901任意进制8421BCD数译码显示电路,并将计数器输出的8421BCD进行共阳数码管显示。
要求:
1、计数器具有步置数功能、异步清零功能,用VHDL实现计数逻辑,并阐述设计原理,给出关键block diagram设计框图。
2、8421BCD码7段译码部分可以参见74LS48功能,用VHDL实现译码逻辑,并阐述设计原理,给出关键 Block .diagram设计框图。
3、译码输出后驱动的数码管为共阳级数码管,阐述电路原理,给出相应编码方式。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 仿真图
整体仿真图
任意进制计数模块仿真图
数码管译码模块仿真图
部分代码展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ???USE?ieee.std_logic_unsigned.all; --任意进制计数器 ENTITY?radix_N?IS GENERIC?(?radix?:?STD_LOGIC_VECTOR(15?downto?0)?:=X"9887");--设置进制为9887,radix为所要设置的进制值 ???PORT?( ??????clk????????:?IN?STD_LOGIC;--时钟 ??????reset??????:?IN?STD_LOGIC;--异步清零,低电平有效 ??????set_en?????:?IN?STD_LOGIC;--同步置数,高电平有效 ??????one_in??:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--置数个位BCD码 ??ten_in??:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--置数十位BCD码 ??hun_in??:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--置数百位BCD码 ??tho_in??:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--置数千位BCD码 ??????thousand??:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--千位输出 ??hundred??:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--百位输出 ??ten??:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--十位输出 ??one??:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0)?--个位输出 ???); END?radix_N; ARCHITECTURE?behave?OF?radix_N?IS SIGNAL?data_1??:?STD_LOGIC_VECTOR(3?DOWNTO?0);--个位BCD输出 SIGNAL?data_2??:?STD_LOGIC_VECTOR(3?DOWNTO?0);--十位BCD输出 SIGNAL?data_3??:?STD_LOGIC_VECTOR(3?DOWNTO?0);--百位BCD输出 SIGNAL?data_4??:?STD_LOGIC_VECTOR(3?DOWNTO?0);--千位BCD输出 BEGIN --个位控制 ???PROCESS?(clk,?reset) ???BEGIN ??????IF?(reset?=?'0')?THEN--异步清零 ????????????data_1?<=?"0000"; ??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN ?????????IF?(set_en?=?'1')?THEN--同步置数 ????????????data_1?<=?one_in; ?????????ELSIF?((data_4?&?data_3?&?data_2?&?data_1)?>=?radix)?THEN--判断是否计数到设置的进制 ????????????data_1?<=?"0000";
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=719