Verilog:模块结构/assign/always[学习笔记day3]-FPGA常见问题论坛-FPGA CPLD-ChipDebug

Verilog:模块结构/assign/always[学习笔记day3]

 

1 模块结构

Verilog的基本设计单元是:模块(block)

Verilog模块的结构由在module与endmodule关键词之间的4个重要部分组成:

  1. 端口定义
  1. I/O说明
  1. 信号类型声明
  1. 功能描述

 

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 –常用于描述时序

图片[1]-Verilog:模块结构/assign/always[学习笔记day3]-FPGA常见问题论坛-FPGA CPLD-ChipDebug
  • always常用于描述时序,也可描述组合逻辑–always @(*) / always @(a,b,s) ;
  • always块可用多种手段来表达逻辑关系,如if-else,case;
  • always块与assign语句是并发执行的,assign语句一定要在always语句之外

模块模版格式:

图片[2]-Verilog:模块结构/assign/always[学习笔记day3]-FPGA常见问题论坛-FPGA CPLD-ChipDebug

3 标识符

任何用Verilog HDL语言描述的都通过名字来辨识,这个名字称为标识符。如源文件名、模块名、端口名、变量名、常量名、实例名等。

  • 标识符可由字母、数字、下划线和$符号构成,但第一个字符必须是字母或下划线,不可为数字or$!!
  • Verilog中变量名区分大小写!
  • 用户程序中的变量、节点等名称不能与关键字同名

and 与门
nand 与非门
or 或门
nor 或非门
xor 异或门
xnor 异或非门
buf 缓冲器
not 非门

以上内容均为学习笔记,若有误请随时纠正。

 

请登录后发表评论

    没有回复内容