1、Shift Register(RAM-based)是MegaWizard Plug-In Manager中的一个IP core,该工具提供了丰富的库函数,这些库函数专门针对Altera公司的器件进行优化,电路结构简单,并大大减少了设计者的工作量。通过MegaWizard Plug-In Manager工具的向导,设计者可以利用Quartus II提供的库函数自定义功能宏块,并设置模块参数和可选端口数值。
https://www.electronics-tutorials.ws/sequential/seq_5.html
2、Shift Register(移位寄存器)
移位寄存器是一种时序逻辑电路,可用于以二进制数形式存储或传输数据。它加载输入的数据,然后在每个时钟周期将其移动或“移位”到其输出,因此称为移位寄存器。一个移位寄存器基本上由几个单一位的“D-锁存器”组成,每个数据位表示一个逻辑“0”或“1”,以串联式(Serial)菊花链(daisy-chain)连接在一起,以便从 一个数据锁存器(data latch)的输出成为下一个锁存器的输入,依此类推。
数据位可以顺序地从移位寄存器输入或输出,也就是从左或右方向一个接一个地输入或输出,或者同时以并行的方式一起输入或输出。组成移位寄存器所需的数据锁存器的数量通常取决于要存储的位数,最常见的是由8个单独的数据锁存器构成的8位(一个字节)宽度的移位寄存器。
移位寄存器用于数据存储或数据移动,因此通常用于计算器或计算机内部,例如两个二进制数字相加之前可进行存储,或者将数据从串行转换为并行或并行或并行串行格式。构成移位寄存器的各个数据锁存器全部由公共时钟(Clk)信号驱动,使其成为同步设备。
移位寄存器IC通常提供一个清除或复位连接,以便可以根据需要进行“SET”或“RESET”。通常,移位寄存器有四种不同的工作模式,通过移位寄存器的基本数据移动是:
(1)串行输入到并行输出(SIPO) - 寄存器一次一位地加载串行数据,所存储的数据在输出端以并行形式提供。
(2)串行输出到串行输出(SISO) - 数据在寄存器的“IN”和“OUT”串行移位,在时钟控制下以左或右的方向一次一位地移位。
(3)并行输入到串行输出(PISO) - 并行数据同时加载到寄存器中,并在时钟控制下一次一位地串行移出寄存器。
(4)并行输入到并行输出(PIPO) - 并行数据同时加载到寄存器中,并通过相同的时钟脉冲一起传输到各自的输出。
数据通过移位寄存器从左到右移动的效果可以用图形表示为:
而且,通过移位寄存器移动数据,可以是在左边(左移)到右边,(右移)左进右出,(旋转)或使用同一个寄存器左右移,从而使其成为双向的移位寄存器。在本教程中,假定所有的数据向右移动(右移)。
3、Serial-in to Parallel-out (SIPO) Shift Register
操作如下:假设所有触发器(FFA到FFD)刚刚被复位(CLEAR输入),所有输出QA到QD都处于逻辑电平“0”,即没有并行数据输出。
如果逻辑“1”连接到FFA的DATA输入引脚,那么在第一个时钟脉冲时,FFA的输出,因此产生的QA将被设置为逻辑“1”,所有其他输出仍保持逻辑“ 0” 。现在假定FFA的DATA输入引脚再次回到逻辑“0”,给我们一个数据脉冲或0-1-0。
第二个时钟脉冲会将FFA的输出变为逻辑“0”,FFB和QB的输出变为逻辑“1”,因为其输入D具有QA的逻辑“1”电平。逻辑“1”现在已经移动或“移位”了一个位置,沿着寄存器向右移动,就像现在在QA一样。
当第三个时钟脉冲到达时,这个逻辑“1”值移到FFC(QC)的输出端,等等,直到第五个时钟脉冲到来,所有的输出QA到QD再次回到逻辑电平“0”,因为FFA的输入在逻辑电平“0”保持不变。