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;
なんていう具合に分割すれば良いのかな?と思ってやってみたら良い感じ。

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

2024.09.30 09:11

ステッピングモータをちょいと


・ステッピングモータを動かしてみようかというところでステッピングモータドライバをザクッと見た。なんかお手頃そうなものは無いかなと探していて見つけた東芝さんのTC78H670FTG。本家のデータシートも新し目だし、Sparkfanのボードもスイッチサイエンスさんで入手できるようだし。
・さて、10月からの話はどうなるのだろう。さっぱりわからないのだけど聞いてみよう。

2024.09.29 21:19

アマチュア無線再開させたい


・シミュレーションしていたものをいろいろいじっていたので、改めてボードの書き込もうとしたらなんだかよくわからないエラー。
・何度やってもだめだったので、一回終了させて再度起動して書き込んだら問題なし。なんだかなぁ。まぁそんなものか。
・なんとなくアマチュア無線。Wires-Xをいじりたくなってきてしまった。しかし、FT8、Wires、D-STARなどなどと。対応無線機が無いと面倒なのか……というよりアンテナを先になんとかしないとな。SWRが全然下がらないというのは環境が悪いのかな。HFはノイズまみれで使い物にならないし。

2024.09.28 21:03

ちょっと山梨


・ちょっと山梨方面へ行って戻ってきた。
・あちらに行くと必ず寄ることにしている「大包餃子 五大」さん。ついでに、ご当地なスーパーで買い物をしておく。車で走っていてふと気になった店でシュークリームなども買ってきて。これもなかなか美味。
・さて、昨日のシミュレーションをもう一回おさらい。うん、問題ない。
・しかし、謎な部分はまだまだたくさん。特にVivadoのエラーメッセージは謎が多い。iverilogを使って初めてわかるものもあるけど、


2024.09.27 20:58

シミュレーションをやってみる


・そんなところでシミュレーション
・まずはbehavior simulation。とりあえず動いているLED点滅をベースにして、ここにテストベンチを追加。
・Add SourcesでAdd or create simulation sourcesでテストベンチを追加。Window=>Sourcesでソース一覧のところでSimulationの下にあるテストベンチをトップモジュールに設定。
・記述はちょっと記憶のサルベージに手間取ったけど、なんとかリハビリ。
 ・与える信号はreg、受け取る(出力されてくる)信号はwire
 ・モジュール名 インスタンス名(.モジュール信号(テストベンチ信号名),…);でインスタンス化
 ・initial begin 〜 endで上から順に
 ・#1000;などで時間稼ぎ
 ・$finish;でシミュレーション終了
 ・always begin 〜 endで繰り返し(クロック生成など)
まぁ、なんていうあたりでとりあえずの用は済む。
・iverilog+vvp+twinwave/gtkwaveあたりをするなら
 ・$dumpfile("ファイル名");でダンプファイル指定
 ・$dumpvars(2,テストベンチ名);でテストベンチの信号を取り込み
 を追加しておけば良い。
・これでシミュレーション。普通にビルドした後なら、論理合成前後、インプリメンテーション前後の波形も何事もなく眺められる。もちろん、インプリメンテーション後だと内部のディレイなんかも。
・というあたりで、難しくはない……というかこのくらいまでなら結構簡単。


2024.09.26 14:31

Zyboケース


・さて、とりあえずWindowsは大丈夫になったかな?と思ったらこれが駄目。なんとか起動したタスクマネージャーで見るとCPU使用率が100%。
・でもディスクアクセスとかは殆どないのだけど、何かが猛然と走り回っているということなのか。なんだかよくわからない。
・振り込みはもう一台のPC側からやることにして簡単に修了。
・そのまま更に数時間。VMwareToolsのアップデートメニューが出てきたので少し動けるようになったようだ。
・そんなところで、Zyboさんのボードを収める箱がほしい。100均で何かないのかと思って行ってみたもののなかなか適当な大きさのものは少ないな。
・なんとか見つけたのがスモークな色合いの冷凍対応の保存容器。100円だろうと思って買ったら200円商品だった。とりあえず入ることは入ったけど・・・なんだかな。

