2025.10.25 08:37
$monitorを使ってみる
・そういえば、Verilogでもprintfみたいなのはあったはずと、例によってお問い合わせすると、$display()、$writeに加えて$monitor()を教えてもらった。
・変化があったときに(たぶん代入があったとき?)にロギングしてくれるというもの。
・試しにinitial begin endの中に放り込んでVerilatorでシミュレーションさせてlog.txtなんかにリダイレクトしてvimでチェック。なかなか便利だ。
・で、これが合成の時に無視されるのか?と聞いたら「無視されます」ときっぱりとした返事。
・本当かな?とQuartusのLED点滅(FIFO付き)で試したら確かに無視された。ふむ。良いんじゃないか。
2025.10.24 08:31
とりあえず移動平均
・移動平均を実装してやるまえに少し整理してマジックナンバー部分をちゃんとparameter化してやろうということで書き換え。と、いじっていたら動きがおかしくなってきてなんだか収集ががつかない状態に。
・仕方ないので、git reset --hard HEAD@{0}して元に戻す。やはりgitしていると楽で良いな。
・改めてやり直してなんとなく少し良い感じになったけどまだおかしい。
・よくよく見たら平均値をだすための合計値算というのか、差分の積算のところでつまらないミス。やれやれ。とりあえず直してみたらそれなりの結果に。
・VSCodeの波形表示のプラグインをSurferからVaporViewに切り替え。どちらも.vcdファイルを開くと自動的に起動するし、使い勝手もあまり違わないけど、変化点の指定などは楽。ただ、波形の色などのセンスは・・・
2025.10.23 15:35
Nビットの0(や1)の表記法がわかった
・ご近所イオンで記帳して少し手元現金を補充。ついでにちょっとチャージ。
・イオンといえば、BYDの車の販売をするという話がいつしか「イオンがBYDの販売代理店になる」かのような話になったようだけど、実際にはセール期間中に展示と仲介をするよというだけだという公式メッセージ。
・この手のものは客観的に見て「それは変だな」と思いながらも複数目にすると騙されそうになる。気をつけないとな。
・Verilogで出力データ幅が16ビットで、センサのデータが12ビットのときに
parameter int OWIDTH=16;
parameter int SWIDTH=12;
logic [OWIDTH-1,0] outdata;
logic [SWIDTH-1,0] sensordata;
なんて具合にして上位4ビットを0にしたい時に
outdata = {4'h0,sensordata};
の4'h0を(OWIDTH-SWIDTH)'h0なんて書けるのかな?と思ったけど駄目。
どうやらビット数として判断してくれないらしくて、
{(OWIDTH-SWIDTH){1'h0}}
なんて具合に書けば良いらしい。要するに1ビットの0をN個並べたということか。
試しに1'h1にしてみたら確かに上位4ビットが"f"になったので、これで良いらしい。
2025.10.22 11:50
作業部屋はほぼ片付いたかな
・部屋から持ち出した棚の一つはリビングで書籍や小物の飾り棚にすることに。ニチニチソウを冬越しさせる場所にもできるかな。
・さて、作業部屋の方をどんどん片付けていく。もう要らないと思う基板類などは廃棄として、この際捨てるものは片っ端からゴミ袋に詰めて・・・ディスプレイを入手したときの大きな箱とかもう絶対いらないな・・などなど。
・床が見え始めると急に早くなった感じで、一気にすっきりした。
・ひとまず収めてみたら良い感じだ。今までゴチャついていたのがすっきり。
・さて、そんなところで、法人の方の記帳。どのみち入出金は全部預金経由だから通帳を入力すれば良いけど、その裏では厳然徴収があったり、社会保険料の預り金があったりするので、そのあたりもちゃんと再計算。ちょっと手間取ったけど、とりあえず9月半ばまでは入力終わり。
・そういえば、9月末近くの分はまだ記帳されていなかった。明日お残りをやっておこう。
2025.10.21 11:42
新しい棚がやってきた
・新しい棚を入手した。結構な大きさで、今作業部屋にしている部屋の整理に使ってやろうということで、レイアウトを考える。
・大きさからすると今棚2つを占領しているものがだいぶスッキリ収納できそうな感じ。
・とりあえず棚2つ分のものを全部部屋の外に追い出しやる。棚の裏や床の上にいろいろ落ちている「これ、ここにあったのか!」というものも。
・ある程度片付いたので掃除機をかけて床を拭いて・・・・空いたスペースで棚の組み立て。しかし、重い・・重い・・本当は二人でやるものだろうなと思いながら一人でなんとか組み立てていく。
・出来上がるとたいした存在感。とりあえず一番下は重たいクラシックなアマチュア無線機。TS-600/700とかFT-107とかの大物をはじめとして290、690、790、780、726、736・・・もう絶対使わないと思うようなものだらけだ・・・と思ってふと・・・これに変復調機つけたらFT-8とかできるのかな?
・部屋はまだ嵐の後のまま・・だけどさすがに限界。今日はここまで。
2025.10.20 15:34
Questaのライセンスが得られない
・とりあえず一般的なロジックはDSimなりVerilatorで良いのだけど、Altera独自のIPなどが含まれているとシミュレーションするのが厄介そうなので、ここはメーカーさんご推奨のシミュレータ(昔はModelSimだったけど、今はQuestaらしい)のほうが良いのかなということで、とりあえずダウンロードしてインストール。
・ここまでは良いのだけど、問題はライセンス。なぜかAzureなどと連携した模様でアプリで認証しろという。いつも使っているIntelアカウントと携帯用のメールアドレスは違うのが原因なのか、認証できない。
・散々四苦八苦したけど、諦めて携帯のメールアドレスでアカウントを作ってログインし直して改めてやったら携帯で認証して動かすということはできたけど、結局その先にまた進めない。
・流石にこんなことで何時間も・・・・となるとこちらも行き倒れ。諦めよう。
・
2025.10.19 07:40
FIFO記述:Geminiも間違えるのだ
・ヘッドポインタとテイルポインタを使ったFIFOがどう合成されるのかを想像するとポインタの値に応じて書き込み先や読み出し先を選択しなくてはいけないわけで、やっぱりうまくない気がする。
・ここはやはりハードウェアらしく普通にシフトレジスタにしたほうが良い。とはいえ、延々と<=を並べるのもfor文で回すのもあまり格好良くないな。
・というところで、
logic[2:0] fifo[8];
とかいうのを
logic[7:0][2:0] fifo;
みたいなアレイにしてやれば良いか。というところで、再びGemini君に聞くと
fifo = {fifo[7:1],newdata[2:0]};
と書けという。なんか違和感がありながら動かしてみるとやっぱり動かない。DSimでシミュレーションしてみてもやはり動かない。
・そりゃそうで、これじゃ最下位のものを書き換えているだけで全然シフトしないだろう。
fifo = {fifo[6:0],newdata[2:0]};
みたいにしないとシフトしないはずだし、実際にこう書けばちゃんと動く。
・ということで、Geminiに改めて聞いても「いえ、そうではありません」的な回答で、なかなか頑固。それならということで”fifo[7:1]はfifo[7],fifo[6]...fifo[1]だよね?”と聞いても最初のうちは頑固だったけど、回答の途中で気づいたらしい。”【訂正】: 前回の説明の一部が誤っていました。”が返ってきた。
・ちなみに、バッファのクリアは単純に
fifo=0;
で良い。
・使用したLEの数も減ったし、めでたしめでたし。
2025.10.18 13:34
移動平均フィルタでも入れてみるか
・移動平均フィルタでも入れてやろうかと思ってちょっと書き始めて、「そもそも初期値はどうするのだ?」となった。バッファの深さ分だけループで回すのはあまりに美しくないので例によってGeminiに聞けば
xxxbuf <= '{default:0};
と書けという。でも、これってMAX10でも合成できるのかな?一応確認しておくか。
・と思ったらverilatorがエラーだという。試しにQuartusでやってみてもやっぱりエラー。やはり駄目なのかなと思いながらふと”`”(バッククォート)じゃなくて”’”(アポストロフィー)じゃないのかと
xxxbuf <= ’{default:0};
と書いたらエラーが消えて合成も通った。
・これなら大丈夫かなというところで、作ってみたFIFOというのか、ヘッドポインタとテイルポインタを使った(いかにもソフトウェア的な)リングバッファを書いてみたらなんとなく動いた。
2025.10.17 18:06
デバッグ中
・とりあえず書いたものをボチボチとデバッグ。データ転送開始時の動作が変だったので修正したが、送信イネーブル信号を使った中断・再開動作がおかしい。このあたりハマりやすい場所だろうとは思っていたけど、ほら案の定というところ。
・そんなところである程度動き出したのでこのモジュールとテストベンチを分離前のディレクトリにコピー。
・これでもう一回VSCodeを立ち上げてDSimしてみたけどやっぱり以前と同じエラーメッセージ。これはおかしいだろう・・・ということで、いろいろつついてみる。
・結局LIBRARY CONFIGURATIONの中で2つのブロックを別々の名前にして分離していたのだけど、これをいつもと同じ場所(work)にまとめて登録したらエラーがでなくなった。なぜかわからないけどまぁそういうことなのだろう。結果良ければそれで良し。
2025.10.16 09:32
no title
・Windows11がアップデートしたらロック画面が変わったな。まぁやることは同じでPINコードを入れるだけだけども
・というところで、シミュレーションがボチボチ。よく見るとなんだか動きが変。1クロック分先走ってる。なんでこうなるかな。
・そんなところでDE10-Liteが手に入ることになりそうな感じ。とりあえずLEDやらスイッチ類などなどもありそうだし、これで下準備なテストをすれば良いかな。
・なんとなくブックマーク先を眺めていてそういえあったなと思ってクリックした先を見たら二ヶ月前にAct.1が完成していたらしい
【自主作成アニメ】東方想走夢 ACT 1「幻想の走り屋伝説」。
・Blenderなどを使った自主制作ということだけど、ここまでできてしまうのか。キャラをもう少し立たせてほしかったなというくらいで、もう・・・以下言葉なし。