1 模块结构
Verilog的基本设计单元是:模块(block)
Verilog模块的结构由在module与endmodule关键词之间的4个重要部分组成:
- 端口定义
- I/O说明
- 信号类型声明
- 功能描述
module block1(a,b,c,d); //1. 端口定义
input a,b,c ; //2. I/O说明
output d ;
wire x ; //3. 信号类型声明
assign d = a | x ; //4. 功能描述
assign x = (b & ~c ) ; //|-或;&-与;~-取反
endmodule
2 逻辑功能定义
在Verilog模块中有3种方法可以描述电路的逻辑功能:
(1)assign语句–连续赋值语句–常用于描述组合逻辑
assign x = (b & c) ;
- assign赋值的变量只可为wire型,不可为reg型
(2)用原件例化(instantiate)–门元件例化
and u_and3( a, b, c);
门元件关键字 例化元件名(output input input);
- 元件例化是调用Verdilog HDL提供的元件;
- 元件例化包括门元件例化和模块元件例;
- 每个实例元件的名字必须唯一,以避免与其他调用元件的实例相混淆。
(3)always –常用于描述时序
- always常用于描述时序,也可描述组合逻辑–always @(*) / always @(a,b,s) ;
- always块可用多种手段来表达逻辑关系,如if-else,case;
- always块与assign语句是并发执行的,assign语句一定要在always语句之外
模块模版格式:
3 标识符
任何用Verilog HDL语言描述的都通过名字来辨识,这个名字称为标识符。如源文件名、模块名、端口名、变量名、常量名、实例名等。
- 标识符可由字母、数字、下划线和$符号构成,但第一个字符必须是字母或下划线,不可为数字or$!!
- Verilog中变量名区分大小写!
- 用户程序中的变量、节点等名称不能与关键字同名
and | 与门 |
nand | 与非门 |
or | 或门 |
nor | 或非门 |
xor | 异或门 |
xnor | 异或非门 |
buf | 缓冲器 |
not | 非门 |
以上内容均为学习笔记,若有误请随时纠正。
没有回复内容