第1章 ASIC=同期式設計=高信頼性設計への誘い |
1.1 究極のシステムにむかって 13 |
ASICの基本的なラッチ構造 13 |
ASICのデータ・パス 15 |
本書では完全同期式設計 16 |
現代のASIC設計法 18 |
回路設計者とデバイス屋さん 20 |
1.2 同期式回路に残された陥穽(かんせい) 23 |
ラッチが誤動作する…レーシング 23 |
ラッチのセットアップ時間とホールド時間 24 |
レーシングを防ぐ…ダブル・ラッチ 25 |
外部の非同期入力で発生する準安定状態…メタステーブル 26 |
●コラム1● 標準デバイスのメタステーブル 28 |
1.3 それでも同期式回路設計 30 |
テスト設計の重要性 30 |
テスト設計二つの方式 31 |
テスト設計のためにも同期式回路設計 32 |
同期式回路のメリット 34 |
高速・複雑なシステムほど同期式のメリットが生きる 36 |
1.4 ASICの機能設計勘どころ 37 |
ASICのプリミティブ 37 |
内部ラッチをアレンジする技術 37 |
非同期式回路から同期式回路への悪い変換例 39 |
DラッチからJKラッチを作る…PLAの導入 42 |
非同期式回路のラッチの置き換え 44 |
Appendix 実際のラッチ選び 46 |
メーカー製ラッチのラインナップ 46 |
JKラッチを使わない理由 46 |
スキャン・テストをサポートしたラッチを使おう 49 |
●コラム2● ASICにスタティック・ラッチはいらない? 50 |
第2章 ゲート回路のいろいろ |
2.1 もっとも基本的なゲートの知識 51 |
ANDゲートとORゲート 51 |
正論理と負論理 52 |
ANDとORの複合ゲート…AOゲート/OAゲート 54 |
複合ゲートの入れ替え…分配則を使う 55 |
Exclusive ORゲート 56 |
そのほかの2入力ゲートはあるか 56 |
論理式と真理値表の効果 58 |
遊びの論理回路 60 |
2.2 アダーとその構成方法 61 |
入力3ビット…フル・アダー 61 |
2ビット入力のアダーは 61 |
変数が独立していることの効果 62 |
ワン・インクリメント・アダー 63 |
規模の大きなビット・スライス・アダー 64 |
3入力ExORがあると 66 |
リップル・キャリ・ジェネレータ 67 |
2.3 そのほかの3入力素子68 |
データ・セレクタ 68 |
シュナイダーの回路 70 |
2.4 複合ゲートのチューニング 71 |
ハザードとそのリメディ…共通項の追加 71 |
同期式ではリメディは不要 72 |
ハザード対策をしたバイステーブル・ラッチ 73 |
ディレイを減らし,ディレイをそろえる効果 75 |
Appendix デバイスの中身 77 |
CMOSの基本ゲート構成 77 |
TTL複合ゲートの効果 79 |
CMOSの複合ゲート構成 82 |
第3章 論理圧縮とクワイン・マクラスキー法 |
3.1 PLAを使った論理圧縮…Bose抜きの考え方 83 |
デコード不要な変数…Bose項 83 |
Bose抜きの基本技術 84 |
分配則と吸収則を使いこなす 84 |
PLA上での論理圧縮…演算子(オペレータ)が働く 86 |
Bose抜き二つの大きなメリット…ハザード対策とテスタビリティの向上 88 |
共通項を使う論理圧縮 89 |
消える共通項,消えない共通項 91 |
論理圧縮の仲介をして発生し,消滅する共通項 92 |
PLA上での論理圧縮の実用テクニック94 |
論理圧縮を強引にトライする方法 95 |
論理圧縮の順序 96 |
論理圧縮の例題 98 |
共通項の復習 99 |
3.2 クワイン・マクラスキー法 101 |
Bose項を確実に発見する方法 101 |
クワイン・マクラスキー法をPLA上で行うルール 102 |
答が二つあるときの論理圧縮…ネガティブ・オプションを使う 104 |
AOゲート,OAゲートの入れ替えと部分圧縮 107 |
第4章 コンビネーション回路の設計 |
4.1 セレクタ,デコーダ,エンコーダの設計 111 |
ライン・データ・セレクタ 111 |
ライン・デコーダ 113 |
プライオリティ・エンコーダ 114 |
4.2 比較,演算回路の設計 118 |
マグニチュード・コンパレータ 118 |
ワン・インクリメント・アダー 119 |
コンスタント・アダー 123 |
バイナリ・フル・アダー 125 |
7ビット・スライス・アダー 127 |
サブトラクタ…引算器 129 |
アダーのディレイを小さくするキャリ・ルック・アヘッド 129 |
長大なバイナリ・アダーのスピードとサイズ 131 |
キャリ・スキップ方式バイナリ・アダー 134 |
多重のキャリ・スキップ・バイナリ・アダー 136 |
二つのバイナリ・マルチプライヤ方式 137 |
シーケンシャル・マルチプライヤ 140 |
フラッシュ・マルチプライア 141 |
第5章 カウンタ回路の設計 |
5.1 カウンタ設計のあらまし 143 |
カウンタを分類すると143 |
バイナリ・カウンタとジョンソン・カウンタの得失 144 |
ASICの最大動作速度を決めるもの…クリチカル・パス 147 |
クリチカル・パスを減らすには…論理圧縮 149 |
クリチカル・パスのめやす 151 |
5.2 さまざまなカウンタの設計 152 |
バイナリ・カウンタの設計 152 |
バイナリ・カウンタの別解 154 |
ダウン・カウンタが必要なとき 156 |
アップ/ダウン・カウンタの設計 157 |
機能制御を行うカウンタの設計 161 |
卒業試験…グレイ・コード・カウンタの設計 163 |
5.3 LFSR(M系列発生器)の設計 169 |
シフトレジスタの設計 169 |
LFSRは何に使えるのか 171 |
LFSRの周期 172 |
1/8000プリスケーラの設計 174 |
LFSRのマイナー・ループとトラップ回路 175 |
LFSRの逆カウンタ 177 |
●コラム3● CADの仕事 179 |
第6章 ジョンソン・カウンタの設計 |
6.1 ジョンソン・カウンタを高信頼性化する 181 |
ジョンソン・カウンタのメジャー・ループとマイナー・ループ 181 |
ジョンソン・カウンタをメジャー・ループだけで動作させる 184 |
誤動作を回復させる回路技術…ブービィ・トラップ 187 |
ブービィ・トラップ回路を評価するには 188 |
2ビット・ジョンソン・カウンタの場合 189 |
3ビット・ジョンソン・カウンタの場合 191 |
5ビット・ジョンソン・カウンタの場合 191 |
6ビット・ジョンソン・カウンタの場合 192 |
ユニバーサル・ジョンソン・カウンタ 194 |
6.2 ウォッシュアウト・シーケンスを組み込むには 196 |
効率の良いブービィ・トラップの設計は 196 |
汎ステート・ダイヤグラムを使う 197 |
Nビット・ジョンソン・カウンタの設計 198 |
JKラッチを使ったジョンソン・カウンタ 200 |
●コラム4● 仕様と設計とバグと 202 |
第7章 シーケンサの設計 |
7.1 シーケンサ設計の基礎知識 203 |
ハードウェア・シーケンサとは 203 |
シーケンサの動作のあらまし 205 |
ハードウェア・シーケンサの効果的な組み立て 207 |
シーケンサとマイクロプロセッサの違い 208 |
7.2 ジョンソン・カウンタをステート・マシンに仕立てる 209 |
ベースはジョンソン・カウンタ 209 |
シーケンサのコア…ステート・マシン 210 |
ステートの遷移を制御する…ストップ・モーション 211 |
DラッチとJKラッチとその他のラッチ 213 |
カウンタの長さを変える…非対称ジョンソン・カウンタ 216 |
ステート・マシンからステート・マシンを呼び出す 217 |
余りのステートは最後のステートに割り振る 219 |
ステート・マシンのオーバラップ・オペレーション 221 |
ステート・マシンを二つに分割すると 222 |
ジャンプするカウンタ…汎ジョンソン・カウンタ 223 |
汎ステート・ダイヤグラム 225 |
7.3 ワンホット・ステート・マシン vs ジョンソン・ステート・マシン 226 |
ワンホット・ステート・マシンとは 226 |
ワンホット・ステート・マシンでは起動前にリセットが必要 227 |
入力信号の同期用ラッチが必要 228 |
出力信号はスタティック・ハザードに注意 229 |
では2ホット・ステート・マシンか 231 |
例題…ワンホット・ステート・マシンによるRAS/CASジェネレータ 231 |
ジョンソン・ステート・マシンによるRAS/CASジェネレータ 235 |
7.4 スキップ・アクションの設計 236 |
スキップ・アクションとは 236 |
ノンコンディション・スキップ 238 |
コンディション・スキップ 240 |
マルチ・スキップ 241 |
スキップ・マニューバ 245 |
例題…DMAコントローラのシーケンサ 245 |
●コラム5● Caldwell's merging Rule(コードウェルの合併則) 247 |
第8章 シーケンサの高信頼性化技術 |
8.1 高信頼性シーケンサのまとめ 251 |
バグの温床は一箇所に集める 251 |
ムーア・マシンを実現しよう 253 |
一つの入力信号は一つのラッチにしか影響を与えてはいけない 254 |
ラッチが反転してもI/Oデバイスを破壊しないこと 255 |
8.2 高信頼性ジョンソン・ステート・マシンをめざす 257 |
ジョンソン・カウンタのマイナー・ループ 257 |
マイナー・ループからの脱出法 262 |
ジョンソン・ステート・マシンのブービィ・トラップ 263 |
最短ウォッシュアウトを実現するには 264 |
ブービィ・トラップ回路の実際 265 |
非対称ジョンソン・カウンタのブービィ・トラップ回路 267 |
●コラム6● ステート・マシンという言葉 267 |
第9章 シーケンサの応用設計 |
9.1 ソフトウェア処理かハードウェア処理か 269 |
プログラム・サイズとハードウェア・サイズの検討 269 |
処理速度と消費電力の検討 271 |
9.2 自動エスカレータの設計 272 |
自動エスカレータの動作のあらまし 272 |
状態を定義する 273 |
ラッチ0とラッチ1の動作 274 |
誤動作…ハザードへの対策を加える 275 |
ステートと場合分けの問題 279 |
9.3 信号機の設計 281 |
信号機の動作のあらまし 281 |
各ステートの条件 282 |
ジョンソン・カウンタとステート 283 |
9.4 ディジタル貯金箱の設計 288 |
ディジタル貯金箱の動作のあらまし 288 |
複数のステート・マシン 289 |
9.5 ディジタルPLLの設計 294 |
ディジタルPLLの構成のしかた 294 |
PLAから回路を作る 297 |
●コラム7● シリコン・コンパイラ 300 |
第10章 最適設計へのアプローチ |
10.1 バグを抜く道のり 301 |
バグとり…プロとしてのコスト感覚 301 |
IC設計のプランが3方式あったら 303 |
10.2 16ビット・マルチプライアの回路セッティング 305 |
16ビット・シーケンシャル・マルチプライア 305 |
シフトレジスタを使ったシーケンシャル・マルチプライア 306 |
スキップ・シーケンシャル・マルチプライア 311 |
スクイズ・プラン 319 |
ファースト・クイット 320 |
発熱に対する考察…余分のON/OFFはやらない 321 |
いろいろやってみよう 322 |
10.3 バブル・ソータの回路セッティング 322 |
パイプ・ラインで同期式SRAMの高速性を生かす 322 |
タイムチャートからステート・マシンへ 325 |
入力データが1位のとき 326 |
入力データが2位のとき 327 |
入力データが3位のとき 328 |
入力データが4位のとき 329 |
入力データが5位のとき 330 |
入力データが6位のとき 331 |
入力データが7位のとき 332 |
入力データが8位のとき 332 |
入力データが予選敗退したとき 333 |
ステート・ダイヤグラムを作るには 333 |
ラッチする?しない? 336 |
いろいろ試してみよう 336 |
参考文献 12 |
索引 342 |
第1章 ASIC=同期式設計=高信頼性設計への誘い |
1.1 究極のシステムにむかって 13 |
ASICの基本的なラッチ構造 13 |
ASICのデータ・パス 15 |
本書では完全同期式設計 16 |
現代のASIC設計法 18 |