Altifigence Academy
デジタル設計無料 · 入門

デジタル論理回路

デジタル信号と AND・OR・XOR などの論理ゲートから始め、組合せ回路、ラッチ・フリップフロップ、カウンタ、状態機械を設計します。真理値表・数式・回路・波形を結び付け、RTL 実習で検証します。選択制の発展編ではデータパスとインターフェースまで広げます。

組合せ論理・順序論理SystemVerilog波形の読み方
マイラーニング

このコースで学ぶこと

  • 論理値と電圧を区別し、8 種類のゲートの真理値表・記号・等価回路を説明する。
  • 仕様から SOP・POS・カルノー図を使って組合せ回路を設計し、全入力組合せを検査する。
  • エンコーダ・デコーダ・MUX・DEMUX・加算器・比較器の入力条件と境界値を定義する。
  • ラッチとフリップフロップの違いを説明し、reset・enable・クロックによる更新規則を設計する。
  • カウンタ・シフトレジスタ・状態機械を RTL で実装し、タイミング・非同期入力・デバウンスを解析する。
  • 独立した参照モデルで設計を検証し、重なりを許す 101 パターン検出器を完成させる。
  • 選択制の発展編で ALU・メモリ・FIFO・パイプライン・インターフェースへ展開する。

はじめる前に

ブラウザー演習は教育用モデルで、HDLのコンパイルや実行は行いません。配布ソースを別途実行する場合は、OSに合ったDigital Design Studioの手順に従い、必要な操作ではログインしてください。

インストールと初回起動 ↗ · ダウンロード ↗

