问一个verilog基本知识,
module sset(clk,indb,outdb);input clk;
input indb;
output outdb;
reg outdb;
reg outtemp;
always @(posedge clk)
begin
outtemp=indb;
outdb=outtemp;
end
endmodule
这样的写法是不是就是已经默认了:
assign outdb=outdb;
assign indb=indb;
还有在这句里面,
这样修改:
always @(posedge clk)
begin
outtemp<=indb;
outdb<=outtemp;
end
是不是和原程序效果一样?如果效果不一样,有什么区别??看书上说always @(posedge clk)语句里面应该用非阻塞赋值,为什么很多程序还用阻塞赋值?
刚学FPGA,有很多为什么!!! always @(posedge clk)
begin
outtemp=indb;
outdb=outtemp;
end
这样的写法,等同于:
always @(posedge clk)
begin
outtemp<=indb;
outdb<=indb;
end
"看书上说always @(posedge clk)语句里面应该用非阻塞赋值,为什么很多程序还用阻塞赋值?"
阻塞赋值可以方便的在时序逻辑中实现复杂的组合逻辑表达式。 你然你都说了 : 书上说always @(posedge clk)语句里面应该用非阻塞赋值
书上说的是 : "应该"而不是“必须”
就好比中午应该吃饭,而不是必须吃饭!
仔细看下,转换后的逻辑图 多谢上面两位的回答,我再好好看看书 这是两种赋值的区别。一种用于时序电路,一种用于组合电路
页:
[1]