<< 2024年10月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
新着記事
最近のコメント
月別
カテゴリ
2024.10.10 14:22

独自IPが使えない


・どうもVivadoでAXI4を雛形にしたIPとZynqのコアだけを置いてビルド、それをExportしてVivadoで……とやったときにxil_printf()などが一切使えない。
・GPIOなどを配置してやるとxil_printfは使えるようになるけど、自分で作ったIP用のライブラリなどは一切取り込まれないということになっている感じがする。
・何か間違っているのか全くわからないというのが頭の痛いところ。こんな基本的なところで躓いていては先に進めないじゃないか。どうしたものかな。

2024.10.08 20:44

エラー頻発


・なんか、だんだん話がおかしくなってくるような感じ。昨日のエラーはもう一回やりなおしていったらうまくいったのだけど、作成した(つもり)なIPをVivadoで組み込んでビルドしてVitisに移してプログラムをビルドしていくとエラー。ヘッダファイルが無いと言い張るのだけど、原因がまるでわからない。以前はこれでうまく言っていたと思うのだけど、何が違うのだろう。もう一回やりなおすか。

2024.10.07 20:36

FPGAのIP作成で躓く


・FPGAでIPを作成する手立てはだいたいわかってきた。ただ、もう一歩うまくいかない。なんだろうなぁ。そんなに変わったことはやっていないはずなんだけど。

2024.10.06 21:17

FPGAのIP作成


・さて、VivadoでのIPの作り方を少し。とりあえずAXI4バスはつながっていないとCPUからいじりにくいのでVivadoに雛形を作らせる。
・VivadoのTool=>Create and package new IPしてやって、Create AXI4 Peripheralしてやると、雛形のVerilog(Verilogなプロジェクト扱いにしているので)ファイルができる。
・このファイルではレジスタを4個持っていて、AXI4バス経由でレジスタに書き込んだ値がそのまま読めるというプロジェクトができる。
・このレジスタの先にゴニョゴニョとつけてやれば良い。とりあえずZyboのLEDにつないでみる。
・これで「Package Steps」の項目を順番にクリックして勧めていって終わればユーザ定義のIPとして登録されて元のプロジェクトに戻る。
・あとはBlock DesignでCPUと自分で作ったIPをIP Catalogから引っ張り出してきてMake Externalして外部に引っ張り出して、信号名を.xdcと合わせておく。
・これで残りは「勝手につないで」しておけば、リセットだのAXI4のバススイッチだのが勝手に生成されて完了。
・あとはビルドしてExport HadwareすればVivadoでの作業は終わり。あとはVivadoだな。

2024.10.05 16:03

ドラッグストアオープン


・なんだか朝からドタバタと忙しい一日だった。
・車ですぐ行けるくらいのところに新しいドラッグストアがオープンしたので言ってみる。
・今まで利用していた店舗よりかなり広くていろいろなものが充実。店の半分くらいは食品コーナーというのもすごいな。そういえばこの近辺にスーパーらしいスーパーは無いのか(かつてあったけど、ちょっと大きなことがあって閉店し、今は駐車場になっている)。
・ぐるっと回っていたらオープンセールなのか結構お安いものが並んでいたり、あっちの店だとこれしか無いのに、こんなにバリエーションあったのかというものがあったりしてつい購入。
・ちなみに、このチェーン店の豆乳と牛乳とヨーグルトと卵が近隣スーパー含めた中で一番安いということを私は知っている。

2024.10.04 15:53

ACアダプタ入手


・65WクラスでノートPCに使えそうなACアダプタがあったので入手。ちょっと大きいけどまぁ使える。
・これで家はこれを使うことにして移動用のバッグには今まで使っていた方を忍ばせておけば、スタバのようなところでちょっと作業したいというときも電池の心配をしなくていい。
・今更ながら調べてみたけど、Type−Cの電源って65Wといいつつも基本的に流せるのは3A程度なんだな。5Vでも3Aだし、9Vでも3A。まぁ、考えてみればコネクタはそのまま使うわけで、5Vで10A以上流せるようなコネクタに変更するわけにもいかないので、電圧の方を引き上げるということで対処するのだな。
・ということで、TypeCに1.5kオームのプルダウン抵抗2本で5V-3A。まぁいいところだろうな。


2024.10.03 13:31

Linux環境復活へ


