跳到主要内容

東京工業大学 工学院 情報通信系 2016年8月実施 S4 逐次除算器と状態遷移

Author

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

Description

S4. 非負整数を最上位ビットから1ビットずつ入力し,整数定数 N2N\ge2 で割った商を最上位ビットから1ビットずつ出力する順序回路を考える。時刻 k0k\ge0 の入力と出力を x(k),z(k)x^{(k)},z^{(k)} とし,時刻0から kk までの入力列と出力列が表す整数を Xk,Zk=Xk/NX_k,Z_k=\lfloor X_k/N\rfloor とする。

X0=x(0),Xk=2Xk1+x(k),Z0=z(0),Zk=2Zk1+z(k).\begin{aligned} X_0&=x^{(0)},&X_k&=2X_{k-1}+x^{(k)},\\ Z_0&=z^{(0)},&Z_k&=2Z_{k-1}+z^{(k)}. \end{aligned}

余りを Rk+1=XkmodNR_{k+1}=X_k\bmod N とすると,R0=0R_0=0Rk+1=(2Rk+x(k))modNR_{k+1}=(2R_k+x^{(k)})\bmod N である。図 S4.1 の回路は,出力 zzMM ビット出力 DD の組合せ回路,および MM 個の D フリップフロップからなる。現状態 A=RkA=R_k と入力 xx から次状態 D=Rk+1D=R_{k+1} と出力 zz を求める。

図 S4.2 の組合せ回路の動作は

B=2A+x,z={1(BN),0(B<N),D={BN(BN),B(B<N).B=2A+x,\qquad z=\begin{cases}1&(B\ge N),\\0&(B<N),\end{cases}\qquad D=\begin{cases}B-N&(B\ge N),\\B&(B<N).\end{cases}

である。0A,DN10\le A,D\le N-10B2N10\le B\le2N-1 が成り立つ。否定を x\overline x,論理積を xyx\cdot y,論理和を xyx\vee y とする。論理式は最小数の AND 項からなる NOT–AND–OR 形式(積項の和形式)で答えよ。

  1. N=5N=5,入力列 10110011011001X6=89X_6=89)に対する動作の一部を表 S4.1 に示す。

    時刻 kk0123456
    入力 xx1011001
    現状態の余り A=RkA=R_k0
    B=2A+xB=2A+x1
    出力 zz0
    次状態の余り D=Rk+1D=R_{k+1}1

    a) 表を完成せよ。
    b) Z6Z_6R7R_7 を求めよ。

  2. N=3N=3 では 0A20\le A\le20B50\le B\le5 である。A=(a1a0)2A=(a_1a_0)_2B=(b2b1b0)2B=(b_2b_1b_0)_2 として,a1,a0,xa_1,a_0,x を用いた論理式で b2,b1,b0b_2,b_1,b_0 をそれぞれ表せ。

  3. N=3N=3 のとき,C=B3C=B-3 を2の補数表現で出力する回路を考える。0B50\le B\le53C2-3\le C\le2 なので,B=(b2b1b0)2B=(b_2b_1b_0)_2C=(c2c1c0)2C=(c_2c_1c_0)_2 とする。表 S4.2 の範囲外の入力6と7では,出力はドントケア(*)である。

    BBb2b1b0b_2b_1b_0C=B3C=B-3c2c1c0c_2c_1c_0
    0000-3101
    1001-2110
    2010-1111
    30110000
    41001001
    51012010
    6110****
    7111****

    a) b2,b1,b0b_2,b_1,b_0 を用いた論理式で c2,c1,c0c_2,c_1,c_0 をそれぞれ表せ。
    b) 次式で z,Dz,D を求める。

    z={1(C0),0(C<0),D={C(C0),B(C<0).z=\begin{cases}1&(C\ge0),\\0&(C<0),\end{cases}\qquad D=\begin{cases}C'&(C\ge0),\\B'&(C<0).\end{cases}

    ただし D=(d1d0)2D=(d_1d_0)_2C=(c1c0)2C'=(c_1c_0)_2B=(b1b0)2B'=(b_1b_0)_2 とする。次の(ア)~(オ)に入る論理式を示せ。

    z=,d1=b1c1,d0=b0c0.\begin{aligned} z&=\boxed{\text{ア}},\\ d_1&=b_1\cdot\boxed{\text{イ}}\vee c_1\cdot\boxed{\text{ウ}},\\ d_0&=b_0\cdot\boxed{\text{エ}}\vee c_0\cdot\boxed{\text{オ}}. \end{aligned}
  4. 余り Rk=0,1,,N1R_k=0,1,\ldots,N-1 に状態 Q0,Q1,,QN1Q_0,Q_1,\ldots,Q_{N-1} を対応させ,現状態 qq と入力 xx に対する次状態 qnq_n と出力 zz を考える。N=3N=3 の例を表 S4.3 に示す。

    現状態 qqqnq_nx=0x=0qnq_nx=1x=1zzx=0x=0zzx=1x=1
    Q0Q_0Q0Q_0Q1Q_100
    Q1Q_1Q2Q_2Q0Q_001
    Q2Q_2Q1Q_1Q2Q_211

    例えば q=Q1q=Q_1A=1A=1 を表し,x=0x=0 なら B=2,z=0,qn=Q2B=2,z=0,q_n=Q_2x=1x=1 なら B=3,z=1,qn=Q0B=3,z=1,q_n=Q_0 となる。

    a) N=5N=5 の状態遷移表を,表 S4.3 の例にならって示せ。
    b) N=5N=5 で現状態を q=(a2a1a0)q=(a_2a_1a_0),次状態を qn=(d2d1d0)q_n=(d_2d_1d_0) とする。表 S4.4 の状態割当て

    状態a2a1a0a_2a_1a_0
    Q0Q_0000
    Q1Q_1001
    Q2Q_2011
    Q3Q_3010
    Q4Q_4100

    を用い,a2,a1,a0,xa_2,a_1,a_0,x を用いた論理式で d2,d1,d0,zd_2,d_1,d_0,z をそれぞれ表せ。

