manahiyoの気まぐれ

備忘録を兼ねたブログです。

CHATGPT4でLTSPICEシミュレーション

はじめに

CHATGPTで回路図が書けないかといろいろ模索しているのですが、直接回路図を出すのは難しいようです。

そんな中、こちらの動画を見て、LTSPICEでのシミュレーションならできるということがわかり、試してみました。動画だけだといろいろわからなかった部分もあるので、そのあたりも備忘録として記録しておきます。

 

動画を参照して試してみる

参考にした動画

www.youtube.com

 

LTCPICEは下記のwebより簡単にできます。

www.analog.com

 

上記動画の 5:55あたりで直接CHATGPTで出したネットリストを張り付けているのですが、ここは下記手順を踏めばよいようです。

1.メニューからFILE=>New schematic

2.メニューからEDIT=>Text=>SPICE directive

 

ただ、これは動画にもある通り、まともにシミュレーション結果が出ません。

そこで、7:15あたりでSchematicBuilderというのを使ってネットリストを回路図に変換しているようです。

下記にやり方がありました。

ltwiki.org

 

まずはLazarusというのをインストールしないといけないようです。

下記からダウンロードしてインストールします。

www.lazarus-ide.org

SchematicBuilderのzipは下記からダウンロードしました。

ltwiki.org

 

こちらの解凍後のファイル「 SchBuilder.lpr 」をダブルクリックすると

Welcome画面が出るので、そのままStartIDEをクリックしてみます。

いくつか画面が表示されますが、そのうちの一つがSchematicBuilderのようです。

ためしに、そのままBUILDタブでBLOCKをクリックしてみます。

あれ何も変わらない。というか、どうもこれは開発中の画面でRUNをしないと駄目なようです。RUNをすると画面が出ました。

よくわからん・・・

とりあえず、デフォルトで進めてみます。

なんか、コンパイルでエラーが出たようです。。。まじか。。。

雰囲気的にフォームを閉じるときの動作のようなので、コメントにしちゃいました。

そしたら動作しました。

 

再度BUILDタブでBLOCKをクリックしてみます。

つぎにschematicタブのコードをファイルに保存してLTspiceから読み出すと回路図が表示されました。コンポーネントだけで何もつながってないけど

 

ではCHATGPTが出したコードで再度同じことをやってみます。

出てきました。こちらもつながってないけど。

 

直接回路図を頼んでみる

LPFを見るネットリストを頼んでみました。

[I want to watch the plot that the result of LTSpice simulation for LPF.  Please give me this netlist.]

 

結局、接続は自分で書かないといけないみたい。ちょっといまいちだな。

もうちょっと工夫できないものか

CHATGPTに直接ASCの回路図フォーマットで出せないか聞いてみた

[Can you suggest the asc file for that?]

出してきました。

でも読み込んでみると…なんか微妙・・・

 

直すように指示してみます。

「I checked the schematic. But it seems there are missing connection. Can you modify it?」

 

うーん、やはり人の手で修正しないとだめか・・・

 

いくつかの回路を依頼してみる

I want to watch the plot that the result of LTSpice simulation for LPF.  
Can you give me this the asc file.
Please take care of the connection each of the component.

 

I want to watch the plot that the result of LTSpice simulation.  
The function of circuit is converting the voltage 10V to 5V using liner regrater.
Can you give me this the asc file.
Please take care of the connection each of the component.

LM7805はないとLTspiceに怒られる。修正を依頼

