HDLbits: Shift18

先补充一下算术移位寄存器和按位移位寄存器:

SystemVerilog具有按位和算术移位运算符。

按位移位只是将向量的位向右或向左移动指定的次数,移出向量的位丢失。移入的新位是零填充的。例如,操作8'b11000101 << 2将产生值8'b00010100。按位移位将执行相同的操作,无论被移位的值是有符号的还是无符号的。

算术左移位对有符号和无符号表达式执行与按位右移位相同的操作。算术右移位对"无符号"和"有符号"表达式执行不同的运算。如果要移位的表达式是无符号的,算术右移位的行为与按位右移相同,即用零填充输入位。如果表达式是有符号的,则算术右移将通过用符号位的值填充每个输入位来保持值的有符号性。

注意:有符号数的算术右移比较特殊,最右边补的位是符号位的值!

cpp 复制代码
module top_module(
    input clk,
    input load,
    input ena,
    input [1:0] amount,
    input [63:0] data,
    output reg [63:0] q); 
    
    always@(posedge clk)
        if(load)
            q <= data;
    	else if(ena)
            case (amount)
                2'b00: q <= q << 1 ;
                2'b01: q <= q << 8 ; 
                2'b10: q <= {q[63],q[63:1]};
                2'b11: q <= {{8{q[63]}},q[63:8]} ;
            endcase

endmodule
相关推荐
Saniffer_SH9 小时前
NAND技术(二):从 Channel、Die/LUN、P/E Cycle 到 LDPC,一次讲透 NAND 里那些最容易误解的概念
人工智能·驱动开发·嵌入式硬件·测试工具·fpga开发·计算机外设·压力测试
千寻xun9 小时前
二、实战篇-NVME SSD控制之ZYNQ实现(四)
fpga开发·nvme·nvme ssd
ALINX技术博客10 小时前
【黑金云课堂】FPGA技术教程Linux开发:系统进阶-PS DMA
linux·fpga开发
喵喵苗13 小时前
FPGA Verilog 入门避坑:寄存器与锁存器的本质区别 & 为什么时序逻辑缺 else 不会生成锁存器
fpga开发
Thinker36114 小时前
笔记本外接创新5.1声卡实战:M.2转PCIe软排线方案 vs 雷电扩展卡方案对比
fpga开发·声卡·笔记本外接pcie·显卡坞
传感器与混合集成电路18 小时前
136通道采集模块SPI接口设计:协议结构、时序要求与多模块级联扩展方案
fpga开发
I'm a winner1 天前
基于Xilinx FPGA的LVDS高速串行通信系统(四)--数据测试【文末源码】
fpga开发
ALINX技术博客2 天前
AMD MoP 封装策略解读 | HBM 大热,为何 AMD Versal 系列反选 LPDDR5X?
fpga开发·fpga·amd·versal
zlinear数据采集卡2 天前
从万用表的6步调零到硅片级微秒自校准:硬核拆解LHAMP188的宽压轨到轨与零漂移实战
arm开发·stm32·单片机·嵌入式硬件·fpga开发
Rambo.xia2 天前
AXI-Stream反压与背靠背传输——TREADY反压丢帧、TDEST路由错误、反压死锁,流式数据一反压就出事
fpga开发