HDL時代に求められる論理回路設計とは ―― 回路記号を使わない設計手法の考え方
tag: 半導体 電子回路 ディジタル・デザイン
技術解説 2009年11月 6日
2.動作仕様の表現方法
●ゲートやフリップフロップは使わない
本稿ではゲートやフリップフロップなどの回路記号を使わないで論理回路設計を説明します.動作仕様は真理値表とタイミング・チャートで表現し,回路はブロック図で示します.
具体例を示します.図4は6進カウンタの例です.図4-(a)で示された動作仕様を実現したのが図4-(b)です.ここでは,これ以上具体化した回路は扱いません.
回路図で設計していたころは,ブロック図はあくまでも概要であって,最終的には詳細な回路図が必要でした.つまり図4-(c)のようにゲートとフリップフロップで構成された回路が最終目標だったわけです.
●ブロック図をもとに言語で記述する
言語設計では機能が明確になっていて,言語で表現できるレベルであれば,それ以上細かく表現する必要はありません.図4-(b)のブロック図で示したものは,ほぼそのまま言語で表現できます.個々のブロックの動作を,設計言語の構文で正確に記述できるのです.
図5に具体例を示します.2種類のブロックをそれぞれVerilog HDLで記述してみました.宣言部分を除くと,機能を表現しているのはたった1行です.ビット幅を変更しても,この1行に変更はありません.宣言部分を修正するだけです.
言語で表現できれば,あとは論理合成ツールが実際の回路に変換してくれます.言語で表現したところで設計は終了です.FPGA開発ツールのような統合環境では,設計言語で記述した回路から,論理合成,配置・配線,コンフィグレーション用のデータ作成までやってくれます.もちろん回路図で書いてもFPGA化できますが,そんな手間をかける必要はないのです.
●演算回路やカウンタを使いこなして設計する
今までは個々のゲート回路やフリップフロップの動作を理解してから,実際の設計を行っていました.加算やカウントなどの動作はいたって単純ですが,回路図にするとそれなりの量になります.従来では,これをひとつひとつ追いかけて,加算やカウント動作をゲートやフリップフロップで実現する方法を学んでいました.
ここでは,わざわざ遠回りするような学習方法をやめ,単純な機能のものは単純なまま理解できるようにしました.より高度な回路を設計できるようになるためには必要なことだと思います.従って加算やセレクタなどは一つのブロックで表現します.カウンタなどは,最終的には一つのブロックで表現しますが,細かい仕様の違いにより多くの種類があるので,最初のうちは図4-(b)のように分解して表現します.
加算やカウンタの動作や回路構成を学ぶのが,論理設計学習の目的ではありません.さまざまな仕様を論理回路で実現できるよう,応用力をもった設計能力を身に付けるのが目的です.加算やカウンタのブロックを用いて,仕様を実現できるようになるために本稿を活用してください.