FC2カウンター FPGAの部屋 AXIバスのEDKでキャラクタ・ディスプレイ・コントローラのカスタムIPを作る3
FC2ブログ

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

FPGAの部屋

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

AXIバスのEDKでキャラクタ・ディスプレイ・コントローラのカスタムIPを作る3

AXIバスのEDKでキャラクタ・ディスプレイ・コントローラのカスタムIPを作る2”の続き。

基本的には、”AXIバスのEDKチュートリアルを試す9(カスタムIPを作る3)”を見ながら、同じように作業を進めています。

1.system\pcores\chardispc_v1_00_a\dataのchardispc_v2_1_0.mpd を開いて、##Portsの項目にDVI関係のポート宣言を追加する。

PORT dvi_xclk_p = "", DIR = O
PORT dvi_xclk_n = "", DIR = O
PORT dvi_de = "", DIR = O
PORT dvi_h = "", DIR = O
PORT dvi_v = "", DIR = O
PORT dvi_d = "", DIR = O, VEC = [11:0]
PORT dvi_reset_b = "", DIR = O
PORT dvi_sda = "", DIR = O
PORT dvi_scl = "", DIR = O



2.XPSでProjectメニューから> Rescan User Repositoriesを選択して、chardispc pcoreの変更をXPSに認識させる。

3.XPSのIP CatalogからProject Local PCores -> USER -> CHARDISPC を選んで、右クリックメニューからAdd IPを選択する。

4.XPS Core Configダイアログが開く。多分、C_NUM_REGはレジスタの数を示すと思うので2 に変更した。
SP605_AXI_CDC_9_110731.png

5.Instantiate and Connect IPダイアログが開く。Select the MicroBlaze Instance to Connect toでmicroblze_0が選ばれている。MicroBlazeは1個だけなので、選べるのはmicroblze_0のみ。

6.XPSのBus Interfaceタブを見ると、chardispc コアが入っているのがわかる。次に、chardispc とDVI関連の信号間に外部接続を作る必要がある。
SP605_AXI_CDC_10_110731.png

7.Portsタブをクリックする。chardispc_0 を展開して、DVI関連の信号をすべて選択して、右クリックメニューからMake External を選択する。
SP605_AXI_CDC_11_110731.png

8.外部ピンは、名前の前にchardispc_0_ が付いて、名前の後ろに_pin が付いたファイル名になった。
SP605_AXI_CDC_12_110731.png

9.設定した外部品の名前の前のchardispc_0_ と名前の後ろの_pin を削除した。
SP605_AXI_CDC_24_110802.png

10.Addressタブをクリックすると、blink_0のアドレス領域が0x74800000から0x7480FFFFであることがわかる。64Kbyteのアドレスを割りつけられている。
SP605_AXI_CDC_13_110731.png

・MHSファイルで、DVI関連のピン名を変更することもできるようだ。Projectタブを選択して、Project Files のMHS File: system.mhs をダブルクリックする。PORTの最後の方にchardispc_0 関連の信号ピンが見える。
SP605_AXI_CDC_14_110731.png

・名前の前のchardispc_0_ と名前の後ろの_pin を削除した。FileメニューからSaveを選択して、セーブする。
SP605_AXI_CDC_15_110731.png

・Reload Projectダイアログが出る。Reloadボタンをクリックする。
SP605_AXI_CDC_16_110731.png

・プロジェクトがリロードされて、External Portsの名前が変更された。
SP605_AXI_CDC_17_110731.png


11.UCFを編集する。UCF File: data/system.ucfをダブルクリックする。

12.system.ucfファイルが表示された。DVI関連の信号の制約を追加し、セーブした。
SP605_AXI_CDC_18_110731.png

追加したUCFを下に示す。

