ハードウェアの気になるあれこれ

技術的に興味のあることを調べて書いてくブログ。主にハードウェアがネタ。

Chisel Bootcamp - Module3.5(3) - グレイコードのエンコーダとデコーダ

前回のChiselの記事ではFIRRTLを可視化するツールdiagrammerを試してみた内容をまとめた。 今回はしばらく進めていなかったChisel-Bootcampに戻り、Module3.5の残りを見ていく。 オブジェクト指向プログラミングをChiselに適用すると??という話だ。

FIRRTLの可視化ツールdiagrammerを試してみた

少し前にChiselの公式ツイッターがツイートしていたdiagrammerというChiselから生成されるFIRRTLをグラフにして可視化するツールを試してみた内容を書いてみる。

Chiselで作ったモジュールをPeekPokeTesterでテストするまでの流れのまとめ

前回のChiselの記事では今更ではあるがChiselでデザインしたハードウェアをVerilogのRTLに変換するためにやることについてをまとめた。 今日はついでなので、前回の続きというかその前の段階とかに位置しているはずのChiselで作っているハードウェアをそのま…

Chiselで設計したハードウェアをVerilogのRTLに変換する流れのまとめ

前回のChiselの記事では`Bundle`を使ってオプションのIOポートをまとめて制御する方法を紹介した。 最近Chisel周りの調査をいろいろやっているが、ChiselのコードをVerilogのRTLに変換する方法についてを簡単にまとめた日本語の記事が見当たらない気がしたの…

ChiselのBundleとSomeを使ったデバッグ用インターフェースの作り方

前回のChiselの記事ではBundleの基本的な使い方についてをまとめたみた。 www.tech-diningyo.info 今回は前回まとめたBundleを使ってモジュールのIOポートをオプション化する方法についてをまとめておく。 ChiselでIOポートのオプション化するには? モジュ…

ChiselのBundleの使い方をまとめてみる

前回のChiselの記事では出力ポートに`0xdeadbeaf`を定数で入れたらエラーが出てハマったので解決方法について調べた。 今回はChisel-Bootcampではサラッと流されているChiselの`Bundle`を使ったデータの構造化についてをまとめてみる。

ChiselのUIntで大きな定数を使おうとしてハマった話

前回のChiselの記事ではChisel-bootcampのModule3.5のコンパニオン・オブジェクトとケース・クラスについてを勉強した。 今回はちょっとChisel-Bootcampから離れてChiselを試していたハマったUIntの大きい定数値の扱いについてを紹介していく。

Chisel Bootcamp - Module3.5(2) - Scalaのコンパニオン・オブジェクトとケース・クラス

前回のChiselの記事ではChisel-bootcampのModule3.5に入りScalaのオブジェクト指向言語としての特徴からクラスとトレイトについてを見ていった。・ 今回も引き続きModule3.5に取り組んでいく。前回の最後に記載したとおり今日はScalaのオブジェクト。

Chisel Bootcamp - Module3.5(1) - Scalaの抽象クラスとトレイト

前回のChiselの記事ではChisel-bootcampのModule3.4の練習問題でニューラルネットワークのニューロン回路を実装するという問題に取り組んだ。 www.tech-diningyo.info 今回はModule3.5に入っていく。ここで扱うトピックはScalaの関数型言語とは別に存在する…

Chisel Bootcamp - Module3.4(3) - Chiselで作るニューロン回路とChiselのFixedPoint

前回のChiselの記事ではChisel-bootcampのModule3.4でScalaの持つ関数型言語としての特徴をChiselにどう活かすかについてを勉強した。 www.tech-diningyo.info 前回の終わりにも書いたとおり、今日はModule3.4の残している練習問題に取り組んでいく。 Chisel…

Chisel Bootcamp - Module3.4(2) - 関数型言語の特徴を活かしたChiselのHW設計

前回のChiselの記事ではChisel-bootcampのModule3.4に入りChiselのベースになっているScalaの関数型言語としての特徴についてを確認した。 今日も引き続きModule3.4を勉強するが、今日はいよいよ関数型言語の特徴をどうChiselに活かすかという部分についてを…

Chisel Bootcamp - Module3.4(1) - 関数型言語

前回のChiselの記事ではChisel-bootcampのModule3.3の高階関数を使った設計の仕上げとして練習問題に取り組んだ。 今日からModule3.4に入る。Module3.4は関数型言語についてだ。

Chisel Bootcamp - Module3.3(2) - 高階関数 - map等を使ったアービターの設計

前回のChiselの記事では久しぶりにChisel-bootcampの学習に戻りScalaの高階関数についてを学習した。 www.tech-diningyo.info 今日も引き続き高階関数の章でもう少し例題の確認と練習問題に取り組んでいく。 高階関数 練習問題:map 例題:zipWithIndex 例題:r…

Chisel Bootcamp - Module3.3 (1) - 高階関数

前回のChisel-Bootcampの記事ではやっと標準ライブラリの紹介を終えたところだった。 www.tech-diningyo.info ちょっと間が空いたがChisel-Bootcampを進めていこうと思う。今日は高階関数だ。 Module 3.3: 高階関数 モチベーション 2つのFIRフィルタの物語 …

riscv-sodorをintelliJ IDEAで解析する環境を整えた話

