软硬件协同设计

更新时间:2023-12-23 18:34

软硬件协同设计是指对系统中的软硬件部分使用统一的描述和工具进行集成开发,可完成全系统的设计验证并跨越软硬件界面进行系统优化。

简介

受电子技术,特别是可编程技术的限制,传统的设计方法是将硬件和软件分为两个独立的部分进行设计。在整个设计过程中,通常采用硬件优先的原则,一般首先进行硬件设计,然后在硬件设计平台上进行软件设计。随着电子技术的发展,各种大规模可编程集成电路得到广泛的应用,传统的设计方法的局限性已成为限制可编程芯片充分发挥性能的障碍,在此基础上,人们开始研究软硬件协同设计技术。软硬件协同设计是依据系统设计为目标,通过综合分析系统软硬件功能及现有资源,最大限度地挖掘系统软硬件的潜能,协同设计软硬件体系结构,使得系统能够运行在最佳的工作状态。

协同设计与传统设计方法对比

传统的设计方法一般采用自上向下的设计方法,或者是模块化设计方法,总体上都是硬件模块优先的设计方法。其基本设计思路如图1所示。

这种设计方法将硬件和软件分为两个独立的部分。在整个设计过程中,通常采用硬件优先的原则,即在概要估计软件任务需求的情况下,首先进行硬件设计,在建立了硬件平台以后,在此硬件设计平台上进行软件设计。由于在硬件设计过程中缺乏对软件构架和实现机制的清晰了解,硬件设计工作带有一定的局限性。在系统优化时由于受到设计空间的限制,只能改善硬件/软件各自的性能,不能对系统进行综合优化,得到的最终设计结果很难充分利用硬软件资源,难以适应现代复杂的系统设计任务。软硬件协同设计是使软件设计和硬件设计作为一个有机的整体进行并行设计,实现软硬件的最佳结合,从而使系统获得高效工作能力。软硬件协同设计的基本思路如图2所示。

从图可以看出,软硬件协同设计最主要的优点是在设计过程中,硬件和软件设计是相互作用的,这种相互作用体现在设计过程的各个阶段和各个层次,设计过程充分实现了软硬件的协同性。在软硬件功能分配时就考虑了现有软硬件的资源,在软硬件功能设计和仿真评价过程中,软件和硬件是互相支持的。这就使得软硬件功能模块能够在设计开发的早期互相结合,从而及早发现和解决系统设计的问题,避免了在设计开发后期反复修改所带来的一系列问题,有利于充分挖掘系统潜能、缩小体积、降低成本、提高整体效能。

软硬件协同设计的过程

软硬件协同设计过程可以分为“系统描述、系统设计、仿真验证和综合实现”四个阶段。

传统设计与软硬件协同设计方法实例

以嵌入式电视图像缩放为例,通常由视频传感器送出的模拟视频信号(我国采用PAL-D制式,分辨率为768×576),在经A/D转换后,为满足不同分辨率显示的需要,需对A/D转换后的数字视频采用相邻象素插值算法进行相关运算后转换为所需分辨率再进行显示。相邻象素插值算法需要多次数据的乘法与除法,一般情况下,可将除法转换为乘法,设每进行一次单色的相邻象素插值运算需要5次乘法及5次加法,每次乘法需4个时钟周期,每次加法1个时钟周期,源图像分辨率为768×576,每秒25帧,目的图像分辨率为1280×1024。

传统设计过程

传统设计方法采用软件实现相邻象素插值算法的过程,由软件按顺序依次算出目的图像中的每一个象素的数值并送入显示缓存进行显示。设计过程中的硬件需求计算如下:

一帧图像需处理点数:m=1280×1024=1310720

一秒需处理总点数:M=m×25=32768000

每处理一个点所需时钟数:N=5×4+5×1=25

则每秒种处理象素所需总时钟数:C=M×N=32768000×25=819200000

即最大信息流量为819.28M,按20%的设计冗余,在纯软件处理的情况下,所需的处理器速度需求为1GHz。系统硬件实现框图如图3所示。

软硬件协同设计过程

软硬件协同设计以FPGA为核心,充分发挥可编程器件的性能,以FPGA编程的方式实现相邻象素插值算法的过程,将传统设计过程中以软件方式实现的过程以硬件流水线的方式来实现。系统硬件实现框图如图4所示。从图中可以看出,以FPGA为核心的象素处理流水线代替了处理器,降低了系统的复杂程度,另外,由于象素处理流水线的最大信息处理量为1280×1024×25=32768000,即最大信息流量为32.768M,按20%的设计冗余,所需的处理速度不到传统设计的十分之一,从而简化了系统设计、降低了系统技术难度、提高了系统的可靠性。

软硬件协同设计的意义

由于软硬件协同设计以可编程设计技术为核心,采用软硬件结合的方式,设计最优的软硬件接口,以有限状态机或数据处理流水线的方式实现部分软件流程的功能,对产品的设计有如下意义:

理论

首先是系统的描述方法。目前广泛采用的硬件描述语言是否仍然有效?如何来定义一个系统级的软件功能描述或硬件功能描述?迄今为止,尚没有一个大家公认的且可以使用的系统功能描述语言可供设计者使用。

其次是这一全新的设计理论与已有的集成电路设计理论之间的接口。可以预见,这种全新的设计理论应该是现有集成电路设计理论的完善,是建立在现有理论之上的一个更高层次的设计理论,它与现有理论一起组成了更为完善的理论体系。在这种假设下,这种设计理论的输出就应该是现有理论的输入。

第三,这种全新的软硬件协同设计理论将如何确定最优性原则。显然,沿用以往的最优性准则是不够的。除了芯片设计师们已经熟知的速度、面积等硬件优化指标外,与软件相关的如代码长度、资源利用率、稳定性等指标也必须由设计者认真地加以考虑。

第四,如何对这样的一个包含软件和硬件的系统的功能进行验证。除了验证所必须的环境之外,确认设计错误发生的地方和机理将是一个不得不面对的课题。最后,功耗问题。传统的集成电路在功耗的分析和估计方面已有一整套理论和方法。但是,要用这些现成的理论来分析和估计含有软件和硬件两部分的SOC将是远远不够的。简单地对一个硬件设计进行功耗分析是可以的,但是由于软件运行引起的动态功耗则只能通过软硬件的联合运行才能知道。

其实,还可以举出很多新理论要涉及的问题,它们一起构成了面向SOC的软硬件协同设计的理论体系。

软硬件协同设计所涉及到的内容有:HW-SW 协同设计流程、HW-SW 划分、HW-SW 并行综合、HW-SW 并行仿真。

.

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}