这是我遇到问题的程序。我认为它的电线和reg声明。 这是在我的一本书中给出的,但代码中似乎存在一些问题
Module dff (q, d, clk);
Input d, clk ;
Output q ;
always @ (posedge clk)
q = d ;
endmodule
module shift4 (d_out, din, clk) ;
input din, clk ;
output d_out ;
wire wO, wl, w2 ;
reg wO, wl, w2, d_out ;
dff go (wO, d in, clk) ;
dff g1 (wl, wO, clk) ;
dff g2 (w2, w1, clk) ;
dff g3 (d out, w2, clk) ;
endmodule
答案 0 :(得分:0)
您不应将wO,wl,w2声明为wire
和reg
。只需使用wire
。
此外,您应该对顺序逻辑使用非阻塞分配:
q <= d;
答案 1 :(得分:0)
q应该是一个reg,因为你在一个始终的块中更改它。
答案 2 :(得分:0)
如果您使用Verilog 1364-2001中更现代的语法。这样会更加清楚,因为您只声明每个信号一次,最多声明3次。
module shift4 (output reg d_out,
input wire din, clk);
// internal signals
wire wO, wl, w2 ;
dff go (wO, d in, clk) ;
dff g1 (wl, wO, clk) ;
dff g2 (w2, w1, clk) ;
dff g3 (d out, w2, clk) ;
endmodule