本帖最后由 z894811350 于 2015-12-1 13:39 编辑
第一种
reg aa;
wire aa_rising;
wire aa_falling;
always @(posedge sys_clk)
begin
if(rst_l==1'b0)
begin
aa_r<=1'b0;
end
else if(bb==1'b0)
aa_r<=aa;
end
assign aa_rising =(aa_r==1'b0 && (aa==1'b1))?1'b1:1'b0;
assign aa_falling=(aa_r==1'b1 && (aa==1'b0))?1'b1:1'b0;
图像正常
第二种
reg [3:0] aa;
wire aa_rising;
wire aa_falling;
always @(posedge sys_clk)
begin
if(rst_l==1'b0)
begin
aa_r<=4'd0;
end
else if(bb==1'b0)
aa_r[3:0]<={aa[2:0],aa};
end
assign aa_rising =(aa_r==4'b0011)?1'b1:1'b0;
assign aa_falling=(aa_r==4'b1100)?1'b1:1'b0;
图像乱了
时钟是125M
哪位帮助解释一下这两种写法什么情况会出现问题
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
aa_r[3:0]<={aa_r[2:0],aa}
我抄错了!
这回呢
没仔细看逻辑。
不过,提醒LZ注意运算符的优先级。
assign aa_rising =(aa_r==4'b0001)?1'b1:1'b0;
assign aa_falling=(aa_r==4'b1110)?1'b1:1'b0;
这样才跟第一种是一样的吧
1 125m时钟不低了,要注意了
2 注意建立时间和保持时间的时序问题
一周热门 更多>