FC2カウンター FPGAの部屋 EDAツールについて

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Sublime Text3の AutoPort機能 と AutoInst機能

Sublime Text3のシェアウェア料金を払って正式ユーザーになりました。

Verilog Automatic パッケージの AutoPort機能 と AutoInst機能を使いたいと思っていたので、やってみました。

まずは、AutoPort機能です。/*autoport*/を入れておきます。

module test2 (/*autoport*/);
input wire[1:0]a;
input wire b;
output reg [2:0]c,d;
inout wire e;

sublime_text3_9_131117.png

SHIFT+F6 を押すと、自動的にポート宣言を入れてくれます。

module test2 (/*autoport*/
//inout
e,
//output
c,
d,
//input
a,
b);
input wire[1:0]a;
input wire b;
output reg [2:0]c,d;
inout wire e;

test1 test1_inst (/*autoinst*/);

sublime_text3_10_131117.png


次は、 AutoInst機能ですが、これは、CTagsソフトウェアとSublime Text3 のCTagsパッケージをインストールする必要があります。これは下位モジュールをインスタンスする際に自動的にポートマッピングしてくれる機能です。

・Windows7の場合は、”exuberant ctags 日本語対応版”の ”Win32版(バイナリのみ) (ec58j2w32bin.zip 162,098 byte)”をインストールする必要があります。私は、Windows7 64bit版でしたが、Win32版でOKでした。

・ZIPを解凍して、出てきた ctags.exe をパスの通っているフォルダにコピーします。私は、C:\Windows\System32 フォルダにコピーしました。

