1公式と解法
記数法
- 位取り
- 2 進数 2k、8 進数 8k、16 進数 16k
- 10 進数へ
- Σ dk·bk
- 10 進数から
- 基数で割り、余りを下から上へ読む
- 16 進数 ↔ 2 進数
- 16 進数 1 桁 = 4 ビット
- 2 の補数
- ビットを反転して 1 を足す
デジタル論理:ゲート・カルノー図・フリップフロップ
- 基本ゲート
- A·B, A + B, A′, (A·B)′, (A + B)′, A ⊕ B
- ブールの規則
- X + X′ = 1, X·X′ = 0, X + XY = X, XY + XY′ = X
- ド・モルガンの法則
- (X·Y)′ = X′ + Y′, (X + Y)′ = X′·Y′
- カルノー図の並び順
- 00, 01, 11, 10 (Gray code)
- 2ᵏ 個のセルのグループ
- k 個の変数が消える
- 4 対 1 マルチプレクサ
- F = A′B′I0 + A′BI1 + AB′I2 + ABI3
- フリップフロップ
- D: Q⁺ = D, T: Q⁺ = T ⊕ Q, JK: Q⁺ = JQ′ + K′Q
- カウンタ
- n ビット:2ⁿ 状態; mod-N:2ⁿ ≥ N を満たす最小の n; fout = fclk/N
- リップルカウンタ
- fmax = 1/(n·tpd)
- リングカウンタとジョンソンカウンタ
- n 状態と 2n 状態
解き方
- 回路では、入力から出力へ向かってゲートを 1 つずつ進み、各配線に値を書き込むか、式を書いて真理値表を埋めましょう。
- 簡単化するには、1(とドントケアは X として)を、行と列がグレイコード 00, 01, 11, 10 のカルノー図に書き込みましょう。
- 1 を、1, 2, 4, 8, 16 個のセルからなる、できるだけ少なくできるだけ大きなグループで、端をまたぎながら覆いましょう。各グループは、一定のままの変数からなる 1 つの積項です。POS 形には 0 をグループ化します。
- フリップフロップとカウンタでは、各有効クロックエッジで入力を読み取り、エッジごとの状態を書き出し、n ビットのカウンタは 2ⁿ 個の状態で折り返すことを忘れないようにしましょう。
データ収録とサンプリング
- ナイキスト条件
- fs > 2·fmax, fN = fs/2
- エイリアス周波数
- fa = |f − k·fs|, k = round(f/fs)
- ステップ幅
- 1 LSB = VFSR/2ᴺ
- 量子化誤差(四捨五入)
- ±½ LSB
- 切り捨て ADC のコード
- D = ⌊Vin/LSB⌋
- 分解能 r に必要なビット数
- 2ᴺ ≥ span/r
- 理想 SQNR(フルスケールの正弦波)
- SQNR = 6.02·N + 1.76 dB
- データレート
- チャネル数 × fs × N bit/s
- マルチプレクス ADC
- fs = 1/(n·(tc + tset))
- UART
- Tb = 1/ボーレート;8N1 = 1 バイトあたり 10 ビット;バイト/s = ボーレート/1 フレームのビット数
- ボーレート分周比
- baud = fclk/(16·D)
解き方
- まず与えられた値を書き出します:サンプリング周波数、信号の周波数、ビット数、入力レンジ、ボーレート。
- サンプリングの問題では、各周波数を fs/2 と比べます。それより高い周波数は、fs の最も近い整数倍を使って fa = |f − k·fs| の位置に現れます。
- 分解能の問題では、1 LSB = VFSR/2ᴺ を求めるか、2ᴺ ≥ 範囲/分解能 を満たす最小の N を求めます。
- データレートと UART 通信では、送られるものをすべて数えます:チャネル数、毎秒のサンプル数、1 サンプルあたりのビット数またはバイト数、そして各フレームのスタートビット、パリティビット、ストップビット。
2演習問題
1.記数法ふつう
8 ビットの 2 の補数で −13 を格納するようにビットを設定します。符号なしの数として読むと、このパターンの値 U はいくつですか?
N = −138 bit
U =
2.記数法むずかしい
ビットを 1011 1000 << 2 の 8 ビットの結果に設定します。結果の値 R は 10 進でいくつですか?
1011 1000<< 2
R =
3.デジタル論理:ゲート・カルノー図・フリップフロップふつう
このカルノー図には、隣り合う 1 をもたない 1 がちょうど 1 つあり、最小の SOP 形では 1 セルのグループ(4 リテラルの完全な最小項)のままです。図の端をまたぐ隣接も数えます。そのセルをクリックしてください。
F = Σm(0, 3, 6, 7, 12, 13)
- 1AB = 00, CD = 00
- 2AB = 00, CD = 01
- 3AB = 00, CD = 11
- 4AB = 00, CD = 10
- 5AB = 01, CD = 00
- 6AB = 01, CD = 01
- 7AB = 01, CD = 11
- 8AB = 01, CD = 10
- 9AB = 11, CD = 00
- 10AB = 11, CD = 01
- 11AB = 11, CD = 11
- 12AB = 11, CD = 10
- 13AB = 10, CD = 00
- 14AB = 10, CD = 01
- 15AB = 10, CD = 11
- 16AB = 10, CD = 10
4.デジタル論理:ゲート・カルノー図・フリップフロップむずかしい
正エッジトリガの JK フリップフロップが Q = 0 から始まり、6 回の立ち上がりクロックエッジで図の入力を受け取ります。Q は何回N状態を変えますか?
Q₀ = 0JK
N =
5.データ収録とサンプリングふつう
入力範囲 0〜3.3 V の 8 ビット ADC が切り捨てを行い、その出力コードは ⌊Vin/LSB⌋、1 LSB = VFSR/2ᴺ です。入力 2.646 V に対する 10 進の出力コード D を求めなさい。
N = 8VFSR = 3.3 VVin = 2.646 V
D =
6.データ収録とサンプリングむずかしい
16 ビット ADC がすべてのサンプルを UART で 460800 baud、8E1 形式(スタートビット、データ 8 ビット、偶数パリティ、ストップビット 1 個)で送ります。各サンプルは 2 バイトの整数バイトで送られ、通信路は常にふさがっています。エイリアシングなしにサンプリングできる最高の信号周波数 fmax を Hz で求めなさい。
baud = 460800 BdN = 168E1
fmax = Hz
3溶液
1.記数法
答え: U = 243
ビットの設定:各ビットは 2 のべき乗(128、64、…、1)の値をもちます。16 進の 1 桁はちょうど 4 ビットで、8 ビットの 2 の補数では、いちばん左のビットの値は −128 です。ビット演算は、各ビット位置を別々に扱います。
反転して 1 を足す
13 = 0000 1101
反転後: 1111 0010
+1 → 1111 0011
符号なしとして読む
1111 0011₂ = 256 − 13 = 243
2.記数法
答え: R = 224
ビットの設定:各ビットは 2 のべき乗(128、64、…、1)の値をもちます。16 進の 1 桁はちょうど 4 ビットで、8 ビットの 2 の補数では、いちばん左のビットの値は −128 です。ビット演算は、各ビット位置を別々に扱います。
ビットごとに
2 だけ左にシフトすると、すべてのビットが 2 桁左へ動きます。左端からはみ出したビットは失われ、右側には 0 が入ります。
1011 1000 << 2
= 1110 0000
3.デジタル論理:ゲート・カルノー図・フリップフロップ
答え: AB = 00, CD = 00
カルノー図:セルはグレイコード(00, 01, 11, 10)の順に並んでいるので、端をまたぐものも含め、隣り合うセルはちょうど 1 つの変数だけが異なります。1 を、1, 2, 4, 8, 16 個のセルからなる長方形で、できるだけ大きく、できるだけ少ない数でグループ化し、すべての 1 を覆います。各グループは 1 つの積項で、グループの中で一定のままの変数からなります。2ᵏ 個のセルのグループでは k 個の変数が消えます。ドントケア(X)はグループを大きくするために使えますが、覆う必要はありません。代わりに 0 をグループ化すると、最小の POS 形が得られます。
各 1 の隣
隣り合う 1 がある 1 は、2 つ以上のグループに加わることができます。
孤立した 1
m0 = A′B′C′D′ → AB = 00, CD = 00
4.デジタル論理:ゲート・カルノー図・フリップフロップ
答え: N = 2
フリップフロップとカウンタ:フリップフロップは、有効なクロックエッジでだけ変化します。D は入力をコピーし(Q⁺ = D)、T は T = 1 のときトグルし、JK は 00 で保持、01 でリセット、10 でセット、11 でトグルします。n ビットの 2 進カウンタには 2ⁿ 個の状態があり、2ⁿ を法として数えます。mod-N カウンタは 0, 1, …, N − 1 と数えて 0 に戻り、2ⁿ ≥ N を満たす最小の n 個のフリップフロップが必要です。リップルカウンタの各段は周波数を半分にするので、mod-N カウンタの最後の出力は fclk/N で動作します。n 個のフリップフロップのジョンソンカウンタには 2n 個の状態があり、リングカウンタには n 個あります。
エッジごとの Q
JK フリップフロップ:00 は保持、01 はリセット(Q = 0)、10 はセット(Q = 1)、11 はトグルです。
1: J = 0, K = 0 → Q = 0
2: J = 1, K = 1 → Q = 1
3: J = 0, K = 1 → Q = 0
4: J = 0, K = 1 → Q = 0
5: J = 0, K = 0 → Q = 0
6: J = 0, K = 0 → Q = 0
変化を数える
0 → 0 → 1 → 0 → 0 → 0 → 0
N = 2
5.データ収録とサンプリング
答え: D = 205
ADC の分解能:N ビットの変換器は、フルスケール範囲 VFSR を 0 から 2ᴺ − 1 までの 2ᴺ 個のコードに分けます。1 ステップは 1 LSB = VFSR/2ᴺ で、変換器が表示できる最小の変化です。切り捨て ADC はコード ⌊Vin/LSB⌋ を出力します。四捨五入する ADC は真の値から ½ LSB より離れることがなく、これが量子化誤差です。ビットが 1 つ増えるごとに LSB は半分になり、フルスケールの正弦波に対する理想的な信号対量子化雑音比 SQNR = 6.02·N + 1.76 dB はおよそ 6 dB 向上します。ある範囲で分解能 r を得るには、2ᴺ ≥ 範囲/r を満たす最小の N を選びます。
ステップ幅
1 LSB = 3.3/28 = 12.89 mV
コード
Vin/LSB = 2646/12.89 = 205.3
コード = ⌊205.3⌋ = 205
6.データ収録とサンプリング
答え: fmax = 10473 Hz
UART:調歩同期式のシリアル通信は、各バイトをフレームとして送ります:スタートビット(Low)1 つ、データビット、任意のパリティビット、ストップビット(High)1 つまたは 2 つ。ボーレートは毎秒のビット数なので、1 ビットの長さは Tb = 1/ボーレート、n ビットのフレームの長さは n/ボーレートです。よく使われる 8N1 形式は 1 バイトが 10 ビットです。ボーレート発生器はクロックを分周します:ボーレート = fclk/(16·D)、D は整数なので、実際のボーレートは目標値とわずかに異なります。誤差がおよそ 2 % 未満なら、たいてい許容されます。
最高サンプリング周波数
fs,max = 460800/22 = 20945 Hz
ナイキストの限界
fmax = 20945/2 = 10473 Hz