NET "dvi_d[0]" IOSTANDARD = LVCMOS25;
NET "dvi_d[0]" DRIVE = 12;
NET "dvi_d[0]" LOC = K16;
NET "dvi_d[1]" IOSTANDARD = LVCMOS25;
NET "dvi_d[1]" DRIVE = 12;
NET "dvi_d[1]" LOC = U19;
NET "dvi_d[2]" IOSTANDARD = LVCMOS25;
NET "dvi_d[2]" DRIVE = 12;
NET "dvi_d[2]" LOC = T20;
NET "dvi_d[3]" IOSTANDARD = LVCMOS25;
NET "dvi_d[3]" DRIVE = 12;
NET "dvi_d[3]" LOC = N16;
NET "dvi_d[4]" IOSTANDARD = LVCMOS25;
NET "dvi_d[4]" DRIVE = 12;
NET "dvi_d[4]" LOC = P16;
NET "dvi_d[5]" IOSTANDARD = LVCMOS25;
NET "dvi_d[5]" DRIVE = 12;
NET "dvi_d[5]" LOC = M17;
NET "dvi_d[6]" IOSTANDARD = LVCMOS25;
NET "dvi_d[6]" DRIVE = 12;
NET "dvi_d[6]" LOC = M18;
NET "dvi_d[7]" IOSTANDARD = LVCMOS25;
NET "dvi_d[7]" DRIVE = 12;
NET "dvi_d[7]" LOC = R15;
NET "dvi_d[8]" IOSTANDARD = LVCMOS25;
NET "dvi_d[8]" DRIVE = 12;
NET "dvi_d[8]" LOC = R16;
NET "dvi_d[9]" IOSTANDARD = LVCMOS25;
NET "dvi_d[9]" DRIVE = 12;
NET "dvi_d[9]" LOC = P17;
NET "dvi_d[10]" IOSTANDARD = LVCMOS25;
NET "dvi_d[10]" DRIVE = 12;
NET "dvi_d[10]" LOC = P18;
NET "dvi_d[11]" IOSTANDARD = LVCMOS25;
NET "dvi_d[11]" DRIVE = 12;
NET "dvi_d[11]" LOC = R17;
NET "dvi_de" IOSTANDARD = LVCMOS25;
NET "dvi_de" DRIVE = 12;
NET "dvi_de" LOC = J17;
NET "dvi_h" IOSTANDARD = LVCMOS25;
NET "dvi_h" DRIVE = 12;
NET "dvi_h" LOC = J16;
NET "dvi_reset_b" IOSTANDARD = LVCMOS25;
NET "dvi_reset_b" DRIVE = 12;
NET "dvi_reset_b" LOC = L15;
NET "dvi_v" IOSTANDARD = LVCMOS25;
NET "dvi_v" DRIVE = 12;
NET "dvi_v" LOC = B22;
NET "dvi_xclk_n" SLEW = FAST;
NET "dvi_xclk_n" IOSTANDARD = LVCMOS25;
NET "dvi_xclk_n" DRIVE = 12;
NET "dvi_xclk_n" LOC = C22;
NET "dvi_xclk_p" SLEW = FAST;
NET "dvi_xclk_p" IOSTANDARD = LVCMOS25;
NET "dvi_xclk_p" DRIVE = 12;
NET "dvi_xclk_p" LOC = C20;
NET "dvi_sda" IOSTANDARD = LVCMOS25;
NET "dvi_sda" DRIVE = 12;
NET "dvi_sda" LOC = AA4;
NET "dvi_scl" IOSTANDARD = LVCMOS25;
NET "dvi_scl" DRIVE = 12;
NET "dvi_scl" LOC = W13;


13.XPSを閉じて、Project Navigatorに戻り、Hierarchyウインドウでsystemを選択する。下のProcessesウインドウでGenerate Top HDL Source をダブルクリックして、トップレベルファイルを生成する。

14.ProcessesウインドウでGenerate Programming File をダブルクリックして、インプリメントを開始した。

15.インプリメントが終了した。使用したLUTは19%だった。前回が21%だったので、ロジックを増やしたはずが減っている?何か消えているかもしれない?
SP605_AXI_CDC_25_110803.png

下にMAPリポートの一部を示す。

Release 13.2 Map O.61xd (nt)
Xilinx Mapping Report File for Design 'system_top'

Design Information
------------------
Command Line   : map -intstyle ise -p xc6slx45t-fgg484-3 -w -logic_opt off -ol high -t 1 -xt 0 -register_duplication off
-r 4 -global_opt off -mt off -ir off -pr off -lc off -power off -o system_top_map.ncd system_top.ngd system_top.pcf 
Target Device  : xc6slx45t
Target Package : fgg484
Target Speed   : -3
Mapper Version : spartan6 -- $Revision: 1.55 $
Mapped Date    : TUE 2 AUG 20:52:36 2011

