Verilog基础语法

1.基本词法

Verilog区分大小写;

所有的关键字均为小写;

内部信号(标识符)可以是字母,数字,_,$的任意组合,但第一个字符只能是字母或者下划线;

input为关键词,res和RES是两个不同的标识符

input            res;
input            RES;

 2.模块和端口

在Verilog中,模块(module)是最基本的组成单位。

模块声明由关键字module开始,endmodule结束。每个模块有一个模块名,模块的端口列表描述模块的输入和输出端口。

模块内部由5个部分组成:变量声明、数据流语句、低层模块实例、行为语句块、任务和函数。这些部分可以在模块的任意位置以任意顺序出现。

模块名为top_module,输入端口in,输出端口out

module top_module( input in, output out );
...
endmodule

端口是模块与外界交互的接口,对外部环境来说,模块内部不可见,对模块的调用只能通过端口进行。

端口列表中所有端口均需在模块中声明,Verilog端口主要有三种:

(1)input:输入端口,从外界读取数据,在模块内不可写。

(2)output:输出端口,往外界发送数据,在模块内不可读。

(3)inout:数据可双向流动。

端口声明有以下两种:

module adder(a,
             b,
             cin,
             sum,
             cout);
    // 端口声明开始         
    input a,b,cin;
    output sum,cout;
    // 端口声明结束
...
... endmodule
module adder(
             input a,
             input b,
             input cin,
             output sum,
            output cout);
// 括号中直接声明
...
... endmodule

Verilog中的变量类型

  reg :本质是存储器,具有寄存功能;

  wire(net):本质是一条没有逻辑的连线;

端口默认数据类型为wire型,如果希望输出端口能保存数据,则声明成reg型。

 

 

注意:不能将input类型的端口声明为reg,因为reg类型变量用于保存数据值,而输入端口反映的是与其相连的外部信号的变化,不能保存这些信号值。

3.Verilog常用数据类型

Verilog最常用的数据类型:wire、reg、parameter、integer

wire

wire 类型常用来表示以assign关键字指定的逻辑信号,是Verilog输入输出信号的默认类型,其表示硬件单元之间的物理连线,由其连接的器件输出端连续驱动。

格式:wire[n-1:0] 数据名1,数据名2,...,数据名N;含义:定义了N个变量,每个变量位宽为n;

// 定义了3个位宽为4的变量
wire[3:0] a,b,c;

reg

reg是寄存器数据类型变量的关键字。reg常用来表示always模块内的指定信号,代表触发器。

格式同上。与wire区别在于:reg型保持最后一次赋值,wire需要持续驱动

parameter

在Verilog中用parameter定义常量,该类型主要用来提高程序可读性以及方便维护。

格式:parameter 参数名1 = 数据名 1;

parameter a = 1;
parameter[2:0] b = 3'h4;

integer

integer是整型变量,是一种用于过程赋值语句的通用的寄存器型变量,声明时不用指定位宽,通常用于for循环中指定循环次数。

4.Verilog中的数值种类和运算操作

Verilog 有四个基本的值表示硬件电路中的电平逻辑:0;1;x或X:未知;z或Z:高阻。

运算操作符:

 

 

 

 运算优先级:

 

 举例说明两种移位运算符:>>和>>>,前者表示逻辑右移,后者表示算术右移

逻辑移位(<<和>>)时移入的是0,算术右移(>>>)时移入的是标志位(即最高位),而算术左移(<<<)时移入的是0。

逻辑左移和算术左移结果相同。

a a>>2 a>>>2 a<<2 a<<<2
0100_1111 0001_0011 0001_0011 0011_1100 0011_1100
1100_1111 0011_0011 1111_0011 0011_1100 0011_1100
posted @ 2022-09-04 15:09  继续加仓  阅读(1007)  评论(0)    收藏  举报