2.3 KiB
2.3 KiB
1. Verilog HDL怎么学?
Verilog HDL只是电路的描述语言,那要学的应该是Verilog描述的各种基本电路。要转换思想,先有电路图,再有描述语言。进而联想,C语言应该学的是标准库,还有把这些库整合起来的数据结构和算法。Java语言应该学的是面向对象的思想,以及在面向对象思想的指导下Java的标准库、数据结构和算法。个人感觉应该在不会变化且能把基本元素整合在一起的东西上下功夫,基本电路、标准库、基本思想、基本数据结构、基本算法等。
2. 基本电路汇总
- 二选一多路选择器的电路图是怎样的?怎么用Verilog语言描述?
- 3位加法器的电路图是怎样的?怎么用Verilog语言描述?
- 比较器的电路图是怎样的?怎么用Verilog语言描述?
- 三态门选择器的电路图是怎样的?怎么用Verilog语言描述?
3. 什么是综合?
个人理解综合就是把源代码转换为符合硬件规则的代码,一个成功综合的代码就是可以直接烧到FPGA里的。
4. 什么是模块?
模块是Verilog里的基本结构,由两个部分组成:接口描述和逻辑结构描述。感觉接口描述就是黑盒视角,逻辑结构描述就是白盒视角。
5. Verilog里的运算符对应的电路图是什么样的?
这些运算符包括:
- 算术运算符(+,-,*,/,%);
- 赋值运算符(=,<=);
- 关系运算符(>,<,>=,<=);
- 逻辑运算符(&&,||,!);
- 条件运算符(?:);
- 位运算符(~,|,^,&,^~);
- 移位运算符(<<,>>);
6. 什么是不定态?什么是高阻态?
个人认为数字里的一个二进制位就是实际导线上的一个电位(高电平或低电平)。导线上要么是0,要么是1,只有这两种状态。不定态或高阻态都是从和这个数字位相关的电路结构上来说的,如果相关的电路不能确定这个位是0还是1,那就是不定态。如果相关的电路不能控制本导线上的电位,那就是高阻态。
7. 变量对应的电路结构是什么样的?
- wire就是导线连接,用assign关键字获取组合逻辑信号。
- reg是寄存器,需要触发才能改变其值。
- memory是寄存器数组,就是一串连续的寄存器。