verilog 非阻塞赋值问题
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/08/17 19:56:37
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
时序逻辑里用非阻塞赋值是不是电路也会产生竞争的情况?好比说:
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 非阻塞赋值问题](/uploads/image/z/18238617-9-7.jpg?t=verilog+%E9%9D%9E%E9%98%BB%E5%A1%9E%E8%B5%8B%E5%80%BC%E9%97%AE%E9%A2%98)
第一段代码,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
第二段代码中也没有竞争冒险,count最后的值会取0而不是3,这是verilog默认的.但是综合后的硬件电路图可能不是你想要的那样,一般也不这样写,最好写成
always @ (posedge clk)
begin
if(count==2)
begin
data_a