Verilog 中的一些语法

位运算符

1) ~ //取反

2) & //按位与

3) | //按位或

4) ^ //按位异或

5) ^~ //按位同或(异或非)


逻辑运算符

在Verilog HDL语言中存在三种逻辑运算符:

1) && 逻辑与

2) || 逻辑或

3) ! 逻辑非


等式运算符

在Verilog HDL语言中存在四种等式运算符:

1) == (等于)

2) != (不等于)

3) === (等于)

4) !== (不等于)


"=="和"!="又称为逻辑等式运算符。其结果由两个操作数的值决定。由于操作数中某些位可能是不定值x高阻值z,结果可能为不定值x

而"==="和"!=="运算符则不同,它在对操作数进行比较时对某些位的不定值x和高阻值z也进行比较,两个操作数必需完全一致,其结果才是1,否则为0。"===""!=="运算符常用于case表达式的判别,所以又称为"case等式运算符"。


位移运算符

左移:右边的添0

右移:左边的添0,移除的位舍去

举例:

4’b1001<<1 = 5’b10010; 4’b1001<<2 = 6’b100100;

1<<6 = 32’b1000000; 4’b1001>>1 = 4’b0100; 4’b1001>>4 = 4’b0000;


位拼接运算符

1.{a,b[3:0],w,3’b101}也可以写成为{a,b[3],b[2],b[1],b[0],w,1’b1,1’b0,1’b1}

2.{4{w}} //这等同于{w,w,w,w}

3.{b,{3{a,b}}} //这等同于{b,a,b,a,b,a,b}


位拼接运算符

1.{a,b[3:0],w,3’b101}也可以写成为{a,b[3],b[2],b[1],b[0],w,1’b1,1’b0,1’b1}

2.{4{w}} //这等同于{w,w,w,w}

3.{b,{3{a,b}}} //这等同于{b,a,b,a,b,a,b}


wire变量通常是用来表示单个门驱动或连续赋值语句驱动的网络型数据,常用来表示用于assign关键字指定的组合逻辑信号。Verilog程序模块中输入输出信号类型缺省时自动定义为wire型。


reg:寄存器数据类型的关键字是,通过赋值语句可以改变寄存器储存的值,其作用与改变触发器储存的值相当。reg类型数据的缺省初始值为不定值x,常用来表示用于always模块内的指定信号,常代表触发器,always块内被赋值的每一个信号都必须定义成reg, reg型只表示被定义的信号将用在always块内


tri变量则用来表示多驱动器驱动的网络型数据


memory型数据是通过扩展reg型数据的地址范围来生成的。

reg [7:0] mema[255:0];

这个例子定义了一个名为mema的存储器,该存储器有256个8位的存储器。该存储器的地址范围是0到255。

如果想对memory中的存储单元进行读写操作,必须指定该单元在存储器中的地址。下面的写法是正确的。

mema[3]=0; //给memory中的第3个存储单元赋值为0。

 

 

模块中最重要的部分是逻辑功能定义部分。有三种方法可在模块中产生逻辑。




  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值