题目描述

考虑一个时序电路:从最高位开始逐位输入非负整数,同时从最高位开始逐位输出该整数除以常数 N2N\ge2 的商。时刻 k0k\ge0 的输入和输出分别为 x(k)x^{(k)}z(k)z^{(k)}。截至该时刻的输入整数为 XkX_k,输出整数为 Zk=Xk/NZ_k=\lfloor X_k/N\rfloor,满足上面的 Xk,ZkX_k,Z_k 递推。令 Rk+1=XkmodNR_{k+1}=X_k\bmod N,初值 R0=0R_0=0,则 Rk+1=(2Rk+x(k))modNR_{k+1}=(2R_k+x^{(k)})\bmod N

图 S4.1 的电路由组合电路和 MM 个 D 触发器组成;现状态 A=RkA=R_k、输入 xx 经组合电路产生输出 zz 和下一状态 D=Rk+1D=R_{k+1}。图 S4.2 给出的规则为 B=2A+xB=2A+x:若 BNB\ge N,则 z=1,D=BNz=1,D=B-N;否则 z=0,D=Bz=0,D=B。因此 0A,DN10\le A,D\le N-10B2N10\le B\le2N-1。以下所有逻辑表达式都要写成 AND 项数最少的 NOT–AND–OR(积之和)形式。图、表及填空式沿用上面的编号。

  1. N=5N=5、输入为 10110011011001X6=89X_6=89)时:
    a) 补全表 S4.1 的 A,B,z,DA,B,z,D 各项。
    b) 求最终的商 Z6Z_6 和余数 R7R_7
  2. N=3N=3 时,以两位 A=(a1a0)2A=(a_1a_0)_2 和三位 B=(b2b1b0)2B=(b_2b_1b_0)_2 表示数值,用 a1,a0,xa_1,a_0,x 分别写出 b2,b1,b0b_2,b_1,b_0
  3. N=3N=3 时,将 C=B3C=B-3 用三位二进制补码表示。有效输入为 0B50\le B\le5,对应 3C2-3\le C\le2;表 S4.2 中输入6、7的输出作为无关项。
    a) 用 b2,b1,b0b_2,b_1,b_0 分别写出 c2,c1,c0c_2,c_1,c_0 的最简积之和表达式。
    b) 当 C0C\ge0 时取 z=1,D=Cz=1,D=C',否则取 z=0,D=Bz=0,D=B',其中 C=(c1c0)2C'=(c_1c_0)_2B=(b1b0)2B'=(b_1b_0)_2D=(d1d0)2D=(d_1d_0)_2。填写上面 z,d1,d0z,d_1,d_0 表达式中的(ア)~(オ)。
  4. 将余数 0,,N10,\ldots,N-1 分别对应到状态 Q0,,QN1Q_0,\ldots,Q_{N-1}。表 S4.3 给出除以3的状态转移示例。
    a) 仿照该表写出 N=5N=5 时的状态转移表。
    b) 采用表 S4.4 的编码 Q0=000,Q1=001,Q2=011,Q3=010,Q4=100Q_0=000,Q_1=001,Q_2=011,Q_3=010,Q_4=100,以 q=(a2a1a0)q=(a_2a_1a_0) 表示现状态、qn=(d2d1d0)q_n=(d_2d_1d_0) 表示下一状态,用 a2,a1,a0,xa_2,a_1,a_0,x 分别写出 d2,d1,d0,zd_2,d_1,d_0,z

