概述
数字IC设计学习笔记
4. verilog实现BCD计数器
1 原理图
2 Verilog 代码
3 Modelsim仿真
- BCD码:Binary-Coded Decimal,二进码十进数,是一种十进制的数字编码,用4位二进制数来表示十进制数中的0~9个十个数之一。BCD编码又可以分成有权码和无权码两种,其中有权码如:8421码、5421码以及2421码等;无权码如:余3码、格雷码以及余3循环码等。
- BCD 码中最常用的是8421 码,其各个bit 权值分别是8d、4d、2d、1d;同理5421 码各位的权依次为5d、4d、2d、1d。5421 码特点是最高位连续5 个0 后连续5 个1,故其当计数器采用这种编码时,最高位可产生对称方波输出;余3 码是在8421 码上加0011b 的出来的;码格雷码的特点是任意两个相邻的代码只有一位二进制数不同,编码格式不唯一;余3循环码具有格雷码的特点并且编码的首尾可以连接来进行循环,这样可用反馈移位寄存器来实现,硬件实现简单。
- BCD 码的主要应用之一就是数码管,假设要将十进制数158 显示,一般解决办法是把需要显示的十进制数的个、十、百、千位数等进行拆分,即把158 拆分出1、5、8,然后查出对应的数码管显示段码再送去给数码管连接的IO 口。这个过程可以进行下面的运算:先进行除法运算158/100= 1 得出百位,再取余158%100 = 58 后继续进行除法运算58 / 10 = 5 得出十位,再进行一次取余158%10 = 8,得到个位。以上过程可以看出需要除法,但是由于除法运算是比较消耗计算时间导致整体需要的指令周期太久。但是如果先将其转换为BCD 码,则可大幅度减少运算时间。
1. 原理图
2 Verilog 代码
//----TOP module--------------------------
module BCD_counter_top(
input clk,
input rst_n,
input cin,
output cout,
output [11:0] q
);
wire cout3_0;
wire cout7_4;
BCD_counter uut3_0(
.clk(clk),
.cin(cin),
.rst_n(rst_n),
.cout(cout3_0),
.q(q[3:0])
);
BCD_counter uut7_4(
.clk(clk),
.cin(cout3_0),
.rst_n(rst_n),
.cout(cout7_4),
.q(q[7:4])
);
BCD_counter uut11_8(
.clk(clk),
.cin(cout7_4),
.rst_n(rst_n),
.cout(cout),
.q(q[11:8])
);
endmodule
//----BCD_counter------------------
module BCD_counter(
input clk,
input rst_n,
input cin,
output cout,
output [3:0] q
);
reg [3:0] cnt;
//----cnt-------------------------------
always@(posedge clk or negedge rst_n)
if(!rst_n)
cnt <= 4'd0;
else if(cin == 1)begin
if(cnt == 4'd9)
cnt <= 4'd0;
else
cnt <= cnt + 4'd1;
end else
cnt <= cnt;
//----cout-------------------------------
// always@(posedge clk or negedge rst_n)
// if(!rst_n)
// cout <= 0;
// else if(cin ==1 )begin
// if(cnt == 4'd9)
// cout <= 1;
// else
// cout <= cout;
// end else
// cout <= 0;
assign cout = (cin ==1 && cnt == 4'd9)? 1'b1:1'b0;
assign q = cnt;
endmodule
3 Modelsim仿真
部分内容转自小梅哥FPGA自学笔记^^
【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~
最后
以上就是纯真手机为你收集整理的数字IC设计学习笔记_verilog实现BCD计数器数字IC设计学习笔记的全部内容,希望文章能够帮你解决数字IC设计学习笔记_verilog实现BCD计数器数字IC设计学习笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复