・次に、Preferences -> Package Control から CTags パッケージをSublime Text3 にインストールします。(インストール方法はこちら

前提として、test1.v と test2.v と2つの Verilog HDL ファイルがあるフォルダが有るとします。先ほどAutoPort機能で使用したのが、test2.v です。下の図に示すように、この2つのファイルだけがフォルダに入っています。
sublime_text3_11_131117.png

test1.v の内容です。parameter とポートがありますが、parameter はAutoInst機能の対象ではないみたいです。

module test1 #(
parameter integer aaa = 1,
parameter integer bbb = 2
(/*autoport*/
input wire[1:0]a,
input wire b,
output reg [2:0]c,d,
inout wire e
);

・Sublim Text3 の Findメニューから Ctags -> Rebuild Tags を選択します。
sublime_text3_12_131117.png

・すると、Tagファイルが生成されます。
sublime_text3_13_131117.png

・test2.v の test1 のインスタンスのポート接続を書くところに /*autoinst*/ を書いておきます。

・test2.v の test1 のモジュール名にカーソルを持ってきて、SHIFT+F7 を押します。
sublime_text3_14_131117.png

・test1.v のポートが test2.v の test1モジュールのインスタンスに挿入されます。
sublime_text3_15_131117.png

更に、Alt+S を押すと、現在フォーカスされているファイルのシンボルが一覧表示されて、クリックするとその宣言された行にカーソルが行きます。
sublime_text3_16_131117.png

ALT+SHIFT+S を押すと、フォルダにある全てのファイルのシンボルが一覧表示されます。
sublime_text3_17_131117.png
  1. 2013年11月17日 18:09 |
  2. EDAツールについて
  3. | トラックバック:0
  4. | コメント:0

Geany エディタ

Geany というエディタをインストールしました。これもSublime Textと同様に学生実験で学生さんに教えてもらいました。
Geanyのページです。
Download»Releases から Windows なので、geany-1.23.1_setup.exe - Full Installer including GTK 2.16.をインストールしました。

シンボルも表示されて良い感じです。
geany_1_131117.png

シンボルをクリックすると定義されたところに飛びます。
geany_3_131117.png

更に、文字のエンコーディングも日本語のEUCとかSHIFT-JISとか揃っています。
geany_2_131117.png

なかなか良さそうです。
  1. 2013年11月17日 09:39 |
  2. EDAツールについて
  3. | トラックバック:0
  4. | コメント:0

Sublime Text3 エディタ

長らくNotepad++をVHDLやVerilog HDLを書くときのエディタとして使ってきましたが、自動補完機能がおかしくなりやすいので、どうしようかと思っていました。今日、学生実験で学生さんに Sublime Text 3 を教えてもらったので書いておきます。

Sublime Text 3 はプログラマに人気のプラグインが豊富なカスタマイズできるエディタだそうです。

Sublime Text3をWindowsに入れてみた!初めての導入と簡単なカスタマイズまとめ”を見ながらインストール、カスタマイズをしました。とってもわかりやすいまとめに感謝です。

インストールしているプラグインは、以下の通りです。
{
"installed_packages":
[
"ConvertToUTF8",
"IMESupport",
"SystemVerilog",
"Verilog",
"Verilog Automatic"
]
}

自動補完もあるし、テンプレートも入る(自分でカスタマイズしたいのですが、まだ方法がわかりません)ので便利です。もっと勉強すると便利に使えそうです。
sublime_text3_1_131031.png

・パッケージのインストール方法
パッケージのインストール方法は、Preferences -> Package Control を選択します。
sublime_text3_2_131101.png

ダイアログからInstall Package を選択します。
sublime_text3_3_131101.png

出てきたダイアログで白い部分に検索テキストを入れればパッケージを検索してくれます。
sublime_text3_4_131101.png


・VHDLのシンタックス・ハイライト
VHDLのパッケージは上の、パッケージのインストール方法では出来ませんでした。その方法を書いておきます。
1.github.com/yangsu/sublime-vhdlから、sublime-vhdl-master.zipをダウンロードします。

2.Preferences -> Browse Packages... を選択します。
sublime_text3_5_131101.png

3.出てきたエクスプローラ上で、VHDLフォルダを新規作成します。
sublime_text3_6_131101.png

3.1.でダウンロードした sublime-vhdl-master.zip\sublime-vhdl-master の中身を新規作成したVHDLフォルダにコピーします。
sublime_text3_7_131101.png

4.Sublime Text 3 を再起動します。

これで、VHDLのハイライトもできるようになりました。これで、Notepad++から移行できます。
sublime_text3_8_131101.png

なお、VHDLのパッケージをインストールする方法は、”Syntax highligthing for VHDL”を参考にさせて頂きました。
  1. 2013年11月01日 04:53 |
  2. EDAツールについて
  3. | トラックバック:0
  4. | コメント:0

Notepad++でNSLのキーワードの色を変える

Notepad++でNSLのキーワードの色が変わらないのが見にくいので、NSLのキーワードの色を変えて見やすくしようと思う。Notepad++のバージョンは5.8.6。

まずは、Notepad++の表示メニューからユーザー定義ダイアログを選択する。
NSL_Keyword_1_110120.png

ユーザー定義のダイアログが開く。新規作成ボタンをクリックする。
NSL_Keyword_2_110120.png

Create New Language...ダイアログでNSLと入力してOKボタンをクリックする。
NSL_Keyword_3_110120.png

拡張子をNSLにして、キーワードリストタブを選択し、キーワードを入れていく。input, output, func_in, func_outは色をわけようと思っている。なかなか何色にするかが難しい。
NSL_Keyword_4_110120.png

これで、キーワードの登録は終わりかな?
NSL_Keyword_5_110120.png

次に、コメント・数値設定タブをクリックして、コメントの形式と数値を設定する。
NSL_Keyword_6_110120.png

最後に演算子を設定する。
NSL_Keyword_7_110120.png

これで終了なので、ダイアログのXボタンをクリックして、終了する。
この設定で、NSLが下のように見えるようになった。
NSL_Keyword_8_110120.png

なおこの設定は、ユーザー定義ダイアログから、XMLファイルとして、Exportすることができる。多分これをImportすれば、他のNotepad++にインポートすることができると思う。今回は、NSL_define.xmlファイルとしてエクスポートした。
最後に、NSL_define.xmlファイルを下に示す。

<NotepadPlus>
    <UserLang name="NSL" ext="nsl nsh">
        <Settings>
            <Global caseIgnored="no" />
            <TreatAsSymbol comment="no" commentLine="no" />
            <Prefix words1="yes" words2="no" words3="no" words4="no" />
        </Settings>
        <KeywordLists>
            <Keywords name="Delimiters">000000</Keywords>
            <Keywords name="Folder+">declare module any</Keywords>
            <Keywords name="Folder-">}</Keywords>
            <Keywords name="Operators">- ! &amp; : [ ] ^ | ~ + &lt; = &gt;</Keywords>
            <Keywords name="Comment">1/* 2*/ 0//</Keywords>
            <Keywords name="Words1">alt any declare for generate goto interface label label_name m_clock module p_reset proc_name proc seq state state_name while finish if else</Keywords>
            <Keywords name="Words2">input output inout func_in func_out func_self reg variable integer wire function func mem </Keywords>
            <Keywords name="Words3">_readmemb _readmemh _finish _display _monitor #ifdef #define #else #endif #ifndef #undef #include</Keywords>
            <Keywords name="Words4"></Keywords>
        </KeywordLists>
        <Styles>
            <WordsStyle name="DEFAULT" styleID="11" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="FOLDEROPEN" styleID="12" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="FOLDERCLOSE" styleID="13" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="KEYWORD1" styleID="5" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="KEYWORD2" styleID="6" fgColor="C600C6" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="KEYWORD3" styleID="7" fgColor="800000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="KEYWORD4" styleID="8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="COMMENT" styleID="1" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="COMMENT LINE" styleID="2" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="NUMBER" styleID="4" fgColor="FF8040" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="OPERATOR" styleID="10" fgColor="8000FF" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="DELIMINER1" styleID="14" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="DELIMINER2" styleID="15" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" />
            <WordsStyle name="DELIMINER3" styleID="16" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" />
        </Styles>
    </UserLang>
