FC2カウンター FPGAの部屋 Spartan-3A Starter KitでEDKを使ってカメラ表示25(LCD、Rotary EncoderカスタムIPの追加3)
FC2ブログ

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

FPGAの部屋

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

Spartan-3A Starter KitでEDKを使ってカメラ表示25(LCD、Rotary EncoderカスタムIPの追加3)

Spartan-3A Starter KitでEDKを使ってカメラ表示24(LCD、Rotary EncoderカスタムIPの追加2)”の続き。

前回は、.paoファイルにHDLファイルを追加するのを忘れてしまった。

rotary_encoder_v2_1_0.paoから追加する。下に内容を示す。

##############################################################################
## Filename: H:/HDL/FndtnISEWork/Spartan3A_starter_kit/CamDisp_EDK_OV7670_LCD/system/pcores/rotary_encoder_v1_00_a/data/rotary_encoder_v2_1_0.pao
## Description: Peripheral Analysis Order
## Date: Tue Sep 27 05:24:05 2011 (by Create and Import Peripheral Wizard)
##############################################################################

lib proc_common_v3_00_a all
lib plbv46_slave_single_v1_01_a all
lib rotary_encoder_v1_00_a user_logic vhdl
lib rotary_encoder_v1_00_a rotary_encoder vhdl
lib rotary_encoder_v1_00_a rot_enc_cont.vhd vhdl
lib rotary_encoder_v1_00_a ROTSW_SM.vhd vhdl
lib rotary_encoder_v1_00_a swdiv_rot.vhd vhdl


次に、lcd_controller_v2_1_0.paoの内容を下に示す。

##############################################################################
## Filename: H:/HDL/FndtnISEWork/Spartan3A_starter_kit/CamDisp_EDK_OV7670_LCD/system/pcores/lcd_controller_v1_00_a/data/lcd_controller_v2_1_0.pao
## Description: Peripheral Analysis Order
## Date: Tue Sep 27 05:26:28 2011 (by Create and Import Peripheral Wizard)
##############################################################################

lib proc_common_v3_00_a all
lib plbv46_slave_single_v1_01_a all
lib lcd_controller_v1_00_a user_logic vhdl
lib lcd_controller_v1_00_a lcd_controller vhdl
lib lcd_controller_v1_00_a lcd_ctlr.vhd vhdl


これで、XPSでProjectメニューから> Rescan User Repositoriesを選択して、生成したカスタムIPの変更をもう一度、XPSに認識させた。

(注)もう一度、元のEDKプロジェクトをコピーして、カスタムIPを作りなおしても、(PAOファイルが完全でも)やはり同様にワーニングが出ている。PAOファイルは関係なかったみたいだ。
もしかすると、複数PLBバスがあると何処にアサインするか分からないのかもしれない?


system.ucf にロータリー・エンコーダとLCDの入出力ピンの制約を追加した。追加した制約を下に示す。

# ロータリーエンコーダ
NET "rot_center" LOC = "R13" | IOSTANDARD = LVTTL | PULLDOWN ;
NET "rot_a" LOC = "T13" | IOSTANDARD = LVTTL | PULLUP ;
NET "rot_b" LOC = "R14" | IOSTANDARD = LVTTL | PULLUP ;

# LCD
NET "LCD_E" LOC = "AB4" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = QUIETIO ;
NET "LCD_RS" LOC = "Y14" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = QUIETIO ;
NET "LCD_RW" LOC = "W13" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = QUIETIO ;
NET "LCD_DB<7>" LOC = "Y15" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = QUIETIO ;
NET "LCD_DB<6>" LOC = "AB16" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = QUIETIO ;
NET "LCD_DB<5>" LOC = "Y16" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = QUIETIO ;
NET "LCD_DB<4>" LOC = "AA12" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = QUIETIO ;
NET "LCD_DB<3>" LOC = "AB12" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = QUIETIO ;
NET "LCD_DB<2>" LOC = "AB17" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = QUIETIO ;
NET "LCD_DB<1>" LOC = "AB18" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = QUIETIO ;
NET "LCD_DB<0>" LOC = "Y13" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = QUIETIO ;



