2024.12.07 19:25
CQのMAX10ボードがLinuxで使えた(恥ずかしいオチ)
・CQのMAX10ボードがやっぱりLinuxではだめなのかと思いながらもう一回試してみていた。改めて眺めているとなんか挙動がおかしい気がする。要するに問題なのはUSB Blaster互換のPICのファームウェアなのだ。このMAX10基板でLinux対応のファームウェアに書き換える手順は
1) Windows版のQuartusでPICのファームウェアを書き換えるロジックをFPGA内蔵のROMに書き込む(MAX10はCyclone2(だったか)にROMを内蔵したようなものなので)
2) ジャンパピンを切り替えてFPGAからPICを書き換えるような接続に変更
3) MAX10を起動
4) MAX10がPICにファームウェアを書き込み
という具合。
このとき、LEDの挙動がどうも説明どおりでない。書き換えをしたはずだけどひょっとして書き換えられていないのではないかとあれこれ眺めていたら、基板の裏に妙に飛び出しているピンが一つ。
・「???」とよく見たらFPGAからPIC書き込みに使うジャンパをするためのピンヘッダのピンが抜けてきている。更にじっと見たら半田がついてない。
・たぶん、組み立てた直後はかけらのような半田でつながっていたので、組み立て直後のPICファーム書き込みは出来ていて、その後半田が割れて接触不良。今回のアップデートしたファームウェアは書き込まれなかったと、そんな感じじゃないかな。
・ということで、はんだ付けしなおしてリトライしたら、なんかそれっぽい挙動。
・アップデートが終わったであろうMAX10ボードをUbuntu環境に持ってきたら・・・書き込みできた!
・ということで、芋半田には気をつけようというとっても恥ずかしいオチ。
・これでLinux環境でOKだな。
2024.11.27 22:53
T8F81とかいうFPGA
・そんなところで、お願いしていたUSB BlasterIIが届いたらしい。近々取りに行かねばな。
・そういえば、MAX10くらいならそこらで買えないのかななどと探してみていたら、道草モードに入ってしまって、秋月さんで
T8F81 DIP化モジュールキットなんていうものを見かける。2500円なりのFPGAだけどチュートリアルを見たらRISC-Vを入れたりしているのか。
2024.11.21 07:52
Quatusのオチはそこか
・どうやらテスト用で使っていたCQさんのMAX10基板のUSB Blaster互換な書き込み器(PICを使っている)がLinuxに非対応だったらしい。
・Windows版なら可能なのか?ということで書籍の付属CDのQuartusの古いのをインストールしようとしたらなんだかカタカタカタとすごい音。以前自腹購入したPCの内蔵ドライブやUSBの外付けドライブのどちらも同じような感じ。だいぶ粘っていろいろやってみたけど、傷ついているのかうまく読めないらしい。
・諦めてサイトで一番古い17.0をダウンロード。
・さて、仮想マシン下で・・・と思ったら「認証しろ」メッセージが出ている。認証も何も、ちゃんとインストールしていただろうが!と思ってはた・・・と
・このWindows環境、テストするために仮想マシンのバックアップをとってからインストールして、メモリ容量だのCPUのコア数だの、何だのをその都度変更してテストしてはもとに戻すということをやっていたので、MS側にはハードウェアの変更が頻繁に行われているように見えてしまうのか。
・とりあえず再認証して問題は無くなった。これからは実験が終わるまではネットを切断しておくことにしよう。
・さて、インストールを始めたら終わらない終わらない。
・やっと終わって書き込みしてみると・・・何も問題ないかのように動作。
・それなら・・ということで、CQさんのところでアップロードされている更新ファイルを使ってアップデートしてみる。
・書き込みはうまくいったらしい・・・けど、やっぱりLinuxではだめみたいだな。
・仕方ない。FPGA側の基板は普通にJTAGポートが出ているらしいし、USB Blasterを入手するかな。どうせ必要になるのは確実だし。
2024.11.15 11:50
Alteraさん、いらっしゃーい
・さて、そんなところで今度はAltera(Intel)さんも使うことになりそう。
・で、例によって調べる。Quartusとか言うんだったっけ。ということで検索検索。やはり開発環境はLinuxだよねということで調べると.runというかいうファイルを落として実行権つけて実行すれば良いらしい。
・テスト用のFPGAボードは・・・と思ってそういえば「MAX10実験キットで学ぶFPGA&コンピュータ」なんていうのを手に入れて組み立てしたよな・・・と探してみたらあったあった。基板の組み立てまでやってその後放置していたんだっけ。
・とりあえず、ハードとソフトの下準備は出来た。明日試してみよう。
2024.11.10 07:09
クロック数削減
・というところで、6クロックかかる。もう少しなんとかならないのかとあれこれやってみるけど、あまり変わらないな。
・やはりビット数を減らすしかないかなということでちょっと弄ってみる。8ビットまで減らすと1クロックでいけるけどさすがに演算結果はボロボロ。
・ある程度正しく行ける範囲はということで探すと24ビット。これだと3クロックでいけるのか。
2024.11.09 22:19
VitisHLSで漸化式の論理合成
・昨日試したプログラムを固定小数点化して、VitisHLSで論理合成にかけてみる。意外というのか、この程度は当たり前というのか、あっさりと合成された。
・更にAXI4Liteインターフェースを追加して、Zynqのプロセッサ側からアクセスできるようにしてシミュレーション。なるほど良い感じで動く。しかし、AXI4-Liteを使うと遅い、遅い。
・ということでインターフェースを単純化してバースト的にデータが出てくるように変更。今度はどうかと眺めたら100MHz動作で6クロック程度で回せるという感じ。
・なんか、結構あっさりいくな。「1クロック入魂!」なものでなければこのくらいでも充分いけそうだ。
2024.11.04 13:07
VitisHLSのバグ・・・ひどいでしょ、それ
・何度やってもだめ。
・ログをぼんやり見ていたら目の前を赤い文字がよぎった気がしてスクロールバックしてみたら、「ERROR: [IMPL 213-28] Failed to generate IP.」
・前後を見てもよくわからない。こんな基本的なところ、ほぼ全員引っかかっているだろうと思って検索したらほら案の定。「強制的に2021年にすれば動く」なんていうコメントがぞろぞろと。
・なんとバグの原因が2022年問題・・・・32ビットでエポックからの日時を計時しているとオーバーフローするという、遠い昔にUNIXで将来起こりううる問題として何度も何度も何度も何度も何度も・・・言われていたことをやらかしていたらくて、パッチをあてろという。
・パッチをダウンロードして展開。添付ドキュメントにかかれていたとおりに動かしてもエラーになって動かない。
・改めてよく見たら、このパッチのドキュメントがまた間違っているというオチがついていた。
・一体どうなっているのやら。これがXilinxクオリティか。Alteraの方はどうなんだろうな。
・とりあえず動いたようだけど、まだ安心できない。ここまで基本的なところに問題があると何を信用したら良いのやら。
2024.11.03 12:53
VitisHLSからExportIPできない
・VitsHLSでIPを使ってVivadoで利用しようとしたけどうまく行かない。IPが見つからない。.zipファイルができるはずだけど、ディレクトリを指定しても何もない。
・またか・・・・Xilinxのツールって一体どうなっているのだろう。細かいところでバグが出るのはある程度しかたないけど、そもそも基本的なところが動かないというバグが多すぎる感じがする。
・バージョンアップするとできていたことができなくなるとか。一体どういうことなんだろうな。
2024.11.01 06:44
高位合成を試す
・もう11月か。
・というところでVitisHLS(どうしても「論理合成」のイメージがあってVivadoHLSと書いてしまうクセがあるな)を試す。
・まずは単純に2項演算して返すだけのものと、それをテストするテストベンチからというところかな。書き方はといってもほぼ何も考えることはなくて普通にC/C++なプログラム。
・これを合成してみるというのだけどこれまた何も考えることはなくて単純に合成された。シミュレーションしてみる・・・といっても普通にgccなどでやるときと変わらない。
・そこから先で波形ビューアで動作波形を眺められるのがいかにもハードっぽいい。ただ、これがVivadoを起動する形なので時間がかかる。最初動かないのかな?と思って3回ほど起動してしまったらVivadoが3つ立ち上がってしまってあわてて消す。
・最適化の指定なども選択してプルダウンメニューからという感じで記述自体をそれ用に書き換える必要はない。
・で、2項演算の入出力をAXIバス経由でできるようにといってもごく単純でディレクティブをプルダウンメニューから選ぶだけ。
・更に合成したものをVivadoで使えるようにIP化するのもクリックだけのおまかせで、ドキュメント含めて必要なあれこれが全部自動生成。
・なんだか随分とサービスが良いな。
2024.10.30 08:01
2020.2でHLS起動した
・だめだな・・・・・・ということで2020.1に下げてみる。
・これまた時間がかかる。
・そういえば、Windows版でのtar.gz解凍がコマンドライン上からtarでできること、Linuxはリモートなファイルシステム上に置いたものを展開しようとすると変なエラーが出ることなどをこの騒動のさなかに知った。
・以前はオンラインでインストールだったけど、今は全部まとめてダウンロードしてインストールするしかない模様。おかげでオフラインで何度でも再インストールできる。
・さてと、とりあえずWindows上で2020.1まで戻してみる。HLSは無事に起動した。が、Linux上でと思ったら何かごちゃごちゃ言われてうまくいかない。
・調べる気力もなくて、2020.2に戻す。HLSはやっぱり立ち上がらない。もう、これだけおかしければ絶対同じ人がいるだろうと検索。
・と、悩んでいたら
フォーラムの回答が見つかった。なんと、スクリプトが間違っているぞということ。それも末尾の1文字。試してみると、見事に起動。
・よくこんなところを見つけたものだと関心するやら呆れるやらだけど、とにかく助かった。感謝感謝。