</NotepadPlus>


上のXMLを名前をつけてセーブして、Notepad++からインポートすれば、NSLのキーワード色付けができる(できました)。

ユーザー定義言語のやり方は、”How to create your own definition (user-defined language) of a Syntax Highlighting scheme”に書いてある。
ユーザー定義言語のXMLファイルは”Obtaining files related to user defined language.”にある。私もSystemVerilogとPicoBlazeを入れた。SystemCとXilinxの制約ファイルが無いのが残念だけど、自分で作れば良いと思う。誰か作った方がいたら公開してください。

(2011/01/22:追記)
if, else, function のキーワードが抜けていたので、上のNSL_define.xmlファイルをアップデートしました。
(22:32)演算子に[]を追加しました。
(2011/02/09:修正)
  1. 2011年01月21日 04:05 |
  2. EDAツールについて
  3. | トラックバック:0
  4. | コメント:0

Notepad++にChange Makersプライグインを入れる

以前のNotepad++には、変更された箇所が黄色の線で示され、セーブしたら緑色の線で示される機能があった。この機能がどうしても欲しかったので、調べてみるとNotepad++用プライグインのサイトがあって、そこにChange Makersがあった。このプラグインを入れると、私の希望の機能が実現できるようだ。
早速、Change MakersのサイトからUnicode用のプラグインをダウンロードした。
ダウンロードした内容(下の図)をNotepad++を閉じてから、Notepad++のフォルダの下のpluginsフォルダにコピーする。
Change_Makers_1_100210.png

すべてコピーしないと動かないようだ。
Notepad++を起動すると左脇に1列増えている。まだChange Makersがイネーブルされていないので、変更しても表示されない。プラグインメニューからChange Makersを選んで、Disable Pluginのチェックを外すと有効になる。
Change_Makers_2_100210.png

更に左脇の増えている1列が気になるので、それを削除しよう。やはりプラグインメニューからPlugin Maker Marign のSecond View: Show Margin のチェックを外す。こうすると左脇の余計なマージンがなくなるはずだ。
Change_Makers_3_100210.png

これで、Notepad++の画面で文字を入力してみると、黄色い金平糖マークが表示される。
Change_Makers_4_100210.png

次に、そのファイルをセーブすると緑の金平糖マークになる。
Change_Makers_5_100210.png

とりあえず目的は達したが、いろいろなプラグインがあるようなので、後で見てみよう。

(追記)
いままでの記述はWindwos XPだったが、Vistaでは挙動が違うようだ。まずは、Change Makersが最初から有効になっていた。
Plugin Maker MarignのSecond View: Show Margin のチェックは外せなかった。その代わりにNppPlugin_PluginMargin.dll を入れなくても怒られずに、入れなければ左脇の余計なマージンは出てこない。どうなるか分からないが、これでやってみようと思う。(自己責任でお願いします)
  1. 2010年02月10日 05:51 |
  2. EDAツールについて
  3. | トラックバック:0
  4. | コメント:0

Notepad++のセッションの利用法

Notepad++でHDLファイルをいじっていると、このプロジェクト(プロジェクトA)を編集しているのだけど、ちょっとこっちのプロジェクト(プロジェクトB)を編集したいというときがある。その場合に、数多くのプロジェクトAのファイルの中にプロジェクトBのファイルがちょこっと混じっていると、どうも見にくいし、ミスる可能性が増える。
そのような場合にはNotepad++ のセッション機能を使うと良いと思う。
さて、それじゃ使ってみよう。2つのVHDLファイルが開いている状態で、ファイルメニューから”セッションを保存”を選択。
Notepad++_Session_1_091218.png

