数字电路--移位寄存器的研究

1.在许多情况下,要求按照给定的序列信号来设计序列信号发生器。序列信号发生器一般有两种结构形式:一种是反馈移位型,另一种是计数型。相应的设计方法一般有两种:一种是由寄存器和反馈电路组成,另一种是由计数器组成。序列信号发生器在数字电路中有着较广泛的应用。在电子电路中,使用序列信号发生器可以构成彩灯控制电路,使彩灯有规律地亮灭。

2.用移位寄存器和反馈组合电路构成序列信号发生器根据要产生的序列得到串行输入表达式,再根据此表达式得到串行输入的电路,这是一个组合电路,可以用逻辑门电路实现,也可以用MSI芯片实现。因此设计方案又分为两种:一种是用移位寄存器和必要的门电路实现;另一种是用移位寄存器和MSI芯片(如数据选择器、译码器)实现。

3. 设计步骤如下: 第一步:根据序列信号的长度L确定移位寄存器的位数N,要求N满足条件2N-1≤L≤2N。第二步:确定移位寄存器的L个独立状态。根据数据左移,画出状态转换图,检查图中的L个状态是否两两不同,如果是,则N可用;如果存在两个状态相同,则移位寄存器位数需要加1,得N+1。重新画状态转换图,再次检查状态图中的L个状态是否两两不同,如果是,则N+1可用;否则,移位寄存器位数再加1得N+2。重复上述过程,直到状态图中的L个状态两两不同为止,这时状态图中的L个状态就是移位寄存器的L个独立状态,这时的移位寄存器的位数才是最后的值。第三步:根据状态转换图及每一个状态所需要的移位输入信号,列出反馈函数表,画出反馈函数的卡诺图,求出反馈函数的表达式。对于未用状态,做无关项处理。如果有无关项,还要求检查电路的自启动能力。第四步:根据反馈函数的表达式,使用门电路,或者译码器,或者数据选择器实现反馈函数的组合电路。例如,产生一个5位的序列信号01101。

4.设计过程如下:第一步,L=5,得N=3。第二步,取N=3,根据数据左移,可得到5个状态:011、110、101、010、101,在这5个状态中,存在两个重复状态,移位寄存器的位数需要加1,N=4,按照上述方法重新得到5个状态:0110、1101、1010、0101、1011,这5个状态各不相同,为独立状态,因此选择N=4,用移位寄存器74LS194即可。第三步,列出反馈函数表,如表1。Q0的输出即为序列信号0101。根据反馈函数表,得反馈函数D的卡诺图。化简时若将0000所对应的小方块中的d画在圈外,也就是化简时把它取作0,这意味着0000状态时左移输入信号D为0,因此当时钟信号到来时它的状态依然为0000,这样构成了无效循环,电路是不能自启动的。为使0000不再构成无效循环,应将0000对应小方框中的d画入圈中。卡诺图的化简方法应如图1,得。接下来,还应该检查电路的自启动能力。当电路中出现无效状态时,根据左移输入信号,判断若干个时钟脉冲作用后电路能否进入有效循环,经判断,电路可以自启动。

    

    第四步,画出电路图。如果用门电路实现,电路如图2。通过一个正脉冲使得电路的初始状态为0110,此后,在时钟脉冲CLK的作用下,数据依次左移,便在Q0的输出顺次输出序列信号01101;如果用数据选择器74HCT151实现,当电源电压5V时,TTL电路的输出可直接驱动74HCT系列电路,电路如图3。设Q2Q1Q0依次接数据选择器的A2A1A0,则, D0=D2=D4=D6=1,在Y端顺次输出序列信号01101;如果用译码器74LS154实现,电路如图4。Q0Q1Q2Q3依次接译码器的A0A1A2A3,则


   

5.用计数器和组合电路构成序列信号发生器:如果序列长度为L,则首先将计数器接成L进制的计数器,然后根据计数器的状态和要产生的序列信号得到产生序列信号的函数,此函数可以用门电路实现,也可以用数据选择器实现。因此设计方法又分为两种:一种是用计数器和必要的门电路实现;另一种是用计数器和数据选择器实现,序列信号发生器的构成方法很多,在这些方法中,这是一种比较简单和直观的构成方法。

