给注释一下下面的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进制的计时器,我就是想知道每个语句的意思! 展开
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进制的计时器,我就是想知道每个语句的意思! 展开
展开全部
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
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
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询