FC2カウンター FPGAの部屋 2012年01月07日
FC2ブログ

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

FPGAの部屋

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

friends もののけ島のナキ(映画)を見てきました

今日は、”friends もののけ島のナキ”を見てきました。
日本のCG映画はどのくらいか見たかったからです。物語は最初、モンスターズ・インクぽいかな?と思いましたが、見終わった感想は、CG版日本昔ばなし。鬼が主役だったからでしょうか?
後ろの背景が風になびいてたりしていないのが気になりました。ジブリ作品見ているせいでしょうか?物理計算が大変なのかな?
物理計算はしないで、カメラの背景のゆらぎを取得してポリゴンを動かしたら?どうかな?とか思っちゃいました。ブログねたになりますかね?
  1. 2012年01月07日 22:10 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

ar37425のAXI4 Masterサンプルを試す4(シミュレーション)

ar37425のAXI4 Masterサンプルを試す3(SDK)”の続き。

今回はシミュレーションを行う。
シミュレーション方法は”EDKのシミュレーション”とほぼ同じ、この記事を参照しながら行う。

1.axi_timer_test.elfをプロジェクトに追加した。

2.Project Navigatorをシミュレーションモードに変更した。

3.テストベンチsystem_top_tb.v を新規作成した。
Atlys_51_120107.png

下にsystem_top_tb.v を示す。

