verilog 非阻塞赋值问题时序逻辑里用非阻塞赋值是不是电路也会产生竞争的情况?好比说:module fbosc2 (y1,y2,clk,rst);output y1,y2;input clk,rst;reg y1,y2;always @(posedge clk or posedge rst)if (rst) y1
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/24 02:10:02
verilog 非阻塞赋值问题时序逻辑里用非阻塞赋值是不是电路也会产生竞争的情况?好比说:module fbosc2 (y1,y2,clk,rst);output y1,y2;input clk,rst;reg y1,y2;always @(posedge clk or posedge rst)if (rst) y1
verilog 非阻塞赋值问题
时序逻辑里用非阻塞赋值是不是电路也会产生竞争的情况?好比说:
module fbosc2 (y1,y2,clk,rst);
output y1,y2;
input clk,rst;
reg y1,y2;
always @(posedge clk or posedge rst)
if (rst) y1
verilog 非阻塞赋值问题时序逻辑里用非阻塞赋值是不是电路也会产生竞争的情况?好比说:module fbosc2 (y1,y2,clk,rst);output y1,y2;input clk,rst;reg y1,y2;always @(posedge clk or posedge rst)if (rst) y1
第一段代码,Y1和Y2是两个寄存器,寄存器不会竞争冒险..每个时钟Y1和Y2交换寄存器内的值(Y1初始为0,Y2初始为1),就是把Y1的输出接Y2,Y2的输出接Y1.在这里,其实Y1和Y2产生的是和时钟同频的方波.
第二段代码中也没有竞争冒险,count最后的值会取0而不是3,这是verilog默认的.但是综合后的硬件电路图可能不是你想要的那样,一般也不这样写,最好写成
always @ (posedge clk)
begin
if(count==2)
begin
data_a