触发器(FF)是一种主要用于存储单个二进制数据位0或1的设备。但是,为了存储几个比特的数据,我们需要几个FF。因此,可以通过连接多个触发器来存储n位数据。寄存器是一组串联的FF,用于存储多个数据位。存储在这些类型的寄存器中的数据可以通过移位寄存器传输。移位寄存器(SR)是一种数字电路,它包括一组FF,无论第一触发器的输出引脚连接到第二FF的数据输入引脚,因为所有FF都在类似的时钟上工作,那么阵列位可以存储在寄存器中,并将移动一个位置。有不同类型的移位寄存器,如SISO、SIPO、PIPO、PIPO和双向移位寄存器。本文讨论了双向移位寄存器–使用应用程序。


什么是双向移位寄存器?

用于基于所选择的模式在右侧或左侧移位数据的寄存器被称为双向移位寄存器。如果选择的模式为高(1),则数据将移动到右侧;如果选择的方式为低(0),则将数据移动到左侧。

这里,如果我们把一个二进制数(以2为底)移到左边,那就是把这个数字乘以2,如果我们将相同的二进制数移到右边1的位置,那就等于把这个数字除以2。为了执行这些操作,我们需要一个寄存器来将数据向任何方向移位。

双向移位寄存器电路图

双向移位寄存器用于根据输入在右侧或左侧移位数据。该寄存器可以通过D触发器和逻辑门来实现,这些逻辑门允许数据位基于输入信号从一个级传输到下一级,传输到右侧或左侧的任意一侧。这里,通过模式控制来选择数据移位的方向。

ding="async" class="wp-image-43145 size-full" src="https://uploads.9icnet.com/images/aritcle/20230518/Bidirectional-Shift-Register-Circuit.jpg" alt="Bidirectional Shift Register Circuit" width="715" height="376" sizes="(max-width: 715px) 100vw, 715px">
双向移位寄存器电路

如果我们使用移位寄存器对数据进行乘法和除法运算,我们可以将二进制输入数据向右或向左移位,那么它就是双向移位寄存器。

双向移位寄存器是如何工作的?

双向移位寄存器主要包括两个串行i/ps,类似于用串行右移(DR)输入的数据和用选择模式输入(M)用串行左移(DL)输入的数字。每当数据需要在右侧移位时,就向DR提供输入。类似地,如果数据需要在左侧移位,则从DL提供输入。

当模式控制具有高信号时,则其允许数据向右侧移位,而模式信号具有低信号,则其将数据向左侧移位。如果i/p数据向左移动1个位置,则将其乘以2;如果i/p数字向右移动1个位,则将它除以2。

真值表

双向移位寄存器在两个条件M=1和M=0下工作,这两个条件将在下面讨论双向移位寄存器真值表.

条件

活动

如果模式选择i/p(如M=1),则接下来的操作向右移动。 如果模式控制=高(1),则启用第一、第三、第五和第七AND逻辑门,而不启用其余的第二、第四、第六和第八AND门。

串行右移数据输入(DR)上的二进制数据可以在CLK脉冲应用上通过从触发器p3到触发器p0的位移动到右位侧。因此,对于M=1的条件,我们可以实现串行右移操作。

如果模式选择i/p,如M=0,则操作向左移动。 如果模式控制=低(0),则启用第二、第四、第六和第八与门,禁用第一、第三、第五和第七与门。

串行左移位数据i/p(DL)上的数据在CLK脉冲应用上向左位侧移动通过从触发器0到触发器3的一个位。因此,对于M=0的条件,我们可以获得串行左移操作。

双向移位寄存器Verilog码

n位双向移位寄存器的verilog代码如下所示。

模块shift_reg#(参数MSB=8)(输入d,//向移位寄存器中的第一个触发器声明数据输入

nput循环,//向移位寄存器中的所有触发器声明时钟的i/p

输入en,//为enable声明i/p以打开或关闭移位寄存器

输入目录,//声明i/p向右或向左移动

输入rstn,//声明输入以将寄存器重置为默认值

输出reg〔MSB-1:0〕out; // 声明o/p以读出此寄存器中所有触发器的当前值

//这个总是块将“总是”在时钟的上升沿触发

//一旦它进入块,它将首先检查重置是否为0,如果是,则重置寄存器

//如果没有,则检查移位寄存器是否已启用

//如果否=>保持先前的输出。如果是,则根据请求的方向进行换档

始终@(posedge clk)

如果(!rstn)

输出<=0;

否则开始

如果(en)

案例(目录)

0:out<={out〔MSB-2:0〕,d};

1:输出<={d,输出[MBS-1:1]};

端盖

其他的

out<=输出;

终止

末端模块;

单向和双向移位寄存器之间的差异

单向移位寄存器和双向移位寄存器之间的区别将在下面讨论。

单向移位寄存器

双向移位寄存器

该移位寄存器仅用于在一个方向上移位位。 该移位寄存器仅用于在两个方向上移位位。
平行负载是不可能的。 并联负载是可能的。

应用

这个双向移位寄存器的应用包括以下内容。

  • 这些类型的寄存器是用于基于优选模式向右或向左移位数据的存储设备。
  • 这些寄存器广泛用于数字低压差稳压器、数字直流等多种应用
  • 这些移位寄存器用于直流降压转换器、数字延迟锁定环路和解压缩器。
  • 这些用于传输数据和临时存储数据。
  • 这些寄存器用于计算器、计算机等。

因此,这一切都是关于双向移位寄存器的概述——与应用程序一起工作。最常用的双向移位寄存器IC是:;74498IC、74194IC和74671IC。这种类型的寄存器中数据的移动是双向的,比如从右到左和从左到右。这里有一个问题要问你,什么是SIPO移位寄存器?