verilog 环形移位寄存器电路逻辑解析
红框关键语句详解D { D[shiftregist_width-2 : 0] , D[shiftregist_width-1] };这是一个典型的循环左移rotate left一位操作。一、符号含义1. 大括号{ }——位拼接运算符Concatenation把多个信号/位按顺序拼接成一个更宽的信号。语法{a, b, c}表示把 a、b、c 从高位到低位拼起来。例{4b1010, 4b0011} // 结果是 8b101000112. 中括号[ ]——位选择运算符Bit/Part Select从一个向量中取某一位或某几位。D[3]—— 取第 3 位单 bitD[2:0]—— 取第 2、1、0 位3 bit 子向量二、本例分析设 width 4即 D 是 4 位拆解各部分表达式含义实际取值D[shiftregist_width-2 : 0]D[2:0]取低 3 位D 的 bit2, bit1, bit0D[shiftregist_width-1]D[3]取最高位D 的 bit3拼接后{ D[2:0] , D[3] } ↑ ↑ 高3位 低1位结果是一个 4 位向量原来的低 3 位放到高位原来的最高位放到最低位。三、效果循环左移一位假设当前D 4b1010原始 D[3] D[2] D[1] D[0] 1 0 1 0 ↑ 最高位 拼接后 { D[2], D[1], D[0], D[3] } 0 1 0 1 ↑新高位 ↑新低位直观图示循环左移┌──────────────────────────┐ │ ↓ D[3] ← D[2] ← D[1] ← D[0]最高位溢出后又回到最低位形成一个环。四、若改成循环右移只需调换拼接顺序D { D[0] , D[shiftregist_width-1 : 1] }; // ↑最低位放到最高位 ↑其余位右移五、总结符号名称作用{ , }拼接运算符把多个位/向量串联成更宽的向量[n]位选择取第 n 位[h:l]段选择取从第 h 位到第 l 位的子向量整句话的意思把 D 的低 (width−1) 位整体左移一位到高位原最高位绕回到最低位——实现一个4 位循环左移寄存器。