跳到主要内容

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

Author​

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

Description​

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

X0=x(0),Xk=2Xk−1+x(k),Z0=z(0),Zk=2Zk−1+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=Xk mod NR_{k+1}=X_k\bmod N とすると,R0=0R_0=0,Rk+1=(2Rk+x(k)) mod NR_{k+1}=(2R_k+x^{(k)})\bmod N である。図 S4.1 の回路は,出力 zz と MM ビット出力 DD の組合せ回路,および MM 個の D フリップフロップからなる。現状態 A=RkA=R_k と入力 xx から次状態 D=Rk+1D=R_{k+1} と出力 zz を求める。

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

B=2A+x,z={1(B≥N),0(B<N),D={B−N(B≥N),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}

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

  1. N=5N=5,入力列 10110011011001(X6=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_6 と R7R_7 を求めよ。

  2. N=3N=3 では 0≤A≤20\le A\le2,0≤B≤50\le B\le5 である。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=B−3C=B-3 を2の補数表現で出力する回路を考える。0≤B≤50\le B\le5,−3≤C≤2-3\le C\le2 なので,B=(b2b1b0)2B=(b_2b_1b_0)_2,C=(c2c1c0)2C=(c_2c_1c_0)_2 とする。表 S4.2 の範囲外の入力6と7では,出力はドントケア(∗*)である。

    BBb2b1b0b_2b_1b_0C=B−3C=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(C≥0),0(C<0),D={C′(C≥0),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)_2,C′=(c1c0)2C'=(c_1c_0)_2,B′=(b1b0)2B'=(b_1b_0)_2 とする。次の(ア)~(オ)に入る論理式を示せ。

    z=ア,d1=b1⋅イ∨c1⋅ウ,d0=b0⋅エ∨c0⋅オ.\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,…,N−1R_k=0,1,\ldots,N-1 に状態 Q0,Q1,…,QN−1Q_0,Q_1,\ldots,Q_{N-1} を対応させ,現状態 qq と入力 xx に対する次状態 qnq_n と出力 zz を考える。N=3N=3 の例を表 S4.3 に示す。

    現状態 qqqnq_n(x=0x=0)qnq_n(x=1x=1)zz(x=0x=0)zz(x=1x=1)
    Q0Q_0Q0Q_0Q1Q_100
    Q1Q_1Q2Q_2Q0Q_001
    Q2Q_2Q1Q_1Q2Q_211

    例えば q=Q1q=Q_1 は A=1A=1 を表し,x=0x=0 なら B=2,z=0,qn=Q2B=2,z=0,q_n=Q_2,x=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 をそれぞれ表せ。

题目描述​

考虑一个时序电路:从最高位开始逐位输入非负整数,同时从最高位开始逐位输出该整数除以常数 N≥2N\ge2 的商。时刻 k≥0k\ge0 的输入和输出分别为 x(k)x^{(k)}、z(k)z^{(k)}。截至该时刻的输入整数为 XkX_k,输出整数为 Zk=⌊Xk/N⌋Z_k=\lfloor X_k/N\rfloor,满足上面的 Xk,ZkX_k,Z_k 递推。令 Rk+1=Xk mod NR_{k+1}=X_k\bmod N,初值 R0=0R_0=0,则 Rk+1=(2Rk+x(k)) mod NR_{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:若 B≥NB\ge N,则 z=1,D=B−Nz=1,D=B-N;否则 z=0,D=Bz=0,D=B。因此 0≤A,D≤N−10\le A,D\le N-1、0≤B≤2N−10\le B\le2N-1。以下所有逻辑表达式都要写成 AND 项数最少的 NOT–AND–OR(积之和)形式。图、表及填空式沿用上面的编号。

  1. 在 N=5N=5、输入为 10110011011001(X6=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=B−3C=B-3 用三位二进制补码表示。有效输入为 0≤B≤50\le B\le5,对应 −3≤C≤2-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) 当 C≥0C\ge0 时取 z=1,D=C′z=1,D=C',否则取 z=0,D=B′z=0,D=B',其中 C′=(c1c0)2C'=(c_1c_0)_2、B′=(b1b0)2B'=(b_1b_0)_2、D=(d1d0)2D=(d_1d_0)_2。填写上面 z,d1,d0z,d_1,d_0 表达式中的(ア)~(オ)。
  4. 将余数 0,…,N−10,\ldots,N-1 分别对应到状态 Q0,…,QN−1Q_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=5⋅17+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ˉ0∨bˉ2bˉ1,c1=b0bˉ1∨bˉ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=b1c2∨c1cˉ2,d0=b0c2∨c0cˉ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=a2x∨a0a1xˉ,d1=a0aˉ1∨a2xˉ∨aˉ0a1x,d0=aˉ0a1∨a0aˉ1xˉ∨aˉ0aˉ2x,z=a2∨a1x∨aˉ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}}