FC2カウンター FPGAの部屋 ある constant の値で、他の constant の値を切り替える3(VHDL編2、XPSプロジェクト)
FC2ブログ

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

FPGAの部屋

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

ある constant の値で、他の constant の値を切り替える3(VHDL編2、XPSプロジェクト)

ある constant の値で、他の constant の値を切り替える2(VHDL編)”の続き。

VHDLの達人 hiyuh さんのVHDLコードのおかげで、"SVGA"と入力したら、800x600 に設定することができた。今度は、XPSプロジェクトに置いてAdd IPのダイアログの中で、VGA, SVGAなどの解像度を設定したら、640x480, 800x600 に設定することを目指す。

MPDファイルのサンプルを見ると、DT = STRING として、VALUESで選択する文字列の項目を列挙すれば、Add IPのダイアログでリストボックスで選択できるようだ。

PARAMETER RESOLUTION = "SVGA", DT = STRING, VALUES = (VGA=VGA, SVGA=SVGA, XGA=XGA, SXGA=SXGA, HD=HD)


なお、”Platform Specification Format Reference Manual Embedded Development Kit (EDK) 14.1 UG642 (v14.1) April 24, 2012”の47ページに載っている例文によると、ダイアログに表示する文字列は = の後のようだ。= の前にinteger 値を書けば、その値を入力することも出来るようだ。下に引用する。

PARAMETER C_ODD_PARITY=1, RANGE=(0:1), VALUES=(0=Even, 1=Odd)


VHDLの達人 hiyuh さんは、”VHDLでstringなgenericを使うのはあまり筋が良くない”とのことなのだが、文字列使ったほうがわかりやすいし、Xilinxのサンプルも使ってあるので、文字列を使ってみようと思う。何かまずいことがあったら integer に修正しようと思う。

constant_test2 IP を作って、XPSプロジェクトにAdd IPした所の画像を下に示す。
const2const_5_140310.png

constant_test2_0 をダブルクリックして、ダイアログを表示してみたところだ。RESOLUTIONを選択することが出来る。HDを選んだ。
const2const_6_140310.png

ISE14.7でインプリメントもOKだった。
const2const_7_140310.png

ISimのシミュレーションでも、HDの解像度が選択されているのがわかる。
const2const_8_140310.png

これで、この戦略は使えることがわかったので、これを使って、キャラクタ・ディスプレイ・コントローラ IP を使いやすいように書き換えることにする。

なお、VHDLコードは、”ある constant の値で、他の constant の値を切り替える2(VHDL編)”に貼ってある constant_test2.vhd そのままだ。

下にMPDファイルを貼っておく。

BEGIN constant_test2

## Peripheral Options
OPTION IPTYPE = PERIPHERAL
OPTION IMP_NETLIST = TRUE
OPTION STYLE = HDL
OPTION DESC = constant_test2
OPTION LONG_DESC = constant test IP
OPTION HDL = VHDL
OPTION RUN_NGCBUILD = FALSE

## Bus Interfaces

## Generics for VHDL or Parameters for Verilog
PARAMETER RESOLUTION = "SVGA", DT = STRING, VALUES = (VGA=VGA, SVGA=SVGA, XGA=XGA, SXGA=SXGA, HD=HD)

## Ports
PORT oH_ACTIVE_VIDEO = "", DIR = O, VEC=[10:0]
PORT oV_ACTIVE_VIDEO = "", DIR = O, VEC=[10:0]
END

  1. 2014年03月10日 04:03 |
  2. EDK
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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