verilog教程(2) —— Verilog基础语法-Anlogic-安路社区-FPGA CPLD-ChipDebug

verilog教程(2) —— Verilog基础语法

Verilog的基本元素

既然Verilog作为硬件描述语言,那它用什么基本元素去描述硬件呢?如下:

  • 模块(Module)——verilog的工程由模块组成, 一个电路设计可由多个模块组合而成,因此一个模块的设计只是一个系统设计中的某个层次设计,模块设计可采用多种建模方式。
  • 逻辑门(& | ^ + – * / ==)—— 描述数字电路的组合逻辑电路
  • 寄存器(reg)——描述数字电路的时序电路
  • 线(wire)——用于连接逻辑门的寄存器

可以看到verilog的基本元素如此简单。

Verilog 基础语法

格式

  • Verilog 区分大小写。
  • 可换行编写。每个语句必须以分号为结束符。空白符(换行、制表、空格)都在编译阶段可忽略。

注释

Verilog 中有 2 种注释方式:

  • 用 // 进行单行注释
  • 用 /* 与 */ 进行跨行注释.

标识符与关键字

  • 标识符(identifier)可以是任意一组字母、数字、$ 符号和 _(下划线)符号的合,但标识符的第一个字符必须是字母或者下划线,不能以数字或者美元符开始。
  • 标识符是区分大小写的。
  • 关键字是 Verilog 中预留的用于定义语言结构的特殊标识符。Verilog 中关键字全部为小写。

以下是标识符的几个例子:

Count
COUNT //与Count 不同。
R56_68
FIVE$

有了上面一些基础,本节重点讲下模块。

Verilog 的基本单元——模块(module)

先看一个简单的加法器模块

module addr (a, b, cin, count, sum);
input [2:0] a;
input [2:0] b;
input cin;
output count;
output [2:0] sum;
assign {count,sum} = a +b + cin;
endmodule

该例描述一个3位加法器,从例子可看出整个模块是以module 开始, endmodule 结束

这里不改开讲了,后面将会详细介绍模块。

Verilog的关键字

Verilog所有关键字

20240405214612689-image

常用关键字

20240405214652727-image

可综合的 verilog 语法子集

常用的 RTL 语法结构如下:

  • 模块声明: module…endmodule。
  • 端口声明: input,output,inout(inout 的用法比较特殊, 需要注意) 。
  • 信号类型:wire,reg,tri 等,integer 常用语 for 语句中(reg,wire是最常用的,一般 tri 和 integer 用在测试脚本里)。
  • 参数定义:parameter,define。
  • 运算操作符:各种逻辑操作符、移位操作符、算术操作符大多时可综合的(注:===与!==是不可综合的)。
  • 比较判断:if…else,case(casex,casez)…default…endcase。
  • 连续赋值:assign,问号表达式(?:)。
  • always 模块:(敏感表可以为电平、沿信号 posedge/negedge;通常和@连用)。
  • begin…end(通俗的说,它就是 C 语言里的 “{ }”)。
  • 任务定义:task…endtask。
  • 循环语句:for(不同的工具可能有差异)。
  • 赋值符号: = 和 <=。
请登录后发表评论

    没有回复内容