<< 2026年02月
新着記事
最近のコメント
月別
カテゴリ
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上に誰か実際にやった人はいないのかな?と検索してみたけど、出てくるのは結構古いものばかり。まぁ仕方ないか。
・とりあえず、全体のフローとか相関が見えないことにはな。ぼちぼちやっていこう。