Verilog语法篇

一、基础知识

  1. 0:低电平,即GND
  2. 1:高电平,即VCC
  3. X:未知,可能是高可能是低
  4. Z:高阻态,悬空,即三态门的0开关下的输出
  5. 二进制表示:4’b0101,即四位二进制数0101
  6. 八进制表示:4’o7,即四位八进制数7
  7. 十进制表示:4’d2,即四位十进制数2(0101)
  8. 十六进制表示:4’ha,即四位十六进制数a(二进制1010)
    注意:前面的4表示是的实际的位宽,如果没有指定,默认的是32位的位宽。可以在数之间加入下划线,如16’b1001_1010_1010_1001以增加可读性
  9. 标识符:用来定义模块、端口、信号的名字,和程序设计语言中的函数名与变量名类似,区分大小写

二、数据类型

  1. 主要有三种:寄存器数据类型、线网数据类型、参数数据类型
  2. 寄存器数据类型:表示一个抽象的数据存储单元(类似于寄存器)关键字是reg,默认的初始值是X,定义方法是
reg [2:0] name1;
reg name2;
  1. reg类型的数据只能在always语句和initial语句中被赋值,不能够给予初始值
  2. 如果语句描述的是时序逻辑电路,那么always语句将带有时钟信号,则该寄存器变量相当于一个触发器
  3. 如果语句描述的是组合逻辑电路,那么always语句不带有时钟信号,则该寄存器变量相当于一条硬件连接线
  4. 线网数据类型:表示结构实体之间的物理连线,不能够存储值,他的值是由它所连接的元件所控制的,只是一条连接线。关键字包括wire型和tri型,最常用是wire。默认是高阻态Z
wire [2:0] key1;
wire key2;
  1. 参数数据类型:实际上就是一个常量,类似于define,关键字是parameter,右边必须有一个常量表达式。可以一次定义多个,但参数与参数之间需要用逗号隔开。
parameter name1 = 4'b0101;

三、运算符

  1. +:a+b,表示相加
  2. -:a-b,表示相减
  3. *:a乘以b,表示相乘
  4. /:a除以b,表示整除
  5. %:a%b,表示取余
  6. :a>b,表示a大于b
  7. <:a<b,表示a小于b
  8. =:a>=b,表示a大于等于b
  9. <=:a<=b,表示a小于等于b
  10. ==:a等于b,表示a等于b
  11. !=:a!=b,表示a不等于b
  12. !:!a,表示a的非
  13. &&:a&&b,表示a与b
  14. ||:a||b,表示a或b
  15. ?: :a?b:c,表示如果a为真则选择b,否则选择c
  16. ~:表示按位取反
  17. &:表示按位取与
  18. |:表示按位取或
  19. ^:表示按位异或
  20. <<:a<<b,表示a左移b位
  21. :a>>b表示a右移b位
    注意,不管是左移还是右移都会用0来补充空位,所以,左移位宽增加,右移位宽不变
  22. {}:{a,b},表示将a和b拼接起来,作为一个新的信号或者变量
发布了205 篇原创文章 · 获赞 110 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_40851744/article/details/103913802