・なんとか以前の環境を書き戻して起動。なんだかやたらと遅くなった気がするのは裏でアップデートでもやっているのかな。まぁ、Windows Updateみたいにまるで使い物にならなくなるようなことはないけど。
・ついでにメニュー関係もMenu Editorで修正。先月ハマった経緯も思い出しながらxyzzyの方を削除してLTSpiceの方に作成。起動してみると、wineなので起動までの時間はかかるけどうまくいった。更に元からあったxyzzyの方を削除。これも問題なし。
・あとはこの8ヶ月近くの間に新規に入れたものを追加すれば良いのだな。Blenderはとりあえず良いとして、LibreCADくらいは入れておくか。
・そういえば、他にないのかな?と思って検索していると、nano CAD freeというものがあることを知る。製品版が上位にあるフリーバージョンという感じ。体験版ではないので期間の限定とか、ファイル入出力ができないといったような制限はないようだ。DWG形式が読み書きできるのは(というか、DWGをネイティブとして使っているらしい)良いけど、DWG2018はサポートしていないようなので、結局ビューアとしてはやはりAutoCadさんのサイトでオンラインで見る形かな。

2024.10.02 16:56

Linux環境がぐちゃぐちゃに


・作業用のLinux環境がおかしくなった。原因はわかっている。24.04LTSにアップデートしますか?というのが出てきたので「OK」したのだけど、途中でコケたのだ。
・とりあえず起動するし、使えてはいたのだけどちょっと新規にインストールしようしたものがエラーだらけでしょうがない。
・これはaptでupdateやupgradeしないとだめかなとやったらこれが全くだめ。エラーメッセージを見るとやはり新旧バージョンが入り乱れるような状況になっているのが致命的であるということらしい。
・困ったけど、ファイルを調べて元に戻すのはまず不可能。となれば……バックアップから戻すしかない。さて、バックアップHDDに保存したのはいつだったかと思ったら今年の2月。10ヶ月前に逆戻りか。
・まぁ、新規にインストールしたものは限られているし、作成していたファイル類はほぼ全部共有ディスク上にあるのでローカルディスク上で新規作成されたファイル類をバックアップして、仮想マシンそのものを2月のもので上書きしてしまえば良いかな。

2024.10.01 08:10

ILAを試してみる


・FPGAでILAを使ってみる。以前Block DesignでやっていたときはILAモジュールを貼り付けた後にあちこちのファイルに検索をかけて中身をごちゃごちゃといじってやらないといけないという超のつくような面倒臭さだったのだけど、今度は簡単というか、当たり前になった。
・Flow navigatorのOpen Synthessis DesignのSetup Debugを選択。あとは眺めたい信号をピックアップしていけば良い。ただ、問題はソースコードの信号がどれなのかわかりにくくなるということ。たとえばcounterというのがあると、これはF/Fというのかラッチというのか……が生成されるわけだけど、こいつの入力、出力、リセットに全部counterのプリフィックスがついてくる。ここに「reset」とかわかりやすい名前が付けば良いのだけど、そうはいかない。
counter_reg_n_0_0_0[0]とかcounter_reg[8]_i_1_n_5とか、判じ物状態。
・入出力に関しては入出力バッファがあるおかげでわかりやすいのだけど中身はそんな感じ。まぁ、仕方ない。
・とりあえず信号をピックアップして、GenerateBitStream。ロジックアナライザの機能もまた論理回路としてターゲットに付加されることになるので、当然のように再ビルドが必要になる。
・xdcファイルの書き換えも必要になるらしくて、「新しく作るか、既存のものに上書きするか」と聞いてくるのでとりあえず「上書きして良いよ」としてみる。
・さて、その後ロジックアナライザ画面はどうやってだすのだろうと思っていたら、普通の場合と同じようにダウンロードしてやれば勝手にロジックアナライザ画面が起動する。なかなかサービスがいい。
・で、右下のペインでトリガ条件とかを設定してGoしてやれば普通にロジアナ
。簡単だな。
・ところでロジックアナライザ機能を外して元に戻すには、再びSetup Debugすれば良い……はずなのだけど、自動で書き換えられたxdcファイル(実際には後ろにロジアナ用の記述が足されるだけだけど)が元に戻っていない感じ。
・まぁ、このあたりは普通にエディタを使うなり、Vivado内蔵のエディタなりで開いて削ってしまえば良いだけの話だけど。

・そんなところでUG-908の説明

を見ると、verilogの場合には
 (* mark_debug = "true" *)reg [`CMIN+3:0] counter;
のような感じで、(* mark_debug = "true" *)をつけてやるという手もあるらしいので、これをやってみると、信号名選択のところで、自動的にピックアップされた。
・ただ、この例みたいに配列の全信号がターゲットになると大きすぎるときもある。
 (* mark_debug = "true" *)reg [`CMIN+3:`CMIN] counter;
 reg [`CMIN-1:0] counter;
なんていう具合に分割すれば良いのかな?と思ってやってみたら良い感じ。

たぶんこれをつけておけば論理合成のときに最適化で無くなったりしないんだな。実用的にはこんなふうにソースコードをいじるほうが正解かな。