2024.09.25 21:23

WindowsUpdateの威力業務妨害か


・ネットバンキングを……と思って起動したらまたやられた。WindowsUpdateとかいう威力業務妨害ソフトの問答無用起動。
・結局2時間くら使い物にならない状態が継続した。
・まぁ、仮想マシン下だからその間他のことはできるとはいうものの、なんでこんなものに煩わされなくてはならないのだろう。

・さて、そんなところでVGAに画面をだしてみたいなとDiligentさんのサンプルを読み込ませてみようとしたらD:ドライブのファイルがないよという酷いメッセージ。grepして探してみたらドライブレターがしっかり指定されている。なんだってこんなサンプル作ったのかな。
・別途書籍のサンプルを読ませてプロジェクト作成してビルドしてみたらとりあえずビットストリームの作成までうまくった。
・とりあえずこれで試してみよう。

2024.09.24 07:43

rgb2dvi(HDMI出力)IP


・そういえば、HDMIの入出力があるなぁとDilignetさんのページを見るとサンプルがある。HDMI入力を受けてHDMI出力しようという感じか。
・そういえば、DilignetさんのRGBからHDMIへの変換をするIPって製作事例で使っている例を見たな。
・ちょっと検索をかけてrgb-to-DVI(HDMIの名称を使うにはお墨付きが必要になるという大人の事情でDVIなのだろう)のIPコアのドキュメントがあったので、開いてみたらDDCは使わないんだな。
・ということは、通常のRGBなディスプレイと一緒でこっちの都合の勝手なタイミング(もちろん、ディスプレイ側が対応している範囲で)で送ってしまっても良いとことなのかな。

2024.09.23 07:52

VivadoでVerilog


・今までは回路図+CPUという感じだったけど、今回はなるべく言語……VerilogとHDLで片付けようと思って、VivadoでVerilogしてみることに。
・ちょうどいい感じでZyboでLEDBLINKをVHDLでやっている例があったのでちょっとやってみる。一応論理合成してGenerate Bitstreamまでちゃんとできた。
・ならばということで、VHDLをVerilogにして同じものを作成。Verilogもだいぶ忘れていたけど、IcarosVerilog(iverilog)とvvp、TwinWaveで遊んでいたときのものが出てきたのでそちらを眺めて記憶の底からサルベージ。
・とりあえずさらっと書いて同じように通ったけど、Open Implimentation Designを開いたらこんなメッセージ。
----------
WARNING! Critical violations of the methodology design rules detected. Critical violations may contribute to timing failures or cause functional issues in hardware. Run report_methodology for more information.
----------
・単純にclkでカウントして出力しているだけだなんだけどなと思ってふと。このデザインって、32ビットのカウンタを作って24ビット芽からLEDへ出力……ってことは上の桁は未使用?
・ということで、こいつが怪しんじゃないかとカウンタのサイズを必要な分だけに。これでもう一度やってみたら……消えた。なるほどそういうことか。わかりにくいメッセージだな。
・というところでなんとなく解ったので書き味をしてみる。Zyboのジャンパピン設定は
 JP5:JTAG
 JP6:USB
