FPGA Verilog开发实战指南:基于Intel Cyclone IV(基础篇)
上QQ阅读APP看书,第一时间看更新

9.5 章末总结

本章通过三个简单逻辑电路工程介绍了如何编写一个最简单的RTL逻辑功能模块以及对应的仿真代码,并进行了仿真验证,并对比了if-else语句和case语句所表达的逻辑的异同,希望大家在以后的应用中能够合理、熟练地使用这两种语法,其中还介绍了很多语法的实际应用和需要注意的事项,希望读者能够掌握。

新语法总结

重点掌握

1)always块描述组合逻辑的用法。

2)assign语句的用法。

3)initial的用法(不可综合,常用于Testbech中初始化信号,但也可以在可综合的模块中用于初始化寄存器)。

4)if-else的用法。

5)case的用法。

6)条件运算符(三元运算符)的用法。

7)begin...end(对多条语句赋值时使用,因为我们设计RTL代码的原则是一个always块中最好只有一个变量,所以begin...end在RTL代码中几乎很少使用,而在Tetbench中使用得更多)。

8)#延时(不可综合,但允许在可综合的模块中使用,其延时单位仍由可综合模块中的`timescale决定,但是综合时其延时时间被综合器忽略)。

9)`timescale(配合“#”允许在可综合模块中使用)。

10)=(赋值号的一种,阻塞赋值,在可综合的模块中表达组合逻辑的语句时使用)。

11)==(常用的比较运算符)。

12)//(注释一行代码时使用)。

13){,}位拼接运算符(两个数之间中间用“,”隔开,也可以有多个“,”进行更多位的拼接)。

14)+(最常用的数学运算符)。

一般掌握

1)$timeformat在Testbench中的用法(不可综合)。

2)$monitor在Testbench中的用法(不可综合)。

3)$time在Testbench中的用法(不可综合)。

知识点总结

1)功能模块的书写结构、格式(端口列表推荐使用Verilog-2001标准)。

2)仿真模块的书写结构、格式(端口列表中没有任何信号)。

3)如何进行实例化调用(信号名的对应关系和连线)。

4)在ModelSim中通过观察波形和查看“Transcript”界面中打印的信息对设计的代码进行功能验证(如果有语法或者仿真错误,也会在大艰该界面中提示)。