《百度云服务器FPGA标准开发环境的逻辑开发与编译示例.docx》由会员分享,可在线阅读,更多相关《百度云服务器FPGA标准开发环境的逻辑开发与编译示例.docx(6页珍藏版)》请在第一文库网上搜索。
1、百度云服务器FPGA标准开发环境的逻辑开发与编译示例镜像是云服务器实例运行环境的模板,包括操隹系统和预装软件等配置。百度云为每个咏实例默认提供了专属公共镜像,用户可以按需选择适合的镜像类型。概述基于百度云自研的FPGA加速卡,提供了一套FPGA标准开发环境。您可以使用百度云提供的镜像工具包,在FPGA上开发与调试自己的业务功能,或者将已有的功能模块移植到FPGA加速卡上。百度自研FPGA加速卡使用XiIinX20nmKU115FPGAoFPGA板卡带有4通道DDR4,每个通道72bit,带ECC,容量2GB,速率2400MhzFPGA通过PCIE3.0x8和CPU相连。板卡的结构框图如下所示:
2、DDR4DDR4PCIE3.0x8Xi1inxK115FPGACfgF1ashDDR4DDR4基于上面的FPGA板卡,百度还提供的FPGA标准开发环境,其系统结构如下图:FPGA标准开发环境具有极大的灵活性:您可以自行研发FPGA中动态部分的逻辑,包括KUII5甚左的绝大部分资源,以及4个DDR4通道,让FPGA电路完成定制化的功能,百度云提供驱动和应用参考设计,您只需修改软件侧的驱动和应用程序,调用FPGA完成特定的功能。直接使用百度提供的工具包更换FPGA中动态部分的逻辑。FPGA标准开发环境提供虚拟jtag工具,您可以使用vivado工具对FPGA进行调试。FPGA标准开发环境操作包括两
3、部分:FPGA软件驱动开发以运行支持PE进行简单浮点向量加功能的示例程序为例:1 .编译驱动,提供编译示例程序。2 .运行示例程序。FPGA逻辑开发使用工具包开发和调试用户逻辑:1 .使用BaidUHWdesigntoo1kit编译实现您的动态逻辑。2 .使用bin_pr_too1s更换您的动态逻辑。3 .使用ViVad。对您的动态逻辑进行调试。FPGA软件驱动开发编译驱动修改driver/MakefiIe中的KERNE1D1R变量,使之指向当前内核的编译目录,一般为/1让/(110祖1125/$(11012-r)buiId目录或/usr/src/kerne1s/$(Uname-r)01#d5
4、2cbacaef8cf4fd3d6354deb5066970fb6511d02d18d15835e6014ed847fb02 obj-m+=xdma_xvc.oxdma_xvc-objs:=xdma-core.oxdma-sgm.oxdma-ioct1.oxdma-bit.oxvc-pc:450ERNE1DIR?=homeworksv447syssat/tags/1inux2-6-32/1inux2-6-32_1-16 PWD:=J(she11pvd)7 RT:=$(dir$(M)89 Xi1inxinc1ude:=-j(R)./inc1ude-i$(ROOT)/inc1ude10执行make
5、,如果编译成功,当前目录下会生成x!XVC.ko驱动文件,如下图所示:miaotianxiangyf-inf-fpga-spark00xdrivermake-C/home/work/svn447syssat/tags/1inux2-6-32/1inux2-6-32_1-12-0-0_PD_make1:Enteringdirectoryhomeworksvn447syssattags1inux2-6-321irCCMhomemiaotianxiangxdma-xvc-driverdriverxdma-core.oCCMhomemiaotianxiangdma-xvc-driverdriverxd
6、ma-sgm.oCCMhomemiaotianxiangxdma-xvc-driverdriverxdma-ioct1.oCCMhomemiaotianxiangxdma-xvc-driverdriverdma-bit.oCCMhomemiaotianxiangxdma-xvc-driverdriverxvc-pcie-driver.oCCM/home/miaotianxiang/xdma-xvc-driver/driver/xvc-mmconfig_64.oCCMhomemiaotianiangxdma-xvc-driverdriverxvc-mmconfig-shared.oCCMhome
7、miaotianxiangxdma-xvc-driverdriverxvc-core.o1DM/home/miaotianxiang/xdma-xvc-driver/driver/xdma_xvc.oBui1dingmodu1es,stage2.MODPOST1modu1esCC/home/miaotianxiang/xdma-xvc-driver/driver/xdma_xvc.mod.o1DM/home/miaotianxiang/xdma-xvc-driver/driver/xdma_xvc.komake1:1eavingdirectoryhomeworksv447syssattags1
8、inux2-6-321in执行insmodxdma_xvc.ko,装载上一步生成的驱动文件,在dev目录下会出现如下设备文件dcvxi1XVC/cfg_iocO。rootBBhost_test1514samp1e#11/dev/xi1_:vccfg-ioccrw-rw1rootroot250,8IXpr:11:13:38jIdevxi1_xvc/cfg_ioc0rootBBhoSt_JZeStT514samp1e#11/dev/xdma0_*crw-rw1rootroot250,36Apr1113:38/devxdma0_c2h_0crw-rw1rootroot250,1Apr1113:38/
9、devxdma0_contro1crw-rw1rootroot250,10Apr1113:38/devxdma0_events_0crw-rw1rootroot250,11Apr1113:38/devxdma-events_1crw-rw1rootroot250,20Apr1113:38/devxdma0_events_10crw-rw1rootroot250,21Apr1113:38/devxdma0_events_11crw-rw1rootroot250,22Apr1113:38/dev/xdma0_events_12crw-rw1rootroot250,23Apr1113:38devxd
10、ma0_events_13crw-rw1rootroot250,24Apr1113:38/dev/xdma0_events_14crw-rw1rootroot250,25Apr1113:38/dev/xdma0_events_15crw-rw1rootroot250,12Apr1113:38/devxdma0_events_2crw-rw1rootroot250,13Apr1113:38devxdma0_events_3crw-rw1rootroot250,14Apr1113:38devxdma0_events_4crw-rw1rootroot250,15Apr1113:38/devxdma0
11、_events_5crw-rw1rootroot250,16Apr1113:38/devxdma0_events_6crw-rw1rootroot250,17Apr1113:38/devxdma0_events_7crw-rw1rootroot250,18Apr1113:38/dev/xdma0_events_8crw-rw1rootroot250,19Apr1113:38devxdmajvents9crw-rw1rootroot250,32Apr1113:38/dev里今彼妮笈crw-rw1rootroot250,0Apr1113:38z.z.WBFuv编译示例程序进入SanIPIC目录,执
12、行make。如果编译成功,当前目录下生成SamP1c、SanIP1,e_usCJirq等可执行文件,参见下图:miaotianxiangyf-inf-fpga-sparkxsamp1eg+-C-std=c+x-Oreg_write_32.oreg_write_32.cpp-D_FI1E_0FFSET_BITS=6g+-c-std=c+x-ofpga_c1oud.ofpga_c1oud.cpp-D_FI1E_0FFSET_BITS=64-D_g+-Irt-Ipthread-oreg_write_32reg_write_32.ofpga_c1oud.o-D_FI1E_OFF?g+-c-std=c+
13、0x-oreg_read_32.oreg_read_32.cpp-D_FI1E_0FFSET_BITS=64-g+-Irt-Ipthread-oreg_read_32reg_read_32.ofpga_c1oud.o-D_FI1E_OFFSEg+-c-std=c+0x-osamp1e.osamp1e.cpp-D_FI1E_0FFSET_BITS=64-D_GNU_SOUfg+-Irt-Ipthread-oSamP1esamp1e.ofpga-c1oud.o-D_FI1E_0FFSET_BITS=64-g+-c-std=c+0x-osamp1e_user_irq.osamp1e_user_irq.cpp-D_FI1E_OFFSET_tg+-Irt-Ipthread-osamp1e_user_irqsamp1e_user_irq.ofpga_c1oud.o-D_FII运行示例程序执行./samp1e,输出如下结果,PE正确地执行了浮点向量加功能。SanIPIe使用轮询蜜建方式检查命令结果是否完成。执行./samp1e_uscr_irq,输出如下结果,PE正确地执行了浮点向量加功能。samp1e_user_irq使用中断方式检查命令结果是否完成。关键代码示例2122*DMAf1oat_a_arrayandf1oat_b_array