账号:
密码:
CTIMES / 文章 /   
利用模型化基础设计将通讯协定布署至FPGA
 

【作者: Hung Nguyen等人】2018年04月16日 星期一

浏览人次:【2274】
  


为了在追求加速嵌入系统开发及维持其可靠性的同时,又能够兼顾降低开发成本,产业界开始转向可重组的设计架构,这种架构能够适用於未来的任务要求,并且可以掌握系统失灵的状况。这些可重组的子系统通常以资源受限的FPGA硬体、或者功能完善、带有特定DSP的多核心处理系统为基础。


以FPGAs做为目标硬体时,必须使用Verilog或VHDL来开发,而处理器的开发则是须透过C/C++。许多演算法与零件,特别是与通讯相关领域,会同时需要将以处理器为基础与FPGA为基础的两种子系统作为目标。


美国桑迪亚国家实验室(Sandia National Laboratories)与来自MathWorks公司的顾问展开一项计画来评估这类应用的模型化基础设计(Model-Based Design)。模型化基础设计帮助他们从方块图产生C/C++或HDL,并将相同的演算法转档布署到以处理器为基础与以FPGA为基础的两种子系统上。这项计画包含实现两种标准化的通讯协定,Joint Architecture Standard Packet Protocol(JPP)与Joint Architecture Standard Reliable Data Delivery Protocol(JRDDP)。JPP与JRDDP为建立在SpaceWire-常用於嵌入式系统模组间通讯物理协定层级之上的高阶协定。桑迪亚国家实验室使用一个以手动编码版本的协定来评估透过模型化基础设计开发的执行成果。


本文将介绍这项计画,聚焦於模型架构以及用来进行验证的技术,证明了模型化基础设计非常适合使用在协定的执行。


设计要求

JPP与JRDDP通讯协定指定了资料如何从来源节点传输至目标节点,并指定封包的格式与封包传输与再次传输的顺序。


由於需要执行这些协定的活动是预先定义且有特定次序,使用状态机因此成为一个合??逻辑的选择。我们决定使用Simulink和Stateflow来执行建立模型与产生C和HDL协定程式码的状态机。


模型架构

这项计画包含利用Simulink和Stateflow开发JPP与JRDDP模型。作为一项详尽的协定,JPP只需要一个发射器模块与接收器模块。JRDDP则比较复杂一些,由於它是一个可靠的封包传送协定,担保资料在应用程序之间的传输,因此必需具备传送及接收资料封包与控制封包的模块。


为了这项计画而开发的模块经过优化以执行在硬体上(FPGA)。使用者应用程序必须让资料以运作时钟频率串流往返於模块之间。发射器模块提供了一个双埠RAM模块,使用者应用程序在触发开始传送的讯号之前先在这里面串流资料。


接收器模块维持两组双埠RAM,接收到的资料被串流为其抵达时候的样子。当完整的资料封包形成,会以一个讯号脉冲通知使用者应用程序在对应的记忆体区域(bank)有一个完整的封包可以使用。



图1 : 使用者应用程序与JPP之间的介面
图1 : 使用者应用程序与JPP之间的介面

所有的发射器模块都有相同的架构。图二为JPP发射器模块的顶层架构。



图2 : JPP发射器
图2 : JPP发射器

这个发射器一端连结到使用者应用程序,另一端连结到SpaceWire介面


接收器模块也有类似的结构(图3)。



图3 : JPP接收器
图3 : JPP接收器

图4为使用JPP协定传送与接收资料完整应用程序。



图4 : 以JPP为基础的完整应用程序。发射器应用程序(左上)产生资料并使用JPP发射到接收器应用程序(右上)。JPP发射器与接收器(图中)连接到SpaceWire介面。
图4 : 以JPP为基础的完整应用程序。发射器应用程序(左上)产生资料并使用JPP发射到接收器应用程序(右上)。JPP发射器与接收器(图中)连接到SpaceWire介面。

执行更高阶的JRDDP协定

JRDDP是一个高阶的协定,因此建模会比JPP更有挑战性。JRDDP定义了初始化阶段发射端点与接收端点之间互相连结的通讯。一个节点可能具备多个发射和接收端点。完整的JRDDP端点必须将基础JRDDP模块组合在一起并为其安排计画。


我们建立一个带有两个发射端点的范例发射器与带有两个接收端点的范例接收器来说明这个处理过程。


JRDDP定义了端点必须经过的几种不同的状态。在最初的状态,端点是「关闭(Closed)」的。当使用者应用程序请求将端点打开,端点会转换到「启用(Enabled)」的状态,在这里端点发送一个打开的请求到遥控端点。接收到确认之後,端点转换为「开启(Open)」状态。在「开启」状态,使用者应用程序可以发射资料到遥控节点。


模型化基础设计让我们能够在一个Stateflow图表里面捕捉到整个复杂的过程(图5)。



图5 : JRDDP状态图
图5 : JRDDP状态图

完整的JRDDP执行包含维持每一个端点的JRDDP状态机,以及使用JRDDP来建立模块:一个JRDDP发射模块、一个JRDDP接收器模块、一个JRDDP控制与确认封包模块。我们需要建立Simulink和Stateflow模块来把资料从SpaceWire介面引导到适当端点的状态机,以及从端点的状态机引导到SpaceWire介面。


图6说明了两个发射端点的JRDDP端点执行。图的上方为两个JRDDP状态机,对应到两个端点。中间的Stateflow图表是一个封包的路由器,将控制与资料封包从每一个状态机引导到控制或资料发射器模块。这张图表包含了一个将接收到的封包引导到适当端点状态机的资料接收器。



图6 : 双通道JRDDP发射端点
图6 : 双通道JRDDP发射端点

将SpaceWire介面整合为桑迪亚IP