として、表側の左上にあるUSBのMicro-BコネクタとPCをつないで、左上のSW4をON!
・これでPCにはCOMポートとして認識されるので、あとはVivadoの左端のFlow Navigatorの一番下の方にある「Open Hardware Manager」。なんかデバッグコアがねぇぞとかほざいてるけど、知ったことではないので、そのまま強行してProgram。
・LEDが点滅したので動いたらしい。試しにカウンタを書き換え、更に信号をwireにしてassignする形にしてみる。そういえば、Verilogなんだからiverilogで構文チェックもできるよなと思って試したらOK。いいんじゃないかな。
・ところで、これではピン番号を直接指定したのだけど、Zyboの制約ファイルがあるはずだから、それに従っておいても良いはずだな。ということで、今度はZyboZ7の制約ファイルをダウンロード。まぁ、適当な場所で良いんだろうということで、プロジェクトの上に置いて、指定してやる。
・中身を見るとコメントだらけになっていて、どうやら「使うものだけコメントアウトしてね」というスタンスらしい。Vivadoの上で制約ファイルを開いてLEDとsysclkを選択して画面上の"//"ボタンをクリックしてコメントアウト。
・これでもう一回合成すれば……とその前にモジュールの入出力信号をこの制約ファイルの名前にあわせておかないとな。
・で、変更して再び合成。ちょっとつまらないミスもあったけど、修正してうまくいった。めでたし、めでたし。
・あとはC/C++との合体とか、IP化して内部のCPUから利用できるようにするとか、もうちょと開拓していかないといけないな。

2024.09.22 17:24

VitisHLSチュートリアル


・とりあえずVitisHLSのチュートリアル
・ちょっと本文と画面の不一致はあったけど、とりあえず最後まで到達
・まぁ大まかな流れはわかったけど表示されるレポートなどの細かいところやら最適化などに関する説明は「わかってる人なららわかる」というシロモノだなぁ。
・さて、Web上に誰か実際にやった人はいないのかな?と検索してみたけど、出てくるのは結構古いものばかり。まぁ仕方ないか。
・とりあえず、全体のフローとか相関が見えないことにはな。ぼちぼちやっていこう。

2024.09.21 08:00

はんだごて


・温度調整付きのコテがでてきたのでなんとなく使ってみる。その前にそもそも温度ってどのくらいが良いのだろう?
?と検索してJAPAN UNIXさんのサイトを見つける。
・「鉛フリーはんだでは350℃、鉛入り(共晶はんだ)では330℃が適正温度とされています」とある。・え?PX238って一般電子工作用だけど380℃だよなぁと思って調べたらそのとおり。これじゃ温度が高すぎるんじゃないだろうかな。
・PX-201の調整ダイヤルを見ると350℃よりちょっと下……なるほどね。買った時にこのくらいで使っていたのか。
・ということで、捨てても良い基板を使って共晶半田ではんだ付けしてみる。いくつかやってみたけど、半田の表面がいつものように曇った肌になる。
・少し温度を下げてみる。少しきれいになった気がする。更に少しだけ下げてみたら、溶けるまで時間はちょっと掛かるけど、仕上がりの艶がいい。半田がキラッとしている。
・これをしばらく使ってみるか。
・そんなところで、PX-238で検索したらPX-238を改造して温度調整できるようにした例なんていうページがあった(HTTPSでないので警告がでるけど)。
・半固定抵抗にして外から調整可能にしてしまえば良いということらしい。なるほどね。今度やってみても良いかもしれないな。
・で、試しに一本バラしてみた。上のネジを3本、横のネジを1本外すだけ。簡単だ。
・ズルズルっと引き出した基板の裏側になるほど半固定抵抗が斜めになってついている。現在の設定値をテスターで測ると1177Ωと表示された。さっきのサイト情報だと100Ω程度減らすと60℃位下がるらしいので、とりあえず1070Ωくらいにしてみて再組み立て。
・ちょっと試すとなるほどちょっと溶けるのが遅くなった気がする。仕上がりはまずまずだけどもうちょっとかな。
・ということで、はんだごてが冷えてからもう一度分解して1000Ωちょうどくらいにして再組み立て。
・これで試したら仕上がりがなかなか良い艶。やはりこの手のものをつけるには少々温度が高すぎたのだろう。
・そんなところで片付けているうちに今回手配したのと同じじゃないかと思えるコテ先を発見。なんでこんなのがあるのかな。完全に記憶から消えてるけど秋葉原通いをしていた頃に買ったんだろうかな。