東京工業大学 工学院 情報通信系 2016年8月実施 S4 逐次除算器と状態遷移
Author
祭音Myyura (co-authored with GPT 5.6 SOL)
Description
S4. 非負整数を最上位ビットから1ビットずつ入力し,整数定数 N≥2 で割った商を最上位ビットから1ビットずつ出力する順序回路を考える。時刻 k≥0 の入力と出力を x(k),z(k) とし,時刻0から k までの入力列と出力列が表す整数を Xk,Zk=⌊Xk/N⌋ とする。
X0Z0=x(0),=z(0),XkZk=2Xk−1+x(k),=2Zk−1+z(k).
余りを Rk+1=XkmodN とすると,R0=0,Rk+1=(2Rk+x(k))modN である。図 S4.1 の回路は,出力 z と M ビット出力 D の組合せ回路,および M 個の D フリップフロップからなる。現状態 A=Rk と入力 x から次状態 D=Rk+1 と出力 z を求める。
図 S4.2 の組合せ回路の動作は
B=2A+x,z={10(B≥N),(B<N),D={B−NB(B≥N),(B<N).
である。0≤A,D≤N−1,0≤B≤2N−1 が成り立つ。否定を x,論理積を x⋅y,論理和を x∨y とする。論理式は最小数の AND 項からなる NOT–AND–OR 形式(積項の和形式)で答えよ。
-
N=5,入力列 1011001(X6=89)に対する動作の一部を表 S4.1 に示す。
| 時刻 k | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|
| 入力 x | 1 | 0 | 1 | 1 | 0 | 0 | 1 |
| 現状態の余り A=Rk | 0 | | | | | | |
| B=2A+x | 1 | | | | | | |
| 出力 z | 0 | | | | | | |
| 次状態の余り D=Rk+1 | 1 | | | | | | |
a) 表を完成せよ。
b) Z6 と R7 を求めよ。
-
N=3 では 0≤A≤2,0≤B≤5 である。A=(a1a0)2,B=(b2b1b0)2 として,a1,a0,x を用いた論理式で b2,b1,b0 をそれぞれ表せ。
-
N=3 のとき,C=B−3 を2の補数表現で出力する回路を考える。0≤B≤5,−3≤C≤2 なので,B=(b2b1b0)2,C=(c2c1c0)2 とする。表 S4.2 の範囲外の入力6と7では,出力はドントケア(∗)である。
| B | b2b1b0 | C=B−3 | c2c1c0 |
|---|
| 0 | 000 | -3 | 101 |
| 1 | 001 | -2 | 110 |
| 2 | 010 | -1 | 111 |
| 3 | 011 | 0 | 000 |
| 4 | 100 | 1 | 001 |
| 5 | 101 | 2 | 010 |
| 6 | 110 | ∗ | ∗∗∗ |
| 7 | 111 | ∗ | ∗∗∗ |
a) b2,b1,b0 を用いた論理式で c2,c1,c0 をそれぞれ表せ。
b) 次式で z,D を求める。
z={10(C≥0),(C<0),D={C′B′(C≥0),(C<0).
ただし D=(d1d0)2,C′=(c1c0)2,B′=(b1b0)2 とする。次の(ア)~(オ)に入る論理式を示せ。
zd1d0=ア,=b1⋅イ∨c1⋅ウ,=b0⋅エ∨c0⋅オ.
-
余り Rk=0,1,…,N−1 に状態 Q0,Q1,…,QN−1 を対応させ,現状態 q と入力 x に対する次状態 qn と出力 z を考える。N=3 の例を表 S4.3 に示す。
| 現状態 q | qn(x=0) | qn(x=1) | z(x=0) | z(x=1) |
|---|
| Q0 | Q0 | Q1 | 0 | 0 |
| Q1 | Q2 | Q0 | 0 | 1 |
| Q2 | Q1 | Q2 | 1 | 1 |
例えば q=Q1 は A=1 を表し,x=0 なら B=2,z=0,qn=Q2,x=1 なら B=3,z=1,qn=Q0 となる。
a) N=5 の状態遷移表を,表 S4.3 の例にならって示せ。
b) N=5 で現状態を q=(a2a1a0),次状態を qn=(d2d1d0) とする。表 S4.4 の状態割当て
| 状態 | a2a1a0 |
|---|
| Q0 | 000 |
| Q1 | 001 |
| Q2 | 011 |
| Q3 | 010 |
| Q4 | 100 |
を用い,a2,a1,a0,x を用いた論理式で d2,d1,d0,z をそれぞれ表せ。
题目描述
考虑一个时序电路:从最高位开始逐位输入非负整数,同时从最高位开始逐位输出该整数除以常数 N≥2 的商。时刻 k≥0 的输入和输出分别为 x(k)、z(k)。截至该时刻的输入整数为 Xk,输出整数为 Zk=⌊Xk/N⌋,满足上面的 Xk,Zk 递推。令 Rk+1=XkmodN,初值 R0=0,则 Rk+1=(2Rk+x(k))modN。
图 S4.1 的电路由组合电路和 M 个 D 触发器组成;现状态 A=Rk、输入 x 经组合电路产生输出 z 和下一状态 D=Rk+1。图 S4.2 给出的规则为 B=2A+x:若 B≥N,则 z=1,D=B−N;否则 z=0,D=B。因此 0≤A,D≤N−1、0≤B≤2N−1。以下所有逻辑表达式都要写成 AND 项数最少的 NOT–AND–OR(积之和)形式。图、表及填空式沿用上面的编号。
- 在 N=5、输入为 1011001(X6=89)时:
a) 补全表 S4.1 的 A,B,z,D 各项。
b) 求最终的商 Z6 和余数 R7。
- 在 N=3 时,以两位 A=(a1a0)2 和三位 B=(b2b1b0)2 表示数值,用 a1,a0,x 分别写出 b2,b1,b0。
- 在 N=3 时,将 C=B−3 用三位二进制补码表示。有效输入为 0≤B≤5,对应 −3≤C≤2;表 S4.2 中输入6、7的输出作为无关项。
a) 用 b2,b1,b0 分别写出 c2,c1,c0 的最简积之和表达式。
b) 当 C≥0 时取 z=1,D=C′,否则取 z=0,D=B′,其中 C′=(c1c0)2、B′=(b1b0)2、D=(d1d0)2。填写上面 z,d1,d0 表达式中的(ア)~(オ)。
- 将余数 0,…,N−1 分别对应到状态 Q0,…,QN−1。表 S4.3 给出除以3的状态转移示例。
a) 仿照该表写出 N=5 时的状态转移表。
b) 采用表 S4.4 的编码 Q0=000,Q1=001,Q2=011,Q3=010,Q4=100,以 q=(a2a1a0) 表示现状态、qn=(d2d1d0) 表示下一状态,用 a2,a1,a0,x 分别写出 d2,d1,d0,z。
Kai
| k | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|
| x | 1 | 0 | 1 | 1 | 0 | 0 | 1 |
| A | 0 | 1 | 2 | 0 | 1 | 2 | 4 |
| B | 1 | 2 | 5 | 1 | 2 | 4 | 9 |
| z | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
| D | 1 | 2 | 0 | 1 | 2 | 4 | 4 |
89=5⋅17+4 なので Z6=(0010001)2=17, R7=4。
B=2A+x は左シフトして x を付ける操作なので
b2=a1,b1=a0,b0=x.
3)a)
B=0,1,2,3,4,5 に対して C は順に 101,110,111,000,001,010。未使用入力を用いて簡単化すると
c2c1c0=bˉ2bˉ0∨bˉ2bˉ1,=b0bˉ1∨bˉ0b1,=bˉ0.
3)b)
符号ビットが c2 だから
z=cˉ2,d1=b1c2∨c1cˉ2,d0=b0c2∨c0cˉ2.
空欄(ア)~(オ)は cˉ2,c2,cˉ2,c2,cˉ2。
4)a)
| 現状態 | x=0 の次状態 | x=1 の次状態 | x=0 の出力 | x=1 の出力 |
|---|
| Q0 | Q0 | Q1 | 0 | 0 |
| Q1 | Q2 | Q3 | 0 | 0 |
| Q2 | Q4 | Q0 | 0 | 1 |
| Q3 | Q1 | Q2 | 1 | 1 |
| Q4 | Q3 | Q4 | 1 | 1 |
4)b)
未使用符号 101,110,111 を don't care とすると
d2d1d0z=a2x∨a0a1xˉ,=a0aˉ1∨a2xˉ∨aˉ0a1x,=aˉ0a1∨a0aˉ1xˉ∨aˉ0aˉ2x,=a2∨a1x∨aˉ0a1.