1.模的命名规则
模块都是用module开始,endmodule结束,这就命名一个模块。
module后面是模块名(模块名要求和.v文件名字一致),然后是接口列表。
例如:module md_frist_key ();//这里括号是接口列表
//接口列表里面是: 这个模块的输入输出方向,变量类型和端口名称。
2.变量类型
iverilog语言的变量类型主要有两种,一个是wire型(线型),一个是reg型变量。
注意:输入一定是wire型变量,输出可以是wire型,也可以reg型变量。reg型变量不一定是寄存器类型,但寄存器型变量定义一定用reg。定义变量时不说明位宽默认为1.
3.变量赋值
wire型变量赋值用 assign;reg型变量赋值用 always;
4.测试激励模块testbench
testbench模块给功能模块提供信号源,检查输出正确与否。
测试激励模块可以不写接口列表,变量定义在内部声明时,不用写输入输出方向。
下面是代码学习,每一行都会写注释。
1.建立工程
简历一个文件夹,里面建立一个design文件夹和一个sim文件夹,design文件夹里存放功能设计模块。sim文件夹存放测试激励文件和仿真工程文件。
2.功能模块设计(设计一个与门,输入为key1,key2,输出为led)
3.测试激励文件编写
4.仿真波形