分享

【Verilog学习】Verilog基础语法

 枫中眸zc 2022-01-13
  • 测试

    逻辑值

    逻辑0:表示低电平,一般对应电路GND
    逻辑1:表示高电平,一般对应电路VCC
    逻辑X:表示未知,可能是高电平,也可能是低电平
    逻辑Z:表示高阻态,外部没有激励信号,是个悬空状态
    测试

    数字进制格式

    Verilog 数字进制格式包括二进制(b)、八进制(o)、十进制(d)和十六进制(h)
    一般常用的为二进制、十进制、以及十六进制
    二进制表示为: 4'b0101 表示 4 位二进制数字 0101
    十进制表示为: 4'd2 表示4位十进制数字2(二进制0010)
    十六进制表示为: 4'ha 表示4位十六进制数字a(二进制1010)

    16'b1001_1010_1010_1001 = 16'h9AA9

    标识符

    标识符 :用于定义 模块名、端口名、信号名 等。
    1、标识符可是任意一组 字母、数字、$符号和_(下划线)符号 的组合;
    2、标识符的第一个字符必须是字母或者下划线;
    3、标识符区分大小写,不建议大小写混合使用;

    数据类型

    在 verilog 中,主要有三大类数据类型

    寄存器类型
    reg [31:0] delay_cnt;   //延时计数    32位位宽
    reg        key_reg;      //没有指定位宽,默认位宽为1

    测试

    reg类型数据,只能在always语句和 initial语句中被赋值。

    线网类型
    参数类型

    运算符

    算术运算符

    测试

    关系运算符

    测试

    逻辑运算符

    测试

    条件操作符

    (类似三目运算符)
    测试

    位运算符

    测试

    移位运算符

    左移时,位宽增加;右移时,位宽不变。
    测试

    拼接运算符

    例如:c = {a,b[3:0]};
    测试

    运算符优先级

    测试

    结构语句

    initial 语句在模块中只执行一次。
    常用于测试文件编写,用于产生仿真测试信号(激励信号),或者用于对存储器变量赋初值。
    always 语句在持续活动。
    只有与时序结合才能正常运行。
    沿触发的always
    测试
    测试

    赋值语句

    条件语句

    if 语句
    case 语句
    • 分支表达式的值互补相同

    • 表达式的位宽必须相等,不能用 'bx,代替 n'bx ('bx,默认表示32位数据)

    • "casez" 比较时,不考虑表达式中的高阻值 z

    • "casex" 比较时,不考虑表达式中的高阻值 z 和 不定值 x

    • if ...

    • if ... else ...

    • if ... else if ... else ...

    • 条件语句必须在过程块中使用(过程块语句是指有 initial 和 always 语句引导的块语句)

    • if语句对表达式真值判断:若为1,为真;若非1(为0,x,z),则为假;

    • if 和 else 内的操作语句,可以使用 begin 、 end,包含多个语句

    • 允许 if 语句嵌套

    • 阻塞赋值 (b = a;)

    • 非阻塞赋值 (b <= a;)

    • 参数是常量,在Verilog中,使用 parameter 定义常量。

    • 参数定义的右边必须是常数表达式。

    • 线网数据类型表示结构实体(例如门)之间的 物理连线

    • 线网类型的变量 不能存储值 ,它的值有驱动它的元件所决定。

    • 线网类型关键字为wire型与tri型
      驱动线网类型变量的元件有门、连续赋值语句、assign等。
      若没有驱动元件连接到线网类型变量上,则该变量就是高阻的,即其值为z

    • 若过程语句描述 时序逻辑,即always语句带有时序信号,则该寄存器变量对应为触发器。

    • 若过程语句描述 组合逻辑,即always语句不带有时序信号,则该寄存器变量对应为硬件连线。

    • 表示一个抽象的数据存储单元。

    • 通过赋值语句改变寄存器存储的值。

    • 寄存器数据类型关键字为reg,默认初始值为不定值x

    • 寄存器数据类型

    • 线网数据类型

    • 参数数据类型 (编译器识别)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多