给注释一下下面的verilog Hdl语言,并说明他的功能!

程序:modulecount24(Rd,EN,CLK,Qh,Ql,C);inputRd,EN,CLK;output[3:0]Qh,Ql;outputC;reg[3:0]Q... 程序:
module count24(Rd,EN,CLK,Qh,Ql,C);
input Rd,EN,CLK;
output [3:0]Qh,Ql;
output C;
reg [3:0]Qh,Ql;
reg C;
initial
begin
Qh=4'd0;Ql=4'd0;C=0;
end
always @ (posedge CLK)
begin
if(EN==1)
begin
if(Rd==0)
begin
Qh=4'd0;Ql=4'd0;C=0;
end
else if(Qh<4'd2&&Ql<4'd9)
Ql=Ql+1;
else if(Qh<4'd2&&Ql==4'd9)
begin
Qh=Qh+1;Ql=4'd0;
end
else if(Qh==4'd2&&Ql<4'd3)
Ql=Ql+1;
else begin
Qh=4'd0;Ql=4'd0;C=0;
end
if(Qh==4'd2&&Ql==4'd3)
C=1;
end
end
endmodule
最好注释的清楚些,因为我不太会这个东西,就是想知道这是个什么东西他的功用,以及各个程序句子的意思,和端口!谢了。大神,会加分的哦!
这是一个24进制的计时器,我就是想知道每个语句的意思!
展开
 我来答
兮咩咩
2013-04-03 · TA获得超过126个赞
知道答主
回答量:49
采纳率:0%
帮助的人:39.2万
展开全部
module count24(Rd,EN,CLK,Qh,Ql,C);
input Rd,EN,CLK;
output [3:0]Qh,Ql;----------------------------------输出,Qh代表十位,Qi代表个位
output C; --------------------------------------------进位标志,当Qh与QI总和达到24时,C置1
reg [3:0]Qh,Ql;
reg C;-------------------------------------------------声明QhQIC为寄存器变量,说明应用于时序逻辑
initial
begin
Qh=4'd0;Ql=4'd0;C=0;
end ------------------------------从initial到end表示初始化赋值,这段语句不会被综合,用于仿真
always @ (posedge CLK)
begin
if(EN==1)------------------------使能,当EN为高电平时才执行下面的程序
begin
if(Rd==0)
begin
Qh=4'd0;Ql=4'd0;C=0; --------------当Rd为0时,QhQIC设置为0,说明Rd是复位信号
end
else if(Qh<4'd2&&Ql<4'd9)
Ql=Ql+1; ----------------------------------当Qh小于2,QI小于9时,时钟上升沿到来时QI加1
else if(Qh<4'd2&&Ql==4'd9)
begin
Qh=Qh+1;Ql=4'd0; ------------当Qh小于2,且QI已等于9,Qh十位进位加1,QI恢复0
end
else if(Qh==4'd2&&Ql<4'd3)
Ql=Ql+1; ---------------------------当Qh等于2,QI小于3,QI加1
else -------------------------------------若前面条件不满足,将QhQIC均设置为0
begin
Qh=4'd0;Ql=4'd0;C=0;
end

if(Qh==4'd2&&Ql==4'd3) ----------------若为23,C进1
C=1;
end
end
endmodule
allstars52
2013-04-01 · TA获得超过1596个赞
知道小有建树答主
回答量:593
采纳率:75%
帮助的人:592万
展开全部
module count24(Rd,EN,CLK,Qh,Ql,C);
input Rd,EN,CLK; //输入

output [3:0]Qh,Ql; //输出

output C;//输出
reg [3:0]Qh,Ql; //寄存器定义

reg C;
initial //初始化

begin
Qh=4'd0;Ql=4'd0;C=0;
end
always @ (posedge CLK)
begin
if(EN==1)
begin
if(Rd==0)
begin
Qh=4'd0;Ql=4'd0;C=0; //EN==1且Rd==0时,Qh=4'd0;Ql=4'd0;C=0

end
else if(Qh<4'd2&&Ql<4'd9) //EN==1且Rd==1且Qh<4'd2&&Ql<4'd9时,Ql累加1,Ql从0计数到8

Ql=Ql+1;

else if(Qh<4'd2&&Ql==4'd9) //EN==1并且Rd==1且Qh<4'd2&&Ql==4'd9时Qh累加1并将Ql清零

begin
Qh=Qh+1;Ql=4'd0;
end
else if(Qh==4'd2&&Ql<4'd3) //EN==1并且Rd==1且Qh==4'd2&&Ql<4'd3时,Ql累加1
Ql=Ql+1;
else begin
Qh=4'd0;Ql=4'd0;C=0;//其他条件时
end
if(Qh==4'd2&&Ql==4'd3)当Qh==4'd2&&Ql==4'd3时 C=1,表示进位

C=1;
end
end
endmodule
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式