verilog基础(常用的语句)

关于运算符,和C语言基本相同,仅赋值运算符、等式运算符等与C语言不同,另外还有位拼接运算符。

1、赋值语句:

       (1)非阻塞赋值方式,  如  b<=a ;

              特点:块结束后才完成操作,b的值不是立刻改变的。

       (2)阻塞赋值方式, 如 b = a ; 

              特点:赋值语句执行完后,块才结束,b的值是立刻改变的。

2、块语句

       (1)顺序块

顾明思议,就是顺序执行,这与C语言的顺序结构特性一样。
格式如下:
       
begin

              语句1;

              ……

              语句n;

       end

语句1到n是顺序执行的,也可给块命名,只需在begin后面加上“:块名”即可。当加给块命名后,才可以在块内定义局部变量,和块被其他语句调用,如disable语句。

       (2)并行块

              同样,从表面意思可知道,块内语句是并行进行的,也就是同时进行的。

              当执行完所有语句或一个disable语句执行时,程序跳出并行块。

              并行块的结构和顺序块的结构一样,只需将关键字换成fork…join 

       注意:begin 、 end  、 fork 、  join  后面都没有封号“;”。

3、条件语句

       (1) if 语句

这里 if 语句与C语言没有什么不同,只需注意,在C语言里,用大括号的地方,在Verilog里都用begin…end  。

       (2)case 语句

这个与C语言不同了,在Verilog里,没有switch,只有case ,示例如下:

       case ( rega )

              8’d0 :   result = 3’b001  ;

              8’d1 :   result = 3’b010  ;

              8’d2 :   result = 3’b100  ;

              default :  result = 3’b000  ;

       endcase

这里也不需要break , 每当执行完一个case 分项后的语句,则跳出该case语句,终止case语句的执行。

另外,Verilog还提供了casex和casez两个语句,他们三者之间有一定的区别。

在用case 语句时,要求case括号中的值必须与分项中的值完全相等才执行,即满足“===”全等于的关系。

在用casex语句时,将高阻值z和不定值x 都视为不关心的值,即不比较其所在位的值,只需其他位满足全等于的关系即可。

在用casez语句时,不考虑高阻值的z比较过程,只考虑x 、0、1三个值。

注意:if语句和case语句都只能用于always语句内部,如果要在always语句之外应用条件语句,可用三目运算符 ? :如下:

              assign  data = ( sel ) ? a : b  ;

4、循环语句

       (1)for 语句 和 while 语句,这与C语言语法一样。不解释

       (2)forever语句

                     格式:

                            forever    语句 ;  //也可以用begin…end

forever循环常用于产生周期性的波形,用来作为仿真测试信号。它与always语句不同之处在于它不能独立写在程序中,而必须写在initial块中。

                    

       (3)repeat语句

                格式:

                      repeat (表达式)   语句 ;  //可用begin…end 

         repeat语句中,其表达式通常为常量表达式,表示循环次数。
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值