首页 > 其他分享 >Verilog 基本语句

Verilog 基本语句

时间:2022-10-05 23:22:32浏览次数:47  
标签:语句 基本 forever always initial Verilog 表达式 赋值

  Verilog HDL语句包括过程语句、块语句、赋值语句、条件语句、循环语句、编译导向语句等。

类别 语句
赋值语句 持续赋值语句:assign
过程赋值:=,<=
块语句 串行块:begun-end
并行块:fork-join
过程语句 initial
always
条件语句 if-else
case,casez,casex
循环语句 for
repeat
while
forever

1.连续语句赋值:

  用于对线网进行赋值,等价于门级描述。具有以下特点:

    1. 左值必须为一个线网类型的变量或向量,不能是寄存器类型。
    2. 输出值随输入值变化而随时变化。
    3. 操作数可以是线网或寄存器或函数调用。
    4. 必须用“=”阻塞赋值进行赋值。

  格式:    

    1. 普通连续赋值:wire OUT;assign OUT=INT1 & INT2;
    2. 缺省连续赋值(在线网声明的同时对其赋值): wire OUT=INT1 & INT2;
    3. 缺省线网声明:信号名被用在连续赋值左侧,则该信号默认为一个缺省声明的线网类型变量:wire INT1;assign OUT=INT1 ;//则OUT默认为线网类型;
      •   线网被连接在模块端口,则缺省线网宽度为模块端口的宽度。     

2.单元块语句

①顺序块begin-end:

格式:

  begin:块名     //块名可缺省

    语句1;

    语句2;

      ....

    语句N;

  end

②并行块fork-join:

格式:

  fork:块名     //块名可缺省

    语句1;

    语句2;

      ....

    语句N;

  join

  注意:如果两条语句在同一时刻对同一变量产生影响,则可能出现隐含的竞争。

3.条件语句

①if-else语句

  1)系统对逻辑表达式的值进行判断,若为0,x,z,按“假”处理;若为1,按“真”处理;

  2)if和else语句中可嵌套多个操作语句;

  3)if-else语句具有优先级,前面的优先级最高。

②case语句

 1)case语句

  case(表达式)

  数值1:

    语句1;

  ....

  数值n:

    语句n;

  default:

    语句n+1;

  endcase

  case语句没有优先级,即case语句的每个分支都是并行的,与位置无关。

  case语句的所有表达式的值的位宽必须相等。

 2)casez与casex语句

  

        

  

 

 使用条件语句时,为了使程序具有更好的可读性和可维护性,应遵循以下几点要求:

①if-else语句的级联不要超过3层。

②case的级联不要超过2层。

③if语句必须要有else,case语句必须要有default,否则将产生不必要的锁存器;设计中禁用casez/casex。不能使用casez/casex语句,不是说他们没用,当在仿真实验中,这些是可用的。

4.循环语句

  四种循环语句:forever、repeat、while、for

1)forever语句

  forever语句 是连续的执行语句,格式如下:

    forever

    语句;

  或

    forever

    begin

    多条语句;

    end

  forever语句常用于产生周期性的波形,作为仿真控制信号。forever语句不能独立写在程序中,必须写在initial中。

  forever用来表示永久循环,在永久循环中不包含任何条件表达式,等价于永远为真的while循环,如while(1)。如果要从forever循环中退出,可以使用disable语句。

2)repeat语句

  repeat语句可以连续执行一条语句n次,主要特点是可以执行固定次数的循环,其使用格式如下所示:

    repeat(循环次数表达式)

      语句;

  或

    repeat(循环次数表达式)

    begin

      多条语句;

    end

3)while语句

  使用格式:

    while(循环执行条件表达式)

      语句;

  或

    while(循环条件表达式)

    begin

      多条语句;

    end

 4)for语句

  使用格式:

    for(表示式1;表达式2;表达式3)

