Verilog-移位操作(算术右移与逻辑右移)
写在前面
在计算机组成原理课程设计-VerilogHDL流水线处理器开发中涉及到了如下两条指令:SRAV与SRLV,分别是向量算术右移(Shift Word Right Arithmetic Variable)与向量逻辑右移(Shift Word Right Logical Variable),这里做一些简单说明。
MIPS文档中的指令介绍
SRAV(Shift Word Right Arithmetic Variable)
SRLV(Shift Word Right Logical Variable)
算术右移与逻辑右移及其Verilog语言区别
算术右移将操作数右移s位,并且在左边空出来的位置补s位操作数的符号,对于算术右移操作来说,将二进制的数值左移n位等同于将原来的数值除
2
n
2^n
2n;
逻辑右移将操作数右移s位,并且在左边空出来的位置补s位0,忽略操作数的符号。
例如,要对4位二进制数1100( 4 ′ b 1100 4'b1100 4′b1100)执行右移一位的操作。执行逻辑右移运算得到的结果为0110,而执行算术右移就是运算得到的结果为1110。
在Verilog语言中,操作符>>>执行算术右移操作,而操作符>>执行逻辑右移操作。
算术左移与逻辑左移
算术左移和逻辑左移相同,都是在以为后右边空出的位置补0,忽略操作数的符号。将二进制的数值左移n位等同于将原来的数值乘以 2 n 2^n 2n。
例如,要对4位二进制数1100( 4 ′ b 1100 4' b1100 4′b1100)执行左移一位的操作。执行逻辑左移运算以及算术左移运算得到的结果均为1000。