ハードウェアの気になるあれこれスマートフォン用の表示で見るハードウェアの気になるあれこれ技術的に興味のあることを調べて書いてくブログ。Verilog-HDLスポンサーリンク前回の記事ではChiselの標準ライブラリからQueueを紹介した。www.tech-diningyo.info今日も引き続きChiselの標準ライブラリを紹介していく。今日はChiselのアービターだ。Chiselの標準ライブラリアービターChiselの標準ライブラリには2つのアービターが存在する。いずれのアービターも各々のモジュールの優先順位にした以外N個のDecoupledIOの入力から選択された一つのDecoupledIOを出力する。Arbiter:インデックスの小さいほうが優先されるタイプのアービターRRArbiter:ラウンド・ロビンで出力が選択されるタイプのアービターなお標準ライブラリのアービターはいずれも組み合わせ回路で構成されることに注意が必要だ。サンプルコード早速サンプルコードを見ていこう。}前回のQueueと同じくテスターにモジュールの実装を直接渡している。このコードを実行すると(当然だが)テストにパスする結果が得られる。テスターに渡したアービターは2つの入力のDecoupledIOを持っており、各々のvalid端子を0x1にすることで転送の要求を行う。上記のテストコードではvalidを立てた際にどちらのDecoupledIOの値が出力されるかをチェックしている。PASSED最初に書いたとおり、Arbiterは組み合わせ論理で構成されるため、テストの実行結果の最後にあるようにサイクルが経過していないことがわかる。以下が最初のサンプルコードからモジュールの定義部分のみを抜粋したものだ。"入力の数"))でアービターをインスタンス各々の端子を<>で接続となる。Arbiterから生成されるRTL確認のために上記のテストに入力したモジュールから生成されるRTLを見ておこう。生成されるモジュールは以下の2つだ。Chiselの標準ライブラリAribterから生成されたアービター。Arbiterをインスタンスしているラッパー階層のモジュール必要なところには適宜コメントを入れたつもりなので、そちらも一緒に見てほしい。"<>"で接続したとおりにRTL上で結線される。io_out_ready;endmoduleArbiterとRRArbiterを使ったサンプルただ単に例を見るだけというのも味気ない&RRArbiterを使ってないので、両方のアービターを使って優先順位の選択を切り替え可能にしたアービター・ジェネレータを作ってみる。}}一応、所望の機能にはなるんだけど、これだとarbの結線部分が野暮ったいんだよな。なんか方法はあるんだろうけどまだよくわからん。あとで調べることにしよう。因みに上記でRRArbiterを有効にしてRTLを生成すると、以下の様に直前に選択された入力を保持するようなRTLが生成されていた。endendmodule後で調べることは残ってるんだけど、Arbiterの紹介としてはこれでおしまい。次回は”ステートレス”な機能からビット単位の操作を行うユーティリティを紹介する予定。Arbiter前回に引き続きChiselで作るお試しNICの話。技書博2にChisel本を出してきました月別アーカイブはてなブログをはじめよう!diningyo-kpuku-jougekiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。