ハードウェアの気になるあれこれスマートフォン用の表示で見るハードウェアの気になるあれこれ技術的に興味のあることを調べて書いてくブログ。トップモジュールChiselスポンサーリンク前回に引き続きChiselで作るお試しNICの話。最後はDecoder/ArbiterをインスタンスするTopブロックについて。NICTopソースコードパラメタライズ用のパラメータIOポートDecoder/Arbiterのインスタンス各モジュールの接続テスト動作波形NICTopN個のDecoderとM個のArbiterを含む最上位階層。名前はNICTopにしてます。ソースコードまずはソースコードを。}}ここは結構書ける部分があるかも。パラメタライズ用のパラメータこの部分が今回一番試してみたかった部分。NIC用のパラメータとしてNICParamsというクラスを定義して、それに渡すのはSeq[NICPortParams]というパラメータクラスのシーケンスにしてみた。このようにしておくことでNIC内部の各Decoder/Arbiterの設定を個々に変更できるかという部分を確認してみる。outParams.length}IOポート次にIOポート用のクラスについてだが、NICになるので前回/前々回のDecoderとArbiterが入ることもありin/outともにVecになっている。NICIO(p).asInstanceOf[this.type]}Decoder/Arbiterのインスタンス以下がDecoder/Arbiterのインスタンス部分だ。ap.sliceEn)))NICTopのパラメータに渡ってきているNICParamsの中のDecoder/Arbiter用のパラメータが入っているので、これをmapを使ってひとつずつ取り出して、モジュールインスタンスしたものをdecs/arbsに格納することで所望の数のモジュールをインスタンスしている。最後に作ったdecs/arbsを接続する処理が以下のようになる。}基本的な考え方は接続するポート同士を同時に取り出すためにzipを使ってforループで処理をするということだ。今回はdecs(0)のM個の出力をarbs(0..M).in(0)にdecs(1)のM個の出力をarbs(0..M).in(1)にという感じでdecsの出力ポートのインデックスとarbs(M)に入力のインデックスを一致させるようにループで処理を行い、接続した。テストとりあえず簡単に動きを見てみたかったので、以下のようなテストを作成した。上記のテスト実行時の動作波形は以下のようになった。out(3)に振り分けられているのがわかるかと思う。NICTopの動作波形4回位の記事で簡単なプロトコルを使ってNICを作ってみた。今回はNICPortParamsの中身はレジスタスライスを入れるかどうかだけの設定だが、ここにアドレスマップの設定等を入れてやれば、任意のアドレス範囲でアクセス先を制御することなども出来ると思う。いうことで、簡単なNICを作ってみた話でした。Arbiter前回に引き続きChiselで作るお試しNICの話。Decoder前回に引き続きChiselで作るお試しNICの話。技書博2にChisel本を出してきました月別アーカイブはてなブログをはじめよう!diningyo-kpuku-jougekiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。