Design Summary
--------------
Number of errors:      0
Number of warnings:   29
Slice Logic Utilization:
  Number of Slice Registers:                 4,348 out of  54,576    7%
    Number used as Flip Flops:               4,340
    Number used as Latches:                      0
    Number used as Latch-thrus:                  0
    Number used as AND/OR logics:                8
  Number of Slice LUTs:                      5,190 out of  27,288   19%
    Number used as logic:                    4,792 out of  27,288   17%
      Number using O6 output only:           3,660
      Number using O5 output only:             119
      Number using O5 and O6:                1,013
      Number used as ROM:                        0
    Number used as Memory:                     252 out of   6,408    3%
      Number used as Dual Port RAM:             96
        Number using O6 output only:             4
        Number using O5 output only:             1
        Number using O5 and O6:                 91
      Number used as Single Port RAM:            4
        Number using O6 output only:             4
        Number using O5 output only:             0
        Number using O5 and O6:                  0
      Number used as Shift Register:           152
        Number using O6 output only:            48
        Number using O5 output only:             1
        Number using O5 and O6:                103
    Number used exclusively as route-thrus:    146
      Number with same-slice register load:    124
      Number with same-slice carry load:        20
      Number with other load:                    2

Slice Logic Distribution:
  Number of occupied Slices:                 2,103 out of   6,822   30%
  Number of LUT Flip Flop pairs used:        6,156
    Number with an unused Flip Flop:         2,169 out of   6,156   35%
    Number with an unused LUT:                 966 out of   6,156   15%
    Number of fully used LUT-FF pairs:       3,021 out of   6,156   49%
    Number of unique control sets:             357
    Number of slice register sites lost
      to control set restrictions:           1,374 out of  54,576    2%

  A LUT Flip Flop pair for this architecture represents one LUT paired with
  one Flip Flop within a slice.  A control set is a unique combination of
  clock, reset, set, and enable signals for a registered element.
  The Slice Logic Distribution report is not meaningful if the design is
  over-mapped for a non-slice resource or if Placement fails.

IO Utilization:
  Number of bonded IOBs:                       127 out of     296   42%
    Number of LOCed IOBs:                      127 out of     127  100%
    IOB Flip Flops:                             64

Specific Feature Utilization:
  Number of RAMB16BWERs:                        34 out of     116   29%
  Number of RAMB8BWERs:                          1 out of     232    1%
  Number of BUFIO2/BUFIO2_2CLKs:                 1 out of      32    3%
    Number used as BUFIO2s:                      1
    Number used as BUFIO2_2CLKs:                 0
  Number of BUFIO2FB/BUFIO2FB_2CLKs:             0 out of      32    0%
  Number of BUFG/BUFGMUXs:                       8 out of      16   50%
    Number used as BUFGs:                        8
    Number used as BUFGMUX:                      0
  Number of DCM/DCM_CLKGENs:                     2 out of       8   25%
    Number used as DCMs:                         2
    Number used as DCM_CLKGENs:                  0
  Number of ILOGIC2/ISERDES2s:                  16 out of     376    4%
    Number used as ILOGIC2s:                    16
    Number used as ISERDES2s:                    0
  Number of IODELAY2/IODRP2/IODRP2_MCBs:        32 out of     376    8%
    Number used as IODELAY2s:                    8
    Number used as IODRP2s:                      2
    Number used as IODRP2_MCBs:                 22
  Number of OLOGIC2/OSERDES2s:                  86 out of     376   22%
    Number used as OLOGIC2s:                    40
    Number used as OSERDES2s:                   46
  Number of BSCANs:                              1 out of       4   25%
  Number of BUFHs:                               0 out of     256    0%
  Number of BUFPLLs:                             0 out of       8    0%
  Number of BUFPLL_MCBs:                         1 out of       4   25%
  Number of DSP48A1s:                            3 out of      58    5%
  Number of GTPA1_DUALs:                         0 out of       2    0%
  Number of ICAPs:                               0 out of       1    0%
  Number of MCBs:                                1 out of       2   50%
  Number of PCIE_A1s:                            0 out of       1    0%
  Number of PCILOGICSEs:                         0 out of       2    0%
  Number of PLL_ADVs:                            1 out of       4   25%
  Number of PMVs:                                0 out of       1    0%
  Number of STARTUPs:                            0 out of       1    0%
  Number of SUSPEND_SYNCs:                       0 out of       1    0%



(2011/08/04:追記)
CHARDISPC を追加するときのXPS Core Configダイアログで指定したC_NUM_REGは2だったが、system\pcores\chardispc_v1_00_a\data\chardispc_v2_1_0.mpd で指定されたC_NUM_REGの値は1だった。

PARAMETER C_NUM_REG = 1, DT = INTEGER


これでも、CHARDISPC の動作には問題はないようだ。C_NUM_REG = 2でも、C_NUM_REG = 1でも実際にインプリメントして試してみたが、同様に動作した。
  1. 2011年08月03日 04:42 |
  2. EDK
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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