• 野火FPGA入门(2):Verilog HDL基础语法


    Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。

    Verilog语言:

    1. 语法自有,易学易用
    2. 适合算法级、门级设计
    3. 代码简洁
    4. 发展较快

    VHDL语言:

    1. 语法严谨,难以上手
    2. 适合系统级设计
    3. 代码冗长
    4. 发展缓慢

    0 Verliog语言

    • 模块开始结束:module、endmodule
    • 输入输出:input、output、inout
    • 线网型变量wire、寄存器型变量reg
    • 参数parameter、localparam

    常量表示格式:[换算为二进制后位宽的总长度]['][数值进制符号][与数值进制符号对应的数值]
    8'd171:位宽是8bit,十进制是171

    赋值方式:阻塞赋值(顺序进行)、非阻塞赋值(同时执行)
    例:阻塞赋值

    a = 1;
    b = 2;
    c = 3;
    begin
    	a = b;
    	c = a;
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    a = 2;
    b = 2;
    c = 2;
    
    • 1
    • 2
    • 3

    例:非阻塞赋值

    a = 1;
    b = 2;
    c = 3;
    begin
    	a <= b;
    	c <= a;
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    a = 2;
    b = 2;
    c = 1;
    
    • 1
    • 2
    • 3

    逻辑值
    0:逻辑低电平,条件为假
    1:逻辑高电平,条件为真
    z:高阻态,无驱动
    x:未知逻辑电平

    1 运算符

    算数运算符

    +(加法,如assign c = a+b;就是把a与b的和赋给c)

    -(减法,如如assign c = a-b;就是把a与b的差赋给c)

    *(乘法,如如assign c = a乘以3;结果赋给c)

    /(除法,如如assign c = a/2;结果赋给c,一般不会用除号)

    %(求模,或者称为求余,要求%两侧均位整形数据,5%3的值为2,用在测试文件)

    归约运算符、按位运算符

    作为一元运算符时:将所有比特相与

    &4'b1111 = 1&1&1&1 = 1'b1
    &4'b1101 = 1&1&0&1 = 1'b0
    
    • 1
    • 2

    作为二元运算符时:对应为相与

    4'b1010&4'b0101 = 4'b0000
    4'b1101&4'b1111 = 4'b1101
    
    • 1
    • 2

    其他操作符同理

    逻辑运算符

    在这里插入图片描述

    关系运算符

    在这里插入图片描述

    位移运算符

    在这里插入图片描述

    拼接运算符

    在这里插入图片描述

    条件运算符

    在这里插入图片描述

    优先级

    在这里插入图片描述

    case分支语句

    在这里插入图片描述

    2 系统函数

    在这里插入图片描述
    常见系统函数:

    $display  //打印信息,自动换行
    $write    //打印信息
    $strobe   //打印信息,自动换行,最后执行
    $monitor  //检测变量,变量发生变化就会执行这语句
    $stop     //暂停仿真
    $finish   //结束仿真
    $time     //时间函数
    $random   //随机函数
    $readmemb //读文件函数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    1、display

    $display("%b+%b=%d",a,b,c);
    //%h,十六进制
    //%d,十进制
    //%o,八进制
    //%b,二进制
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、write

    $write("%b+%b=%d\n",a,b,c);   //不会自动换行
    
    • 1

    参考博客

    https://blog.csdn.net/yanyonglin123/article/details/123361964

  • 相关阅读:
    [Django 0-1] Core.Cache模块
    用Scapy模块中的sr()函数提供一个程序的例子
    php+mysql汽车配件管理系统wamp
    作业 day6
    对齐属性:align-content详解(个人学习记录用)
    model.fit回调函数使用
    正则表达式笔记
    研究生英语复习(一)
    「Whale Cast」功能更新,让全网看到您的直播高光时刻
    算法_每日一题(9.6)
  • 原文地址:https://blog.csdn.net/qq_39236499/article/details/127752409