保存ダイアログが開くので、idram.sessoin と名前をつけてセッションを保存する。
Notepad++_Session_2_091218.png

これでセッションが保存できた。
例えば、他のプロジェクトを編集しいて、今、保存したセッションを読み込むには、
1. ファイルメニューから”すべて閉じる”を選択して、全部ファイルを閉じる。
2. ファイルメニューから”セッションを読み込む”を選択する。
3. ダイアログからidram.session を選択して開くボタンを押すと、さっきのファイル構成が再現される。

色々なセッションを作れば、そのプロジェクトのファイルだけを手軽に編集することができるだろう。
  1. 2009年12月19日 00:01 |
  2. EDAツールについて
  3. | トラックバック:0
  4. | コメント:0

数学ガールのsin(x)のテイラー展開をMaximaで検証

私は数学ガールという本を近頃読んでいる。言ってみれば数学の萌え本だ。
いつもは読む気になれない数学の証明を萌え本形式で書いている。だいたいなるほどと思うところがあるが、よくわからないところは読み飛ばしている。
その中でそうなのか~と思ったのはsin(x)のテイラー展開だった。(232ページ~233ページ)
sin(x)のテイラー展開の部分和を徐々に加えていくと、徐々にsin(x)のグラフに近づいて行くというのが予想していなかったので面白かった。それじゃということで、私が大学のころはなかった文明の利器を使って検証してみた。
使ったのは数値計算のためのソフトウェア。初めはOctaveを使おうと思ったんだけど、どうもよくやり方が分からなくて断念。前から使っていたMaximaを使うことにした。このMaximaは娘に2次方程式を聞かれたときに、答え合わせ用に使っていたものだ。これで検証してみることにした。
作ったファイル (sin_taylor.wxm) を下に示す。

F(x) := sin(x);
G(x) := x/1;
H(x) := x/1 - x*x*x/(1*2*3);
I(x) := x/1 - x*x*x/(1*2*3) + x*x*x*x*x/(1*2*3*4*5);
J(x) := x/1 - x*x*x/(1*2*3) + x*x*x*x*x/(1*2*3*4*5) - x*x*x*x*x*x*x/(1*2*3*4*5*6*7);
plot2d([F,G,H,I,J],[x,-7,7],[y,-10,10]);


このファイルをwxMaximaからOpenするとwxMaxmaの画面はこうなる。
Maxima_1_090606.png

そしてMaximaによって書かれたグラフが下。
Maxima_2_090606.png

最初の部分和 F(x)は y=x で、これはsin(x)を微分したcos(x)のx=0の時の値に等しいので、sin(x)のx=0の時の接線になっている。そこから部分和を追加ていくごとにsin(x)に近づいて行くのが分かる。これはよくわかるのではないだろうか?
面白そうなのでもう少しやってみた。

K(x) := x/1 - x*x*x/(1*2*3) + x*x*x*x*x/(1*2*3*4*5) - x*x*x*x*x*x*x/(1*2*3*4*5*6*7) + x^9/9!;
L(x) := x/1 - x*x*x/(1*2*3) + x*x*x*x*x/(1*2*3*4*5) - x*x*x*x*x*x*x/(1*2*3*4*5*6*7) + x^9/9! - x^11/11!;
plot2d([F,K,L],[x,-7,7],[y,-10,10]);


下がそのグラフ。
Maxima_3_090606.png

だいぶsin(x)に近づいてきた。このように部分和の数を増やしていくと、x=0の点から段々とsin(x)に近づいてくるとは思わなかった。面白い。。。

数学ガールも読み物としては面白いが、もう1冊買ったのだった。”やり直しのための工業数学”という本を買った。こちらは、CRCや暗号、フーリエ変換などが書いてある。こっちを勉強することにしようと思う。特にCRCやハフマン符号化。

#こんなにsin(x)の近似していないところの発散がひどいのでは近似式として使えないなと思ったけど、考えてみたら-π~πまで近似していれば、後は-π~πに折り返せばいいのか? そうすると9の階乗の部分和くらいまででいいのかな?
  1. 2009年06月06日 19:28 |
  2. EDAツールについて
  3. | トラックバック:0
  4. | コメント:3
»