「論理回路とその設計」 演習問題【10】

表1
Y

X

0 1 −1
0 0, 0 1, 0 1, −1
1 1, 0 0, 1 0, 0
−1 1, −1 0, 0 0, −1
[A] 2進数値の1桁を"0","1","−1"の3値で表す方式を「冗長2進表現」という.この冗長2進表現数値の1桁どうしの半加算器(被加数と加数を並列・同時に入力するので「並列半加算器」という)を最適化設計してみよう.この半加算器は,被加数Xと加数Yとを入力として,その桁での和Sと上位への桁上げCを出力とする組み合わせ回路であり,XYS, C を表1(行が被加数のX値,列が加数のY値,交差するマス目にある"S, C"がこの順で和のS値と桁上げのC値を示す )の組み合わせにしたがって計算・出力する.たとえば,XY=−1 ならば,S=0, C=−1 である.また,設計する論理回路では,[冗長2進表現の1桁数値である"0"を"00","1"を"01","−1"を"11"のそれぞれ2ビットの論理値(2ビットコード)で表現(*)]する.たとえば,X=1は,XA=0, XB=1 の2ビット(コード)で表現する.したがって,最適化設計する論理回路は,図1に示すように,XA,XB,YA,YBを入力,SA,SB,CA,CBを出力とする4入力4出力組み合わせ回路となる.ただし,入力XA=1, XB=0 あるいは YA=1, YB=0 の場合は,4ビットの出力SA,SB,CA,CBともすべてドントケア"−"とする. 次の問すべてに答えなさい.(論理積(AND)記号"・"は省略可.)

[B] [A]と同様に冗長2進表現した1桁数値を,今度は,ビットタイムごとに逐次的に(時間系列で順々に)入力して,時間系列で連続する2個の冗長2進表現数値の1桁どうしの半加算器(直列・逐次入力するので「直列半加算器」という)を最適化設計してみよう.この直列半加算器は,現状態Qを被加数,入力Iを加数として加算し,次状態Q+をその桁での和,出力Cを上位への桁上げとし,QIQ+, C を表1の組み合わせ(表1での,XQに,YIに,SQ+にそれぞれ読み替える)にしたがって計算・状態遷移・出力する順序回路である.たとえば,[QI=1 ならば,Q+=0, C=1 (**)]である.また,この順序回路では,[A]と同様に,冗長2進表現の1桁数値で示せる状態"0"を"00","1"を"01","−1"を"11"のそれぞれ2ビットの論理値(2ビット,2個のフリップフロップ(FF)でこの順で"QA QB")で表現し,これらをそのままこの順序回路そのものの状態・出力(2ビット)とする.ただし,状態"10"は不使用でドントケアとする.たとえば,Q=−1 は,QA=1, QB=1 の2ビット(コード)で表現する.したがって,最適化設計する論理回路は,図2に示すように,IA, IBを入力,QA,QBを状態(出力も兼ねる),CA,CBを出力とし,2個のFFA, FFB(それぞれのFF状態(=FF出力)がQA,QB)を備える2入力4出力順序回路となる.ただし,QA=1, QB=0 はドントケア状態"−"であるから,論理設計する順序回路は不完全指定順序回路(2ビット状態(2個のFF)で表現できる4状態のうち3状態しか使用しない)である.また,入力IA=1, IB=0 の場合の次状態QA+, QB+および出力CA, CBはドントケア"−"とする.次の問すべてに答えなさい.(論理積(AND)記号"・"は省略可.