BCD计数器

本文介绍了使用VHDL设计BCD码计数器的原理和代码实现,旨在减少硬件资源消耗。通过4位和12位BCD码计数器的示例,解释了如何避免在进位时出现错误,并展示了最终的仿真结果。
摘要由CSDN通过智能技术生成

为了方便输出数据到硬件开发板中,设计了BCD码计数器

实验原理

如: 输出数据158到数码管的时候需要:
158 / 100 = 1 百位
158 % 100 =58 58 /10 =5 十位
158/10 = 8 个位
除法和取余的运算消耗的资源都比较大,为了节约资源,可用BCD计数器(每十个数进1),如下图所示,每四位分别表示百位,十位,个位。
BCD

代码实现

4位BCD码计数器的实现

// 端口名称
			clk	:	in std_logic;						// 输入时钟
			nrst	:	in std_logic;						// 低有效复位信号
			cin	:	in std_logic;						// 1位输入信号
			q		:	out std_logic_vector(3 downto 0);				// 4位输出信号
			cout	:	out std_logic					// 进位输出
// 实现0-9循环计数
		if(cin='1') then
			if(cnt =9) then
				cnt<=0;
				else
					cnt<=cnt+1;
			end if;
		end if;
// 实现进位 (不写在process中是为了避免进位计数时发生错误)
cout <= 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值