XRT_Kernel与XRT_IP介绍

描述

本文作者:赛灵思工程师 Yang Chen

从2020.2开始,XRT提供了新的Native API,以区别行业标准OpenCL API的,在FPGA加速应用上,两者都是可以使用的。XRT Native API的优势是更加契合FPGA加速应用,而OpenCL的优势则是平台通用性比较好。

XRT Native API里面有两个API比较有意思,可能会产生混淆,一个是xrt_kernel,另一个是xrt_ip。IP这个概念,在FPGA中还是比较常用的,典型的就是IP catalog里面的IP,当然这次讲到的IP更倾向于custom IP,即用户自定义IP(以下略作IP)。无论使用Vitis_hls, V++,Package_xo中哪种生成方法,最后生成的kernel的端口类型都是固定的,另外控制端口AXI_LITE的寄存器配置也是保持固定的(当然会因参数数量不同而变化)。

截取以下网址-page 274 S_AXILITE Control Register Map作参考:

(https://www.xilinx.com/support/documentation/sw_manuals/xilinx2021_2/ug1399-vitis-hls.pdf )

API

这些寄存器设置都是工具自动生成的,用户不需要进行修改。具体这些信号是如何让控制这些模块的,以后有机会可以再讲。那么如果有些需求是,我是一名RTL设计者,设计里面有Xilinx IP需要配置功能,我想用更多一点的寄存器空间作额外配置,现有的寄存器空间不够,不能满足我的要求:假设,一个IP中内嵌了一个axi_timer IP(截图取自:https://www.xilinx.com/support/documentation/ip_documentation/axi_timer/v2_0/pg079-axi-timer.pdf page 12)

那么我该如何配置它呢?

API

这时,之前提到xrt_ip就可以派上用场了,用户可以自己定制控制寄存器而不用受限于规定的control register map,当然端口类型还是需要按照kernel的要求来设计。沿用上述的寄存器配置,我们可以额外地添加寄存器:

API

所以我们可以看到,kernel应该算IP中的一个子集,只是IP的话更加的灵活些。但是由于IP控制寄存器配置的不固定,导致xrt无法自动管理IP(不知道哪个寄存器代表的含义),所以只能提供了寄存器接口让用户自己访问控制。从这方面来说,使用的便利性会降低,无论是IP的启动停止,还是寄存器配置都需要用户来控制。相对来说,xrt_kernel匹配的set_arg,run,wait等操作,它能够代替用户做一些底层操作,更加地省时省力。

原文标题:开发者分享|XRT Native API: XRT_Kernel & XRT_IP 介绍

文章出处:【微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。
 

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分