跳到主要内容

電気通信大学 情報理工学研究科 情報・ネットワーク工学専攻 2022年8月実施 選択問題 計算機の基本原理

Author

祭音Myyura (co-authored with GPT 5.6 SOL)

Description

西暦 2019--2099 年の下 2 桁と令和の年を相互変換する論理回路を考える。2 の補数による定数加減算を示し、必要なビット数、全加算器だけによる西暦から令和への変換回路、その簡単化、および切替信号付き双方向変換回路を構成せよ。

题目描述

设计公历 2019--2099 年后两位与令和年份之间的双向转换电路:用二进制补码完成常数加减,确定位宽,以全加器实现并化简指定级,最后加入方向控制信号。

Kai

(1)

令和の年は西暦下 2 桁から 1818 を引けばよい。7 ビットで表すと、

2218=22+18+122-18=22+\overline{18}+1

であり、

0010110+ 1101101+ 00000011 0000100\begin{array}{r} 0010110\\ +\ 1101101\\ +\ 0000001\\ \hline 1\ 0000100 \end{array}

となる。最上位の桁上がりを捨てて、

00001002=4\boxed{0000100_2=4}

を得る。

(2)

西暦 2019 年は令和 1 年、西暦 2099 年は令和 81 年である。したがって入力可能範囲は

00000012r10100012\boxed{0000001_2\leq r\leq1010001_2}

であり、必要な最小ビット数は 77 である。

(3)

18=0010010218=0010010_2 の 1 の補数

(k6k0)=1101101(k_6\cdots k_0)=1101101

を定数入力とし、最下位の桁上がり入力を c0=1c_0=1 とする。第 ii 全加算器への入力を (xi,ki,ci)(x_i,k_i,c_i)、和出力を yiy_i、桁上がりを ci+1c_{i+1} として 7 個を直列接続し、c7c_7 は捨てる。

これにより yx18(mod128)y\equiv x-18\pmod{128} となり、指定範囲では通常の差 x18x-18 に一致する。

(4)

i=0i=0 では入力が (x0,1,1)(x_0,1,1) なので、

y0=x0,c1=1.\boxed{y_0=x_0,\qquad c_1=1}.

したがって配線だけでよい。

i=4i=4 では入力が (x4,0,c4)(x_4,0,c_4) なので、

y4=x4c4,c5=x4c4.\boxed{y_4=x_4\oplus c_4,\qquad c_5=x_4c_4}.

(5)

m=tm=\overline t とし、1818 の第 ii ビットを bib_i とする。各全加算器の定数側入力を

zi=bim={t,i=1,4,t,i=0,2,3,5,6,z_i=b_i\oplus m =\begin{cases} t,&i=1,4,\\ \overline t,&i=0,2,3,5,6, \end{cases}

とし、c0=mc_0=m として (3) と同じ 7 段の全加算器へ入力する。

  • t=0t=0 では z=18z=\overline{18}c0=1c_0=1 なので y=x18y=x-18
  • t=1t=1 では z=18z=18c0=0c_0=0 なので y=x+18y=x+18

したがって、全加算器と m=tm=\overline t を作る 1 個の NOT ゲートだけで双方向変換を実現できる。