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ボタンをクリックする。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

なお、Visibilityは、下の表のように設定するそうだ。
input, output : public
wire, reg, mem : private
integer, variable : private
これで1つのプロパティ(reg)の設定が終わったので、全部のプロパティを作成していく。
下の図が全部のプロパティを設定を終了した状態だ。

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