版权归原作者所有,如有侵权,请联系我们

[科普中国]-软硬件协同设计

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏
简介

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

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

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

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

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

软硬件协同设计的过程

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

系统描述是用一种或多种描述语言对所要设计的系统的功能和性能进行全面的描述,建立系统的软硬件模型的过程。系统建模可以借助EDA工具实现,也可以由设计者用自然语言来完成。

系统设计可以分为软硬件功能分配和系统映射两个阶段。软硬件功能分配就是要确定哪些系统功能由硬件模块来实现,哪些系统功能由软件模块来实现。硬件一般能够提供更好的性能,而软件更容易开发和修改,成本相对较低。由于硬件模块的可配置性,可编程性以及某些软件功能的硬件化、固件化,因此一些功能既能用软件实现,又能用硬件实现,软硬件的界限已经不十分明显。此外在进行软硬件功能分配时,既要考虑市场可以提供的资源状况,又要考虑系统成本、开发时间等诸多因素。因此,软硬件的功能划分是一个复杂而艰苦的过程,是整个任务流程最重要的环节。系统映射是根据系统描述和软硬件任务划分的结果,分别选择系统的软硬件模块以及其接口的具体实现方法,并将其集成,最终确定系统的体系结构。具体地说,这一过程就是要确定系统将采用哪些硬件模块(如MCU,DSP,FPGA、存储器、I/O接口部件等)、软件模块(如操作系统、驱动程序、功能模块等)和软硬件模块之间的通讯方法(如总线、共享存储器、数据通道等)以及这些模块的具体实现方法。

仿真验证是检验系统设计正确性的过程。对设计结果的正确性进行评估,以达到避免在系统实现过程中发现问题时再进行反复修改的目的。在系统仿真验证的过程中,模拟的工作环境和实际使用时差异很大,软硬件之间的相互作用方式及作用效果也就不同,这也使得难以保证系统在真实环境下工作的可靠性。因此,系统模拟也有一定的局限性。

综合实现其过程是软件、硬件系统的具体设计过程。设计结果经过仿真验证后,可按系统设计的要求进行系统研制生产,即按照前述工作的要求设计硬件软件,并使其能够协调一致地工作,而后在进行各种试验。

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

以嵌入式电视图像缩放为例,通常由视频传感器送出的模拟视频信号(我国采用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。系统硬件实现框图如图所示。

软硬件协同设计过程

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

软硬件协同设计的意义

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

提高了系统的性能。可应用在新产品的设计及老产品的技术升级改造中;

提高了系统的可靠性。软硬件协同设计可在一定程度上降低系统的复杂程度及技术实现难度,对提高产品的可靠性大有裨益

通过FPGA实现专用测试点测试或JTAG边界扫描测试,提高系统的可测试性;

以FPGA实现的数据处理流水线IP核具有非常高的可移植性,可直接应用于类似产品的开发,缩短了产品的开发周期;

采用软件固件化的方式将部分核心技术固化在可编程器件中,有利于核心技术的保密工作,有助于知识产权的保护。

理论

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

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

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

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

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

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

.

评论
科普cuili007
庶吉士级
2023-01-01