verilog学习笔记-verilog基本语法


1.verilog中逻辑表示

  在verilog中,有4中逻辑:

  逻辑0:表示低电平

  逻辑1:表示高电平

  逻辑X:表示未知电平

  逻辑Z:表示高阻态

2.Verilog中数字进制

  Verilog数字进制格式包括二进制、八进制、十进制和十六进制。一般常用的为二进制、十进制和十六进制。

  d:表示十进制

  b:表示二进制

  o:表示八进制

  h:表示十六进制

  verilog中数字的表示方法:

  二进制表示如下:4'b0101 表示4位二进制数字0101
  十进制表示如下:4'd2 表示4位十进制数字2(二进制0010)
  十六进制表示如下:4'ha 表示4位十六进制数字a(二进制1010)

  在verilog中负数的表示方法:在位宽前面加符号

  例如:

  -5'd25:表示5位的十进制数-25

  在veriog中如果位宽缺省则默认位宽是32位宽:'b1001表示32位的二进制数0000_0000_0000_0000_0000_0000_0000_1001。

  在veriog中如果进制缺省则默认十进制。

3.标识符

  用于定义模块名,端口名,信号名等。

  标识符可以是任意一组字母、数字、$符号和_(下划线)符号的组合。但是第一个必须是字母或者下划线,而且标识符区分大小写。

  书写标识符时应该简洁明了清晰,最好能够体现含义,如:

  clk_50M:表示50兆赫兹时钟。

  cpu_addr:表示CPU的地址线

4.数据类型

  在verilog里有三种数据类型:

  reg型:寄存器数据类型。

  wire型:线网型数据类型。

  tri型:线网型数据类型。

  reg型:

  寄存器表示一个抽象的数据存储单元,通过赋值语句可以改变寄存器储存的值,寄存器数据类型的关键字是 reg,reg 类型数据的默认初始值为不定值x

  reg [7:0] data  //表示定义了一个8位的寄存器类型的数据data.

  reg  cnt_reg  //表示定义了一个一位的寄存器类型的数据cnt_reg

  reg [7:0]  data [255:0]  //定义了256个8位的寄存器data

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

  线网型:

  线网数据类型表示结构实体(例如门)之间的物理连线。线网类型的变量不能储存值,它的值是由驱动它的元件所决定的。

  线网数据类型包括 wire 型和 tri 型,其中最常用的就是 wire 类型

  wire型只能在assign语句中被赋值。

  在端口申明中,如果数据类型缺省则默认的数据类型是wire型。

5.运算符

  Verilog中的操作符按照功能可以分为下述类型:
   1、算术运算符:+ (加)- (减)* (乘)/ (除)%(模)
   2、关系运算符:>(大于) <(小于) =(等于)<=(小于等于)>=(大于等于) !=(不等于)
   3、逻辑运算符:!(非) &&(与) ||(或)
   4、条件运算符:? :(判断)例如:assign iic_sda=en?( a? 1'bz:1'b0) :1'bz;//  z=a? b:c 先判断a是否为真,如果为真则z=b否则z=c.
   5、位运算符:~(按位取反) &(按位与) |(按位或)^(按位异或) 可以作为单目运算:b=&a表示a与自身的所有位按位与
   6、移位运算符:<<(左移)   >>(右移)  

   7、拼接运算符:

  {0010,1}:将0010和1拼接成00101,最后是一个5位数据

  {110,data[7:0]}:将110和data[7:0]拼接成一个新的数据,最终是一个11位数据

  

 

   

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM