对于Verilog HDL的初学者,经常会对语法中的几个容易混淆的地方产生困惑。下面列出几个常见问题和解决它们的小窍门。
1.“=”和“<=”的区分方法
前面的内容已经从原理上解释了阻塞(=)和非阻塞(<=)赋值的区别,但对于初学者来说,在实际应用过程中还会产生一些困惑。下面的方法可以帮助初学者来弄清楚两种赋值符号的应用场合。在always语句中,所有的赋值符号用非阻塞的,即“<=”; 在always语句外,所有的赋值符号用阻塞的,即“=”。
2.“reg”和“wire”的区分方法
reg类型和wire类型是Verilog HDL语法中两种最常用的变量。在对module定义的端口信号进行类型描述的时候,初学者会对何时需要指定为reg型感到困惑。可以参考下面的方法。
(1)如果这个信号需要在always块里面被赋值,那么必须指定为reg类型的。
(2)如果这个信号需要在always块外面被赋值,那么必须指定为wire类型的。如果这个信号是端口信号,那么没默认的类型就是wire类型的,不需要另外指定。