桑迪亚开发了VHDL智慧财产(intellectual property,IP)来建立SpaceWire接收器与发射器端点。对於桑迪亚来说,评估将一个已经使用在生产多年的IP整合到从Simulink模型透过HDL Coder产生的HDL程式码的难易度是相当重要的。


Simulink可以进行黑盒子处理,子系统的建立仅包含了用来将手动编写的实体物实例化的介面连接埠。工程师可以将空的子系统关联到一个外部的VHDL实体物或Verilog模组。我们使用黑盒子来将桑迪亚的SpaceWire IP与Simulink模型结合,来开发完整的JPP与JRDDP协定介面。我们也使用黑盒子来与桑迪亚的手动编码JPP协定的执行成果相比较,测试Simulink产生的JPP介面。


验证与测试

在Simulink进行协定开发有几个优点,特别是在非常高的层级测试协定的能力。在这样的阶层进行除错比起在硬体或硬体模拟器除错的成本更低、更容易、而且更快速。我们透过以下五个步骤来完成验证:


1.在Simulink模拟发射与接收讯息。为此,我们在Stateflow建立一个SpaceWire介面的函式模型。Simulink支援高阶除错,让使用者可以在模块层级、在Stateflow状态、以及在状态转换时都可以设置中断点。除此之外,Simulink能够激发状态的转换,提供视觉上的验证让模型的表现可以如同期??。


2.利用HDL Verifier透过Simulink模型协同模拟产生出来的VHDL来证实从Simulink产生的VHDL与原始Simulink模型带来相同的结果。因此HDL Verifier自动地对结果、图表、错误进行比较。在这个步骤,我们使用Stateflow来模拟SpaceWire介面;没有使用到真正的SpaceWire IP。


3.再一次使用协同模拟,以桑迪亚的SpaceWire介面IP取代SpaceWire函式模型。我们使用协同模拟模型在ModelSim产生测试输入值并在Simulink得到结果。


4.将接收器替换为桑迪亚的手动编码执行的JPP接收器


5.以桑迪亚VHDL JPP接收器替换掉在Simulink与Stateflow开发的JPP接收器,并执行另一个协同模拟测试。这项测试确认了两个JPP接收器是可以互相取代的。


结论

这项计画证实模型化基础设计可以被用在软体与硬体进行高阶协定的建模与实现。以Simulink和Stateflow建立协定模型带来多项好处。第一,模型针对该协定提供了一个清楚的可执行规格。再者,自动产生C/C++与HDL程式码促进了叁考执行的快速开发。


模型化基础设计具有除错以及验证在高阶软体环境执行的能力,是另外一个重要的优点。Simulink与Stateflow容许在模块与讯号层级的状态之中与状态转换阶段设置中断点。Stateflow也藉由推动状态转换让阶层式的状态机除错更便利。在高阶除错之後,协同模拟与FPGA??圈模拟提供了设计的除错与验证功能。


以JPP的执行来说,HDL在ML507(以Virtex 5为基础的板子)的资源使用率大约为1%。而对於JRDDP协定,两个端点执行的资源使用率大约是10%。更进一步的优化与调整可以再降低资源使用率。由於手动编写的版本并不是执行在XilinlxR平台,因此无法进行直接的比较,但是从Simulink与Stateflow模型产生的HDL的资源使用率对桑迪亚来说是可以接受的。


在模型化基础设计,同样的Simulink模型可以为处理器的布署产生C/C++,以及为硬体(FPGA或ASIC)的布署产生HDL。不论是HDL还是C/C++,都可以从相同的模型产生出来,但是Simulink模型必须依每一种执行,利用Simulink不同子系统的功能分别经过优化。


对於以处理器为基础的执行,使用者应用程序可能会建立资料框架并传递到协定层,在这里以完整的框架而不是单一的位元流来处理。以硬体为基础的执行从使用者应用程序以硬体的时钟频率一次一位元地接收资料。


建立像是Simulink与Stateflow等高阶语言的模型让非硬体专家的工程师也能够建立硬体执行。不过,我们还是建议有硬体专家的加入,以针对进行设计优化及最终的目标硬体整合。


(本文由??思科技提供,作者Hung Nguyen、William Marchetto任职於美国桑迪亚国家实验室; Roger Theyyunni、Babak Soheili任职於MathWorks公司)


相关文章
数位电源:为何我该注意精准度?
跨出影像分类:更多关於深度学习应用
如何透过Simulink进行ISO 26262专案
工程软体开发:敏捷与模型化基础设计
加速实现网路终端低功耗人工智慧应用
comments powered by Disqus
相关讨论
  相关新品
mbed
原厂/品牌:RS
供应商:RS
產品類別:
Arduino
原厂/品牌:RS
供应商:RS
產品類別:
Raspberry Pi
原厂/品牌:RS
供应商:RS
產品類別:
  相关新闻
» 学界研发创新实践的梦工厂仪科中心倾力支援
» WISeKey在亚太并购协会峰会上介绍了其中国部属战略
» 联发科技采用Qualtera具备机器学习和分析引擎的Silicondash平台
» 台达电子公布一百零七年十一月份营收单月合并营收新台币221.26亿元
» 联发科技采导入Qualtera Silicondash智慧制造平台 提高半导体良率
  相关产品
» 达梭系统帮助奇异航空推动创新与数位连续性
» 大联大世平集团推出车用大电流电源讯号双隔离型检测器解决方案
» 贸泽供货Silicon Labs Wireless Xpress蓝牙模组可直接替换升级连线功能
» 全新瑞萨Synergy低功耗S1JA微控制器内建可程式类比功能
» NEC台湾於2018台北金融科技展打造未来银行人脸辨识技术创新应用
  相关资源
» Power Management Solutions for Altera FPGAs

AD