TEL:086-227-0113
info@gopher-tec.jp
TOP page 製品情報 FPGAソース Asynchronous Arbiter
Asynchronous Arbiter

4つの非同期リクエスト入力を非同期信号のまま調停するアービタモジュールです。
クロックなし、RSフリップフロップ(以下、RS-FF)ありという典型的な非同期回路のため、そのままの
状態でFPGAへの適用はお勧めできません。(1)SIMモデルとして使う、(2)頭の体操ネタとして理解
するにとどめる、(3)内容を十分理解した上であえてFPGAに適用してみる の内の(1)(2)までが良い
でしょう。特にFPGAの設計を始めたばかりの方やタイミング制約に不慣れな方は、勢いで(3)まで行くと
大失敗する可能性が大ですので、取扱いにはくれぐれもご注意下さい。

内容については、言葉で書くとかえって分かり難くなるため程々にしますが、要するにRS-FF

を”セット・リセット両方アサートした状態から、どちらか、または両方の信号をネゲートすると、どちらが
先にネゲートしたかラッチする”

…ものととらえ、これを全ての入力の組合せで行い、最後に結果を集計するという回路
(そう、あの74F7〇6の論理!)です。

サービスされたリクエスト信号がネゲートされた時点で、その次のリクエスト信号へサービスの対象が
移りますが、その際も、ラウンドロビンでも固定優先順位でもなく、”ほぼ早い者勝ち”でサービス対象
が移っていくのがこのアービタの面白いところ。SIMでランダムにリクエスト入力してみると、各RS-FFが
何をラッチしていて、どう出力に作用しているか、よく理解できるでしょう。

念のため繰り返しますが、このソースコードそのままをFPGAで実現するのは、熟慮の上、自己責任で行って
下さい。論理合成や配置配線の各ツールがゲートループをどう扱うのか、出力段にグリッチを残さない
ようなリメディをどう構成するか等、入念に準備しないと大変なことになりますので。

Port I/O  Description 
RST in 非同期リセット入力 (Active High) です。
パワーオン時、またはシステムリセット時にアサートして下さい。
REQ_L[3:0]
in リクエスト入力(Active Low)です。
REQ_L[3:0]の中から1つだけが選ばれ、次のGNT_L[3:0]のどれか1つがアサートされ
ます。REQ_L[3:0]には優先順位はありません。基本的に、”早い者勝ち”です。
REQ_L[x]は、対応するGNT_L[x]がアサートされるまでアサートしたままとして下さい。
GNT_L[3:0] out グラント出力(Active Low)です。
リクエスト信号を調停し、グラント信号が1つだけアサートされます。
GNT_L[x]がアサートされると、それに対応するREQ_L[x]がネゲートされるまで、
他のリクエスト信号の状態によらず、グラント出力を維持します。
※特に注記のない限り、信号は全て正論理です。
本ソースコードはVHDL版とVerilog版となっております。
詳細は下記の資料ダウンロードをクリックください。
ソースコード自体は当社WEBストアにて販売しております。

Asynchronous Arbiter
資料ダウンロード