为了方便输出数据到硬件开发板中,设计了BCD码计数器
实验原理
如: 输出数据158到数码管的时候需要:
158 / 100 = 1 百位
158 % 100 =58 58 /10 =5 十位
158/10 = 8 个位
除法和取余的运算消耗的资源都比较大,为了节约资源,可用BCD计数器(每十个数进1),如下图所示,每四位分别表示百位,十位,个位。
代码实现
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 <=