6.仍然以产生01101序列信号为例。由于序列长度为5,首先将计数器接成5进制的计数器。这里用十进制芯片74160通过置入数据0的方法实现。计数器的5个状态为000~101。利用这5个计数状态和要产生的序列信号01101,列出输出函数D的真值表。根据真值表,得到输出信号的函数。该函数可以用门电路实现,也可以用数据选择器实现。如果用门电路实现,则需要画出函数的卡诺图(未使用状态作无关项处理),然后化简。化简后的结果为:,使用最少数目的门电路实现,函数可转化为,电路图如图5所示。如果用数据选择器实现,选用芯片74HC1 51,可把五进制计数器的Q0Q1Q2接给数据选择器的地址端A0A1A2,把数据输入端D0~D4接为01101,以数据选择器的输出作为序列信号的输出端,则在时钟脉冲的作用下,电路依次产生所需序列01101。电路图如图6所示。   



7.可能上面的讲解还不太完整,下面用我的个人经验总结一下。

8.序列信号发生器的构成方法有多种:a.使用环形计数器设计“1000.000”型序列信号发生器;b.使用扭环计数器设计“11..1000..000”(n个1,n个0)型序列信号发生器;c.使用D触发器设计;d.使用计数器和多路复用器设计序列信号发生器;e.用移位寄存器和反馈组合电路(分立门电路,译码器,多路复用器)设计(环形计数器和扭环计数器属于此类);f.用线性反馈移位寄存器计数器设计最大长度的序列。(下面一种一种分析)