`timescale 100ps / 1ps

////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer:
//
// Create Date:   05:18:27 01/07/2012
// Design Name:   system_top
// Module Name:   H:/HDL/FndtnISEWork/Spartan6/Atlys/test/Atlys_XPS_CamDisp/ISE/Atlys_XPS_CamDisp/system_top_tb.v
// Project Name:  Atlys_XPS_CamDisp
// Target Device:  
// Tool versions:  
// Description: 
//
// Verilog Test Fixture created by ISE for module: system_top
//
// Dependencies:
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
////////////////////////////////////////////////////////////////////////////////

module system_top_tb;

    // Inputs
    reg RS232_Uart_1_sin;
    reg RESET;
    reg [0:4] Push_Buttons_5Bits_TRI_I;
    reg GCLK;
    reg Ethernet_Lite_TX_CLK;
    reg Ethernet_Lite_RX_ER;
    reg Ethernet_Lite_RX_DV;
    reg Ethernet_Lite_RX_CLK;
    reg [3:0] Ethernet_Lite_RXD;
    reg Ethernet_Lite_CRS;
    reg Ethernet_Lite_COL;
    reg [7:0] DIP_Switches_8Bits_TRI_I;

    // Outputs
    wire mcbx_dram_we_n;
    wire mcbx_dram_udm;
    wire mcbx_dram_ras_n;
    wire mcbx_dram_odt;
    wire mcbx_dram_ldm;
    wire mcbx_dram_clk_n;
    wire mcbx_dram_clk;
    wire mcbx_dram_cke;
    wire mcbx_dram_cas_n;
    wire [2:0] mcbx_dram_ba;
    wire [12:0] mcbx_dram_addr;
    wire RS232_Uart_1_sout;
    wire [7:0] LEDs_8Bits_TRI_O;
    wire Ethernet_Lite_TX_EN;
    wire [3:0] Ethernet_Lite_TXD;
    wire Ethernet_Lite_PHY_RST_N;
    wire Ethernet_Lite_MDC;
    wire axi_master_0_ERROR;

    // Bidirs
    wire zio;
    wire rzq;
    wire mcbx_dram_udqs_n;
    wire mcbx_dram_udqs;
    wire mcbx_dram_dqs_n;
    wire mcbx_dram_dqs;
    wire [15:0] mcbx_dram_dq;
    wire Ethernet_Lite_MDIO;

    // Instantiate the Unit Under Test (UUT)
    system_top uut (
        .zio(zio), 
        .rzq(rzq), 
        .mcbx_dram_we_n(mcbx_dram_we_n), 
        .mcbx_dram_udqs_n(mcbx_dram_udqs_n), 
        .mcbx_dram_udqs(mcbx_dram_udqs), 
        .mcbx_dram_udm(mcbx_dram_udm), 
        .mcbx_dram_ras_n(mcbx_dram_ras_n), 
        .mcbx_dram_odt(mcbx_dram_odt), 
        .mcbx_dram_ldm(mcbx_dram_ldm), 
        .mcbx_dram_dqs_n(mcbx_dram_dqs_n), 
        .mcbx_dram_dqs(mcbx_dram_dqs), 
        .mcbx_dram_dq(mcbx_dram_dq), 
        .mcbx_dram_clk_n(mcbx_dram_clk_n), 
        .mcbx_dram_clk(mcbx_dram_clk), 
        .mcbx_dram_cke(mcbx_dram_cke), 
        .mcbx_dram_cas_n(mcbx_dram_cas_n), 
        .mcbx_dram_ba(mcbx_dram_ba), 
        .mcbx_dram_addr(mcbx_dram_addr), 
        .RS232_Uart_1_sout(RS232_Uart_1_sout), 
        .RS232_Uart_1_sin(RS232_Uart_1_sin), 
        .RESET(RESET), 
        .Push_Buttons_5Bits_TRI_I(Push_Buttons_5Bits_TRI_I), 
        .LEDs_8Bits_TRI_O(LEDs_8Bits_TRI_O), 
        .GCLK(GCLK), 
        .Ethernet_Lite_TX_EN(Ethernet_Lite_TX_EN), 
        .Ethernet_Lite_TX_CLK(Ethernet_Lite_TX_CLK), 
        .Ethernet_Lite_TXD(Ethernet_Lite_TXD), 
        .Ethernet_Lite_RX_ER(Ethernet_Lite_RX_ER), 
        .Ethernet_Lite_RX_DV(Ethernet_Lite_RX_DV), 
        .Ethernet_Lite_RX_CLK(Ethernet_Lite_RX_CLK), 
        .Ethernet_Lite_RXD(Ethernet_Lite_RXD), 
        .Ethernet_Lite_PHY_RST_N(Ethernet_Lite_PHY_RST_N), 
        .Ethernet_Lite_MDIO(Ethernet_Lite_MDIO), 
        .Ethernet_Lite_MDC(Ethernet_Lite_MDC), 
        .Ethernet_Lite_CRS(Ethernet_Lite_CRS), 
        .Ethernet_Lite_COL(Ethernet_Lite_COL), 
        .DIP_Switches_8Bits_TRI_I(DIP_Switches_8Bits_TRI_I), 
        .axi_master_0_ERROR(axi_master_0_ERROR)
    );

    parameter PERIOD = 100; // 100MHz clock
    parameter real DUTY_CYCLE = 0.5;
    parameter OFFSET = 0;
    
    initial    // Clock process for clk
    begin
        GCLK = 1'b0;
        #OFFSET;
        forever begin
            GCLK = 1'b0;
            #(PERIOD-(PERIOD*DUTY_CYCLE)) GCLK = 1'b1;
            #(PERIOD*DUTY_CYCLE);
        end
    end

    initial begin
        // Initialize Inputs
        RS232_Uart_1_sin = 0;
        RESET = 1'b0;
        Push_Buttons_5Bits_TRI_I = 0;
        Ethernet_Lite_TX_CLK = 0;
        Ethernet_Lite_RX_ER = 0;
        Ethernet_Lite_RX_DV = 0;
        Ethernet_Lite_RX_CLK = 0;
        Ethernet_Lite_RXD = 0;
        Ethernet_Lite_CRS = 0;
        Ethernet_Lite_COL = 0;
        DIP_Switches_8Bits_TRI_I = 0;

        // Wait 100 ns for global reset to finish
        #1000;
        
        // Add stimulus here
        #500;
        RESET = 1'b1;
    end
      
endmodule



4.Simulate Behavioral Modelをダブルクリックすると、コンパイルし始めたが、下のエラーが発生して終了してしまった。

ERROR:Simulator:754 - Signal EXCEPTION_ACCESS_VIOLATION received
ERROR:Simulator:754 - Signal EXCEPTION_ACCESS_VIOLATION receivedPrinting stacktrace...


検索した所、”Spartan-6 FPGA コネクティビティ キット TRD - Windows で ISim を実行すると「ERROR:Simulator:754 - Signal EXCEPTION_ACCESS_VIOLATION received」というエラー メッセージが表示される”がヒットした。

これは、32ビットWindows XPでは無理ということか?いよいよ64ビットWindows 7にする必要があるかな?

他のアプリをすべて落としたらコンパイルできました。
DDR2 SDRAMのモデルを接続するのを忘れていました。ブログを後で書きなおします。
  1. 2012年01月07日 05:52 |
  2. AXI4 Master IPの作製
  3. | トラックバック:0
  4. | コメント:0

ar37425のAXI4 Masterサンプルを試す3(SDK)

ar37425のAXI4 Masterサンプルを試す2(インプリメント)”の続き。

ISEの下にXPSプロジェクトが入った状態で、SDKを立ち上げ、”AtlysボードでXPSプロジェクトを試す2(ソフトウェアを試す)”で作ったLED+1ソフトウェアを起動してみる。

1.Project Navigator上のHierarchyでSystem_i(XPSプロジェクト)を選択した状態で、下のProcessesウインドウからExport Hardware Design to SDK with BitStream をダブルクリックする。
Atlys_48_120107.png

2.Workspace Launcherが起動する。WorkspaceをBrowse...ボタンで、test\Atlys_XPS_CamDisp\SDK\SDK_Exportに設定して、OKボタンをクリックする。
Atlys_49_120107.png

3.SDKが立ち上がり、axi_timer_testプロジェクトをコンパイルして成功した。
Atlys_50_120107.png

4.Program FPGAダイアログでSoftware Configuratioで、ElF File to Initialize in Block RAMで、axi_timer_test.elfを選択した。Programボタンを押して、Atlysボードにソフトウェア入りのビットファイルをダウンロードすると動作した。

これでaxi_timer_test.elf は変更したハードウェア環境(といってもソフトウェアが動作するデバイスの環境は何も変えていないけど。。。)で動作した。
  1. 2012年01月07日 04:41 |
  2. AXI4 Master IPの作製
  3. | トラックバック:0
  4. | コメント:0

ar37425のAXI4 Masterサンプルを試す2(インプリメント)

ar37425のAXI4 Masterサンプルを試す1(AXI_Master IPの登録、接続)”の続き。

今回は最初にインプリメントしてみようと思う。

1.XPSで、左のGenerate BitStreamボタンをクリックして、ビットファイルを生成した。

2.MAPで”MapLib:979 - LUT5 symbol”などのエラーで止まってしまった。UARTやEthernetデバイスでエラーが出ている。そこは何もいじっていないはずなのだが?調べてみたがよくわからない?

ISEの下にXPSプロジェクトを入れてやってみることにした。

3.ISEプロジェクトを生成して、Project NavigatorからAtlys_XPS_CamDispのsystem.xmpをAdd Sourceした。

4.ProcessesウインドウのGenerate Top HDL Sourceをダブルクリックして、トップファイル(system_top.v)を生成した。

5.system_top.vをクリックして、インプリメントしたら成功した。
Atlys_47_120107.png

MAPリポートを下に貼り付ける。

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

Design Information
------------------
Command Line   : map -intstyle ise -p xc6slx45-csg324-2 -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  : xc6slx45
Target Package : csg324
Target Speed   : -2
Mapper Version : spartan6 -- $Revision: 1.55 $
Mapped Date    : FRI 6 JAN 6:11:18 2012

Design Summary
--------------
Number of errors:      0
Number of warnings:   28
Slice Logic Utilization:
  Number of Slice Registers:                 3,894 out of  54,576    7%
    Number used as Flip Flops:               3,885
    Number used as Latches:                      0
    Number used as Latch-thrus:                  0
    Number used as AND/OR logics:                9
  Number of Slice LUTs:                      4,982 out of  27,288   18%
    Number used as logic:                    4,588 out of  27,288   16%
      Number using O6 output only:           3,549
      Number using O5 output only:             138
      Number using O5 and O6:                  901
      Number used as ROM:                        0
    Number used as Memory:                     253 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:           153
        Number using O6 output only:            53
        Number using O5 output only:             1
        Number using O5 and O6:                 99
    Number used exclusively as route-thrus:    141
      Number with same-slice register load:    121
      Number with same-slice carry load:        15
      Number with other load:                    5

Slice Logic Distribution:
  Number of occupied Slices:                 1,931 out of   6,822   28%
  Nummber of MUXCYs used:                      728 out of  13,644    5%
  Number of LUT Flip Flop pairs used:        5,714
    Number with an unused Flip Flop:         2,197 out of   5,714   38%
    Number with an unused LUT:                 732 out of   5,714   12%
    Number of fully used LUT-FF pairs:       2,785 out of   5,714   48%
    Number of unique control sets:             336
    Number of slice register sites lost
      to control set restrictions:           1,352 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:                        90 out of     218   41%
    Number of LOCed IOBs:                       90 out of      90  100%
    IOB Flip Flops:                             11

Specific Feature Utilization:
  Number of RAMB16BWERs:                        20 out of     116   17%
  Number of RAMB8BWERs:                          0 out of     232    0%
  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:                       2 out of      16   12%
    Number used as BUFGs:                        2
    Number used as BUFGMUX:                      0
  Number of DCM/DCM_CLKGENs:                     0 out of       8    0%
  Number of ILOGIC2/ISERDES2s:                   6 out of     376    1%
    Number used as ILOGIC2s:                     6
    Number used as ISERDES2s:                    0
  Number of IODELAY2/IODRP2/IODRP2_MCBs:        24 out of     376    6%
    Number used as IODELAY2s:                    0
    Number used as IODRP2s:                      2
    Number used as IODRP2_MCBs:                 22
  Number of OLOGIC2/OSERDES2s:                  50 out of     376   13%
    Number used as OLOGIC2s:                     5
    Number used as OSERDES2s:                   45
  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 ICAPs:                               0 out of       1    0%
  Number of MCBs:                                1 out of       2   50%
  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%

Average Fanout of Non-Clock Nets:                3.97

Peak Memory Usage:  397 MB
Total REAL time to MAP completion:  6 mins 32 secs 
Total CPU time to MAP completion:   6 mins 28 secs 

  1. 2012年01月07日 04:19 |
  2. AXI4 Master IPの作製
  3. | トラックバック:0
  4. | コメント:0