5.4时序逻辑电路的设计方法5.4.1同步时序逻辑电路的设计方法步骤:一逻辑抽象,得出电路的状态转换图或状态转换表1.分析给定的逻辑问题,确定输入变量、输出变量以及电路的状态数。通常取原因(或条件)作为输入逻辑变量,取结果作输出逻辑变量;2.定义输入、输出逻辑状态和每个电路状态的含义,并将电路状态顺序编号;3.按照题意列出电路的状态转换表或画出电路的状态转换图。二状态化简若两个电路状态在相同的输入下有相同的输出,并且转换到同样的一个状态去,则称这两个状态为等价状态。等价状态可以合并,,这样设计的电路状态数少,电路越简。三状态分配状态分配也叫状态编码a.确定触发器的数目;b.确定电路的状态数,应满足2n-1M≤2n;c.进行状态编码,即将电路的状态和触发器状态组合对应起来。四选定触发器的类型,求出电路的状态方程、驱动方程和输出方程a.选定触发器的类型;b.由状态转换图(或状态转换表)和选定的状态编码、触发器的类型,写出电路的状态方程、驱动方程和输出方程。五根据得到的方程式画出逻辑图六检查设计的电路能否自启动若电路不能自启动,则应采取下面措施:a.通过预置数将电路状态置成有效循环状态中;b.通过修改逻辑设计加以解决。同步时序逻辑电路设计过程框图如图5.4.1所示。时序逻辑问题逻辑抽象状态转换图(表)状态化简最简状态转换图(表)电路方程式选定触发器的类型逻辑电路图检查能否自启动图5.4.1同步时序逻辑电路设计过程框图例5.4.1试设计一个带有进位输出端的十三进制计数器。解:由于电路没有输入变量,故属于穆尔型同步时序电路。设进位输出信号为C,有进位输出为C=1,无进位输出时C=0。根据题意,M=13,其状态转换图可示意为图5.4.2所示。由于M=13,故应取n=4,取其中的13个状态,不能再简化。按十进制数取0000~1100十三个状态S0S1S2S3S4S5S6S7S8S9S10S11S12/0/0/0/0/0/0/0/0/0/0/0/0/1图5.4.2例5.4.1的状态转换示意图其状态表为0状态变化顺序12345678910113Q2Q1Q0Q000000010100001100101010011011010001011001011011进位输出等效十进制数C状态编码0000000000001110012S0S1S2S3S4S5S6S7S8S9S10S11S12S0000000其各输出次态的卡诺图如下nQ0nQ1000110110nQ2nQ30CQQQQnnnn/101112130111010001/00010/00100/00011/00101/00110/01000/00111/01001/00000/11010/01100/0××××/×××××/×××××/×1011/0各输出端的卡诺图如下nQ3nQ2nQ1nQ0000111100001111013nQ00000010111×0××1nQ3nQ2nQ1nQ0000111100001111000101001010×1××012nQnQ3nQ2nQ1nQ0000111100001111001010001101×1××011nQnQ3nQ2nQ1nQ0000111100001111010011010001×1××010nQnQ3nQ2nQ1nQ0000111100001111000000100000×0××0C则可写出电路的状态方程和输出方程为23020310010111012023123120122313QQCQQQQQQQQQQQQQQQQQQQQQQQQQQnnnn若选用JK触发器,则由于其特性方程为nnnQKQJQ1故应把上述状态方程化为JK触发器特性方程的标准形式,即则可得出各触发器的驱动方程为012313002302031010100101113013210012023123123230123301223131)(QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQnnnnn中删去了约束项注:在1023001010132012230123KQQJQKQJQQQKQQJQKQQQJ由驱动方程可画出十三进制计数器的逻辑电路,如图5.4.2所示1JC11KQQ11JC11KQQ1JC11KQQ&&&1JC11KQQ&1CQ0Q1Q2Q3FF1FF0FF2FF3CP图5.4.2十三进制同步计数器的逻辑电路最后,检查能否自启动,其状态转换图如下000000010010001101000101011101101000100111111110Q3Q2Q1Q0/C/0/1/0/0/0/0/0/0/0/0/0/11011110110101100/1/1/0/0故电路可以自启动。例5.4.2设计一个串行数据检测器。对它的要求是:连续输入3个或3个以上的1时输出为1,其它情况下输出为0.解:设输入数据为输入变量,用X表示;检测结果为输出变量,用Y表示,其状态转换表为0S01S0/0S1/0XYSn/1nSS1S2S3S0/0S2/0S0/0S0/0S3/1S3/1其中S0为没有1输入的以前状态,S1为输入一个1以后的状态,S2为输入两个1以后的状态,S3为连续输入3个或3个以上1的状态。由状态表可以看出,S2和S3为等价状态,可以合并成一个。其化简后状态图为由于电路的状态为3个,故M=3,应取触发器的数目为n=2.取00、01和10分别对应S0、S1和S3,若选定的触发器为JK触发器,则其输出端的卡诺图为000100/001/0X01111000/010/000/010/1nnQQ01××/×××/×YQQnn/2011分开的卡诺图为nQ1nQ0000111100100001×1×Xn+1Q1nQ1nQ0000111100100010×0×XnQ1nQ000011110000100000×1×Xn+1Q0YS0S1S20/01/01/00/00/0X/Y1/1化简后电路的状态方程为001110110111QQQXQQXQXQQXQQonn可得驱动方程为1010101KQXJXKXQJ输出方程为1XQY其对应的逻辑电路如图5.4.3所示1JC11KQQ1JC11KQQ&&&1CPXY图5.4.3例5.4.2的逻辑电路其状态转换图为0001100/01/01/00/00/0X/Y1/1110/01/101QQ由状态转换图可知,此电路可以自启动。由于电路有输入信号,故为米利型时序逻辑电路。例5.4.3设计一个自动售货饮料机的逻辑电路。它的投币口每次只能投入一枚五角或一元的硬币。投入一元五角钱硬币后机器自动给出一杯饮料;投入两元(两枚一元)硬币后,在给出饮料的同时找回一枚五角的硬币。解:设投币信号为输入变量A和B,投入一枚一元硬币时为A=1.否则为A=0;投入一枚五角硬币时为B=1,否则为B=0;输出为Y和Z,给出饮料为Y=1,否则为Y=0;找回一枚五角硬币时为Z=1,否则为Z=0.则其状态转换表为设S0为未投币电路的初始状态,S1为投入五角硬币后的状态,S2为投入一元硬币(包括一枚一元硬币和两枚五角硬币)后的状态。00S0/00S1/00011110S0/00S2/00×/××S0/00S0/10ABYZSn/1iS0S1S2S×/×××/××S2/00S0/10S0/11对应的状态转换图为S0S1S200/0001/0001/0001/10或10/1110/10AB/XY00/0000/0010/00注:由于实际中不可能同时投入一枚一元硬币和五角硬币,故AB=11的情况不出现,做约束项处理。设S0、S1和S2分别用00、01和10表示,则取触发器的位数为M=3则电路的次态/输出的卡诺图为nQ0nQ10001101100YZQQnn/101101110100/0001/0010/0001/0010/0000/0010/0000/1000/11AB×××/××××/××××/××××/××××/××××/××××/×分解成触发器输出状态和输出端的卡诺图为nQ1nQ0000111100001111000×10×110×0×0×××11nQABnQ1nQ0000111100001111001×01×000×0×0×××10nQABnQ1nQ0000111100001111000×00×001×1×1×××YABnQ1nQ0000111100001111000×00×000×1×0×××ZAB若选用D触发器,则电路的状态方程为BQQBAQQAQQBQBAQQnn01010010111驱动方程为BQQBAQQDAQQBQBAQQDnn0101000101111输出方程为AQZAQAQBQY1011根据驱动方程和输出方程可画出实现的逻辑电路,如书286图5.4.17所示.电路的状态转换图为00011000/0001/0001/0001/10或10/1110/10AB/XY00/0000/0010/001100/0001/1010/1101QQ注:当电路进入到无效状态11时,不能自动进入有效循环,故此电路不能自启动。另外对于AB=01或AB=10虽然能进入到有效循环中,但收费结果是错的。故电路应加入异步置零端将电路置为00状态。DR*5.4.2时序逻辑电路的自启动设计前一节的时序电路设计中,电路的自启动检查是在最后一步进行的,如果不能自启动,还要返回来从新修改设计。如果在设计过程中能够考虑自启动的问题,就可以省略检查自启动这一步骤了。例5.4.4设计一七进制计数器,要求它能够自启动。已知该计数器的状态转换图及状态编码如图5.4.4所示。001100010101110111011/0/0/0/0/0/0/1321QQQ/C5.4.4例5.4.4的状态转换图解:由所给的状态图得出电路次态的卡诺图为nQ10001111001101100001010×011×nnQQ32×111110n+1Q1n+1Q2n+1Q3各个输出端的卡诺图为nQ1000111100101101×10n+1Q1000111100100011×11nQ100011110000110100×11nQ2nQ3n+1Q2n+1Q3nQ1nQ2nQ3nQ3nQ2则输出端的状态方程为21311232323211QQQQQQQQQQQnnn由于进位信号是在011状态译出,故输出方程为321QQQC注意:在上述合并1中,如果将×项圈入,则当作1处理;否则作0处理。这就是无形中给无效状态(×)指定了次态。如果想电路自启动,必须是无效状态的次态应改为有效状态。前面所得的电路状态方程都是没包含×,也就是将它取成000,仍是无效状态,电路则不会自启动。如果将×××取成有效状态则电路就会自启动。若修改Q2n+1的卡诺图如下000111100100011×11n+1Q2nQ1nQ2nQ3那么电路的状态方程改为2133211232323211QQQQQQQQQQQQQnnn若由JK触发器构成,则应将上述状态方程改写成JK触发器特性方程的标准形式,即则驱动方程为323233213212313222132112132132113232323211)()()()(QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQnnn23231231312321321QKQJQKQQQQJQQKQQJ根据驱动方程和输出方程可画出七进制计数器的逻辑电路如图5.4.5所示。它的状态转换图为1JC11KQQ1JC11KQQ1JC11KQQ=1&1