2025.09.26 14:48
MAX10でPLL
・MAX10でPLLを使ってみることに。
・プロジェクトをコピーしてみたらソースコードは元のディレクトリを参照していた。いったん削除して指定しなくてはならない
・更にAnalysis & Synthesisしてピン配置を見たら初期化されてしまっていた。毎回設定するのも面倒だなと思ったら、CSV形式でエクスポート/インポートできるそうで。試しにエクスポートしたら、ご立派なコメント付きのCSVファイルができていた。既存のものからこれをいただけば良いのだな。
・これで合成して動かしてみたらちゃんと動いた。
・そして・・・PLLはAlteraのIPをウィザードのようなものを使って取り込めば良いのか。
・とりあえず現状の48MHzから100MHzを生成してみるか。
・チェックボックスをちょっといじらないといけないところもあるけど、スッキリしていて難しくはない。
・モジュール名とポートはソースを見ればわかるので、これをインスタンス化してポート接続すれば良い。
・って、こんなので良いのか?とコンパイルするとすんなりエラーなし。ならばと合成して動かしてみたらちゃんとほぼ倍速動作。
:調子に乗って200MHzにしたら超高速点滅。
・あとはタイミングの制約とチェックができれば、現状の合成レポートの赤字(クロック周波数の制約を入れていないので)も消せるかな。
2025.09.26 21:14
不良品ビジネス
・というところで、ロシアに対して西側の半導体を入手する抜け穴があって結構手に入っているという話がある。
・一方で、過日キーウに対して行われた攻撃でミサイルがちゃんと爆発しなかったということがある。
・ふと思うのは、抜け穴の一つとしては中国があることはほぼ確実だろうけど、あそこは言うまでもなく偽物天国で、以前の半導体不足のときも生産ラインではねられたものがそのまま流通してしまっていたり、中身が入ってないものや全く違うダイが入ったものなど、もはやなんでもありだったこと。
・ふと思ったのは、喉から手が出るほど欲しい、金はいくらでも積むというのを相手にして、こういう不良品、偽造品を売りつけるというのは平然と行われているのではないかなということ。
・わざわざ正規品を入手するより、こうしたまがい物のほうが圧倒的に「仕入れ値」は安いわけだ。もちろん簡単な検査でわかるような不良だとバレるけど、温度特性が悪いなどスペックをちゃんと満たさないものや、検査項目に引っかからない(商業用のロケットなどと違うから検査項目も多くはないだろう)あたりなら実際に動かすまでわかりはしない。
・不良品を大量に売りつけておいて、発覚する頃にはドロン(死語?)というのもあながち無いとは言えないのではないかなとふと思うのだけど、どうなのだろう。
・ドローン部品納入業者がドロン・・・というジジイギャグはやめておこう。
2025.09.25 07:07
Inkscapeのハンドル調整
・Inkscapeを使っていて矩形などを配置したときにコーナー部分に四角や丸のハンドルが表示されるのだけど、これが大きすぎてみっともないしなんとなく使いにくい。
・大きさを変えられないのかと検索したけど見つけ方がよくわからないのでまぁあるとすれば環境設定だろうと開いてみたら日本語化したときと同じところの下に「ハンドルの大きさ」設定があった。なるほどね。サイズ4くらいでいいかな。
・少しいじってみているけど結構ご機嫌で使えそうだな。
2025.09.24 06:43
Inkscape1.5をインストール
・ドローツールを検索してInkScapeがおすすめっぽいのでパッケージマネージャで見たらSynapticパッケージマネージャで見ると1.1.2-3Ubuntuがあったのでインストールしてみる。機能はたくさんあるのだろうけど、Word図などのレベルである程度間に合っていたレベルでいじってみていると難しくない。アイコンやメニューを眺めてマウスでゴニョゴニョするとまぁそうなるよねという動き。
・これはいけるかなと思いながら検索していると1.4などが出ている模様。
・ひょっとして「Ubuntu Software」側にないかなと思って起動してみたら1.4がでてきたので、1.1をアンインストールっっして1.4をインストール。さて、日本語化はできないのかな?とこれまた検索するとEdit -> Preference -> Interfaceで日本語を選べば良いということなのだけど、やって再起動してみても変化しない。
・別に自分が使う範囲では英語でも構わないのだけど、なんでかなと思いながらUbuntu Softwareで「ソース」のストアを開いていたら1.5が見つかった。ひょっとしてFixされているかな?と1.4をアンインストールして1.5をインストール。
・これで同じようにやったらすんなり日本語化された。これでいいかな。
2025.09.23 06:58
原稿の図版カキカキ
・世間では休日だったのだな。すっかり忘れていた。
・原稿依頼があったので、とりあえず図版から。Wordで図を描いてしまっているけど、ドロー系の良いものはないかな。
・そんなことをしながらウクライナ情勢を見ていると、ウクライナがかなり派手にロシアの石油生成施設やらパイプライン、港湾を無人機で攻撃している模様。
・生成能力の50%近くを失ったということだけど、これはこれからも増えていくのだろう。ガソリンや軽油などもだんだん供給がまずくなっているようでもある。モスクワは物資流通のハブになっていることもあって最後まで枯渇しないように粘るのだろうけど、その他の地域では車も農作用の機械類も動かせない、真冬の暖房はどうするのだろうといろいろ想像してしまう。
2025.09.22 06:48
多摩御陵参拝
・少し気温が下がってきたこともあって、ちょっと出かけついでに今まで通り過ぎるだけだった多摩御陵に初めて立ち寄ってみた。これは「参拝」というのか、なんだかよくわからないけど、適当な言葉が思い浮かばなかったのでとりあえず「参拝」。
・どこに停めたら良いのかよくわからないような広々とした駐車場に車を置いて足を踏み入れるといきなり別世界。
・砂利の音をたてながら少し歩くと分岐が見えてきたので、一番奥から順に。
・一回りするとなんとなく心洗われたような感じもする。
・といいながら、数分後には「もち吉」で賞味期限間近なお値下げ品煎餅を買ったりしているのであった。
2025.09.21 06:38
CF Expressカードがやってきた
・オシロスコープのCFカードのリーダーがちょっと怪しん雰囲気。
・そんなところでCFカードを探しているうちにひょんなことからCF Expressのカードをもらってしまった。結構な大容量である。
・もう、メモリカードの類なんてSD/MicroSDしか付き合いがなかったのでまったく追っていなかったのだけど、CFカードとは全く関係ないし、TypeA/B/Cとバラバラ。
・さて、こいつを読めるものは?と思って検索したら全タイプ対応というのはほとんど無くて、A/B/Cそれぞれに対応製品がある。圧倒的に多いのがType-Bで、マルチで対応するものもType-BとSDカードというのが多いようだ。
・Googleで検索すると最初にAIによる回答がついてくるけど、そこではType-AはSONY、Type-Bはその他メーカーのデジカメが対応っていうことで、β/VHSなのかレーザー/VHDなのかというあの時代を思い出させてくれたりする感じになっているようだ。
・いただいがのがType-Aなので、Type-Aのリーダーライタを調達。ついでにCFカードリーダーの方も。しかし、このCFカードがお亡くなりになったらどうするかな。CFカードからの変換アダプタをつけることになるのかな。
2025.09.20 22:29
SystemVerilogのinteraceもうちょい
・そんなところで、SystemVerilogで書き直したLED点滅を書き込んで動作確認したり、LogicTapで内部波形を観測というところまでうまくいった。
・SystemVerilogのinterfaceの中にもalways_ff()などを使ってロジックを書くことはできるということを知る。しかし、これも使いみちはというと限定的なのかな?という感じ。
・interfaceがお役立ちなのはモジュール間のインターフェース、簡単に言えば通信回線の定義で、interfaceで定義したものを使えば簡単に相互接続できる。
・送信側と受信側で信号の方向が違うのはinterface内でmodportを使ってそれぞれの信号の向きを変えたものを定義して
.
って感じで、どれ(どっち)を使うのか決めれば良い。
・たとえば、バスクロックはマスタ側が出力、スレーブ側が入力なら、
interface mybus;
logic bclk;
・・・・・
modport master(output bclk, ・・・);
modport slave(input bclk, ・・・);
endinterface
なんて具合にして
module blk0(mybus.master busout);
・・・・
endmodule
module blk1(mybusss.slave busin);
・・・・
endmodule
まぁ、こんな感じにしておいて、後でこいつらのインスタンスをこしらえてやれば良い。
・でも、ここで、interfaceの中で
always_ff @(posedge clk) begin
bclk <= =bclk;
end
(実際にはもっと分周するだろうけど)
なんて具合にbclkを駆動してしまうと、slaveの方で入力としているのと辻褄が合わなくなる。
・ということで、こいつが使えるのはバスで結線する時に両方とも入力となる時なのかなぁとも思うけど、それで何らかの処理をした信号を出力しようとすると、結線したときに衝突してしまうわけだし。まぁ、そのうち使いみちも見つかるかな。
2025.09.19 12:37
DSimをお試ししてみる
・SystemVerilog対応なシミュレータということで、Quartus上ではQuestaがご推奨のようなのだけど、なぜか起動してくれない。
・もうちょっとなにか無いのかなと思って探していたらDSimというのがあった。
・
VSCodeのプラグインとして実装されているもの。
・丸文さんが作成した
GOWIN用のチュートリアルでも使われているので、まぁさほど怪しいことはないのだろう。
・検索してみると単独で起動して使うこともできそうだけど、とりあえずプラグインとして使ってみることにしよう。
・で、VSCodeのプラグインなので、いつものとおりやれば良いのだろう。FPGAの開発環境のところにはインストールしていなかったけど、Ubuntu Softwareにあったので、簡単インストール。ExtensionsでDSimを探してインストール。とりあえずエディタのキーバインドもVimにしたいので、Vimもついでに。(個人的にはEmacs風というのか、xyzzyが気に入っていたのだけど、Linux版のxyzzyはリリースされないのだな)
・このあと、ライセンス取得のために
ご本家でユーザ登録をして、VSCode上でポチッとクリックすればライセンス認証完了。このあたりまでは丸文さんのドキュメントでOK。
・さて、とりあえずチュートリアルを・・と思ったらこれがすでに半分出来上がった環境で動かすだけなので1から作るのにはあまり参考にならない。まぁそれでも一応シミュレーションで波形までVSCodeの画面上に出るところは確認できた。
・このあとが結構いろいろあったけど、なんとかIcarusでシミュレーションしたり、Quartusで合成して動作確認していたロジックをDSimでシミュレーションするのはできた。
・ソースコードファイルを登録するのにGUIでクリックでポチポチとはできなくて、../xxx.svなんて具合に書いてやらないといけないのがちょっと面倒う臭かった。
・SIMULATION CONFIGURATIONで右クリックで「Configure Simulation」を選択して、Optionsを
-top work.Tbench -L BlinkCol +acc+b -waves waves.vcd
なんて具合にして(Tbenchがテストベンチのモジュール名、BlinkColがテストベンチがターゲットにしているトップモジュールなのだそうで。+acc+bが波形データを取得するという謎オプション。-wavesで波形ファイル名を指定すると拡張子を見て勝手にフォーマットを決めてくれる。この例なら.vcdで出してくれるので、gtkwaveで見ることができる。
・ちなみに、テストベンチの前についてる”work.”というのはお約束のおまじないみたいだな・・・と思ったら、LibraryConfigurationでソースファイルを追加するとき、LibraryNameのデフォルトがworkだったから、たぶんこれを引きずっているんだな。
・ちょいと引っかかったのがinterfaceの記述で、モジュールポートにinterfaceを使ったような場合に、
interface spi_if.maaster MasterPort;
なんてやるとエラーで、
spi_if.maaster MasterPort;
という具合にしないといけないところ。
・このあたり、もう少し使い込んだから一回まとめておくか。
2025.09.18 08:59
IcarusはInterface未対応か
・SystemVerilogのInterfaceが便利そうだなと思って使ってみようとしたら、構文エラーになってしまう。あれこれ検索するとどうやらIcarus Verilogは対応していない模様。
・とりあえず仕方ないのか。Quartusと一緒にインストールした(はず)のQuestaのAltera版(昔はModelSimだったようだけど)を使ってみるかな。