カリキュラム

  1. デジタル信号と数の表現
    • デジタル信号:電圧を 0 と 1 として読む条件概念

      論理値と電圧を区別し、入力しきい値・ノイズマージン・伝搬遅延を計算します。

    • 数体系と固定幅の表現概念

      基数変換にとどまらず、表現範囲・必要なビット数・切り捨てによる誤差を計算します。

  2. 論理ゲートと真理値表
    • 基本ゲート:AND・OR・NOT・BUFFER概念

      回路記号と真理値表を結び付け、複数のゲートで条件を構成します。

    • NAND・NOR と否定記号の読み方概念

      否定の範囲を区別し、ド・モルガンの法則で同じ機能の記号と式を結び付けます。

    • XOR・XNOR:一致・不一致とパリティ概念

      2 入力 XOR と多入力パリティを区別し、誤り検出の限界を説明します。

    • 万能ゲート:NAND だけで回路を作る概念

      NAND・NOR の機能的完全性を回路構成で示し、XOR の中間信号を検証します。

  3. 論理式から回路設計へ
    • ブール代数・等価変形・実装コスト概念

      ド・モルガンの法則と因数分解で回路を変形し、論理的等価性とタイミングを区別します。

    • 真理値表から論理式へ:最小項・最大項・SOP・POS概念

      出力が 1 の行と 0 の行から同じ関数を導き、カルノー図の表記と結び付けます。

    • カルノー図とドントケアの条件概念

      グレイコードの隣接性を使って論理式を減らし、使わない入力に関する仮定を明示します。

    • 設計実習:仕様から 3 入力多数決回路へ実習

      自然言語の仕様を完全な真理値表にし、最小化・実装・全数検査をつなげます。

  4. アドレスと選択回路
    • デコーダ・ワンホット選択・有効な入力概念

      二進アドレスを個別の選択線に変換し、enable・範囲・選択の不変条件を設計します。

    • エンコーダと優先順位:複数の要求から一つを選ぶ概念

      ワンホットエンコーダの入力仮定と、優先エンコーダの valid・選択結果を区別します。

    • DEMUX とデコーダ:選択した経路へデータを送る概念

      MUX・DEMUX・デコーダの方向と役割を比較し、ワンホット・ワンホットまたはゼロの条件を検証します。

    • 信号とポート:幅・方向・時間の取り決め概念

      インターフェースを読み、組合せ出力と状態出力の検証基準を分けます。

    • 真理値表から MUX とシャノン展開へ概念

      選択論理を式で導き、任意の論理関数を MUX で分解します。

  5. 算術回路と比較
    • 加算器とキャリー伝搬構造概念

      全加算器の式を導き、リップルキャリーの機能・幅・遅延を合わせて解析します。

    • 2 の補数・符号拡張・オーバーフロー概念

      式と反例を使い、ビット列の signed 解釈と加算のオーバーフロー条件を区別します。

    • 比較器と境界値の仕様概念

      同じビット列の unsigned・signed 比較を区別し、境界条件を検証します。

  6. ラッチ・フリップフロップと状態の記憶
    • 記憶の始まり:フィードバックと SR・D ラッチ概念

      交差結合の二つの安定状態を理解し、SR の禁止入力と D ラッチの透過期間を説明します。

    • D フリップフロップ:レベルからエッジへ概念

      ラッチとフリップフロップの更新時点を比べ、レジスタ・セットアップ・ホールドの意味を結び付けます。

    • フリップフロップ・enable・制御の優先順位概念

      保持・ロード・リセットを次状態式で定め、意図しないクロックゲーティングを避けます。

    • 同期式の状態遷移とクロックの役割概念

      同じ以前の状態を読むレジスタの集合として、同期システムを解釈します。

  7. MUX の RTL 実装と検証
    • 組合せ選択とレジスタ出力の遅延概念

      MUX の結果をレジスタに記憶したとき、インターフェースと遅延がどう変わるか解析します。

    • 組合せ RTL と完全な代入概念

      条件演算子と always_comb で同じ関数を表し、ラッチを生む代入漏れを見つけます。

    • 実習:MUX の全数検査とレジスタ出力の解析実習

      同じ入力を組合せ経路とレジスタ経路に与え、真理値表とサンプリング時点で結果を検証します。

    • 波形のサンプリング時点と因果関係概念

      組合せの安定化・クロックでの取込み・イベント順を分けて波形を読みます。

    • MUX の検証:全数検査とプロパティ概念

      組合せ入力の網羅性と記憶動作を別々に検査し、反例を最小化します。

    • 設計確認:選択回路の等価性と観測時点理解度チェック

      真理値表で十分な検証と、クロック観測が必要な検証を区別します。

  8. カウンタと同期式の状態更新
    • 状態数・カウンタ幅・未使用コード概念

      カウント範囲から記憶ビット数を求め、不正な状態からの回復方針を定義します。

    • カウンタの次状態とリセットの優先順位概念

      増加・保持・リセット・循環を一つの仕様にまとめ、エッジごとの結果を計算します。

    • ノンブロッキング代入と同時状態更新概念

      旧値と次の値を分け、パイプライン・カウンタ RTL を正確に解釈します。

    • 実習:カウンタのリセット・循環・不変条件の検証実習

      各立上りエッジの状態を参照モデルと照合し、初期値・リセット・ビット幅の影響を分けます。

    • モジュロ・飽和カウンタと終了パルス概念

      最大値の扱いと terminal-count 信号の正確なサイクルを設計します。

    • カウンタのデバッグと最小反例概念

      リセット・enable・循環境界の誤りを区別する短いテストを設計します。

    • 設計確認:幅・優先順位・循環の境界理解度チェック

      与えられた状態遷移の仕様から、境界値と同時制御入力を判断します。

  9. シフトレジスタとデータの流れ
    • ベクトルのインデックス・ビット順・符号概念

      ビット番号・シリアル転送順・算術解釈を分けてデータパスを読みます。

    • シリアル入力とフレーム境界概念

      入力順と有効エッジを定め、シリアル・パラレル変換のビット配置を計算します。

    • シフトレジスタの状態方程式概念

      ビット移動をベクトルの状態遷移で表し、記憶長と出力遅延を結び付けます。

    • スライス・連結・繰返し演算の幅概念

      連結する信号の総幅と値の保存条件を計算し、データパスを構成します。

    • 実習:シリアルデータの移動とビット順の検証実習

      ビット列と整数参照モデルを併用し、方向・失われるビット・リセット後の遅延を検証します。

    • サイクル遅延とスループットの区別概念

      N 段遅延線の観測基準を定め、レイテンシとスループットを定量的に計算します。

    • シフト回路の検証とデータ・valid の整列概念

      対称パターンに隠れる誤りと、valid 信号の 1 サイクルずれを見つけます。

    • 設計確認:遅延・整列・入力の保存理解度チェック

      シフト方向に加え、有効データの移動回数と観測基準を確認します。

  10. タイミング・実際の入力・状態機械
    • セットアップ・ホールドとタイミング予算概念

      最大・最小経路遅延を分け、クロック周波数とは別のホールド条件を計算します。

    • 論理ハザードと等価式の限界概念

      定常状態で等価な回路が、伝搬遅延により異なる過渡波形を作ることを解析します。

    • クロック領域の境界とメタステーブル概念

      2 段同期化回路の適用範囲を理解し、単一ビット・短パルス・多ビット転送を区別します。

    • 実際のボタン入力:同期化・デバウンス・一回のイベント概念

      非同期入力の同期化と接点バウンス除去を区別し、連続サンプルに基づくデバウンサを設計します。

    • 状態機械:状態・遷移・出力を分ける概念

      仕様表から FSM を書き、Moore・Mealy 出力、不正状態、要求の扱いを比較します。

    • 検証計画・カバレッジ・独立した参照モデル概念

      テスト通過と仕様充足を区別し、境界・交差条件・最小反例を検証計画に結び付けます。

    • 総合設計:重なりを許す 101 パターン検出器概念

      状態最小化・入力有効性・レジスタ出力・独立参照検証を一つの設計に適用します。

  11. 選択発展 · 算術データパス
    • ALU と zero・negative・carry・overflow フラグ概念

      共有加算器で ADD/SUB を構成し、キャリーと符号付きオーバーフローを分けて比較条件まで導きます。

    • バレルシフタと段階的な MUX概念

      可変シフトを 1・2・4・8 桁の MUX 段で実装し、方向共有・符号埋め・幅を超えるシフトを扱います。

    • 固定小数点・丸め・飽和概念

      W,F で数値範囲を定め、guard・sticky による偶数丸めと丸め後の飽和を設計します。

    • 複数サイクルの unsigned シフト加算乗算器概念

      部分積の累算を W クロックに分け、受付・完了時点、最後の加算、幅、不変条件を検証します。

  12. 選択発展 · メモリと FIFO
    • 同期メモリと読み書き競合の契約概念

      レジスタ付き読み出しの応答時点と read-first・write-first・no-change を区別し、valid とアドレス初期化の役割を分けて設計する。

    • 2 読み出し・1 書き込みレジスタファイルとバイパス概念

      独立した二つの読み出しポートと同期書き込みを実装し、ポートごとの競合バイパスと初期化・valid 方針を検算する。

    • 単一クロック FIFO のポインタと境界条件の方針概念

      深さ 4 の FIFO のポインタと occupancy を実装し、empty と full で同時 push/pop を受け付ける条件を明確にする。

    • FIFO・メモリの検証計画と独立したスコアボード概念

      実装のポインタに依存しない queue スコアボードを作り、境界・reset・valid・未初期化読み出しを検証計画へ結び付ける。

  13. 選択発展 · パイプラインとインターフェース
    • Ready/valid と 1 要素のエラスティックバッファ概念

      停止可能なデータパスで、欠落や重複のない転送条件と同時入出力を設計する。

    • 乗加算パイプラインとデータの整列概念

      演算をレジスタ境界で分割し、データ・valid・補助オペランドが同じトランザクションに属するよう設計する。

    • 停止可能なパイプラインとバックプレッシャー概念

      段ごとに ready を計算し、停止中や同時移動時のデータの欠落・重複・再計算を防ぐ。

    • レジスタインターフェースと副作用の発生時点概念

      アドレス・バイト書き込み・応答停止を定義し、一つの要求が正確に一度の状態変更につながるようにする。

    • 総合実習:UART 送信器とフレームのタイミング概念

      分周カウンタ・シフトレジスタ・フロー制御を組み合わせて 8N1 フレームを作り、ビット境界を検証する。

選択はこのブラウザに適用されます。フッターからいつでも変更できます。