ã³ã³ãã¥ãŒã¿ãŒã«ã¯é·ãéPCI Express v3.0 x16ãã¹ããããŸããã ææ°ã®ãããªã¢ããã¿ãŒã®ãã¹ãã§ã¯ããã®ãã¹ã®é床ã¯çŽ12 GB /ç§ã§ãã FPGAäžã§åãé床ã®ã¢ãžã¥ãŒã«ãäœæããããšæããŸãã ãã ããå©çšå¯èœãªFPGAã«ã¯ãPCIe v3.0 x8å°çšã®ããŒããŠã§ã¢ã³ã³ãããŒã©ãŒããããŸãã SOFT IPã³ã¢ã®å®è£ ã¯éåžžã«é«äŸ¡ã§ããã ããããæ¹æ³ããããŸãã
FPGA Virtex 7 VX330Tã«ã¯2ã€ã®PCI Express v3.0 x8ã³ã³ãããŒã©ãŒããããŸãã æãããªè§£æ±ºçã¯ãã³ãã¯ã¿ã®åŽé¢ã«x16ããããFPGAã«æ¥ç¶ãããŠãã2ã€ã®x8ãã¹ãæã€ã¹ã€ãããé 眮ããããšã§ãã ãã®æ§é ã¯æ¬¡ã®ãšããã§ãã
HighTechGlobalã®HTG-728ã¢ãžã¥ãŒã«ã¯ããã®ã¹ããŒã ã«åŸã£ãŠæ§ç¯ãããŠããŸãã
Alpha-Dataã¯å¥ã®ãã¹ã«ãããŸãã ADM-PCIE-KU3-X16ã«ã¯ã¹ã€ããããããŸããã ãã ããx16ã³ãã¯ã¿ã§ã¯ã2ã€ã®x8ãã¹ãåºåãããŸãã FPGAã§ã¯ã2ã€ã®ç¬ç«ããã³ã³ãããŒã©ãŒãå®è£ ã§ããŸãã ãã®ããã2ã€ã®ãªã»ããä¿¡å·ãš2ã€ã®åºæºåšæ³¢æ°ãFPGAã«ã»ããã¢ãããããŸãã ãã ãããã®ã¢ãžã¥ãŒã«ã¯ã2ã€ã®x8ãx16ã³ãã¯ã¿ã«åºåãããç¹å¥ãªãã¶ãŒããŒãã§ã®ã¿æ©èœããŸãã ç§ã¯ãã®ãããªãã¶ãŒããŒããèŠãããšããããŸããããæããã«ããã§ãã
åœç€Ÿã¯ãå éšã¹ã€ãããåããFMC122Pã¢ãžã¥ãŒã«ãå®è£ ããããšã決å®ããŸããã äž»ãªã¿ã¹ã¯ã¯ãæ倧çºæ¿ã¬ãŒãã確èªããããšã§ããã ãã1ã€ã®éèŠãªã¿ã¹ã¯ã¯ãæ¢åã®ãœãããŠã§ã¢ããã³FPGAã³ã³ããŒãã³ããšã®äºææ§ãå®çŸããããšã§ãã
Virtex 7ã®PCI Expressã³ã³ãããŒã©ãŒã¯ãVirtex 6ãKintex 7ã®ã³ã³ãããŒã©ãŒãšæ ¹æ¬çã«ç°ãªããŸãããã䟿å©ã«ãªããŸããããç°ãªããŸãã ãã®å³ã¯ãã³ã³ãããŒã©ãŒã®æ§é å³ã瀺ããŠããŸãã
ã³ã³ãããŒã©ãŒã«ã¯ã³ã³ããªãŒã¿ãŒãšãªã¯ãšã¹ã¿ãŒã®2ã€ã®éšåããããããããã«2ã€ã®AXI_Streamãã¹ããããŸãã CompleterããŒãã¯ãPCI Expressãã¹ãããªã¯ãšã¹ããåãåããŸãã ãããã®èŠæ±ã¯m_axis_cqãã¹ã«éä¿¡ãããŸãã ãã¹s_axis_ccã«ã¯ããŠãŒã¶ãŒã³ã³ããŒãã³ãããã®å¿çããããŸãã éåžžãããã¯å éšFPGAã¬ãžã¹ã¿ãžã®ã¢ã¯ã»ã¹ãã€ã³ãã§ãã
s_axis_rqãã¹äžã®RequesterããŒããä»ããŠãDMAã¯PCI Expressãã¹ã«ãªã¯ãšã¹ããéä¿¡ããŸãã å¿çã¯m_axis_rcãã¹ãä»ããŠéä¿¡ãããŸãã
ã¿ã€ã€ã·ãã¥ã¬ãŒã·ã§ã³
IPã³ã¢ã®æ§æã«ã¯ããã®åäœãç解ã§ãããµã³ãã«ãããžã§ã¯ããå«ãŸããŠããŸãã ãã®ãããžã§ã¯ãã¯Verilogã§èšè¿°ãããŠããŸãããæ®å¿µãªãããéçºããªãæ¹æ³ã®äŸãšããŠã圹ç«ã¡ãŸãã äŸã®ãããã¯å³ãèŠãŠã¿ãŸãããã
ãã®å³ã¯ãIPã³ã¢ã®èª¬æããã®ãã®ã§ãã äžèŠããã¹ãŠãé 調ã§ã-ããã¯çŽ æŽãããåçã§ããããŒãžã£ãŒããããžã§ã¯ããããŒãžã£ãŒãã¯ã©ã€ã¢ã³ãã«èŠããããšãã§ããŸãã åé¡ã¯å®è£ ã«å§ãŸããŸãã ãã®ã·ã¹ãã ã«ã¯ãVerilogæ©èœã䜿çšããŠçµ¶å¯Ÿãã¹ã«æ²¿ã£ãŠãªããžã§ã¯ãã«ã¢ã¯ã»ã¹ããå€ãã®å ŽæããããŸãã ç§ã®æèŠã§ã¯ããã®ã·ã¹ãã ã§ã¯ãããã¯1ãæã§ã®ã¿æ£åœåãããŸã-ããã¯ãPIPEã¬ãã«ã§ã®ã¢ããªã³ã°ã®ããã®GTPããŒãã®ãã€ãã¹ã§ãã ãã ãã絶察ãã¹ã䜿çšããŠuserapp_txãšuserapp_rxãæ¥ç¶ããããšã¯å®å šã«äžèŠã§ãã
ãããžã§ã¯ãã§ã¯ã次ã®ããã«ãªããŸãã
pci_exp_usrapp_txã³ã³ããŒãã³ãã«ã¯ã絶察ãã¹ãä»ããŠpci_exp_userapp_cfgããé¢æ°ãåŒã³åºãé¢æ°TSK_SYSTEM_INITIALIZATIONããããŸãã
board.RP.cfg_usrapp.TSK_WRITE_CFG_DW ïŒä»¥éãVerilogãã¿ã¹ã¯ãéããŠèª¬æããæ©èœãåŒã³åºããŸãïŒã pci_exp_userapp_cfgã³ã³ããŒãã³ããèŠããšã次ã®ããã«è¡šç€ºãããŸããcfg_ds_bus_number <= board.RP.tx_usrapp.RP_BUS_DEV_FNS [15ïŒ8];
pci_exp_userapp_rcã³ã³ããŒãã³ããèŠãŠãã ãããåããã®ããããŸãïŒ board.RP.com_usrapp.TSK_PARSE_FRAMEïŒ `RX_LOGïŒ;
ããã¯ãã¹ã¿ã€ã«çã«ééã£ãŠããã ãã§ã¯ãããŸããã ããã«ããããããžã§ã¯ãã«ã¢ãã«ãé©çšããããšãé£ãããªããŸãã ãŸããèªåã®ãããžã§ã¯ãã§æäžäœãã¡ã€ã«ãããŒããšåŒã°ããåãéå±€ãããã«æ®ãããšã¯ãŸã£ããå¿ èŠãããŸããã 第äºã«ã2ã€ã®ã³ã³ããŒãã³ãããããŸãã äž¡æ¹ã®ã±ãŒã¹ãçºçããŸããã Verilogã§äœæ¥ããå¿ èŠããããŸãããããŸã£ããæ°ã«å ¥ããªãã£ãã®ã§ãã çµå±ã®ãšãããå°ããªé åã«ãããroot_portã³ã³ããŒãã³ãå šäœãå®å šã«éå±€çãªãã¥ãŒã«çž®å°ããããšãã§ããŸãã çµæã¯ã³ã³ããŒãã³ããã¡ã€ã«ã§ãïŒ
- xilinx_pcie_3_0_7vx_rp_m2.v
- pci_exp_usrapp_tx_m2.v
- pci_exp_usrapp_cfg_m2.v
ãããŠæ©èœã®ãããã¡ã€ã«ïŒ
- task_bar.vh
- task_rd.vh
- task_s1.vh
- task_test.vh
ããã«ãããã¢ãã«ã«2ã€ã®root_portã³ã³ããŒãã³ããå«ããããšãã§ããŸããã VHDLã³ã³ããŒãã³ãã§ã¯ã2ã€ã®root_portãå«ãããšæ¬¡ã®ããã«ãªããŸãã
root_port
gen_rp0: if( is_rp0=1 ) generate rp0: xilinx_pcie_3_0_7vx_rp_m2 generic map( INST_NUM => 0 ) port map( sys_clk_p => sys_clk_p, sys_clk_n => sys_clk_n, sys_rst_n => sys_rst_n, -- cmd_rw => cmd_rw, -- -: 0 - , 1 - cmd_req => cmd_req, -- 1 - cmd_ack => cmd_ack, -- 1 - cmd_adr => cmd_adr, -- - cmd_data_i => cmd_data_i, -- cmd_data_o => cmd_data_o, -- cmd_init_done => cmd_init_done_0 -- 1 - ); end generate; gen_rp1: if( is_rp1=1 ) generate rp1: xilinx_pcie_3_0_7vx_rp_m2 generic map( INST_NUM => 1 ) port map( sys_clk_p => sys_clk_p, sys_clk_n => sys_clk_n, sys_rst_n => sys_rst_n, cmd_init_done => cmd_init_done_1 -- 1 - ); end generate;
rp0ã³ã³ããŒãã³ããä»ããŠã32ãããã¯ãŒãã®æžã蟌ã¿ãŸãã¯èªã¿åãåŒã³åºããè¡ãããŸãã rp1ã³ã³ããŒãã³ãã¯åæåã®ã¿ãå®è¡ããŸãã
æ®å¿µãªãããã·ãã¥ã¬ãŒã·ã§ã³ãPIPEã¬ãã«ã§å®è¡ãããå Žåã§ããããã¯éåžžã«é·ãæéã·ãã¥ã¬ãŒã·ã§ã³ãããŸãã å žåçãªã¢ããªã³ã°ã»ãã·ã§ã³ã¯çŽ10åã§ãïŒããå°ãèŠããŠãããããããŸãããïŒã DMAãã£ãã«ã䜿çšããéçšäœæ¥ã«ã¯ãããã¯é©ããŠããŸããã ãã®ç¶æ³ã§ã¯ãPCI Expressã³ã³ãããŒã©ãŒãã¢ãã«ããåé€ãããšããå®å šã«èªç¶ãªæ±ºå®ãäžãããŸããã ãŸãããã§ã«ç 究ãããŠããŸãã
ã³ã³ãããŒã©ãŒãããã¯å³
äžè¬åãããã³ã³ãããŒã©ãŒåè·¯ãå³ã«ç€ºããŸãã
2ã€ã®åäžã®core256_top_engineã³ã³ããŒãã³ãã¯ã2ã€ã®EP0ãEP1ã³ã³ãããŒã©ãŒãžã®ã¢ã¯ã»ã¹ãæäŸããŸãã core256_top_engineã¯ãPCI Expressã®åŽããã¬ãžã¹ã¿ãžã®ã¢ã¯ã»ã¹ãæäŸããŸãããã®ãããEP0ãšreg_accessã³ã³ããŒãã³ãã®ã¿ã䜿çšãããŸãã dma_accessã³ã³ããŒãã³ãã«ã¯ãã¡ã€ã³ã³ã³ãããŒã©ãŒã®å¶åŸ¡ããžãã¯ãå«ãŸããŠããŸãã äžã®å³ã®æ§é å³ïŒ
ãã¹ãŠã¯ctrl_mainããŒãã«ãã£ãŠå¶åŸ¡ãããŸãã ctrl_dscããŒãã«ã¯ãèšè¿°åãããã¯ãå«ãŸããŠããŸãã ctrl_adrããŒãã¯ãèšè¿°åã4ãããã€ãã®ãããã¯ã¢ãã¬ã¹ã®ã·ãŒã±ã³ã¹ã«å€æããŸãã core256_top_engineããŒããšäº€æããããã«ãã¢ãã¬ã¹ãcmd0ããã³cmd1ããŒãã«éä¿¡ãããŸãã
FPGAã®ãŠãŒã¶ãŒåŽã«ã¯ã512ãããå¹ ã®ãã¹ã2ã€ãããŸãã ãã ãããããã®ãã¹äžã®ããŒã¿ã¯ã4ãããã€ãã®ãããã¯ã§å³å¯ã«é çªã«éä¿¡ããå¿ èŠããããŸãã ããã¯ãã¡ã¢ãªããŒãram0ãram1ãé çªã«èªã¿èŸŒãããã«å¿ èŠã§ãã åã¡ã¢ãªããŒãã«ã¯ã4ãããã€ãã®4ã€ã®ãããã¯ãå«ãŸããŠããŸãã ãããã®ã¡ã¢ãªããŒãã§ã¯ã512ãããå¹ ã®ãœãŒã¹ã¹ããªãŒã ã256ãããã®2ã€ã®ã¹ããªãŒã ã«åå²ãããŸãã å°æ¥ã2ã€ã®256ãããã¹ããªãŒã ã¯ãã§ã«å®å šã«ç¬ç«ããŠããŸãã ããŒã¿ãããŒã¯ã³ã³ãã¥ãŒã¿ãŒã®RAMã§ã®ã¿æ€åºãããé£æ¥ããã¢ãã¬ã¹ã«é 眮ãããŸãã
dma_accessã®ã¢ããªã³ã°
dma_accessããŒãã¯ãã³ã³ãããŒã©ãŒã®æãè€éãªéšåã§ãã ãããã£ãŠãç¹ã«æ éã«ã¢ãã«åããå¿ èŠããããŸãã äžèšã§æžããããã«ã2ã€ã®PCI Expressã³ã¢ã®ã·ãã¥ã¬ãŒã·ã§ã³ã«ã¯éåžžã«é·ãæéãããããŸãã é«éåããããã«ãcore256_top_engineã®ä»£ããã«æ¥ç¶ããã¢ãã«ãéçºãããŸããã dma_accessã«ãåãã€ã³ã¿ãŒãã§ãŒã¹ãæ®ã£ãŠãããã¢ããªã³ã°é床ã¯1æ¡åäžããŸããã ãã®ãããžã§ã¯ãããã³PROTEQãããžã§ã¯ãã§ã¯ãtclãã¡ã€ã«ãä»ããèªåãã¹ãå®è¡ã䜿çšãããŸãã
tclãã¡ã€ã«ã®ã¹ããããã¯æ¬¡ã®ãšããã§ãã
run_test "stend_m4" "test_read_8kb " 6 "50 us" run_test "stend_m4" "test_read_16kb " 7 "100 us" run_test "stend_m4" "test_read_49blk " 8 "150 us" run_test "stend_m4" "test_read_8x4_cont " 9 "150 us" run_test "stend_m4" "test_read_128x1_cont " 12 "200 us" run_test "stend_m4" "test_read_16kbx2 " 13 "150 us" run_test "stend_m4" "test_read_step " 14 "200 us" run_test "stend_m4" "test_read_8kb_sg_eot " 15 "100 us" run_test "stend_m4" "test_read_64x1 " 16 "100 us"
ããã¯ã9ã€ã®ãã¹ãã®èªåå®è¡ã§ãã ããšãã°ã1ã€ã®ãã¹ãã®ã³ãŒãã瀺ããŸãã
test_read_4kb
procedure test_read_4kb ( signal cmd: out bh_cmd; --! signal ret: in bh_ret --! ) is variable adr : std_logic_vector( 31 downto 0 ); variable data : std_logic_vector( 31 downto 0 ); variable str : line; variable L : line; variable error : integer:=0; variable dma_complete : integer; variable data_expect : std_logic_vector( 31 downto 0 ); begin write( str, string'("TEST_READ_4KB" )); writeline( log, str ); ---- --- for ii in 0 to 127 loop adr:= x"00100000"; adr:=adr + ii*4; int_mem_write( cmd, ret, adr, x"00000000" ); end loop; int_mem_write( cmd, ret, x"00100000", x"00008000" ); int_mem_write( cmd, ret, x"00100004", x"00000100" ); -- int_mem_write( cmd, ret, x"00100080", x"00008000" ); -- int_mem_write( cmd, ret, x"00100084", x"00000100" ); int_mem_write( cmd, ret, x"001001F8", x"00000000" ); int_mem_write( cmd, ret, x"001001FC", x"762C4953" ); ---- DMA ---- block_write( cmd, ret, 4, 8, x"00000025" ); -- DMA_MODE block_write( cmd, ret, 4, 9, x"00000010" ); -- DMA_CTRL - RESET FIFO block_write( cmd, ret, 4, 20, x"00100000" ); -- PCI_ADRL block_write( cmd, ret, 4, 21, x"00100000" ); -- PCI_ADRH block_write( cmd, ret, 4, 23, x"0000A400" ); -- LOCAL_ADR block_write( cmd, ret, 4, 9, x"00000001" ); -- DMA_CTRL - START wait for 20 us; block_read( cmd, ret, 4, 16, data ); -- STATUS write( str, string'("STATUS: " )); hwrite( str, data( 15 downto 0 ) ); if( data( 8 )='1' ) then write( str, string'(" - " )); else write( str, string'(" - " )); error := error + 1; end if; writeline( log, str ); if( error=0 ) then ---- DMA ---- dma_complete := 0; for ii in 0 to 100 loop block_read( cmd, ret, 4, 16, data ); -- STATUS write( str, string'("STATUS: " )); hwrite( str, data( 15 downto 0 ) ); if( data(5)='1' ) then write( str, string'(" - DMA " )); dma_complete := 1; end if; writeline( log, str ); if( dma_complete=1 ) then exit; end if; wait for 1 us; end loop; writeline( log, str ); if( dma_complete=0 ) then write( str, string'(" - DMA " )); writeline( log, str ); error:=error+1; end if; end if; for ii in 0 to 3 loop block_read( cmd, ret, 4, 16, data ); -- STATUS write( str, string'("STATUS: " )); hwrite( str, data( 15 downto 0 ) ); writeline( log, str ); wait for 500 ns; end loop; block_write( cmd, ret, 4, 9, x"00000000" ); -- DMA_CTRL - STOP write( str, string'(" : " )); writeline( log, str ); data_expect := x"A0000000"; for ii in 0 to 1023 loop adr:= x"00800000"; adr:=adr + ii*4; int_mem_read( cmd, ret, adr, data ); if( data=data_expect ) then fprint( output, L, "%r : %r - Ok\n", fo(ii), fo(data)); fprint( log, L, "%r : %r - Ok\n", fo(ii), fo(data)); else fprint( output, L, "%r : %r : %r - Error \n", fo(ii), fo(data), fo(data_expect)); fprint( log, L, "%r : %r : %r - Error \n", fo(ii), fo(data), fo(data_expect)); error:=error+1; end if; data_expect := data_expect + 1; end loop; -- block_write( cmd, ret, 4, 9, x"00000010" ); -- DMA_CTRL - RESET FIFO -- block_write( cmd, ret, 4, 9, x"00000000" ); -- DMA_CTRL -- block_write( cmd, ret, 4, 9, x"00000001" ); -- DMA_CTRL - START fprint( output, L, "\nTest time: %r \n", fo(now) ); fprint( log, L, "\nTest time: %r \n", fo(now) ); -- -- writeline( log, str ); if( error=0 ) then write( str, string'("TEST finished successfully" )); cnt_ok := cnt_ok + 1; else write( str, string'("TEST finished with ERR" )); cnt_error := cnt_error + 1; end if; writeline( log, str ); writeline( log, str ); -- -- writeline( output, str ); if( error=0 ) then write( str, string'("TEST finished successfully" )); else write( str, string'("TEST finished with ERR" )); end if; writeline( output, str ); writeline( output, str ); end test_read_4kb
int_mem_writeã³ãã³ãã¯ãã³ã³ãã¥ãŒã¿ãŒã®ãã¹ãRAMãžã®æžã蟌ã¿ãæäŸããŸãã ãã®ãã¹ãã§ã¯ãèšè¿°åãããã¯ãããã«æžã蟌ãŸããŸãã block_writeããã³block_readã³ãã³ãã¯ãã³ã³ãããŒã©ã®DMAã¬ãžã¹ã¿ãžã®ã¢ã¯ã»ã¹ãæäŸããŸãã ã³ã³ãããŒã©ã¯ããã°ã©ã ãããŠããã亀æã®éå§ãšå®äºã§ãã ãã®åŸãint_mem_readã³ãã³ããåä¿¡ããŒã¿ãèªã¿åããæ€èšŒããŸãã ãã®ãã¹ãã®ã³ãŒãã¯ãopencores.orgã§ãªãŒãã³ãœãŒã¹ãããžã§ã¯ããšããŠå ¬éããPCIe_DS_DMAã³ã³ãããŒã©ãŒã®ãã¹ããšã»ãŒåãã§ãã ãªãªãžãã«ãšæ¯èŒããŠãåä¿¡ããŒã¿ã®æ€èšŒãè¿œå ãããŸããã
ã³ã³ãããŒã©ãŒã®è«çæ§æ
ã¬ãžã¹ã¿ã¬ãã«ã§ã¯ãã³ã³ãããŒã©ãŒã¯FPGA Virtex 4ãVirtex 5ãVirtex 6ãKintex 7ã«å¯ŸããŠä»¥åã®ã³ã³ãããŒã©ãŒãç¹°ãè¿ããŸãã çµç¹ã¯PCIe_DS_DMAãããžã§ã¯ãã«ãããŸãã
ãã¹ãŠã®ã³ã³ãããŒã©ãŒã®æ©èœã¯ãåäžã®èšè¿°åãçµåããŠèšè¿°åãããã¯ã«ããããšã§ãã ããã«ãããæçåãããã¡ã¢ãªã䜿çšããéã®é床ãå€§å¹ ã«åäžããŸãã
ããŒãããã¯ãžã®æ¥ç¶
ãã®ã³ã³ãããŒã©ãŒãããŒãããã¯ã«æ¥ç¶ããããšãéèŠã§ãã ååã®èšäºãADMã€ã³ã¿ãŒãã§ã€ã¹ïŒããŒãããã¯ãšã¯ãã§æžããããŒãããã¯ãšã¯äœã§ãã ã 512ããããã¹ã䜿çšããã«ã¯ãã¢ãããŒããå€æŽããå¿ èŠããããŸããã ããŒãããã¯ãæ¥ç¶ããã«ã¯ãè¿œå ã®ãªããã«ãŒãŠãããã䜿çšããå¿ èŠããããŸããã ãããã¯å³ãå³ã«ç€ºããŸãã
ãªããã«ãŒã¯2ã€ã®åé¡ã解決ããŸãã
- ãããäžã§ã¿ã€ã€ããã¬ãŒã¹ããŸãããã®ããã«ãã³ã³ãã¢ã®è¿œå ã¹ããŒãžã®æ°ãèšå®ã§ããŸã
- 64ããã³128ããããã¹ãåããããŒãããã¯ãžã®æ¥ç¶
ã¡ã¢ãªäœ¿çšé
ã³ã³ãããŒã©ãŒã®éçºãšããŒãããã¯ãžã®æ¥ç¶ã®æçµçãªç®æšã¯ãADCããã³ã³ãã¥ãŒã¿ãŒãžã®ããŒã¿ã®é£ç¶ã¹ããªãŒã ãååŸããããšã§ãã ãããŠãããã§PCI Expressãã¹ãå®å®ããé床ãæäŸããªããšããäºå®ã«çŽé¢ããŠããŸãã ãã¹ã«é 延ãããå ŽåããããŸãã ããã¯ç¹ã«é«ãçºæ¿ã¬ãŒãã§é¡èã§ãã ä»ã®ããã€ã¹ã®åäœãåå ã§é 延ãçºçããŸãã é 延éã¯ç°ãªãå Žåãããã5ã10ÎŒsããŸãã¯ãã以äžã®å ŽåããããŸãã 11 GB / sã®é床ã§10ÎŒsã®é 延ã¯ã110ãããã€ãã®ã¡ã¢ãªãããã¯ã«å¯Ÿå¿ããŸãã å éšã¡ã¢ãªã«ã€ããŠã¯ãææ°ã®FPGAã§ããå€ãã®ããšããããŸãã ãã ããé 延ãé·ããªãå ŽåããããŸãã ããŒã¿ã¹ããªãŒã ãäžæåæ¢ã§ããªãå ŽåãADCã䜿çšãããŠããå Žåã¯ãå€éšã¡ã¢ãªã«ãããã¡ãªã³ã°ããããæ¹æ³ããããŸããã ããã«ãã¡ã¢ãªã¯22 GB / sã®é床ã§åäœã§ããå¿ èŠããããŸãã ã¢ãžã¥ãŒã«ã«ã¯2ã€ã®SODIMM DDR3-1600ãã€ã³ã¹ããŒã«ãããŠããŸãã ã¡ã¢ãªã¯800 MHzã®åšæ³¢æ°ã§åäœããŸãã ããã¯ã8400 MB / sã®é£ç¶ããŒã¿ã¹ããªãŒã ã«å¯Ÿå¿ããŸãã ãã®æ°å€ã¯å®éšã«ãã確èªãããŠããŸãã 8400 MB / sã®é床ã¯ã1800 MHzã®2ã€ã®ADCãã€ã³ã¹ããŒã«ãããŠããæéã®ãµãã¢ãžã¥ãŒã«ããã®ããŒã¿åºåã®é床ãè¶ ããŠããããšã«æ³šæããŠãã ããã
ãã¬ãŒã¹
ã¹ã¯ãªãŒã³ã·ã§ããã¯ãPlanAheadããã°ã©ã ã®ãã¬ãŒã¹çµæã瀺ããŠããŸãã
åçã¯ã2ã€ã®PCI Expressã³ã³ãããŒã©ãŒïŒé»è²ãšç·è²ã§åŒ·èª¿è¡šç€ºïŒãš2ã€ã®ã¡ã¢ãªã³ã³ãããŒã©ãŒïŒPCI Expressã®é£ïŒã瀺ããŠããŸãã
çµå±ã®ãšããããã®ãããªãããžã§ã¯ãã¯Vivadoã«ãšã£ãŠéåžžã«å°é£ã§ãããéåžžã«äžååã«å¯ŸåŠããŸãã Vivadoã®ãããžã§ã¯ãã¯ç¹æ®ãæªãããã°ãã°æ©èœããŸããã ISEã¯ãã¯ããã«å®å®ããçµæã瀺ããŸãã PCI ExpressããŒãã¯ãã¶ã€ãªã³ã¯ã¹ã®æšå¥šäºé ã«åŸã£ãŠã¬ã€ã¢ãŠããããŸãããããããäžã§ééã空ããŠããããšãããããŸããã ãããŠãããã¯ãã§ã«ãæ®ãã®ãã«ãã®ã¬ãããåç·ãå ±æããããã®åé¡ãåŒãèµ·ãããŠããŸãã
çµæ
ã¢ãžã¥ãŒã«ã®åäœã¯ãããã€ãã®ã³ã³ãã¥ãŒã¿ãŒã§ãã¹ããããŸããã çµæã¯éåžžã«èå³æ·±ããã®ã§ãã
Intel Core i7 4820K | P9X79 WS | DDR3-1866 | 11140 MB / s |
---|---|---|---|
Intel Core i7 5820K | X99-A | DDR4-2400 | 11128 MB /ç§ |
Intel Core i7 3820K | P9X79 | DDR3-1600 | 11120 MB / s |
ããã¯æ€èšŒãªãã®ããŒã¿å ¥åé床ã§ãã ããŒã¿ã¯ãã·ã¹ãã ã¡ã¢ãªé åã«å²ãåœãŠããã1 GBã®ãµã€ãºã®ãããã¡ã«é£ç¶çã«å ¥åãããŸããã€ãŸããç©çã¢ãã¬ã¹ã«ãã£ãŠé£ç¶çã«å ¥åãããŸãã å°ãªããšã1åéã®ééã§å¹³åå ¥åé床ã枬å®ããŸãã
DDR3-1600ã¡ã¢ãªãæèŒããã³ã³ãã¥ãŒã¿ãŒã§ã¯ããã§ãã¯ããªã³ã«ãããšãé床ã8500 MB / sã«äœäžããŸãã
DDR3-1866ãæèŒããã³ã³ãã¥ãŒã¿ãŒã§ã¯ã1ã€ã®ã¢ãžã¥ãŒã«ã§ã¹ãã£ã³ããªã³ã«ãªã£ãŠãé床ã¯äœäžããŸããã
æ€èšŒãªãã®DDR3-1866ãæèŒããã³ã³ãã¥ãŒã¿ãŒã®2ã€ã®FMC122Pã¢ãžã¥ãŒã«ããåã¢ãžã¥ãŒã«ã®æ倧é床ãçŽ11,000 MB / sã§ããããšã瀺ããŠããŸãã ãã ãããã¹ãããªã³ã«ãããšãé床ãäœäžããŸãã
ãããã®æž¬å®ã§ã¯ã1 MBã¯1024ãã€ãã§ããã1 KBã¯1024ãã€ãã§ãããšæ³å®ãããŠããŸãã
ãã®è«æã§ã¯ã倧èŠæš¡ãªããŒã ã®äœæ¥ã®çµæã玹ä»ããŸãã ãã®ãããžã§ã¯ãã§çŽ æŽãããä»äºãããŠãããDmitry Avdeevã«æè¬ããŸãã
PSéçºãé²è¡äžã«ãVirtex 7ã¯äœãšãå»æ¢ãããŸããã Kintex Ultrascaleã¯ãã§ã«äœæ¥äžã«ãã䟿å©ã§ãã ãŸããKintex Ultrascale +ã«ã¯ãã§ã«PCI Express v3.0 x16 HARDãæèŒãããŠããããããã®åé¢ã¯äžèŠã§ãã
PSSãããKintex Ultrascale +ã«ã¯PCI Express v4.0 x8 HARDãŠãããããããŸã-åé¢ã¯ãŸã æå¹ã§ããïŒ