Verilog语法之移位运算符的使用
大家好,今天给大家谈一谈Verilog语法中的移位运算符
最近在学FPGA,所以不得不接触的就是Verilog这一优秀的硬件描述语言。
对于该语言,其与C语言的编程思想与几乎截然不同。一个是硬件描述语言,
一个是软件描述语言,一个是并行系统,一个是串行系统。
但是对于Verilog中的一些运算符却与C语言中的很类似。
例如算数运算符,关系运算符,逻辑运算符等等。所以很多像我一样的初学者都时不时的与C语言类比。
但其中有一个不易发觉的误区,那就是Verilog中的移位与C语言中的不同。.
例:4’b1010<<1 = 5’b10100; //左移1位后用0填补低位
4’b1010<<2 = 6’b101000; //左移2位后用00填补低位
1<<6 = 32’b1000000; //左移6位后用000000填补低位
4’b1001>>1 = 4’b0100; //右移1位后,低1位丢失,高1位用0填补
4’b1001>>4 = 4’b0000; //右移4位后,低4位丢失,高4位用0填补
总结:Verilog中的移位运算符在左移时位宽加深,右移时位宽不变。这与C语言有出入!