I got the error [Couldn't find symbol LM7805].

一応、コメントに1uFのコンデンサをつけてとある辺りはえらい。

でも、結局デフォルトのライブラリにはなく、LT317Aにする必要があった。

回路図を表示した結果はこちら。

うーん、実用的にするにはまだ難しいのかなぁ・・・

 

次にLED点滅回路も頼んでみたが・・・555がないと怒られる。NE555に修正

まぁ、毎回似たり寄ったりだな、こりゃ。

 

最後に

現状では何か回路を作ってもらうというのはちょっと難しい感じがしました。

でも、こういうのに特化したAIがこれから出てくれば、回路も自動で作ってくれるかもしれないですね。

 

 



 

 

ChatGPT4でVHDLとVerilogの変換をしてみた

はじめに

FPGAの設計に使うハードウェア記述言語としてVHDLverilogがありますが、私は昔からVHDLで設計していたので、verilogVHDLに変換したいということがときどきあります。また逆の人も多いのではないでしょうか。

巷にはフリーの変換ツールもあり、試したこともありますが、ないよりましという程度でいろいろ修正が必要でした。そこで、ChatGPTにやってもらったらどうかというところで試してみました。

ちなみに、はじめGPT-3.5を使いましたが、正直いまいちでした。GPT-4のほうが、変換精度が高く、こちらのほうが実用的です。コストの問題はありますが、下手な労力かけるよりはGPT-4を使ったほうがよさそうです。

VHDLverilogに変換してみる

前回ChatGPTに作ってもらった割り算のVHDLコードをverilogに変換してもらいました。

Please convert this VHDL code into verilog code.

こんな感じで出してくれます。

テストベンチも同様にverilogに変換してみる

テストベンチも同様にお願いしてみます。

ただ、こちらはregとwireで何度かミスをしていて、数回指摘して修正が必要でした。たぶんVHDLは記述上レジスタかワイヤーかの違いがないので、解析して判断する必要があるからだろうと推測します。

シミュレーション結果

ちゃんと正しい結果が出ました。入力と出力でタイミングが1回分ずれているので注意が必要です。

レポート出力もVHDLの時と同じようにされています。

 

なかなかやるね! ChatGPT4!

 

ChatGPTで割り算のVHDLコードを生成してシミュレーションしてみた

はじめに

ChatGPTでVHDLコードが書けるのはこれまで試しましたが、単純な演算子では実装できない割り算をさせたらどうか、というのを試してみました。

割り算回路を頼んでみる

プロンプトは次の通りです。

Please write me the VHDL code for division. The number of bit is 8.

GPT3.5では下記のように演算子'/'を使ったコードを提示してきます。これではシミュレーションはできてもコンパイルして実際にFPGAで動作させることはできません。

ではGPT-4ではどうか。

下記は一部だけですが、ステートマシンでstart信号をトリガとして計算が終わるとdone信号が'1'になるという感じのようです。なんかちゃんと割り算回路を作っていそうな雰囲気。

コンパイルではエラーが出て、うまくいきませんでしたが、エラーを指摘したところ修正したものを提示してきました。コンパイルも通りました。

後で気が付きましたが、doneをリセットしていないという致命的なバグが潜んでました。まぁテストすればわかることではありますが。

割り算回路のテストベンチを頼んでみる

特定の値の割り算をやってみる

まずは100/23=?のテストベンチを作ってもらいます。

Can you create a testbench that calculates 100 divided by 23 for that code.

結果(一部) ぱっと見でもstartトリガを入れて、doneが1になるまで待つという形でできているのがわかります。

何回かエラーを指摘して修正してもらいましたが、無事下記の通りシミュレーションで正解が得られました。

ではすべての組み合わせを計算するテストベンチは作れないか頼んでみました

Is it possible to create a testbench that computes all combinations?

結果(一部) 見ての通りforで回してます。レポートも出しているところが偉い。

今回もいくつかミスが含まれており、指摘して修正してもらいました。ただ一部は1行変えるだけだったので面倒なので自分で手を入れました。

レポート出力もいい感じです。

感想

つい1発で出来上がることを期待してしまいますが、トライアンドエラーが必要になることを実感しました。ただ基本的に人間が作っても何らかエラーなり修正をして作っていくことを考えれば、必要な作業なのかもしれません。この辺のフィードバックがAI自身でできるようになるとまた大きく進化するような気がしました。

 

 

 

ChatGPTでLED点滅のVHDLコードを生成してシミュレーションしてみた

はじめに

前回も軽く同じようなことをやっていますが、中途半端でしたので、今回は改めてコンパイル及びシミュレーションまで通して、ChatGPTの実力を見てみました。

GPT-3.5で試してみる

まずは無料で使えるGPT-3.5でやってみます。

英語のほうが良い結果が得られるようなので、プロンプトは英語で行いました。

VHDLコードを書かせてみる

次のプロンプトでコードを書かせてみます。

Please write me the VHDL code for blinking led. The interval is 0.5s and clock is 10MHz.

結果

IEEEの宣言がないところが気になりますが、そのくらいは自分で足します。

ただ、コンパイルして気が付きましたが、LEDの信号がエンティティの出力になっているのに内部で直接参照しているのでエラーになります。

VHDLのテストベンチを書かせてみる

次のプロンプトを使いました。

Please write me the code for testing that code.

結果

雰囲気はいいのですが、waitの時間が明らかにおかしいです。

assertとかを使っているので、やる気は感じられます。

とはいえ、残念ながら新人並みのレベルのようです。

GPT-4で試してみる

GPT-3.5ではいまいちな結果となったので、GPT-4でどのくらい改善されるか、期待されます。使用するプロンプトは同じです。

VHDLコードを書かせてみた結果

おっ今回は宣言もちゃんとついてきました。

インターバルの値も定数宣言しているところなど、パワーアップが感じられます。

VIVADOでコンパイルも通りました。

VHDLのテストベンチを書かせてみる

こちらは先ほどのようにassertなどはないですが、とりあえず実行できそうです。ちなみにassertで値のチェックを追加してと指示すれば、やってくれました。

VIVADOでシミュレーションを実行した結果がこちら、LEDが一定間隔で反転していますのでぱっとみよさそうですが・・・あれ、インターバルが0.5sで指定したはずが、0.05sになっているようです。

 

間違いを指摘して修正を依頼してみる

ここは素直に指摘してみましょう。

I run the simulation that testbench. But the interval seems to be 0.05s instead of 0.5s. Can you correct it?

回答

やるね、ChatGPT。正しい修正をしてきました。

修正後がこちら。ちゃんと0.5sで反転してます。

 

ChatGPTにTCLコマンドを聞くのも役立ちそう

ついてなのでシミュレーションを5s実行するコマンドを聞いてみました。

Please tell me the TCL command to simulate for 5 seconds in VIVADO.

こちらについては残念ながら一発では正しい回答は得られず。

とはいえエラーなどを指摘した結果、下記の正しいコマンドを提示してきました。

感想

コストがかかるのが難ですが、GPT4は明らかにレベルが上がっています。

今後もいろいろ試してみたいところです。

 

 

 

ChatGPTに回路図を頼んでみる

はじめに

前回ChatGPTにFPGAのHDLを書いてもらいました。ふと回路図は描けるのか?と思い試したところ、テキストベースでの回路図を示してきました。

LEDの点滅回路を頼んでみる

Please suggest a schematic for blinking led. 」

こんな感じで示してきました。

コメントにいろいろ説明がついてきて、マイコンからの制御かNE555で点滅できるよ。。。って感じでの回答でした。うまくCADと連携すればそのまま回路図も書いてくれるのではないか期待してしまうレベルです。

NE555とはなんとも懐かしいと感じるのは私だけでしょうか。

NE555を使った点滅回路を頼んでみる

「I want to have the schematic using 555 timer circuit for blinking led.」

ほんとに動くかは試していませんが、なんとなく雰囲気はあっている感じです。

トランジスタでのモーター駆動回路

「Can I have the schematic for driving motor using transistor?」

ちょっと苦しくなってきた感じでしょうか。ただコメント内にモーターのスパイク電圧対策のダイオードを入れてと書いてきたのは、さすがという感じです。

最後に5Vのレギュレータを使った回路を頼んでみました

「I want to simulate DC power circuit LT spice. Main part is normal regulator like 7805. Input voltage is 10V. Output voltage is 5V. Current is 2A. can you suggest the schematic to fit these condition?」

部品表みたいになってきました。0.1オームって何だろう。

もしかしたらシミュレーションで電流を測定ためのもの??だとすると洞察が深い。

これでは接続が分からないので、接続を聞きました。

「Can I have the connection each component?」

今回は文章で接続を示してきました。そのまま回路で示してくれるともっといいのになぁ。

ということで

ソフトウェア関係への応用はたくさん見ますが、こういったハードウェア関係にも応用される日もそう遠くないと感じました。

 

 

tinySA ULTRAを電波可視化に使ってみる

追記 2023.2.19 下記にソフト公開しました

https://github.com/manahiyo831/RadioFieldAR_tinySA-ULTRA

はじめに

以前より電波可視化というところでRTL-SDRなどを使って取り組んでいますが、先日購入したtinySA-ULTRAがほかのSDRデバイスを使うよりも便利そうに思い、やってみました。

電波可視化においてtinySA-ULTRAを使うメリットとデメリット

メリット

・測定周波数範囲が広い。特にこのULTRAは6GHzまで測れるとなっています。

・広帯域での周波数スイープが速い、ノイズの周波数が分からない時はとても便利

FFT及びその表示をデバイス側でやってくれるのでANDROID側で処理の必要がない、画面も大きく使える

・絶対レベル[dBm]で表示される。

デメリット

・狭帯域(数100kHz)以下の場合は逆にスイープが遅くなる。

・安いSDRデバイスに比較して高価。とはいえスペアナを考えれば破格の値段です。

構想

上記のメリットに加えてtinySAはマーカーでピークサーチの機能があります。私の電波可視化ソフトではピークの値を使っているだけなので、この値を取得するだけとなり、とてもシンプルな動作です。

また中心周波数やスパンなどはtinySA側で設定することにして、スマホからの制御はあえて何もしないことにしました。中途半端に設定するよりは、設定はすべてデバイス自身で行うほうがANDROIDのソフトの機能が減らせます(実は面倒なだけ?)。

ANDROIDと通信してみる

下記にコマンドの一覧がありました。

tinysa.org

次のコマンドでピークが取得できます。

marker 1 peak

tinyuSAからの応答は下記のような形で、周波数とレベルが返ってきます。

1 435 774401447 -7.62e+01

これを以前作った可視化ソフトの入力データにすればよさそうです。

ソフトに組み込み

先日アップしたシリアル通信の部分のみ作成し、あとはほぼ使いまわしです。

実際に測定してみる

試験サンプルはFPGAボード「PYNQ-Z1」の電源ノイズを使いました。

1.2MHz付近をピークにした電源ノイズがみられます。ほかは高調波です。

アンテナについている地球のマークはARの認識用です。

測定結果

平面、XYZ,高さ方向の3通りで測定してみました。

Pynq基板の電源回路部分が赤で一番強く-40dBm程度、離れるにしたがって弱くなっているのが一目瞭然です。なかなかいい感じじゃないかと。

らせん状に測定すると煙みたいでおもしろい。

 

動画を作成しました。よろしければ、ご覧ください。

youtu.be

 

ChatGPTにFPGAのVHDLコードを書かせてみた

はじめに

巷で噂のChatGPTについて、コードを書かせたらすごいという話を聞いて、ではFPGAのコードも書けるのか・・・というちょっとマニアックなことをさせてみました。

LED点滅のコードを要求してみる

初心者なら初めに必ずやるLチカです。

こんな感じで入れてみたところ

「I want to get the VHDL code for BLINK the LED.」

いやはや・・・ちゃんとしたコードが出てきました。実機で試したわけではないですがパッと見たところちゃんと動作しそうなコードです。

ちゃんとこんな説明までついてきます「 the output is a single LED that is connected to an output pin on the FPGA. 」

自分で書くより早いし…

では、テストベンチはどうか。

「I want to get the VHDL code for simulation the code you gave me.」

ちゃんとだしてきましたよ・・・これはカルチャーショックですね。

役に立つ立たないなどいろいろ議論はあるでしょうが、ただただすごいという感じです。

ためしに、日本語でもやってみました。

LEDを点滅させるFPGAVHDLコードが欲しい」

エラーが出てしまいました。日本語では無理のようです。

=>日本語版でやってみたら、返事がありましたが下記のように、手順が示されました。英語のほうが気が利いている感じがします。

次に計算機を頼んでみると・・・

I want to get the VHDL code that have a function like a calculator」

割り算回路は実装せずですね・・・残念ながら実際のインプリはできないです。

ということで

興味のある人はぜひ自分でいろいろ試してみると面白いです。

どんなふうに役に立つかは、使い方次第というところでしょうか。