3.5 其他组合逻辑电路
3.5.1 移位器代码风格
移位器需要用到移位操作符,VHDL-2008提供了6种移位操作符,如表3-16所示。总体来说,分为两大类:逻辑移位操作符和算术移位操作符。对于左移而言,逻辑左移和算术左移是一致的。对于右移而言,当数据为有符号数时,算术右移需要对空余位填补数据的符号位,除此之外,与逻辑右移保持一致。
常规移位器可借助移位操作符实现。若移位量是固定常数,则相应的移位器就是静态移位器,这种移位器不会消耗任何逻辑资源。若移位量是变量,则相应的移位器就是动态移位器,如VHDL代码3-61所示。如果输入数据位宽为8,那么移位量最大值为7,输出数据位宽为15,三者
的关系如代码第9行至第11行所示。当n为7时,输入位字段与输出y左对齐,当n为0时,输入位字段与输出y右对齐。仿真结果如图3-66所示。不同于静态移位器,该电路会消耗18个LUT。
VHDL代码3-61