前回のChiselネタではVCD波形の確認に使うGTKWaveのビルドについてをまとめた。 www.tech-diningyo.info 今回はChisel-bootcampの傍らで確認を始めているRISC-Vの実装の一つsodorの実行&解析環境を作る際にIntelliJ IDEAとsbtの扱いでハマった話を備忘のた…

Ultra96向けのBSP&PetaLinuxで作ったrootfsへの差し替え

前回のUltra96ネタではUltra96用のBSPとPetaLinuxを使って自前でビルドしたBOOT.BINを使ってボード上にbitファイルを読み込み、Linux側からアクセスが可能なことを確認した。 www.tech-diningyo.info 次はドライバでも、、と書いたのだが、前回は少しサボっ…

GTKWaveのインストールについて

前回のChiselネタではIntelliJ IDEA上に構築したChisel-templateのハードウェア実装環境にオリジナルのデザインを実装しテストの実行と波形デバッグを行う方法についてを調査した。 www.tech-diningyo.info 今日はその際にVCDの波形データを見るのに使用した…

chisel-templateを使ったオリジナルデザインの作成 - テンプレートへの組み込みからVCD波形ダンプまで

前回のChiselの記事ではchisel-templateをIntellij IDEAのプロジェクトにしてChiselの開発環境を構築する方法についてを紹介した。 www.tech-diningyo.info 今回は前回の終わりに書いたとおり、構築したchisel-templateプロジェクトに自前のモジュールを追加…

IntelliJ IDEAとchisel-templateを使ったChiselの開発環境構築 on Windows10

昨年末の記事ではWindowsのノートPCしか作業環境がなく、それをいいことにWindows上でのChisel-Bootcampの環境構築の手順を紹介してみた。 新年最初の記事ではついでにWindows上でChiselの開発環境を整えるには何をすればいいのかを調べてみたので紹介してみ…

Chisel用のjupyter-notebook環境構築 on Windows10

現在絶賛Chiselの勉強中で、そのためにChisel-Bootcampというものを使って文法を学んできた。 これまでは自宅のデスクトップPCで作業をしており、そちらはWindowsとLinux(Ubuntu16.04LTS)のデュアルブートになっているため、通常こういった開発系の作業はU…

Ultra96向けのBSPを使ったPetaLinuxのビルド

前回のUltra96ネタでは、ボードのチュートリアルを一通り試してみて、付属のマイクロSDの環境やVivado&SDKを使うことで基本的な開発を行うことが出来る感触を得た。 今回はせっかくのZynqボードなので、PS領域のブートローダーやLinux環境を構築して、マイ…

Chisel Bootcamp - 幕間(7) - カウンタ(Counter)

前回のChiselの記事では標準ライブラリに含まれているマルチプレクサに関するブロック(PriorityMux/Mux1H)を紹介した。 今日は幕間で紹介されているChiselのライブラリとしては最後になる`Counter`について見ていく。

AvnetのUltra96を買ってみた

勢いでAvnet Ultra96ボードを購入してみた。 せっかくなのでチュートリアルを一通り試して、どんなもんかね?というのをまとめてアドベントカレンダーのネタにしてみたもの。

Chisel Bootcamp - 幕間(6) - マルチプレクサ(PriorityMuxとMux1H)

前回の記事ではChiselの標準ライブラリに含まれているOneHotエンコードに関するブロックを紹介した。 今日はChiselのライブラリに用意されている2つのマルチプレクサについて見ていく。

Chisel Bootcamp - 幕間(5) - OneHotなデータを扱うライブラリ(UIntToOHとOHToUInt)

前回の記事ではChiselの標準ライブラリに含まれているビット単位の操作を行うブロックをを紹介した。 今日はChiselからOneHotエンコードのユーティリティを勉強していく。

Chisel Bootcamp - 幕間(4) - PopCountとReverse

前回の記事ではChiselの標準ライブラリから`Arbiter`を紹介した。 今日も引き続きChiselの標準ライブラリを紹介していく。今日はChiselのユーティリティブロックからいくつかのモジュールを勉強する。

Chisel Bootcamp - 幕間(3) - ChiselのArbiter

前回の記事ではChiselの標準ライブラリからQueueを紹介した。 今日も引き続きChiselの標準ライブラリを紹介していく。今日はChiselのアービターだ。

Chisel Bootcamp - 幕間(2) - ChiselのQueue

前回の記事ではChisel BootcampはModule3.2のと3.3の幕間の章に入り、Chiselの標準ライブラリの紹介の導入としてDecoupledIOについてを学習した。 今日も引き続きChiselの標準ライブラリを紹介していく。今日はChiselの`Queue`だ。

Chisel Bootcamp - 幕間(1) - ChiselのAPI - Decoupled

前回の記事ではChisel Bootcamp]はModule3.2の練習問題でRISC-VのISA向けのレジスタファイルを作成した。 今日はModule3.2とModule3.3の間にある幕間の章でChiselの標準ライブラリについて紹介していく。最初はDecoupledIOから。

Chisel Bootcamp - Module3.2(6) - 練習問題:Vecを使ったRISC-Vのレジスタファイル

前回の記事ではChisel BootcampはChiselのコレクション型である`Vec`について調べた。 今日はModule3.2の締めくくりとして練習問題を見ていく。