組込みとともに -52ページ目

LT Spice IV を試してみる

今更的かも知れませんがLTspiceを試しますニコニコ


前々からCQ Web Shopで発売のアナウンスがされていましたがようやく発売されたようで、本日注文しました↓


組み込み関係の日記をつらつらと
『電子回路シミュレータLTspice入門偏』

(Amazonで買いましたが(汗


で、恐らく到着は月曜か火曜なのではやる気持ちを抑えてトラ技のバックナンバーの別冊付録『LTspiceスタートアップマニュアル』を試してみようと思います↓


その前にLTSpiceの紹介を

LTSpiceは『無償で使える高機能回路シミュレータ』でPSpiceのように回路素子の制限が無いらしい、しかもリニアテクノロージー社以外のモデルも扱えるようです。


組み込み関係の日記をつらつらと
2008年7月号付属です。


では早速、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を習得していこうという企画です。


前回記事はこちら

使いながら覚える!CPLD Part 1 ~第2部第4章~


今回も前回同様第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を起動すればブロック図の確認ができます。



次回は本モジュール単体のシミュレーションを出来ればと思います。