5.过程语句

  过程语句有两种:initial和always

  initial语句常用于仿真中的初始化,initial过程块中的语句仅执行一次;always语句则是不断重复执行的。

  每一条initial语句和always语句都是独立的执行过程,彼此并行执行,执行顺序于在模块内的书写顺序无关,并且,每条initial和always语句过程语句都是在仿真时间0时刻同时开始的。

  initial语句和always语句不可嵌套使用

1)always语句

  格式如下:

    always @(敏感信号表达式)

    begin

      语句1;

      .....

      语句n;

    end

  敏感信号表达式中应列出影响块内取值的所有信号,多个敏感信号用关键字“or”连接。

  敏感信号可以分为两种类型:电平敏感型、边沿敏感型。边沿敏感主要用来描述组合逻辑电路,而边沿敏感主要用来描述时序逻辑电路。

  每一个always过程最好只有一个类型的敏感信号触发。

    always@(A or B)或always@(posedge CLK or negedge RST_B)//表示时钟的上升沿或者复位的下降沿。

  对于电平敏感型,可用“*”代替所有的输入或条件信号,如:

2)initial语句

  只执行一次,不带触发条件,常用于仿真中的初始化,是面向模拟仿真中的语句,不被逻辑综合工具支持。

    initial 

      语句1;

      .......

      语句n;

    end

 

标签:语句,基本,forever,always,initial,Verilog,表达式,赋值
From: https://www.cnblogs.com/amxiang/p/16756736.html

相关文章

  • verilog行为级描述与结构级描述
    verilog行为级描述与结构级描述1、在使用verilog描述电路时,既可以进行行为级的描述,也可以进行结构级的描述。(1)行为级描述:侧重对模块行为功能的抽象描述。(......
  • 完蛋,公司被一条 update 语句干趴了!
    大家好,我是小林。昨晚在群划水的时候,看到有位读者说了这么一件事。大概就是,在线上执行一条update语句修改数据库数据的时候,where条件没有带上索引,导致业务直接崩......
  • 不就是SELECT COUNT语句吗,竟然能被面试官虐的体无完肤
    数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查。在数据库的增删改查操作中,使用最频繁的就是查询操作。而在所有......
  • 1.4 基本语法_分支结构 案例:银行取款
    #balance=1000#银行卡的上的余额money=input('请输入取款金额:')#输入取款金额money=int(money)#能过类型转换机,将str类型转换成int类型ifmoney<=ba......
  • FPGA学习--VHDL基本结构
    一个完整的VHDL程序,或者说设计实体,通常要求最低能为VHDL综合器所支持,并能作为一个独立的设计单元,即元件的形式而存在的VHDL程序。在VHDL程序中,通常包含实体(ENTITY)、结构体......
  • verilog实现rgb2gray
    前言  项目算法需求,需要将RGB彩色图像转换为灰度图像,算法原理是很简单的,但是对于刚接触FPGA的宝宝来说,进行时序的设计和调试还是不那么容易的,为了省事儿,就按照上一篇中值......
  • Java学习 三大循环语句和switch语句
    Java学习三大循环语句和switch语句 while循环语句(当)只要布尔表达式为true,循环就回一直执行下去。**我们大多是情况会让循环停止下来的,我们需要一个让表达式时效......
  • C++的基本数据类型
    C++的基本数据类型C++的数据类型可分为:1. 布尔类型:false0 true 12. 字符类型:可分为三种,char、signedchar、unsignedchar,其表现形式只是分为有符号和无符号,字符......
  • 基本的doc命令
    一、打开doc窗口的方式(cmd)1、开始菜单-->windows系统文件夹-->命令提示符-->点击如下图2、快捷键Win+R-->输入cmd-->回车/点击确定(推荐使用)如下图3、在任意文件夹......
  • 简单查询语句
    查询一个字段:select字段名from表名;其中要注意:select和from都是关键字字段名和表名都是标识符强调:对于SQL语句来说,是通用的所有的SQL语句以“;”结尾另外SQL语句......