吐血求救!!!Verilog简单问题!!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/01 16:50:05
求高手帮我把每一句加上注释~越详细越好~写论文用~但是自己没学过

这语言~。。。
周三要交了~~高手们速度吼起!!

题目:节拍器专用集成电路

译码转换器:
该模块的主要功能为将要输出显示的内容转换为4位的BCD码,以便用

LED来显示。比如输入的数据是A[8:0],所以应先把数据转换为3位的

十进制,然后分别把各个位的数字转换为BCD码,再用3个数码管将其

显示出来。节拍音符可以用A,B两个字符来表示,也可以通过该转换

器转换为相应的两个BCD码,再用2个数码管来显示。其工作状态受en

来控制,en为1时工作,为0时每个显示位都清零。
module BCD_yima(en,A,BCD1,BCD2,BCD3);
input [8:0]A;
input en;
output [3:0]BCD1,BCD2,BCD3;
reg [3:0]BCD1,BCD2,BCD3;
integer x1,x2,x3;
always @(A)
begin
if(en==0)
begin
BCD1=4'b0000;
BCD2=4'b0000;
BCD3=4'b0000;
end
else

begin
x1=A%10;
x2=A/10%10;
x3=A/100;
case(x1)
0:BCD1=4'b0000;
1:BCD1=4'b0001;
2:BCD1=4'b0010;
3:BCD1=4'b0011;
4:BCD1=4'b01

module BCD_yima(en,A,BCD1,BCD2,BCD3); /定义模块
input [8:0]A; /输入a
input en; /输入使能端
output [3:0]BCD1,BCD2,BCD3; /输出三个 四位的bcd码
reg [3:0]BCD1,BCD2,BCD3; /定义数据类型为reg
integer x1,x2,x3; /定义中间变量
always @(A) /a有输入是即执行下面语句
begin /开始
if(en==0) /当en为0时
begin /开始
BCD1=4'b0000; /每个输出端清零
BCD2=4'b0000;
BCD3=4'b0000;
end

else /当en不为0时
begin
x1=A%10; /最低位把a对十求余
x2=A/10%10; /倒数第二位先把a除十在对十求余
x3=A/100;
case(x1) /最低位bcd输出
0:BCD1=4'b0000; /当x1=0时bcd1输出0000
1:BCD1=4'b0001;
2:BCD1=4'b0010;
3:BCD1=4'b0011;
4:BCD1=4'b0100;
5:BCD1=4'b0101;
6:BCD1=4'b0110;
7:BCD1=4'b0111;
8:BCD1=4'b1000;
9:BCD1=4'b1001;
default:BCD1=4'bx;
endcase
case(x2) /倒数第二位bcd输出
0:BCD2=4'b0000;
1:BCD2=4'b0001;
2:BCD2=4'b0010; <