基于FPGA的任意进制计数器设计VHDL代码Quartus仿真

名称:基于FPGA的任意进制计数器设计VHDL代码Quartus仿真(文末获取)

软件:Quartus

语言:VHDL

代码功能:

利用VHDL语言,实现0~9901任意进制8421BCD计数译码显示电路,并将计数器输出的8421BCD进行共阳数码管显示,要求

1、计数器具有同步置数功能、异步清零功能,用VHDL实现计数逻辑,并阐述设计原理,给出关键 block diagran设计框图。

2、8421BCD码7段译码部分可以参见74LS48功能,用VHDL实现译码逻辑,并阐述设计原理,给出关键 blockdiagram设计框图。

3、译码输岀后驱动的数码管为共阳极数码管,阐述电路原理,给出相应编码方式。

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 仿真图

整体仿真图

计数模块仿真图

译码逻辑模块仿真图

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--N进制计数器模块
ENTITY jishu IS
GENERIC ( N : STD_LOGIC_VECTOR(15 downto 0) :=X"9538");--N为进制控制参数,目前进制为9538
   PORT (
      CLK        : IN STD_LOGIC;--时钟
      CLR_N      : IN STD_LOGIC;--异步复位,低电平清零
      LOAD_N       : IN STD_LOGIC;--同步置数,低电平有效
      LOAD_NUM  : IN STD_LOGIC_VECTOR(15 DOWNTO 0);--置数值16bit,每4bit为一个BCD码
      CNT_NUM_Q  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--千位计数值4bit,一个BCD码
  CNT_NUM_B  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--百位计数值4bit,一个BCD码
  CNT_NUM_S  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--十位计数值4bit,一个BCD码
  CNT_NUM_G  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) --个位计数值4bit,一个BCD码
   );
END jishu;
ARCHITECTURE RTL OF jishu IS
signal NUMBER : STD_LOGIC_VECTOR(15 DOWNTO 0) := X"0000";--定义内部变量
BEGIN
--进程
   PROCESS (CLK, CLR_N)
   --variable NUMBER : STD_LOGIC_VECTOR(15 DOWNTO 0) <= X"0000";--定义内部变量
   BEGIN
      IF (CLR_N = '0') THEN
         NUMBER <= X"0000";--异步复位,低电平清零
      ELSIF (CLK'EVENT AND CLK = '1') THEN
         IF (LOAD_N = '0') THEN--同步置数,低电平有效
            NUMBER <= LOAD_NUM;--置数值
         ELSIF (NUMBER >= N) THEN--是否计数到对应进制值
            NUMBER <= X"0000"; --回到0000
         ELSIF (NUMBER(11 DOWNTO 0) = X"999") THEN--计数到999
            NUMBER(15 DOWNTO 12) <= NUMBER(15 DOWNTO 12) + X"1";--千位加1
            NUMBER(11 DOWNTO 0) <= X"000";--回到000
         ELSIF (NUMBER(7 DOWNTO 4) = X"9" AND NUMBER(3 DOWNTO 0) = X"9") THEN--计数到99
            NUMBER(11 DOWNTO 8) <= NUMBER(11 DOWNTO 8) + X"1";--百位加1
            NUMBER(7 DOWNTO 0) <= X"00";--回到00
         ELSIF (NUMBER(3 DOWNTO 0) = X"9") THEN--计数到9
            NUMBER(7 DOWNTO 4) <= NUMBER(7 DOWNTO 4) + X"1";--十位加1
            NUMBER(3 DOWNTO 0) <= X"0";--个位回到0
         ELSE
            NUMBER(3 DOWNTO 0) <= NUMBER(3 DOWNTO 0) + X"1";--个位加1
         END IF;
源代码

 扫描文章末尾的公众号二维码

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值