組み込み機器・ハードウェアの設計開発から装置製作まで社内一貫対応!

組み込み機器・ハードウェア設計製作.com
組み込み機器・ハードウェア設計製作.com

produced by株式会社アイディアイ

設計のポイント

verilog記述のポイント:双方向ピン(inout)を使用する

設計内容分類verilog記述
解決できる課題最適な記述

実現したい仕様・課題

データバスや一部の通信ライン(I2C等)のように、1本の端子で入力と出力の双方を時分割で行いたい場合があります。ピン数を削減しつつ、外部デバイスと双方向にデータをやり取りする回路を、バス衝突を起こさずに正しく実装したいというのが課題です。

設計のポイント

“双方向端子はinoutで宣言し、出力すべきタイミングでのみ信号を駆動し、それ以外のタイミングではハイインピーダンス(’z’)にして入力として機能させる、という制御が基本となります。出力イネーブル信号(oe)を用意し、assign文でoeが有効なときはデータを出力、無効なときはハイインピーダンスを割り当てる三状態(トライステート)バッファを構成します。たとえば assign ioDATA = oe ? data : 32’bz; と記述すれば、oe=1のときdataを出力し、oe=0のときバスを解放して相手側の出力を受け取れます。入力として取り込む際は、inout端子の値をそのまま内部信号として参照します。重要なのは、バス上で複数のドライバが同時に出力すると衝突(ドライブ競合)が起き、信号が不定になったり素子が損傷するおそれがあるため、出力イネーブルのタイミングを明確に設計し、同時に1つのドライバだけが駆動する状態を保証することです。方向切り替えの前後には、相手デバイスとのターンアラウンド時間(バス開放から次の駆動までの間隔)を設け、過渡的な衝突を避けます。FPGA外部の物理ピンに対してはトップレベルでinout宣言し、内部ロジックでは入力信号・出力信号・出力イネーブルの3つに分けて扱うと、設計・検証の見通しがよくなります。

【コード例】
inout [31:0] ioDATA;
assign ioDATA = oe ? data : 32’bz; // oe=1で出力, oe=0で入力(Hi-Z)”

補足情報

当事例のような、FPGA設計に関するポイントをまとめた冊子の無料DLが可能です。
是非以下よりご確認ください。

FPGA設計のポイント

>>ダウンロードはこちら!

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

組み込み機器・ハードウェア 設計製作.comを運営する株式会社アイディアイは、組み込み機器・ハードウェアの設計開発代行サービスを提供しています。
試験装置や制御機器、組み込みボードなど、設計・開発委託先をお探しの皆様、お気軽に当社に御相談ください。

技術資料のダウンロードはこちらから 技術資料ダウンロ―ド メールフォームでのお問い合わせはこちらから ご相談・お問合せ