HDLbits 刷题答案 3.2.3 Shift Registers(1-5)
3.2.3 Shift Registers
3.2.3.1 4-bit shift register
设计一个4bit异步复位,拥有同步置位和使能的右移移位寄存器。
areset : 寄存器复位为0
load : 将data[3:0]输入至移位寄存器中
ena : 使能信号控制向右移动(q[3]q[2]q[1]q[0] —> 0q[3]q[2]q[1],q[0]在移动后消失了,原先q[3]的位置变为0)
q: The contents of the shift register
如果load 和 ena都有效,load 的优先级更高
3.2.3.2 Left/right ratator
设计一个100-bit的左/右移的移位寄存器,有同步置位信号和同步左/右移使能信号
循环移位形式,不会舍弃某也不会补
load:将
输入至寄存器内ena[1:0]:选择是否移位或移位的方向
:右移一位:左移一位和不移动
移位寄存器内的数据
3.2.3.3 Left/right arithmetic shift by 1 or 8
设计一个带同步置位的算法移位寄存器,该寄存器可以通过控制移动方向和每次移动的位数。
算术右移移位寄存器中的符号位移位,不像是逻辑右移中进行补零的操作,而是保留符号位后再进行移位
左移移位寄存器和算法移位寄存器没有区别
load:将·data[63:0`赋值为移位寄存器
ena:选择是否移位
amount:选择移动方向和移位次数
2’b00 : 左移
2’b01 : 左移
2’b10 : 右移
2’b11 : 右移
3.2.3.4 5-bit LFSR
线性反馈移位寄存器(LFSR)通常带有一个异或门来产生下一个状态的移位寄存器。Galois LFSR是一个特殊的移位寄存器,其中带有"tap"位的位置与输出位XOR产生下一个值没有"tap"位标志的正常移位。如果"tap"位置经过仔细选择后,LFSR将设置为最大长度。再重复之前LFSR的最大长度为2^n-1。
下图所示LFSR为在位置5和位置3包含"tap"位的5-bit最大长度LFSR。开始为位置1,输入为0。

设计如上图所示LFSR,复位信号使LFSR复位为1.
3.2.3.5 3-bit LFSR

使用Verilog实现上述功能,允许建立子模块,但顶层模块要命名为top_module
将输入端口连接到板子上的拨动开关, 端口接到按键 ,端口 接到按键 。输出端口 连接到板子上的红色 LED。

