LT Spice IV を試してみる
今更的かも知れませんがLTspiceを試します![]()
前々からCQ Web Shopで発売のアナウンスがされていましたがようやく発売されたようで、本日注文しました↓
(Amazonで買いましたが(汗
で、恐らく到着は月曜か火曜なのではやる気持ちを抑えてトラ技のバックナンバーの別冊付録『LTspiceスタートアップマニュアル』を試してみようと思います↓
その前にLTSpiceの紹介を
LTSpiceは『無償で使える高機能回路シミュレータ』でPSpiceのように回路素子の制限が無いらしい、しかもリニアテクノロージー社以外のモデルも扱えるようです。
では早速、p.15にしたがってLT1028Aのテストサンプルを開いてみます↓
では早速シミュレートです。
メニューから【simulate】→【Run】をした後波形を見たい箇所をクリック↓
画面キャプチャでは分からないですがこのときカーソルがプローブのアイコンに変わっています。
まるで測定しているかのような気分になって楽しいですね。
初期状態で用意されているコンポーネントは
コンパレータ、オペアンプ、標準ロジック、フィルターIC、フォトカプラ、電源IC、リファレンスIC、その他
電源回路設計やアナログフィルタ回路設計に訳に立てたいと思います。
書籍が届くのが楽しみです。
ちなみにLTspiceがらみの参考リンクを集めてみた↓
本家 http://www.linear-tech.co.jp/designtools/software/
http://www.geocities.jp/ltspice_swcadiii/
http://w3.quake3.jp/sushi-k/wiki/index.php?LTSpice%20FAQ
http://homepage1.nifty.com/ntoshio/rakuen/spice/
http://www.eleki-jack.com/KitsandKids2/2008/03/ltspice_1.html
http://www.keiboz.net/modx/home.html
http://www.ip-arch.jp/LTspice.pdf
http://www.koka-in.org/~kensyu/handicraft/diary/20050609.html
http://www.kdenki.com/divelop/LTSPICE.html
結構たくさんあるんだなー
使いながら覚える!CPLD Part 3 ~ModelSim~
トランジスタ技術2008年12月号とMAX II Micro Kitを実際に使ってCPLDとVerilog HDLを習得していこうという企画です。
前回記事はこちら
使いながら覚える!CPLD Part 2 ~RTL Viewer~
今回は前回の続きで、第2部第4章のユーザーフラッシュメモリの単体試験です。
モジュール用のテストベンチを書きモジュール単体でシミュレートします。
今回は前回以上に嵌りました![]()
こんなに敷居が高いとは正直思っていませんでした。
何が大変だったかは下の『はまったポイント』をご覧ください。
(分かる方には何言ってんだてきな内容なんでしょうが・・・
)
この日記が私同様CPLD初心者の方のお役に立てばと思います。
シミュレート挑戦三日目にしてようやくシミュレートできました![]()
とりあえず結果から↓↓
UFMに登録したMIFの内容どおりにデータ出力がされているのが分かります。
今回はmProgMemをちょっと変更してBusy信号を確認後nreadをLに落とすようにしています。
(トラ技記事中ではnreadはL固定です)
テストベンチは以下の通り書きました。
--tb_M508Emu.v---
`timescale 100 ns / 1 ns
module tb_M508Emu();
parameter CLK_PERIOD = 20;
wire [8:0] wADDR;
reg [8:0] rADDR;
wire wCLR;
wire wEXTRST;
reg rEXTRST;
wire wQIN;
wire [15:0] wDOUT;
wire wFOC;
wire wQOUT;
wire wRead;
reg rRead;
assign wRead = rRead;
mProgMem mMem(
.fosc(wFOC),
.reset(wEXTRST),
.nread(wRead), /* nreadを設定できるように変更 */
.Qout(wQOUT),
.adr(wADDR),
.dat(wDOUT),
.Qin(wQIN),
.cmdClr(wCLR)
);
assign wQIN = 1'b1;
assign wCLR = 1'b0;
initial begin
rEXTRST = 1'b1;
rADDR = 0;
rRead = 1;
end
assign wEXTRST = rEXTRST;
assign wADDR = rADDR;
always #1 begin
if (wQOUT == 1) begin
rADDR = rADDR + 9'h1;
rRead = 1'b1;
#2;
rRead = 1'b0;
end
end
initial begin
#5;
rEXTRST = 1'b0;
rRead = 1'b0;
#(1000*CLK_PERIOD);
$stop;
end
endmodule
-----------------
--mProgMem.v---
`timescale 100 ns / 1 ns
module mProgMem(fosc,reset,nread/*追加*/,Qout,adr,dat,Qin,cmdClr);
input fosc;
input reset;
input nread;/*追加*/
output Qout;
input [8:0] adr;
output [15:0] dat;
input Qin,cmdClr;
wire fvail,fbusy;
wire [15:0] dbus;
reg [15:0] cmdReg;
assign dat = cmdReg;
assign Qout = fvail;
FlashMem fmem(adr,nread/*変更1'b0*/,fvail,dbus,fbusy,fosc);
//Data Latch
always@(posedge
fosc or posedge reset) begin
if(reset) begin
cmdReg<=16'h0000;
end else if(Qin) begin
if(cmdClr)
cmdReg<=16'h0000;
else
cmdReg<={4'h0,dbus};
end
end
endmodule
-----------------
はまったポイント①
ライブラリの指定が必要!
ここにたどり着くまでに相当な時間がかかりましたが、次の手順でライブラリの登録を行います。
Projectのソースを選択してプロパティーを開く
D:/ALTERA/81/MODELSIM_AE/ALTERA/VERILOG/SRC/220model.v
D:/ALTERA/81/MODELSIM_AE/ALTERA/VERILOG/SRC/maxii_atoms.v
のVerilogソースファイルをライブラリとして指定します。
こんな感じになります↓
ライブラリの指定をしないとエラー(VSIM-25)がでてシミュレートできません。
今回の場合は、LPM_COUNTERとMAX_UFMのモジュールの指定が必要でした。
どのソースファイルとモジュールが繋がっているかは、とりあえずテキストエディタ(EmEditor)のGrep検索機能を使用しました。
ALTERAとかが対応リストみたいなの出してんだよね?
そのうち探してみようかな。
はまったポイント②
タイムスケール
トラ技を読むとtimescaleは1psでよさそうですがUFM(ユーザーフラッシュメモリ)が4MHzどうさなのでtimescaleは100nsとしたほうがよいです。
これを1psの状態で弄ってるといつまでたっても信号が変化しない。
はまったポイント③
コンパイルエラー
ModelSimの特性なんでしょうが、プロジェクトに登録したVerilogソースファイルと同名のファイルを開いている場合、コンパイルエラーがあった場合、現在開いている方のファイルにエラーのリンクがつながれている。
具体的にはトラ技の同名ファイルを開きながら、編集した同名のファイルにエラーを含んだままファイルを閉じてしまうと、こういった事象なる。
対策、「関係の無いファイルは別エディタで開こう!」
はまったポイント③
テストベンチの書き方
これは単にVerilogに慣れていないというだけの話。
今回理解できた点、
・initial
・#(数字)
・timescale
・wire信号は構文中に=で代入できない。assignを使う
はまったところはこんな感じです。
分かってくるとCPLDの面白さをすごく実感できます。
これから先が楽しみです。
この調子で、トラ技2008年12月号のMAX IIの記事進めて行きます。
今回参考にしたサイトおよび情報は
・http://noritan-micon.blog.so-net.ne.jp/2008-11-16
・http://www.altera.co.jp/literature/ug/ug_alt_ufm.pdf
・http://www.altera.com/literature/ug/ug_lpm_counter_mf.pdf
・http://www.am.ics.keio.ac.jp/members/fukuda/wiki/index.php?ModelSim%A4%CE%BB%C8%A4%A4%CA%FD
では、また次回。
使いながら覚える!CPLD Part 2 ~RTL Viewer~
トランジスタ技術2008年12月号とMAX II Micro Kitを実際に使ってCPLDとVerilog HDLを習得していこうという企画です。
前回記事はこちら
今回も前回同様第2部第4章ですが前回の宿題となっていたRTL Viewerの表示です。
少してこずりましたが何とかなりました^^
ちゃんとトラ技2008年12月号124ページと同じ図になっています。
ではてこずった部分の解説を
1.RTL Viewerの起動の仕方
メニュー → Tools → Netlist Viewers → RTL Viewer
こちら の12-5ページを参考にしました。
ただし、一度プロジェクトをコンパイルした状態でなければいけません。
2.コンパイル
メニュー → Processing → Start Compilation
(そこそこ時間が掛かります。)
ここでエラーが出ている場合はRTL Viewrで開けません。
私の場合『Error: Top-level design entity "picemu" is undefined』
3.トップレベルエンティティ
調べてみるとトップレベルの設定が正しくないということで、mProgMemをとりあえずのトップレベルエンティティに設定することで対応できそうです。
こちら を参考にしました。
操作としては
メニュー → Assignments → Device → (Category:)General → Top-level entity:
ここを『...』(参照)から『mProgMem』を選択して『OK』→『OK』の後再度コンパイルします。
多少WarningsがあってもerrorがなければRTL Viewerで確認できます。
あとはRTL Viewerを起動すればブロック図の確認ができます。
次回は本モジュール単体のシミュレーションを出来ればと思います。





