2025.11.24 22:21
3DCADの旅で出会ったOpenSCADと仲間たち
・ちょっと引っ越しの後片付けの手伝いに行く。
・それほど大したダンボールの数ではないのだけど、それでも結構大変。
・さて、3Dプリンタとなるとやはり3D CADが気になるわけで、今ちょこちょこ使っているFreeCAD以外に何かあるのかなということで眺めているとOpenSCADなるものに巡り合う。CADというよりプログラミング言語的に3Dのオブジェクトを記述するという感じ。
・でご本家の
このページを眺めていたら最後のところに関連リンクがある。ちょっと試しにリンクを踏んでみて特に面白いなと思えたのが次の二つ。
・
Blocks CADはOpenSCADを、Scratchのようなブロックというのかタイルというのか・・・をGUI上でベタベタ貼り付けていくようにしたもの
・
ImplicitCADはブラウザだけでとりあえず遊べるようにしたもの
という感じで、いろいろ派生しているようだな。とりあえず面白そうなのでインストールしていこう。
2025.11.23 22:09
Bambu A1 miniをポチッ
・というところで、ちょっとメカ物に手を出したくなって、ついセールになっていたBambu A1 mini(なんか、クセでBanbooと書いてしまっていたかも)とPLAフィラメントをポチッとしてしまった。
・PLAはかなり硬いので、機構がうまくできるかな。
・ギヤなどをやるならノズルを0.2mmのを入手したほうが良いのだろうけど、とりあえず標準の0.4mmでどのくらいいけるのか試してみよう。
2025.11.22 06:36
暫定Final:Interface
・ということで、シミュレーションしようとしたらやはり駄目。
・結局はQuartusによる論理合成と、DSimやVerilatorによるinterfaceの解釈が違うということが根本原因の模様。ModelSimとかあっちの方なら大丈夫なのかは不明だけど、やはりここは最大公約数的にいかないとな。
・ということで、暫定FinalAnswerとしては「外部との接続ポートにinterfaceは使わない」ということにしよう。残念だけど仕方ない。
2025.11.21 21:33
Quartusではとりあえず解決:interface
・というところで一回は諦めたinterfaceだけど、解決策が見つかった。
・これは試したはずなんだがなというところで、Quartusではポートリストに書いた信号をそのままmodport()に記載してしまえば良い。
・結局Quartusはinterfaceのポートリストではなくmodportの方を参照してピンに割り付けてしまうようなので、interfaceで信号の始末とかをやっても意味がない。DSimとかVerilatorではもちろんこんなことにはならないのだけど。
・シミュレーションできるようにテストベンチなどを書くのはこれからだけど、まずは突破方法だけは見つかったというところだな。
2025.11.20 15:03
とりあえず結論:interface
・さて、とりあえずLED点滅を使って実際にFPGAでお試し。
・結果を言えば駄目だった。
・interfaceのポートリスト以外で宣言した信号がピンに引き出されてしまうのを避けるためにvirtualに設定してみたのだけどもね。
たとえば、
interface xxx (... ,inout logic[7:0] data_bi);
....
logic data_oe;
logic[7:0] data_out;
assign data_bi = (data_oe) ? data_out : 'z;
....
endinterface
なんてことをして、data_outが出るのをやめさせるためにvirtualにすると、data_biにも何も出力されない。data_oeがうまく読めていないのかと思ったけどそうではない。
・ということで残念ながら、普通にトップモジュールのポートリストで書くしかないなという、つまらない結論にしておこう。
・長い長い遠回りだったけど、こういうのも経験さ。おかげで勉強になった。
2025.11.19 23:48
腕時計のいただきもの
・先日古い某会社名入りのなんかの記念品のような腕時計を頂いた。古いとはいってもクォーツ式なのでアンティークというほどではないけれど、ベルトはボロボロになってしまっている。
・とりあえず電池交換をお願いするかと近所に出向いたら即日はできないようで預かり品になっていたのを今日取りに行った。
・「残念ながら電池を入れ替えても動きませんでした」ということで、引き取ったのだけど、竜頭をいじっていたら突然動き出した。でも、動かなかったということはまたすぐ止まるのかな。
・しばらく様子を見ていたけど動いているようなので、ちょっと使ってみるかとベルト交換。手持ちのものだと残念ながらサイズが合わなかったのでホームセンターに買いに行く。
・元からついていたのと似たようなものがあったので、購入。昔は1000円くらいで買えたとおもったのだけど、1500円ほど。
・交換は難しくない。ピンをグッと押して付け外しするだけ。
・交換してみるとなかなか良い感じ。いつまで動くかわからないけどありがたく使わせていただこう。
2025.11.18 23:29
Quartus君とinterface
・さてinterfaceが思ったように動き出したのでそれならばと合成してみることに。
・interfaceのポートリストには外部ピンとつなぎたいもの、そして内部のモジュールとつなぎたい信号類はinterfaceの本体側に書いてある。イメージとしてはこんな感じ。
interface (input logic RESET, CLOCK, inout logic[7:0] DATABUS);
logic[7:0] data_out;
logic[7:0] data_in;
logic data_oe;
modport slave(output data_out, data_oe, input data_in);
endinterface
・Quartusでプロジェクトを作成して、ソースコードをプロジェクトのディレクトリにコピーしてQuartusに登録。
・これでAnalysis&Synthesis。エラーなく終わったのでAssignments=>Pin Plannerを見るとdata_outなどまでピンに出そうとしている。
・どうやらQuartusはポートリストと内部との区別をしないらしい。
・これではちょっと困る。何か手はないのかとダメ元でGeminiにお問い合わせしていたら「設定ファイルでVirtualに書き換える」というのを提示された。
・そんな設定があるなら絶対Quartus上からできるはず・・・と探したらアルティマさん作成の
Quartus Prime
よく使用するピン・オプションの設定方法なんていうドキュメントがあった。これの最後の方の11章で「仮想ピンの設定」がある。なるほど、ピンに割り当てたく無いならこんなふうにすれば良いのか。
・Assignments=>Assignment Editorで起動しておいて、試しにTo欄でdata_outをvirtualに設定して、もう一回Analysis&SynthesisしてPin Plannnerを開いたらピンのリストからdata_outピンが消えた。なるほどね。
・ちゃんと動くのかどうかはまだわからないけど、これで外部バスをinterfaceとして記述して、テストベンチを作ってシミュレーションして、Quartusで合成するというところまで問題なくいけることはわかった。なんか随分手間取ったけど、おかげでいろいろすっきりと腑に落ちたな。
・あとは実際に動くかどうか。これは実機で動作確認できるソースにしないとな。DE-10LITE使ってLEDとスイッチでやってみるか。
2025.11.17 19:30
やっと動いたInterface
・というところで実装してみる。話はわかったので難しくはない。
・まずはターゲットとなるモジュールを作る。
・普通だとこれをテストベンチでインスタンス化してテストベンチ内の記述でダミーの信号を与えるわけだけど今回はちょっと違う。
・このターゲットの相手となるバスマスタモジュールを作る。
・そして、テストベンチではターゲットとバスマスタモジュール、そしてInterfaceをインスタンス化してこの3つを結合する。
・双方向バスの3ステート制御はInterface部分のお仕事
という具合。
・これでやっとできたかなと思ったけど、DSimではエラーが出る。間違ってないはずなんだけどなと思いながらVerilatorでやってみたら何も問題なく出来上がって、シミュレーションのも動いた。
・さて、DSimのエラーは何だろうと改めてメッセージを見たら「そんなインターフェースなんて知らんぞ」ということ。あぁ、ひょっとして・・・ということで、プロジェクトにインターフェースのソースコードも追加してやって改めてやり直したら無事にパスして、ちゃんと波形も表示された。
・さて、あとはこういう記述がQuartusで許されるのか、ちゃんと合成できるのかというところだな。
・そんなところでいろいろ算段。こういうのは苦手なんだよなぁ。Pythonあたりを使ってシミュレーションで何かできないものかなと思ってしまったり。
2025.11.16 19:17
Interfaceはそういうことか
・その後あちこち眺めたりGeminiにお問い合わせししていてだいたい見えてきた感じ。
・結局テストベンチのことまで考えると3-Stateバッファをモジュール側で実装するのは面倒そうで、interfaceに実装するのがシンプルかつ確実ということになるようだな。
・そういえば振り込みもしておかないとな。法人口座は明日でないと難しいから明日やっておこう。
2025.11.15 12:54
interfaceで相変わらず
・相変わらずという感じでinterfaceでお悩み中。
・そんなところで、「存続危機事態」発言に対して暴れている方々がいる。でも、確かにあそこを押さえられたら大動脈に血栓ができたような状態になるわけで、まさしく生命の危機、存続危機事態であることは間違いない。
・その時に何をするのか、しないのかはまた別問題だけど、単に傍観だけしていたらこちらの命に関わる事態であることは確かではある。
・とりあえず「最悪の事態を想定してそれに備えておく」というのは大切なこと。そんな事態にならなければそれが一番だ。「何より楽で良い」