本帖最后由 麟凤龟龙 于 2016-10-6 21:13 编辑
该模块实现的逻辑功能是:当N3=1时,
(1) 如果:IN25=1(第一次出现)
那么:I9=0,I7=1;
(2)如果:IN25=1(第二次出现)
那么:I9=1,I7=0;
(3)如果:IN25=1(第三次出现)
那么:I9=1,I7=0;
之后如此循环,第四次出现等同第一次,第五次出现等同第二次,第六次出现等同第三次,当N3=0时, I9=0,I7=0,并且模块中的变量temp13=0;
以下是我编写的Verilog语言:
module Logic_Trans_v(IN25,N3,I9,I7);
input IN25,N3;
output I9,I7;
reg[3:0] temp13,temp23;
reg I9,I7;
initial
begin
temp13=0;
temp23=0;
I9=0;
I7=0;
end
always @(negedge N3)
begin
temp13=0;
I9=0;
I7=0;
end
always @(posedge IN25)
begin
if(IN25)
begin
temp13=temp13+1;
temp23=temp13%3;
end
case(temp23)
0: begin
I9=1;
I7=0;
end
1: begin
I9=0;
I7=1;
end
2: begin
I9=1;
I7=0;
end
default:
begin
I9=0;
I7=0;
end
endcase
if(temp13>=3)
temp13=0;
end
endmodule
|