1.verilog是一种宽松的语言,使用起来比较方便,但是也造成很多bug,不容易察觉的bug,比较典型就是不同位宽赋值
inout [7:0] isa_data;
assign isa_data = (!isa_ior)? isa_data_out:1'bz;
这种笔误屡见不鲜,应该是assign isa_data = (!isa_ior)? isa_data_out:8'bz;
2.多层模块化设计,一般在顶层不做逻辑,只做模块间连接,以及三态处理,复位等简单处理。
3.一般一个模块必然涉及到很多的控制寄存器,通用的做法是专门设置一个寄存器模块,接口对其读写,然后用端口将所有寄存器引出来。