FC2カウンター FPGAの部屋 2013年05月11日
FC2ブログ

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

FPGAの部屋

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

Triple Frame Buffer Controller の追加4(IPの追加)

前回、”Triple Frame Buffer Controller の追加3(単体シミュレーション)”で、Triple Frame Buffer Controller の単体シミュレーションが成功した。今回は、XPSプロジェクトに、Triple Frame Buffer Controller IP を追加する。

・XPSプロジェクトでRescan User Repositories を実行して、Triple Frame Buffer Controller IP をXPSに認識させた。

・XPSプロジェクトのUSER に triple_fb_cntler が追加された。triple_fb_cntler の右クリックメニューから Add IP を選択した。
Triple_FBC_8_130511.png

・ダイアログが出るので、Yes ボタンをクリックした。
Triple_FBC_9_130511.png

・ triple_fb_cntler_0 の設定ダイアログが出た。そのまま OK ボタンをクリックした。
Triple_FBC_10_130511.png

・triple_fb_cntler_0 がXPSプロジェクトに入った。
Triple_FBC_11_130511.png

・Ports タブで、triple_fb_cntler_0 のポートを下図の様に接続した。
Triple_FBC_12_130511.png

・カメラ・インターフェースIPとビットマップ・ディスプレイ・コントローラIPの対応するポートに接続した。
Triple_FBC_13_130511.png

・Project メニューから Desgin Rule Check を行ったらエラーはなかった。

これでXPSプロジェクトは完成したので、Hardware メニューから Clean Netlist を選択して、既存のネットリストを削除した。

最後にカスタムIP用のファイルを下に示す。
最初に、triple_fb_cntrler_v2_1_0.mpd を下に示す。

###################################################################
##
## Name : triple_fb_cntrler
## Desc : Microprocessor Peripheral Description
## : Automatically generated by PsfUtility
##
###################################################################

BEGIN triple_fb_cntrler

## Peripheral Options
OPTION IPTYPE = PERIPHERAL
OPTION IMP_NETLIST = TRUE
OPTION STYLE = HDL
OPTION DESC = triple_fb_cntrler
OPTION LONG_DESC = Triple Frame Buffer Controller
OPTION HDL = MIXED
OPTION RUN_NGCBUILD = FALSE

## Bus Interfaces

## Generics for VHDL or Parameters for Verilog
PARAMETER C_M_AXI_ADDR_WIDTH = 32, DT = integer, ASSIGNMENT = CONSTANT
PARAMETER C_DISPLAY_START_ADDRESS = 0x1A000000, DT = std_logic_vector(31 downto 0)

## Ports
PORT aclk = "", DIR = I, SIGIS = CLK
PORT aresetn = "", DIR = I, SIGIS = RST
PORT camera_fb_start_addr = "", DIR = O, VEC = [(C_M_AXI_ADDR_WIDTH-1):0]
PORT bitmapd_fb_start_addr = "", DIR = O, VEC = [(C_M_AXI_ADDR_WIDTH-1):0]
PORT frame_valid_1d = "", DIR = I
PORT display_enable = "", DIR = I
END


次に、triple_fb_cntrler_v2_1_0.muiを下に示す。

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE doc SYSTEM "../../ipdialog.dtd" [
    <!-- -->
    <!ENTITY C_M_AXI_ADDR_WIDTH '
    <widget id="C_M_AXI_ADDR_WIDTH">
        <key>C_M_AXI_ADDR_WIDTH</key>
        <label>C_M_AXI_ADDR_WIDTH</label>
        <tip></tip>
    </widget>
    '>
    <!ENTITY C_DISPLAY_START_ADDRESS '
    <widget id="C_DISPLAY_START_ADDRESS">
        <key>C_DISPLAY_START_ADDRESS</key>
        <label>C_DISPLAY_START_ADDRESS</label>
        <tip></tip>
    </widget>
    '>
]>

<doc>
    <view id="User">
        <display>User</display>
        <group id="Common">
            <display>Common</display>
            <item>&C_M_AXI_ADDR_WIDTH;</item>
            <item>&C_DISPLAY_START_ADDRESS;</item>
        </group>
    </view>
</doc>


最後に、triple_fb_cntrler_v2_1_0.pao を下に示す。

lib triple_fb_cntrler_v1_00_a triple_fb_state.v verilog
lib triple_fb_cntrler_v1_00_a triple_fb_cntrler.v verilog


これで、AXIバスやPLBバスを持たないで、他のカスタムIPに接続するだけのIPも作ることが出来た。
  1. 2013年05月11日 04:56 |
  2. ZedBoard
  3. | トラックバック:0
  4. | コメント:0