以下为建议规范,可以增强代码的阅读性和可观性,并不是强制的规范
1.只有三种逻辑电路:组合逻辑,同步复位的时序逻辑电路,异步复位的时序逻辑电路
2.一个always只产生一个信号(方便调试,但是可以有多个输入)
3.一个信号只能在一个always产生
4.always是描述一个信号产生的方法,即在什么情况下,这个信号的值为多少,在其他情况下,值为多少(要考虑全面)
5.含有posedge或者negedge的一定是D触发器,是时序电路
6.设计时。如果想立即有结果,就用组合逻辑,想延时一拍有结果,就用时序逻辑
7.时序逻辑的敏感信号是always@(posedge clk or negedge rst_n);
8.组合逻辑的敏感信号是always@(*);
9.reg常用来表示用于“always”模块内的指定信号类型,常代表触发器,在alwyas里面赋值的信号都必须定义为reg型
10.wire类型信号表示线,常用于模块例化
11.输出信号必须是寄存器直接输出,不能用wire类型数据作为的输出(防止产生亚稳态,详情可参考:https://blog.csdn.net/VCA821/article/details/81989846)
12.输入输出的信号声明一行只能写一个
13.时序逻辑电路中使用非阻塞赋值,组合逻辑中使用阻塞赋值