声明:本篇文章为杂谈,HDLBits网站里面的每道题(如有必要)会单独写一篇blog供大家参考。
HDLBits网址 https://hdlbits.01xz.net/wiki/Vector1
1、assign 语句是不能用非阻塞语句赋值的 ,只有reg才可以用非阻塞语句赋值,但是assign既可以给wire型变量赋值也可以给reg型变量赋值
2、异或和同或的一个简单辨析方法,一般我们都是先学习异或,而且异或用的比较多,所以异或是^,同或是异或的非,所以同或是~ ^。
3、
注意图中圈出的绿色的3,并不是表示a的第三位和b的第三位,这里面的3再加一个小斜杠 / 表示总线的意思
4、有关于中文标点符号和英文标点符号的报错(经常犯的错误)
看到这种报错就应该检查自己是否输入法没有切换,导致某些逗号和分号使用的是中文的,这种错误最隐蔽。
5、底层与顶层使用位置连接时的错误
正确连接方法:
module top_module (
input a,
input b,
input c,
input d,
output out1,
output out2
);
mod_a instance1(out1,out2,a,b,c,d);
endmodule
错误连接方法
module top_module (
input a,
input b,
input c,
input d,
output out1,
output out2
);
mod_a instance1(.out1,.out2,.a,.b,.c,.d);
endmodule
观察下面这两句话就能发现异同mod_a instance1(out1,out2,a,b,c,d);
与mod_a instance1(.out1,.out2,.a,.b,.c,.d);
一个有. 一个没 .
6、在刷题的过程中遇到了这样一个错误Error (10267): Verilog HDL Module Instantiation error at top_module.v(8): cannot connect instance ports both by order and by name.
原来是我复制时不小心把例化代码复制成了下面这样my_dff8 instance1(,.d(d),.clk(clk),.q(wir1));
多了一个逗号,导致例化的不正确,可见Error(10267)这个错误是专门针对例化错误的,要记住,如果报了这个点的错误记着检查下自己例化过程的正确性。