一 block design设计方法
早期的fpga,资源是比较有限的,设计规模相对也比较小,之前的设计流程中工程师常用的设计以hdl+xilinx ip为结构,设计中也会顾虑到fpga资源的节省。
随着fpga的资源越来越大,设计的快速构建、易修改、随着版本可迭代的要求越来越高。好比在早期单片机时代,c语言是主流的工具;而处理器越来越强,脚本类语言能更快构建最终应用。
xilinx越来越多的例程,给出的参考设计是基于block design设计方法的,block design设计方法具备如下优势:
a. 框图形式,直观易懂
block design基于框图的形式,搭积木+连线的方式; b. 节省大量的coding时间
互联总线连线,可以鼠标单一连线。block design的一个ip往往可以独立运行,比代码的方式只是一个wrapper包含的内容更多;
c. 可以随着vivado升级,快速更新ip,保持设计更新
传统hdl+ip的方式,ip升级后还需要检查对应hdl的适配。block design一般来说,ip作为一个模块升级,基本上block design直接升级,内部不用再干预; d. 包括大量的通用ip,可以灵活构建设计
尤其是基于amba的ip,可以帮助用户快速灵活构建设计;
二 block design设计实例
如何理解block design设计方法、工具如何使用等问题xilinx有详细的文档手册来介绍,本文中不做介绍,本文简单以一个实际的案例,介绍使用block design加速设计。
本文描述的这个设计,需要4路光纤,运行aurora协议,各路aurora线速率不同。最终aurora协议的数据部分,还需要通过pcie上传到上位机。反过程是上位机的数据,通过pcie最终分发到4路aurora光纤,向外传输。
本文描述的这个设计中的两个要点:
1. 利用ddr做大容量缓存
有很多应用需要用ddr做缓存,例如常见的pcie+aurora收发,或者adc/dac,图像采集卡等,两边速率不匹配并且累计需要的容量超过fpga内部fifo的时候,需要外部的ddr做缓冲。
早期xilinx ddr ip的用户接口,只提供了类似于fifo那样的接口,并且只有一个用户接口。
在传统的rtl设计方法中,需要将ddr作为缓存,需要自己做如下设计:
a. 多数据输入输出的接口,将app_接口扩展多个独立的接口,供不同的端口使用
b. 总线仲裁,多个独立接口仲裁,按照round-robin,或者抢占式的方式提供仲裁
c. 地址管理,不同的端口深度要求不同的情况下,对应管理不同的地址空间。
实现这些功能,大概需要写这么多代码,对一个工程师来说,这些代码可能需要2-4周的代码和仿真时间:
如果使用block design实现,1个小时差不多就可以实现上面的这些内容,在block design中:
a. 最右侧的ddr ip 直接出axi接口;
b. 使用axi smart connect实现多端口扩展,自带仲裁功能;
c. 使用datamover完成外围fifo数据到ddr的数据读写;
搭建这个block只需要10分钟,到这一步为止,剩下的工作只需要控制datamover的命令接口即可。
2. 使用xdma直接和ddr交互
过去xilinx 平台设计dma,从最早的xapp1052,到后来一些付费的plda和nwlogicip,设计复杂度不用说,哪怕购买了ip也需要一些时间融入到自己的产品中。
xilinx有一个xdma ip,这个ip的介绍和使用参考pg195。这里使用block design,添加xdma。
xdma对外有2个接口:
a. 一个是axi_lite接口,这里接axi_bram ip,对外是一个bram接口,用作寄存器接口,控制pcie卡内部的寄存器;
b. 一个是axi memory full接口,可以直接对接ddr空间,访问所有的ddr部分;
通过地址空间来看,ddr被pcie xdma和4路datamover共享,datamover外部接收的数据缓存在ddr空间,上位机可以直接读走这片缓存的数据,从而实现外部数据到上位机的过程。
一个实际的pcie aurora光纤收发的工程,在block design中搭建这些框图,外围的代码非常简单。下面是一个实际的工程,4光口的aurora收发卡,使用ddr缓存,并且使用pcie和上位机交互。
block design中包含了pcie部分,以及上面的ddr缓冲的部分,外部只需要1个datamover写控制、1个datamover读控制、1个寄存器接口,即完成整个设计。
三 结语
使用block design设计方法,主体部分都可以快速拖拽和连线完成,使得外围所需要的的代码大大简化,只需要区区3个模块代码,完成从数据流到ddr的缓冲以及通过xdma读取ddr的过程,从而完成外围接口和上位机的通讯。
这个设计可以适配很多种stream形式的设计:
a. aurora光纤收发卡;
b. camera link图像采集卡;
c. ad/da数据采集回放卡;
中国智能手机如何突破重围高速增长?
白光轮廓仪与共聚焦显微镜的区别是什么?
基于PoE的LED照明系统的解决方案
新能源汽车下乡,设备制造商如何提供更高效智能的运维服务
骁龙450和636的区别
利用Block Design加速设计
回顾霍尼韦尔在DHL供应链管理峰会的精彩表现
2019年AI领域的发展情况回顾
通用汽车投资新创公司Mitra Chem 开发性能更佳的平价电动车电池
Imagination Technologies一VR需要什么样的GPU?
水下手机纪录片《无际蓝》上线 华为把不可能变成可能
基于Darwin Mouse类脑计算机已经实现可以多种智能任务?
超声波熔接常见问题及解决方法
Imagination和腾讯WeTest开展深度合作,助力开发者获取GPU关键报告
贵州3年内推动3000家工业企业实施智能化改造
IBM新一代主机IBM z15更多技术细节公布 14nm工艺炉火纯青
分布式多工厂的制造业如何实现设备智能管理
PSoC 3 BLDC电机控制解决方案
详细介绍抗揉搓性能试验机的优势
长城汽车与腾讯围绕自动驾驶等前沿科技共四大方向展开新的合作