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”界面中打印的信息对设计的代码进行功能验证(如果有语法或者仿真错误,也会在大艰该界面中提示)。