FC2カウンター FPGAの部屋 2011年09月03日
FC2ブログ

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

FPGAの部屋

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

Spartan-3A Starter KitでEDKを使ってカメラ表示10(カメラ回路のIPを登録)

Spartan-3A Starter KitでEDKを使ってカメラ表示9(カメラ回路のシミュレーション)”の続き。

前回はカメラ回路とIPICのインターフェース部分を作り、テストベンチも作ってシミュレーションを行った。今回は、user_logic.vhd にCam_Controller_Top.vhd のインスタンスを接続して、カスタムIPとして登録する。

最初に、user_logic.vhd にCam_Controller_Topのインスタンスを接続した。その一部を下に示す。

    -- Master Write (Cam_Controller_Top.vhd)
    Cam_Controller_Top : Cam_Cont_Top generic map (
        C_SLV_DWIDTH => C_SLV_DWIDTH,
        C_MST_AWIDTH => C_MST_AWIDTH,
        C_MST_DWIDTH => C_MST_DWIDTH,
        C_NUM_REG => C_NUM_REG
    ) port map (
        cam_href => cam_href,
        cam_vsync => cam_vsync,
        cam_pclk => cam_pclk,
        cam_data => cam_data,
        cam_clk => cam_clk,
        Bus2IP_Clk => Bus2IP_Clk,
        Bus2IP_Reset => Bus2IP_Reset,
        IP2Bus_MstRd_Req => IP2Bus_MstRd_Req,
        IP2Bus_MstWr_Req => IP2Bus_MstWr_Req,
        IP2Bus_Mst_Addr => IP2Bus_Mst_Addr,
        IP2Bus_Mst_BE => IP2Bus_Mst_BE,
        IP2Bus_Mst_Length => IP2Bus_Mst_Length,
        IP2Bus_Mst_Type => IP2Bus_Mst_Type,
        IP2Bus_Mst_Lock => IP2Bus_Mst_Lock,
        IP2Bus_Mst_Reset => IP2Bus_Mst_Reset,
        Bus2IP_Mst_CmdAck => Bus2IP_Mst_CmdAck,
        Bus2IP_Mst_Cmplt => Bus2IP_Mst_Cmplt,
        Bus2IP_Mst_Error => Bus2IP_Mst_Error,
        Bus2IP_Mst_Rearbitrate => Bus2IP_Mst_Rearbitrate,
        Bus2IP_Mst_Cmd_Timeout => Bus2IP_Mst_Cmd_Timeout,
        IP2Bus_MstWr_d => IP2Bus_MstWr_d,
        IP2Bus_MstWr_rem => IP2Bus_MstWr_rem,
        IP2Bus_MstWr_sof_n => IP2Bus_MstWr_sof_n,
        IP2Bus_MstWr_eof_n => IP2Bus_MstWr_eof_n,
        IP2Bus_MstWr_src_rdy_n => IP2Bus_MstWr_src_rdy_n,
        IP2Bus_MstWr_src_dsc_n => IP2Bus_MstWr_src_dsc_n,
        Bus2IP_MstWr_dst_rdy_n => Bus2IP_MstWr_dst_rdy_n,
        Bus2IP_MstWr_dst_dsc_n => Bus2IP_MstWr_dst_dsc_n,
        IP2Bus_MstRd_dst_rdy_n => IP2Bus_MstRd_dst_rdy_n,
        IP2Bus_MstRd_dst_dsc_n => IP2Bus_MstRd_dst_dsc_n,
        afifo_overflow => afifo_overflow,
        afifo_underflow => afifo_underflow
    );


次に、”XPSのカスタムIPにCore Generatorで生成したIPのネットリストを追加する”を参考にして、XPSのカスタムIPに自分で作った回路や、Core Generatorで生成したIPのネットリストを追加する。

・MPDファイルに”OPTION STYLE = MIX”を追加した。

BEGIN camera_controller