9.首先介绍一个概念,数字电路中的自启能力:自启动就是当电路处于无效状态时,电路能随时钟脉冲的输入自动转换到有效状态并在状态状态图中体现为,s0→s1→s2→s3→s0。通俗的讲也就是能围成一个闭合的圈。像这种s0→s1→s2→s3,这就是不能自行启动的。这可能有时候不能实现。接下来更加具体的说明一下:看无效状态能不能在有限的转换路径里跳到有效循环中。(通常应注意全0的这个状态是否包括在无关项中。无关项可以之间进行相互转换然后再到状态图中,随便用0和1,而且同一个无关状态可以多次使用74ls194是一个8位移位寄存器。S0=1,S1=0的时候右移,当S0=0,S1=1时左移。右移是舍弃Q0,在状态前面添加一个QSR,左移是舍弃Q3,在状态后面加上QSL。如果是11,就是Q3Q2Q1Q0=D3D2D1D0,如果是XX,就是Q3Q2Q1Q0=Q3^nQ2^nQ1^nQ0^n。下图中LIN是S1/S0的状态值。


11.顺序脉冲发生器:(1000...000类序列):假如长度为L,然后写出L个有效状态,注意,不能重复,构成一个循环。电路的接法就是以开始状态为基准点,然后用一个或门来实现。(就像下面的一个例子,以1000为基准点,然后用一个或门将Q2,Q1,Q0一开始的值0相加在取反变成1让LIN有效,开始计数。当Q2,Q1,Q0有1存在是,输出为0,LIN无效。当下一次LIN有效时,又表示重新回到了1000,从而实现了1000脉冲序列的产生。注意这里是任何一个Q输出

12.

13.用扭环计数器设计“11110000”序列发生器:首先这是一个序列长度为8,因为这是连续的4位,用三个肯定会出现重复的状态,因此,这里使用了4位长度。写出8个有效圈,然后构成一个循环。见下图

14.

15.设计一个110100序列信号发生器:利用D触发器设计,利用计数器和多路复用器设计,利用移位寄存器和反馈组合电路(分立门电路,译码器,多路复用器)设计。

16.D触发器:首先观察产生序列的长度,假设为L。然后写出L个有效状态,而且输出信号为序列的样子。就是序列是110100,那么S0-S5的Y值输出也是110100。S0-S5是从000-101这6个状态。然后列出状态转换输出表,这个表必须要有现态和次态,还有输出值。然后分别画出三个次态和输出状态Y的卡诺图,取值为现态的值,写出三个次态的表达式和输出信号Y的表达式,然后检查电路的自启能力。再刚才画卡诺圈的时候,注意使用了哪些无效状态,需要将这些无效状态在状态图中显示出来(用该现态的输出Y值来判断是否为有效途径到状态图)。电路图尽量用与非门实现。或者这里直接用序列号来实现,什么意思呢?就是用序列进行左移实现L长度序列长度的输出,但是要确保状态两两互不相等。这样最高位的输出序列就为产生的序列。在画状态图的时候,你是需要画出原状态和新状态,就是现态和次态,那么输出D就是新状态的最后一个位,(这里其实可以通过观察可以看出),这里只不过是为了保证状态可以实现循环。然后写出D的表达式,参考值是原状态(现态)的值。然后你用了多少长度的QnQn-1Qn-2...Q0,就是n+1个D触发器。然后接上同一个脉冲信号,因为这里我们写出的是D0的表达式,因此我们这里让D0作为一个总输出端,用与非们构造电路。(因为表达式你是用卡诺图写出来的。如果设计到无关项,需要检查电路的自启能力。)这样,任何一个D触发器的输出均可得到所需序列

17.用计数器和多路复用器构成序列信号发生器:a.如果序列长度为L,则将计数器接成L进制的计数器:“n-n+L”(置数法或清零法);b.将多路复用器的数据输入“Dn-Dn+L”接成要产生序列的信号;c.将计数器的输出端接到多路复用器的地址输入端。首先根据序列的长度产生一个相同长度进制的计数器,然后假如序列长度小于8,就可以直接根据序列1和0的位置确定3-8上D0-D7的接法,然后Y端输出序列信号。(如果是大于8,下面继续讨论。)

18.利用移位寄存器和反馈组合电路实现序列发生器:根据要产生的序列得到串行输入表达式,再根据此表达式得到串行输入的电路,这是一个组合电路,可以用逻辑门电路实现,也可以用译码器或者多路复用器实现。首先确定移位寄存器的位数, 设序列信号的长度为L,则要求移位寄存器的位数n 满足条件:2^n≥L,首先选择满足此条件的最小值N1,根据数据左移,画出状态图(序列信号的长度为L,则画出的状态图中一定有L个状态),检查状态图中的L个状态是否两两不同,如果是,则N1可以用,否则就需要不断扩大位数。(下面会介绍另一种方法来解决这个方法)然后再根据状态图画出状态转换表,有现态和次态,求出左移时最低位输入的卡诺图,并求出其表达式。如果有无关项,还要求检查电路的自起动能力。最后根据最低位输入表达式,用分立门电路,或者译码器,或者多路复用实现反馈输入的组合电路。(移位寄存器的某位即为所要求的序列号)




思考题:用一个计数器和多路复用器构成序列信号发生器:首先根据序列长度写出相对应的状态图,注意不能两两相同,应该都不一样才可以。然后写出状态图,有现态和次态,然后输出端也为最低输入位,然后画出最低输入位的卡诺图,并且表明0和d,就是无关项和0项都要在卡诺图中表现出来。如果无法构成卡诺圈,就逐个状态的表达式都写出来,并且进行对使用了无关项进行处理,判断电路是否具有自启动能力。全0的无关项的移入量是随意的,因为它是基本点。但是其他的无关项就需要根据状态图中的次态的输出最低位的量进行移入。然后根据卡诺图,写出表达式。写出的表达式的个数肯定小于8.因此,我们首先要写出多路复用器的输出表达式。因为多路复用器只有3个输入端,因此我们必须将前者计数器的一个输出端作为一个控制端。怎么做呢?(下面举例)


答案明天揭晓!


猜你喜欢

转载自blog.csdn.net/qq764272800/article/details/80585793
今日推荐