FC2カウンター FPGAの部屋 Interface2011年2月号のNSLサンプルを試す1(クラスとプロパティの作成)
FC2ブログ

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

FPGAの部屋

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

Interface2011年2月号のNSLサンプルを試す1(クラスとプロパティの作成)

OV9655(CMOSカメラモジュール)は、FPGA-CAFEに行って変換基板をハンダ付けするまで、お休みとして、Interface2011年2月号NSLサンプルを試してみようと思う。HDLソースのマニュアル化は、VHDLでDoxygenを使用してマニュアル化を図ってみた。VHDL記述はもともとコード量が多いのに、更にDoxygenの記述が増えてしまうので、挫折してしまった。大規模な回路だったのでなおさらだったのだが、かなり書くのがきつかった。
UMLで書いて、それをHDLに落とすというのも、ずーとやれたら良いなと思ってきた。今回のNSLではUMLのクラス図を書いて、スケルトンモデルをNSLに落として、動作モデルは手で記述するようだ。これでも、クラス図は今まで書いてきたブロック図を置き換えることができるとおもう。ブロック図には、入出力記述が無いがクラス図をその代わりにすれば、入出力記述も書くことができる。ただ、UMLからNSLのパスだけでなく、NSLからUMLのクラス図のパスがあったほうが良いと思う。NSLで出来上がった記述に、例えばLEDの表示を追加するとしたらNSLで追加したほうが便利だ。その時にUMLのクラス図をツールでアップデートできた方がうれしい。NSLからアクティビティ図を自動生成してくれるともっとうれしい。
#NSLからUMLに変換するときに、NSLコードが悪かったら、ここが良くないと指定してくれると良いな?と思う。LINTツールの様な使い方ができそう。。。

さて、Interface2011年2月号の97ページからの”第5章 UMLで始めるFPGA/ASIC回路設計”を参考に書かれているサンプルをやってみた。
最初に付録CDから、UMLエディタのPapyrusをインストールというか?コピーした。次にUML2NSLをインストールし、NSLCoreをインストールした。(Overtone社のダウンロードサイトにNSLCore_20110102_setup.zipがあるので、それをダウンロードしてインストールし直した)

Papyrusを立ち上げた。Workspaceを聞いてくるので、Browse...ボタンでフォルダを選択して、OKボタンをクリックする。
NSL_Sample_m1_110108.png

Fileメニュー -> New -> Create a new Papyrus project を選択して、プロジェクトを作成する。
NSL_Sample_m2_110108.png

New Papyrus project ダイアログが出てくる。Project nameを入力してFinish ボタンをクリックする。
NSL_Sample_m3_110108.png

OutlineウインドウのmyUMLModelを右クリックして、右クリックメニューからAdd a diagram -> Create a new Class Diagram を選択して、新しいClass diagramウインドウを生成する。
NSL_Sample_m4_110108.png

Class diagram of myUMLModelウインドウが生成された。
NSL_Sample_m5_110108.png

UMLファイルとかが入っているNSLのフォルダをWorkspaceにコピーする。
NSL_Sample_m6_110108.png

この後、PDFマニュアルにはないのだが、Workspace上のNSLフォルダをPapyrusのNavigatorウインドウのSTOPWATCHプロジェクトにドラックアンドドロップしないと、次でImport Packageするときに見つからなかった。
NSL_Sample_m7_110108.png

NSLのパッケージをインポートする。OutlineウインドウのmyUMLModelを右クリックして、右クリックメニューからImport Package -> Import Package form workspace models を選択する。
NSL_Sample_m8_110108.png

Import Package From Workspaceダイアログが開く。Select a resoure to open のテキストボックスにNSLと入れると、Matching resource にNSL.profile.uml が出てくるので、それを選択して、OKボタンをクリックする。
NSL_Sample_m9_110108.png

次のNSLにチェックを入れて、OKボタンをクリックする。
NSL_Sample_m10_110108.png

OutlineウインドウのmyUMLModelを展開すると、import NSLがあるはず。右の三角形をクリックすると、Palette Windowが出てくlる。
NSL_Sample_m11_110108.png

後は、付録CDの Papyrus_Manual.pdf にSTOPWATCHのクラスの作り方が書いてあるので、それに従ってクラス図を作成すれば良いと思っていたが、記事のクラス図と違っているので、記事のクラス名に合わせることにする。
まずは、Palette Windowを展開して、Packageを選択して、Packageを描く。
NSL_Sample_2_110105.png

次に、クラスを作成して、名前をtimer7segに変更する。
NSL_Sample_3_110105.png

Interface2011年2月号の102ページの図9のクラスを全て書いた。
NSL_Sample_4_110106.png

クラスの2番目のセルをマウスでポイントすると、Add new Propetyアイコンが現れるので、クリックしてプロパティを追加した。
NSL_Sample_5_110106.png

プロパティを選択した状態で、下のPropetiesウインドウ内のValue(s) DefinitionフィールドのTypeの+ボタンをクリックして、Select Typeダイアログを出す。NSL_profle.umlから<Primitive Type>regを選択する。
NSL_Sample_6_110106.png

Value(s) DefinitionフィールドのTypeはNSL::regになった。Propetiesウインドウ内のName:を cnt_1sec に変更した。
NSL_Sample_7_110106.png

次にビット幅を指定する。Propetiesウインドウ内のMulipliccity:でビット幅を指定した。
NSL_Sample_8_110106.png

Propetiesウインドウ内のVisibilityでprivateラジオボタンをチェックした。
NSL_Sample_9_110106.png

なお、Visibilityは、下の表のように設定するそうだ。

input, output : public
wire, reg, mem : private
integer, variable : private


これで1つのプロパティ(reg)の設定が終わったので、全部のプロパティを作成していく。
下の図が全部のプロパティを設定を終了した状態だ。
NSL_Sample_10_110106.png

Interface2011年2月号のNSLサンプルを試す2(メソッド作成)”へ続く。
  1. 2011年01月05日 05:48 |
  2. NSL
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/1682-9ff8e714
この記事にトラックバックする(FC2ブログユーザー)