## Peripheral Options
OPTION IPTYPE = PERIPHERAL
OPTION IMP_NETLIST = TRUE
OPTION HDL = VHDL
OPTION IP_GROUP = MICROBLAZE:PPC:USER
OPTION DESC = CAMERA_CONTROLLER
OPTION ARCH_SUPPORT_MAP = (others=DEVELOPMENT)
OPTION STYLE = MIX


・CamDisp_EDK_OV7670\system\pcores\camera_controller_v1_00_a\dataフォルダの下に、camera_controller_v2_1_0.bbdを作った。ファイルの内容を下に示す。

FILES
cam_cont_afifo.ngc


Spa3A_SKit_OV7670_64_110903.png

・CamDisp_EDK_OV7670\system\pcores\camera_controller_v1_00_aフォルダの下に netlist フォルダを作って、その中に、cam_cont_afifo.ngc をコピーした。
Spa3A_SKit_OV7670_65_110903.png

・CamDisp_EDK_OV7670\system\pcores\camera_controller_v1_00_a\dataフォルダのcamera_controller_v2_1_0.pao ファイルを以下のように書き換えた。

##############################################################################
## Filename: H:/HDL/FndtnISEWork/Spartan3A_starter_kit/CamDisp_EDK_OV7670/system/pcores/camera_controller_v1_00_a/data/camera_controller_v2_1_0.pao
## Description: Peripheral Analysis Order
## Date: Sun Aug 21 17:39:47 2011 (by Create and Import Peripheral Wizard)
##############################################################################

lib proc_common_v3_00_a all
lib plbv46_slave_single_v1_01_a all
lib plbv46_master_burst_v1_01_a all
lib camera_controller_v1_00_a user_logic vhdl
lib camera_controller_v1_00_a camera_controller vhdl
lib camera_controller_v1_00_a Cam_Controller_Top vhdl
lib camera_controller_v1_00_a Camera_Cntrler verilog
lib camera_controller_v1_00_a dcm_CAM_clk verilog
lib camera_controller_v1_00_a synchronizer verilog
lib camera_controller_v1_00_a cam_cont_afifo vhdl


(2011/9/17:追記)XSTでcam_cont_afifoがないとエラーが出るので、cam_cont_afifo.vhdをVHDLフォルダに入れて、.paoファイルに追加した。

・CamDisp_EDK_OV7670\system\pcores\camera_controller_v1_00_a\hdl\verilogフォルダを作成して、Camera_Cntrler.v、dcm_CAM_clk.v、synchronizer.v をコピーした。

・CamDisp_EDK_OV7670\system\pcores\camera_controller_v1_00_a\hdl\vhdlフォルダに、Cam_Controller_Top.vhd をコピーした。

これで、カメラ回路のIPは終了。

(2011/9/15:追記)
user_logic.vhdの上のcamera_controller.vhd にポートの定義、ポートの接続をするのを忘れていたので、追加する。
camera_controller.vhdのentityのport定義部分を示す。