これでインプリメントを試みた。しかし、MAPでエラー発生。
Spa3A_SKit_OV7670_106_110929.png

1つ目のエラーの内容を示す。

ERROR:MapLib:979 - LUT2 symbol "system_i/rotary_encoder_0/rotary_encoder_0/USER_LOGIC_I/rot_enc_cont_i/ROTSW_SM_inst/next_center_pulse1" (output signal=system_i/rotary_encoder_0/rotary_encoder_0/USER_LOGIC_I/rot_enc_cont_i/ROTSW_SM_inst/next_center_pulse) has input signal "system_i/rotary_encoder_0/rotary_encoder_0/USER_LOGIC_I/rot_enc_cont_i/rot_center_node" which will be trimmed. See Section 5 of the Map Report File for details about why the input signal will become undriven.


信号が削除されたので、入力が無くなったというようなエラーだった。

原因がわかったぞ。。。入出力ピンを追加したのにXPSのトップファイルを再生成していないためだ…
早速、Project NavigatorでXPSを選択して、ProcessesウインドウのGenerate Top HDL Sourceをダブルクリックした。下の図は実行後。
Spa3A_SKit_OV7670_107_110930.png

やった~~~。MAP通った… よかった。
インプリメントが終了した。今回は、大分苦労してしまった。
Spa3A_SKit_OV7670_108_110930.png

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

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

Design Information
------------------
Command Line   : map -intstyle ise -p xc3s700a-fg484-4 -cm speed -ir off -pr off
-c 100 -o system_top_map.ncd system_top.ngd system_top.pcf 
Target Device  : xc3s700a
Target Package : fg484
Target Speed   : -4
Mapper Version : spartan3a -- $Revision: 1.55 $
Mapped Date    : FRI 30 SEP 5:23:31 2011

Design Summary
--------------
Number of errors:      0
Number of warnings:  251
Logic Utilization:
  Number of Slice Flip Flops:         5,830 out of  11,776   49%
  Number of 4 input LUTs:             6,458 out of  11,776   54%
Logic Distribution:
  Number of occupied Slices:          5,551 out of   5,888   94%
    Number of Slices containing only related logic:   5,551 out of   5,551 100%
    Number of Slices containing unrelated logic:          0 out of   5,551   0%
      *See NOTES below for an explanation of the effects of unrelated logic.
  Total Number of 4 input LUTs:       6,836 out of  11,776   58%
    Number used as logic:             5,900
    Number used as a route-thru:        378
    Number used for Dual Port RAMs:     320
      (Two LUTs used per Dual Port RAM)
    Number used as Shift registers:     238

  The Slice Logic Distribution report is not meaningful if the design is
  over-mapped for a non-slice resource or if Placement fails.

  Number of bonded IOBs:                114 out of     372   30%
    IOB Flip Flops:                      23
    IOB Master Pads:                      3
    IOB Slave Pads:                       3
  Number of ODDR2s used:                 24
    Number of DDR_ALIGNMENT = NONE       24
    Number of DDR_ALIGNMENT = C0          0
    Number of DDR_ALIGNMENT = C1          0
  Number of BUFGMUXs:                    10 out of      24   41%
  Number of DCMs:                         4 out of       8   50%
  Number of BSCANs:                       1 out of       1  100%
  Number of BSCAN_SPARTAN3As:             1 out of       1  100%
  Number of MULT18X18SIOs:                3 out of      20   15%
  Number of RAMB16BWEs:                  19 out of      20   95%

  Number of RPM macros:            1
Average Fanout of Non-Clock Nets:                3.28

Peak Memory Usage:  242 MB
Total REAL time to MAP completion:  29 secs 
Total CPU time to MAP completion:   25 secs 


前回、LCDコントローラとロータリー・エンコーダのコントローラを入れる前は、Number of Slice Flip Flopsが47%だったが、今回は49%だった。順調に増えているようなので、大丈夫だろう?と思う。
  1. 2011年09月30日 05:35 |
  2. EDK
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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