名称:基于FPGA的任意进制计数器VHDL代码Quartus仿真(文末获取)
软件:Quartus
语言:VHDL
代码功能:
利用VHDL语言,实现0~9901任意进制8421BCD数译码显示电路,并将计数器输出的8421BCD进行共阳数码管显示,要求
1、计数器具有步置数功能、异步清零功能,用VHDL实现计数逻辑,并阐述设计原理,给出关键block diagram设计框图
2、8421BCD码7段译码部分可以参见74LS48功能,用VHDL实现译码逻辑,并阐述设计原理,给出关键 Block .diagram设计框图
3、译码输出后驱动的数码管为共阳级数码管,阐述电路原理,给出相应编码方式
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";
源代码
扫描文章末尾的公众号二维码