entity camera_controller is
  generic
  (
    -- ADD USER GENERICS BELOW THIS LINE ---------------
    --USER generics added here
    -- ADD USER GENERICS ABOVE THIS LINE ---------------

    -- DO NOT EDIT BELOW THIS LINE ---------------------
    -- Bus protocol parameters, do not add to or delete
    C_BASEADDR                     : std_logic_vector     := X"FFFFFFFF";
    C_HIGHADDR                     : std_logic_vector     := X"00000000";
    C_SPLB_AWIDTH                  : integer              := 32;
    C_SPLB_DWIDTH                  : integer              := 128;
    C_SPLB_NUM_MASTERS             : integer              := 8;
    C_SPLB_MID_WIDTH               : integer              := 3;
    C_SPLB_NATIVE_DWIDTH           : integer              := 32;
    C_SPLB_P2P                     : integer              := 0;
    C_SPLB_SUPPORT_BURSTS          : integer              := 0;
    C_SPLB_SMALLEST_MASTER         : integer              := 32;
    C_SPLB_CLK_PERIOD_PS           : integer              := 10000;
    C_INCLUDE_DPHASE_TIMER         : integer              := 1;
    C_FAMILY                       : string               := "virtex6";
    C_MPLB_AWIDTH                  : integer              := 32;
    C_MPLB_DWIDTH                  : integer              := 128;
    C_MPLB_NATIVE_DWIDTH           : integer              := 32;
    C_MPLB_P2P                     : integer              := 0;
    C_MPLB_SMALLEST_SLAVE          : integer              := 32;
    C_MPLB_CLK_PERIOD_PS           : integer              := 10000
    -- DO NOT EDIT ABOVE THIS LINE ---------------------
  );
  port
  (
    -- ADD USER PORTS BELOW THIS LINE ------------------
    --USER ports added here
    -- ADD USER PORTS ABOVE THIS LINE ------------------
    cam_href    : in std_logic;    -- CMOSカメラからのHREF
    cam_vsync     : in std_logic;    -- CMOSカメラからのVSYNC
    cam_pclk    : in std_logic;    -- CMOSカメラからのpclk
    cam_data    : in std_logic_vector(7 downto 0);    -- CMOSカメラからのデータ
    cam_clk        : out std_logic;
    
    afifo_overflow                    : out std_logic;
    afifo_underflow                    : out std_logic

    -- DO NOT EDIT BELOW THIS LINE ---------------------
    -- Bus protocol ports, do not add to or delete
    SPLB_Clk                       : in  std_logic;
    SPLB_Rst                       : in  std_logic;
    PLB_ABus                       : in  std_logic_vector(0 to 31);


次に、camera_controller.vhdのポートの接続部分を示す。

  USER_LOGIC_I : entity camera_controller_v1_00_a.user_logic
    generic map
    (
      -- MAP USER GENERICS BELOW THIS LINE ---------------
      --USER generics mapped here
      -- MAP USER GENERICS ABOVE THIS LINE ---------------

      C_SLV_DWIDTH                   => USER_SLV_DWIDTH,
      C_MST_AWIDTH                   => USER_MST_AWIDTH,
      C_MST_DWIDTH                   => USER_MST_DWIDTH,
      C_NUM_REG                      => USER_NUM_REG
    )
    port map
    (
      -- MAP USER PORTS BELOW THIS LINE ------------------
      --USER ports mapped here
      cam_href                         => cam_href,
      cam_vsync                        => cam_vsync,
      cam_pclk                        => cam_pclk,
      cam_data                        => cam_data,
      cam_clk                        => cam_clk,
      afifo_overflow                => afifo_overflow,
      afifo_underflow                => afifo_underflow,
      
      -- MAP USER PORTS ABOVE THIS LINE ------------------

      Bus2IP_Clk                     => ipif_Bus2IP_Clk,
      Bus2IP_Reset                   => ipif_Bus2IP_Reset,


(2011/9/15:追記)ここまで。


Camera_Cntrler.vを下に示す。

// CAMERA_CONTROLLER
// カメラデータを書き込むためのDDR2 SDRAMアドレスを出力する
// YデータとUVデータを出力する。フォーマットはUYVY
// 2001/07/24:cam_cont_afifoに2つ以上のデータがあることを示すためにrd_data_countを出力ポートに追加する

`default_nettype none

module Camera_Cntrler (
    input    wire    clk_cam,    // 25MHzのCMOSカメラ用クロック
    input    wire    clk_ddr2,    // 133.33MHzのDDR2 SDRAM用クロック
    input    wire    reset_cam,    // clk_cam 用リセット
    input    wire    reset_ddr2,    // clk_ddr2 用リセット
    input    wire    cam_href_2d,     // CMOSカメラからのHREFのラッチ出力(2クロック遅延)
    input    wire    cam_vsync_2d,    // CMOSカメラからのVSYNCのラッチ出力(2クロック遅延)
    input    wire    master_sync,     // 同期信号
    input    wire    [7:0]    cam_data_2d,    // CMOSカメラからの輝度データ
    output    reg        [18:0]    address,    // アドレス
    output    wire    [31:0]    data_out,    // VYUY8ビットフォーマットの画像データ出力
    input    wire    addr_enable,    // アドレス・イネーブル
    input    wire    data_enable,    // データ・イネーブル
    input    wire    capture_ena,    // CMOSカメラデータ書き込みイネーブル
    output    wire    afifo_empty,    // cam_cont_afifo はempty 
    output    wire    [7:0]    afifo_rd_data_count,     // cam_cont_afifoのread data count
    output    wire    afifo_overflow, // cam_cont_afifo はoverflow
    output    wire    afifo_underflow    // cam_cont_afifo はunderflow
);
    
    reg [7:0] uv_ff;
    wire afifo_wr_en;
    wire [15:0] afifo_din;
    reg y_pos;
    wire afifo_full;
    
    parameter    UV_state =    1'b0,
                Y_state =    1'b1;
    reg YUV_state;
    
    reg    [15:0] count;
    reg [8:0] href_count;
    reg [9:0] h_count;
    reg cam_href_3d;
    reg msync_ddr2_d1, msync_ddr2_d2, msync_ddr2_d3, msync_ddr2_d4;
    reg start_flag;
    
    parameter    HOLD_STATE=        1'b0,
                CAPTURE_STATE=    1'b1;
    reg capt_state;
    reg capt_ena;
    
    
    // 非同期FIFO Write(16ビット幅、32深度)、Read(32ビット幅、16深度)
    cam_cont_afifo cam_cont_afifo_inst (
        .wr_clk(clk_cam),
        .wr_rst(reset_cam),
        .rd_clk(clk_ddr2),
        .rd_rst(reset_ddr2),
        .din(afifo_din), // Bus [15 : 0] 
        .wr_en(afifo_wr_en),
        .rd_en(data_enable),
        .dout(data_out), // Bus [31 : 0] 
        .full(afifo_full),
        .overflow(afifo_overflow),
        .empty(afifo_empty),
        .underflow(afifo_underflow),
        .rd_data_count(afifo_rd_data_count) // Bus [7 : 0] 
    );
    
    // 最初のmaster_sync までは、YUVデータを出さないようにする
    always @(posedge clk_cam) begin
        if (reset_cam)
            start_flag <= 1'b0;
        else
            if (master_sync)
                start_flag <= 1'b1;
    end
    
    // UまたはVを保存しておくFF、UYVYで出てくるので、UまたはVを保存しておいてYが出てきた時点でcam_cont_afifoに書き込む
    always @(posedge clk_cam) begin
        if (reset_cam)
            uv_ff <= 0;
        else
            uv_ff <= cam_data_2d;
    end
    
    // U,VとYを表すステートマシン
    always @(posedge clk_cam) begin
        if (reset_cam)
            YUV_state <= UV_state;
        else begin
            case (YUV_state)
                UV_state :
                    if (cam_href_2d && start_flag)
                        YUV_state <= Y_state;
                    else
                        YUV_state <= UV_state;
                Y_state :
                    YUV_state <= UV_state;
            endcase
        end
    end
    
    // afifo_din はuv_ff とcam_data_2d を連結
    assign afifo_din = {uv_ff, cam_data_2d};
    // cam_cont_afifo のwr_en はYUV_state がY_state の時
    assign afifo_wr_en = (YUV_state==Y_state && capt_ena) ? 1'b1 : 1'b0;
    
    // master_sync をclk_ddr2 に同期させる
    always @(posedge clk_ddr2) begin
        if (reset_ddr2) begin
            msync_ddr2_d1 <= 1'b0;
            msync_ddr2_d2 <= 1'b0;
            msync_ddr2_d3 <= 1'b0;
            msync_ddr2_d4 <= 1'b0;
        end else begin
            msync_ddr2_d1 <= master_sync;
            msync_ddr2_d2 <= msync_ddr2_d1;
            msync_ddr2_d3 <= msync_ddr2_d2;
            msync_ddr2_d4 <= msync_ddr2_d3;
        end
    end
    
    // アドレス用カウンタ 640*480 = 307,200(hex 4b000)をカウントする
    always @(posedge clk_ddr2) begin
        if (reset_ddr2)
            address <= 0;
        else begin    
            if (msync_ddr2_d3==1'b1 && msync_ddr2_d4==1'b0) // 1フレーム終了したので0に戻す
                address <= 0;
            else if (addr_enable && start_flag)
                    address <= address + 19'd4; // DDR2 SDRAMは1回の書き込みで4つの16ビットデータを書き込むため
        end
    end
    
    // CMOSカメラデータのキャプチャ状態
    always @(posedge clk_cam) begin
        if (reset_cam) begin
            capt_state <= HOLD_STATE;
            capt_ena <= 1'b0;
        end else begin
            case (capt_state)
                HOLD_STATE :
                    if (capture_ena && master_sync) begin
                        capt_state <= CAPTURE_STATE;
                        capt_ena <= 1'b1;
                    end
                CAPTURE_STATE :
                    if (~capture_ena && master_sync) begin
                        capt_state <= HOLD_STATE;
                        capt_ena <= 1'b0;
                    end
            endcase
        end
    end
                    
endmodule

`default_nettype wire


dcm_CAM_clk.vを下に示す。

// DCM module
// 62.5MHzを入力して、50MHzのカメラ用のclkを生成する。

`default_nettype none
`timescale 1ns / 1ps

(* KEEP_HIERARCHY = "TRUE" *)module dcm_CAM_clk (sysclk, reset, clk_cam, dcm_locked_out);
    input    wire    sysclk;
    input    wire    reset;
    output    wire    clk_cam;
    output    wire    dcm_locked_out;
    
    wire clk_bufg, clk_node, dcm1_locked;
    wire clk_cam_node, clk_cam_bufg;
        
    DCM dcm_DDR2_clk_dcm (
        .CLKIN(sysclk),
        .CLKFB(clk_bufg),
        .DSSEN(1'b0),
        .PSINCDEC(1'b0),
        .PSEN(1'b0),
        .PSCLK(1'b0),
        .RST(reset),     // 前段のDCMがロックするまでリセット
        .CLK0(clk_node),
        .CLK90(),
        .CLK180(),
        .CLK270(),
        .CLK2X(),
        .CLK2X180(),
        .CLKDV(),
        .CLKFX(clk_cam_node),
        .CLKFX180(),
        .LOCKED(dcm1_locked),
        .PSDONE(),
        .STATUS()
    );
    defparam dcm_DDR2_clk_dcm.CLKIN_PERIOD = 16.0;
    defparam dcm_DDR2_clk_dcm.DLL_FREQUENCY_MODE = "LOW";
    defparam dcm_DDR2_clk_dcm.DUTY_CYCLE_CORRECTION = "TRUE";
    defparam dcm_DDR2_clk_dcm.CLKDV_DIVIDE = 2.0;
    defparam dcm_DDR2_clk_dcm.PHASE_SHIFT = 0;
    defparam dcm_DDR2_clk_dcm.CLKOUT_PHASE_SHIFT = "NONE";
    defparam dcm_DDR2_clk_dcm.STARTUP_WAIT = "FALSE";
    defparam dcm_DDR2_clk_dcm.CLKFX_DIVIDE = 5;
    defparam dcm_DDR2_clk_dcm.CLKFX_MULTIPLY = 2;
    
    BUFG CLK_BUFG_INST (
        .I(clk_node),
        .O(clk_bufg)
    );
    
    BUFG CLK_CAM_BUFG_INST (
        .I(clk_cam_node),
        .O(clk_cam_bufg)
    );
    assign dcm_locked_out = dcm1_locked;
    assign clk_cam = clk_cam_bufg;
endmodule


synchronizer.vを下に示す。

// synchronizer
// synchronizerが使用するのは、FPGAに入力されたcam_hrefやcam_vsyncからIOBのFFを通り1クロックディレイした信号。その他のモジュールは2クロック遅延した信号を用いる
// cam_vsync_1d が1から0になった後の最初の cam_href_1d の立ち上がりで同期信号(master_sync)を出力する
// 同時に出力するR_W信号を1(Read)にする

`default_nettype none

module synchronizer (
    input    wire    clk,
    input    wire    reset,
    input    wire    cam_vsync_1d,
    input    wire    cam_href_1d,
    output    wire    master_sync
);

    parameter    [3:0]    Idle_Sync =            4'b0001,
                        Vsync_Assert =        4'b0010,
                        Vsync_Deassert =    4'b0100,
                        Sync_Active =        4'b1000;
    reg        [3:0]    cs_sync;
    reg        msync;
    
    // master_sync を出力するステートマシン
    always @(posedge clk) begin
        if (reset) begin
            cs_sync <= Idle_Sync;
            msync <= 1'b0;
        end else begin
            case (cs_sync)
                Idle_Sync : begin
                    msync <= 1'b0;
                    if (cam_vsync_1d)
                        cs_sync <= Vsync_Assert;
                end
                Vsync_Assert :
                    if (~cam_vsync_1d)
                        cs_sync <= Vsync_Deassert;
                Vsync_Deassert :
                    if (cam_href_1d) begin
                        cs_sync <= Sync_Active;
                        msync <= 1'b1;
                    end
                Sync_Active : begin
                    msync <= 1'b0;
                    cs_sync <= Idle_Sync;
                end
            endcase
        end
    end
    assign master_sync = (cs_sync==Vsync_Deassert && cam_href_1d) ? 1'b1 : 1'b0;
    
endmodule

`default_nettype wire


最後に、cam_cont_afifo.xco を以下に示す。

##############################################################
#
# Xilinx Core Generator version 13.2
# Date: Wed Aug 31 19:15:38 2011
#
##############################################################
#
# This file contains the customisation parameters for a
# Xilinx CORE Generator IP GUI. It is strongly recommended
# that you do not manually alter this file as it may cause
# unexpected and unsupported behavior.
#
##############################################################
#
# Generated from component: xilinx.com:ip:fifo_generator:8.2
#
##############################################################
#
# BEGIN Project Options
SET addpads = false
SET asysymbol = true
SET busformat = BusFormatAngleBracketNotRipped
SET createndf = false
SET designentry = VHDL
SET device = xc3s700a
SET devicefamily = spartan3a
SET flowvendor = Other
SET formalverification = false
SET foundationsym = false
SET implementationfiletype = Ngc
SET package = fg484
SET removerpms = false
SET simulationfiles = Behavioral
SET speedgrade = -4
SET verilogsim = false
SET vhdlsim = true
# END Project Options
# BEGIN Select
SELECT Fifo_Generator xilinx.com:ip:fifo_generator:8.2
# END Select
# BEGIN Parameters
CSET add_ngc_constraint_axi=false
CSET almost_empty_flag=false
CSET almost_full_flag=false
CSET aruser_width=1
CSET awuser_width=1
CSET axi_address_width=32
CSET axi_data_width=64
CSET axi_type=AXI4_Stream
CSET axis_type=FIFO
CSET buser_width=1
CSET clock_enable_type=Slave_Interface_Clock_Enable
CSET clock_type_axi=Common_Clock
CSET component_name=cam_cont_afifo
CSET data_count=false
CSET data_count_width=8
CSET disable_timing_violations=false
CSET disable_timing_violations_axi=false
CSET dout_reset_value=0
CSET empty_threshold_assert_value=4
CSET empty_threshold_assert_value_axis=1022
CSET empty_threshold_assert_value_rach=1022
CSET empty_threshold_assert_value_rdch=1022
CSET empty_threshold_assert_value_wach=1022
CSET empty_threshold_assert_value_wdch=1022
CSET empty_threshold_assert_value_wrch=1022
CSET empty_threshold_negate_value=5
CSET enable_aruser=false
CSET enable_awuser=false
CSET enable_buser=false
CSET enable_common_overflow=false
CSET enable_common_underflow=false
CSET enable_data_counts_axis=false
CSET enable_data_counts_rach=false
CSET enable_data_counts_rdch=false
CSET enable_data_counts_wach=false
CSET enable_data_counts_wdch=false
CSET enable_data_counts_wrch=false
CSET enable_ecc=false
CSET enable_ecc_axis=false
CSET enable_ecc_rach=false
CSET enable_ecc_rdch=false
CSET enable_ecc_wach=false
CSET enable_ecc_wdch=false
CSET enable_ecc_wrch=false
CSET enable_handshake_flag_options_axis=false
CSET enable_handshake_flag_options_rach=false
CSET enable_handshake_flag_options_rdch=false
CSET enable_handshake_flag_options_wach=false
CSET enable_handshake_flag_options_wdch=false
CSET enable_handshake_flag_options_wrch=false
CSET enable_read_channel=false
CSET enable_read_pointer_increment_by2=false
CSET enable_reset_synchronization=false
CSET enable_ruser=false
CSET enable_tdata=false
CSET enable_tdest=false
CSET enable_tid=false
CSET enable_tkeep=false
CSET enable_tlast=false
CSET enable_tready=true
CSET enable_tstrobe=false
CSET enable_tuser=false
CSET enable_write_channel=false
CSET enable_wuser=false
CSET fifo_application_type_axis=Data_FIFO
CSET fifo_application_type_rach=Data_FIFO
CSET fifo_application_type_rdch=Data_FIFO
CSET fifo_application_type_wach=Data_FIFO
CSET fifo_application_type_wdch=Data_FIFO
CSET fifo_application_type_wrch=Data_FIFO
CSET fifo_implementation=Independent_Clocks_Block_RAM
CSET fifo_implementation_axis=Common_Clock_Block_RAM
CSET fifo_implementation_rach=Common_Clock_Block_RAM
CSET fifo_implementation_rdch=Common_Clock_Block_RAM
CSET fifo_implementation_wach=Common_Clock_Block_RAM
CSET fifo_implementation_wdch=Common_Clock_Block_RAM
CSET fifo_implementation_wrch=Common_Clock_Block_RAM
CSET full_flags_reset_value=1
CSET full_threshold_assert_value=255
CSET full_threshold_assert_value_axis=1023
CSET full_threshold_assert_value_rach=1023
CSET full_threshold_assert_value_rdch=1023
CSET full_threshold_assert_value_wach=1023
CSET full_threshold_assert_value_wdch=1023
CSET full_threshold_assert_value_wrch=1023
CSET full_threshold_negate_value=254
CSET id_width=4
CSET inject_dbit_error=false
CSET inject_dbit_error_axis=false
CSET inject_dbit_error_rach=false
CSET inject_dbit_error_rdch=false
CSET inject_dbit_error_wach=false
CSET inject_dbit_error_wdch=false
CSET inject_dbit_error_wrch=false
CSET inject_sbit_error=false
CSET inject_sbit_error_axis=false
CSET inject_sbit_error_rach=false
CSET inject_sbit_error_rdch=false
CSET inject_sbit_error_wach=false
CSET inject_sbit_error_wdch=false
CSET inject_sbit_error_wrch=false
CSET input_data_width=16
CSET input_depth=256
CSET input_depth_axis=1024
CSET input_depth_rach=16
CSET input_depth_rdch=1024
CSET input_depth_wach=16
CSET input_depth_wdch=1024
CSET input_depth_wrch=16
CSET interface_type=Native
CSET output_data_width=32
CSET output_depth=128
CSET overflow_flag=true
CSET overflow_flag_axi=false
CSET overflow_sense=Active_High
CSET overflow_sense_axi=Active_High
CSET performance_options=First_Word_Fall_Through
CSET programmable_empty_type=No_Programmable_Empty_Threshold
CSET programmable_empty_type_axis=Empty
CSET programmable_empty_type_rach=Empty
CSET programmable_empty_type_rdch=Empty
CSET programmable_empty_type_wach=Empty
CSET programmable_empty_type_wdch=Empty
CSET programmable_empty_type_wrch=Empty
CSET programmable_full_type=No_Programmable_Full_Threshold
CSET programmable_full_type_axis=Full
CSET programmable_full_type_rach=Full
CSET programmable_full_type_rdch=Full
CSET programmable_full_type_wach=Full
CSET programmable_full_type_wdch=Full
CSET programmable_full_type_wrch=Full
CSET rach_type=FIFO
CSET rdch_type=FIFO
CSET read_clock_frequency=1
CSET read_data_count=true
CSET read_data_count_width=8
CSET register_slice_mode_axis=Fully_Registered
CSET register_slice_mode_rach=Fully_Registered
CSET register_slice_mode_rdch=Fully_Registered
CSET register_slice_mode_wach=Fully_Registered
CSET register_slice_mode_wdch=Fully_Registered
CSET register_slice_mode_wrch=Fully_Registered
CSET reset_pin=true
CSET reset_type=Asynchronous_Reset
CSET ruser_width=1
CSET tdata_width=64
CSET tdest_width=4
CSET tid_width=8
CSET tkeep_width=4
CSET tstrb_width=4
CSET tuser_width=4
CSET underflow_flag=true
CSET underflow_flag_axi=false
CSET underflow_sense=Active_High
CSET underflow_sense_axi=Active_High
CSET use_clock_enable=false
CSET use_dout_reset=true
CSET use_embedded_registers=false
CSET use_extra_logic=true
CSET valid_flag=false
CSET valid_sense=Active_High
CSET wach_type=FIFO
CSET wdch_type=FIFO
CSET wrch_type=FIFO
CSET write_acknowledge_flag=false
CSET write_acknowledge_sense=Active_High
CSET write_clock_frequency=1
CSET write_data_count=false
CSET write_data_count_width=9
CSET wuser_width=1
# END Parameters
# BEGIN Extra information
MISC pkg_timestamp=2011-03-14T07:12:32.000Z
# END Extra information
GENERATE
# CRC: 9d4027c5

  1. 2011年09月03日 19:13 |
  2. EDK
  3. | トラックバック:0
  4. | コメント:0

FPGAの部屋の2011年8月のアクセス数

FPGAの部屋の2011年8月のアクセス数は、39,936アクセスでした。皆さん、見て頂いてありがとうございます。
FPGA_room_access_8_2_110903.png

8月中にFPGAの部屋の記事にヒットした検索語は下のようになりました。
FPGA_room_access_8_110903.png

やはり、8月なので、自由研究での検索が多かったです。それにDE0人気ですね。また、始めようかな?
realteck pcie gbe family controller は私のパソコンで使っているギガビット・イーサネットのコントローラで、検索が多いみたいです。うちのパソコンのギガビット・イーサネットのコントローラはおかしいので使っていません。今は、USB-LAN変換ケーブルで接続しています。

ちなみに7月の検索語は下です。
FPGA_room_access_7_110903.png

DE0やはり人気ですね。
ここでも、realteck pcie gbe family controller入ってます。isim 使い方などが入ってきて、まっとうな気がします。
xスプリットとは、何でヒットしているんでしょうか?
検索してみると、ニコ生のXSplitというソフトのことのようです。なぜ、FPGAの部屋の検索後に当たるかというと、”FPGAの部屋 PCI-Xスプリット完了”という記事に当たってしまうようです。全く内容が違うんですが、よくわからないでクリックしてしまう人が多いんでしょうね?
  1. 2011年09月03日 05:20 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0