Kai

1)

kk0123456
xx1011001
AA0120124
BB1251249
zz0010001
DD1201244

89=517+489=5\cdot17+4 なので Z6=(0010001)2=17, R7=4\boxed{Z_6=(0010001)_2=17,\ R_7=4}

2)

B=2A+xB=2A+x は左シフトして xx を付ける操作なので

b2=a1,b1=a0,b0=x.\boxed{b_2=a_1,\quad b_1=a_0,\quad b_0=x}.

3)a)

B=0,1,2,3,4,5B=0,1,2,3,4,5 に対して CC は順に 101,110,111,000,001,010101,110,111,000,001,010。未使用入力を用いて簡単化すると

c2=bˉ2bˉ0bˉ2bˉ1,c1=b0bˉ1bˉ0b1,c0=bˉ0.\boxed{\begin{aligned} c_2&=\bar b_2\bar b_0\vee\bar b_2\bar b_1,\\ c_1&=b_0\bar b_1\vee\bar b_0b_1,\\ c_0&=\bar b_0. \end{aligned}}

3)b)

符号ビットが c2c_2 だから

z=cˉ2,d1=b1c2c1cˉ2,d0=b0c2c0cˉ2.\boxed{z=\bar c_2,\quad d_1=b_1c_2\vee c_1\bar c_2,\quad d_0=b_0c_2\vee c_0\bar c_2}.

空欄(ア)~(オ)は cˉ2,c2,cˉ2,c2,cˉ2\bar c_2,c_2,\bar c_2,c_2,\bar c_2

4)a)

現状態x=0x=0 の次状態x=1x=1 の次状態x=0x=0 の出力x=1x=1 の出力
Q0Q_0Q0Q_0Q1Q_100
Q1Q_1Q2Q_2Q3Q_300
Q2Q_2Q4Q_4Q0Q_001
Q3Q_3Q1Q_1Q2Q_211
Q4Q_4Q3Q_3Q4Q_411

4)b)

未使用符号 101,110,111101,110,111 を don't care とすると

d2=a2xa0a1xˉ,d1=a0aˉ1a2xˉaˉ0a1x,d0=aˉ0a1a0aˉ1xˉaˉ0aˉ2x,z=a2a1xaˉ0a1.\boxed{\begin{aligned} d_2&=a_2x\vee a_0a_1\bar x,\\ d_1&=a_0\bar a_1\vee a_2\bar x\vee\bar a_0a_1x,\\ d_0&=\bar a_0a_1\vee a_0\bar a_1\bar x\vee\bar a_0\bar a_2x,\\ z&=a_2\vee a_1x\vee\bar a_0a_1. \end{aligned}}