看看这段verilog程序应该如何修改
下面这段程序,B、C、D中,D需要与时钟相与,结果仿真D与B、C就不一样了,B、C只在对应时钟时是一个脉冲,D变为高电平后就一直为高电平了,计数器清零也为高电平,这是为什么?
module CS(PCK,mx,D,B,C);
input PCK;
output mx;
output D,B,C;
reg mx; //鍐欏湴鍧€
reg DT;
reg B,C;
always @ (posedge KA )
begin
D=0;
B=0;
C=0;
mx<=mx+1;
if(mx==48) D=1;
if(mx==28) B=1;
if(mx==18) C=1;
end
assign KA= PCK||D;
endmodule
本帖最后由 3DA502 于 2017-8-15 11:25 编辑
楼主,你还是不懂HDL,这是图形描述语言,不是程序,没有顺序判断这东西,你所写的,对应的都是LE查找表和flipflop
always @ (posedge KA )
begin
mx<=mx+1;
end
assign D = (MX== 48)?1:0;
assign B = (MX== 48)?1:0;
assign C = (MX== 48)?1:0;
或者同步逻辑
always @ (posedge KA )
begin
mx<=mx+1;
end
always @ (nedeage KA )
begin
if(MX== 48) D<<=1;
else D<<= 0;
end
3DA502 发表于 2017-8-15 11:20
楼主,你还是不懂HDL,这是图形描述语言,不是程序,没有顺序判断这东西,你所写的,对应的都是LE查找表和f ...
我输入
assignB=(mx==15)?1:0;
怎么编译出错:object "B" on left-hand side of assignment must have anettype
改成wire B,C,D好了
页:
[1]