EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
. H" L9 r3 U+ [- T8 B& |9 k
程序问题分析解决方案分享 刚入门的朋友编写了一个简单的程序,出现如下问题: module blocking(
X: y. ~% u7 H3 Q) z% U& X din, //数据输入信号% `3 C. g% W5 i
dout //数据输出信号9 G. J1 O7 o- Q9 K! P8 j- U- j
);/ u8 b2 n( O5 R D. g" P
input din;
) b# S" U O% ^ output dout;
. V& g) r1 M7 _" l; l: B0 L 9 S. N/ @3 H( w0 v
wire din;4 h* ?: @# `1 ^% N; y
reg dout; //数据缓冲9 E8 S% C. O y) f0 h
reg [1:0] temp; 9 k5 _( i# L8 e2 U
2 Y5 R6 T2 ?3 D) S' _
always @(din)) c6 W) r3 h/ g0 H4 |
begin. ?# }+ i& K( ~% u
8 {- l4 L: z& o; Q- [) L
dout=temp[1];
+ T' @, s& A1 T+ E- |# ?- l& T temp[0]=din;6 _$ X$ J- x+ R6 b
temp[1]=temp[0];
9 \, {9 b' i( a- ~2 G" ~ endmodule + i+ t9 S# {2 ^ L, x5 N, }
Warning (10235): Verilog HDL Always Construct warning at blocking.v(15): variable "temp" is read inside the Always Construct but isn't in the Always Construct's Event Control " i) ~* [* `1 K" a- m; e w
程序编译完全通过,出现警告。 警告的意思:变量temp 在always 语句中总是读,但是没有在always的敏感变量中。
8 W! C1 i# Z* P% d5 w, w y解决方案:always @(din,temp) ! z1 B, ]2 A. O& o" _! w
always模块要求所有的敏感变量都要出现在@后面,避免锁存器出现! $ K8 Y$ o Z6 W! i T
|