您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > SOC课程设计_基于systemC和UML的语音备忘器设计_有程序代码_邱郁惠
1基于SystemC的语音备忘器设计摘要:随着VLSI的集成度越来越高,设计也越趋复杂。传统的设计方法如原理图输入、HDL语言描述在进行复杂系统设计时,设计效率往往比较低。特别是在算法由软件转化为硬件的环节上,传统的设计方法的效率不是很高,设计者往往要耗费大量的时间和精力手工进行算法的转化。为解决这些问题,一种新的系统级的设计方法SYSTEMC被提出。SYSTEMC是一种方法,也是一个C++库,用SYSTEMC可以很方便地实现一个软件算法的硬件实现,以及完成一个系统级的设计。关键词:SystemC、语音备忘器、UML一、SystemC的开发平台1.1概述随着VLSI的集成度越来越高,设计也越趋复杂。一个系统的设计往往不仅需要硬件设计人员的参与,也需要有软件设计人员的参与。软件设计人员与硬件设计人员之间的相互协调就变的格外重要,它直接关系到工作的效率以及整个系统设计的成败。传统的设计方法没有使软件设计工作与硬件设计工作协调一致,而是将两者的工作割裂开来。软件算法的设计人员在系统设计后期不能为硬件设计人员的设计提供任何的帮助。同时现在有些大规模集成电路设计中往往带有DSPCore或其它CPUCore。这些都使得单纯地用原理图或硬件描述语言来设计、仿真这么复杂的系统变得十分困难。SystemC就是在这些矛盾的背景下提出的。它的出现为复杂的系统设计提供了一条有效的解决途径。SystemC是由SynospyInc.提出的,目前最新的版本为V2.0。它提出的目的就是以一种系统设计的思想进行系统设计。它将软件算法与硬件实现很好的结合在一起,提高了整个系统设计的效率和正确性。SystemC是一个C++库,也是一种使设计者可以有效地设计出一个软件算法的准确循环模型,硬件结构以及系统级设计的方法。设计者可以用SystemC开发工具或在标准C++开发工具中加如SystemC库制作系统级模型,快速地仿真和优化设计,以及研究不同的算法,并且为硬件和软件设计人员提供一个设计系统的可执行规范。可执行规范本质上是一个C++程序,它显示了和设计系统同样的性能,为软件设计人员和硬件设计人员提供了一个设计的标准。SystemC库提供了创造系统结构模型的必须结构,包括那些在C++没有的功能如硬件时序,并行和触发功能。C++这种面对象语言提供了通过增加类来扩展语言的能力,而这种能力是C语言所不具备的。因此,SystemC使用大家熟悉的C++语言和开发工具。21.2SYSTEMC的特点SystemC支持对硬件和软件的联合设计,支持描述一个既包含硬件部分也包含软件部分的复杂系统结构。它也支持对接口的描述,有以下几个显著的特点:1.SystemC可以为软件设计人员和硬件设计人员提供一个系统的可执行规范。设计人员使用该可执行规范可以避免设计中矛盾和错误的产生,并确保设计的完备性。这是应为在设计可执行规范时,系统设计者必须设计出也一个和系统具有同样工作状态的程序,通过这个程序可以发掘出潜在的矛盾和错误,并将这些矛盾和错误消除在整个设计的开始阶段,而不是在整个系统进行调试阶段才发现和解决这些矛盾和错误。这个程序还可以帮助设计者确保整个系统设计的完备性。2.设计人员利用这个可执行的系统规范,还可以发现设计中概念模糊的地方。无论什么时候,设计人员对设计产生疑惑,就可以运行这个可执行程序以明确在这个问题上系统设计人员是如何处理的,从而确保系统设计的正确性。而现在的设计方法不能使设计人员方便迅速的解决这些疑惑。甚至这些疑惑是系统设计人员也不曾考虑过,这可能导致系统要重新进行设计。3.在系统设计被实现以前,设计人员还可以通过用SystemC设计的系统可执行规范来验证整个系统设计。这样可以避免由于在系统设计上的失误,而使系统实现不能达到要求。现在的设计方法不能提供这样的手段在设计完成前进行系统的验证,对系统的验证必须是在系统设计完后。即使在完成前进行验证,由于不能完全模拟实际系统的工作,其结果也只能作为一种参考。4.SystemC设计的可执行规范所使用的TESTBENCH文件可以通过小范围的修改或直接用在实现后的系统仿真。这就为设计实现人员带来很大的好处,他们不必花很多的时间去编写用来验证实现后系统正确性的TESTBENCH文件。而现在采用的设计方法所使用的TESTBENCH文件却没有提供这样的便利条件。这是应为软件设计人员和硬件设计人员两者的设计思想和设计手段都是不同的,一个软件设计人员所使用的TESTBENCH文件并不能被硬件设计人员使用,甚至不能给硬件设计人员任何帮助。1.3SYSTEMC设计与传统设计比较现在的系统设计一般是由系统工程师用C语言或C++语言设计出一个系统模型,并在系统级层次上检验概念和算法。当这些概念和算法被检验为正确无误时,C/C++模块被分解为功能相对独立的子模块。这些相对对立的子模块由硬件设计人员手工地转化为VHDL或Verilog语言用以硬件实现。这一个设计流程被显示在图1中。3图1传统设计流程从图1所示的设计流程中我们可以发现以下几个问题:1、人工将C\C++程序转换为HDL程序容易产生错误。在现在的这种设计方法中,系统工程师先按期望的设计要求设计出一个C模块,并验证这个模块使其达到期望的设计要求。然后系统工程师所设计的C模块被硬件设计人员手工转换为HDL模块。这个转换过程不仅容易产生错误,而且还很浪费时间。这是因为C\C++语言和HDL语言有着显著的区别。首先,HDL的处理方式比C\C++的复杂。C\C++程序采用顺序执行的处理方式,而HDL程序中既有顺序执行也有并行执行的处理方式。要将C\C++程序转化为HDL程序必然要引入一些控制信号,由这些信号控制HDL程序的运行,但这样也容易产生错误。其次,C\C++语言不涉及到时序关系。由于C\C++语言不支持对时序的描述,系统工程师设计的系统模型只是验证了概念和算法,而只能对时间耗费上有一个大概的估计。这就使得硬件实现时,为满足系统在时间上的要求,硬件设计人员必须对软件算法进行一定的改造或优化。而这些改造或优化也有可能引入各种错误。2、系统模块和HDL模块间缺乏联系。当系统模块被转换为HDL模块后,HDL模块成为整个系统设计的焦点。为适应硬件实现的特点,硬件设计人员会更改系统设计人员的设计,但这种更改只是在HDL模块中进行,而系统设计人员设计的C模块并没有因此更改。这就使得系统工程师设计的C模块和当前硬件设计人员设计的HDL模块缺乏必要的联系。当硬件设计人员遇到概念模糊或理解错误的地方时,往往不能马上从C模块中得到明确的解答。此时,C模块的设计人员也不一定能为HDL设计人员提供有效的帮助。3、多系统测试。不但C模块要转换为HDL模块,对C模块的测试也要人工转换为在HDL环境下的测试。这种转换也很复杂,而且浪费时间。HDL设计人员是根据他所设计的HDL模块和系统要求来设计TESTBENCH,这使得硬件设计人员不可能利用软件设计人员所使用的测试文件。同时,HDL人员要设计出一个好的TESTBENCH也需要比较长的时间。为解决在现在设计流程中所带来的种种弊端,一种全新的设计流程被提出,这就是SystemC设计流程。它能很好的解决上面所提到的各种设计弊端,大大提高设计效率。图2是SystemC的硬件设计流程。4图2SystemC设计流程这种设计方法与现在常用的设计方法相比有很多优点:1、精炼的设计方法。使用SystemC设计系统,系统设计人员不必花费很大的精力将整个系统设计由C语言描述转换为HDL描述。系统设计人员可以通过在C模块中很小的区域范围内加入必要的硬件和时序结构描述,从而将C模块方便准确地转化为一个有效的硬件设计,而避免将另行设计一个硬件模块。利用SystemC设计方法,设计人员可以很轻松地实现一个设计的更改,或在优化算法时检测出一些设计错误并及时修改。2、单一语言书写。使用SystemC设计系统,整个设计都用一种语言设计系统,降低了对设计人员的要求,减少了语言转换时所造成的错误。这一优点也使得设计人员可以在一个比较高的层次上进行系统模块设计。在较高层次的设计会导致产生小的设计代码,使设计和仿真的速度比传统的设计方法要快很多。这一点是很显著的。1.4SystemC的开发流程用SystemC可以在抽象层次的不同级别描述系统。在系统最高层的系统级可以用C/C++描述系统的功能和算法。在系统的硬件实现部分可以在行为级到RTL级用SystemC的类来进行描述。系统的软件部分自然可以用C/C++语言描述。由此可见针对系统的不同部分,SystemC都可以在不同的抽象层次对其进行描述,而且这些描述在系统仿真时可以协同工作。用SystemC不仅可以描述要开发的系统本身,还可以描述系统的测试平台以提供测试信号用于系统的仿真。一个熟悉C++语言的用户只要了解类库中各种类引入的语义就可以用SystemC编程。SystemC由一组描述类的头文件和一个包含仿真核的连接库所组成,在用户的描述程序中必须包括相应的头文件,然后可以用通常的ANSIC++编译器编译该程序。在连接时要调用SystemC的连接库产生可执行的系统仿真程序。整个开发流程如图3所示。5SystemC类头文件库编译器连接器C++开发环境系统、模型测试平台Make系统设计可执行仿真器图3SystemC开发流程1.5SystemC的建模特点SystemC语言的特点就是能够支持对复杂系统的设计。一个复杂的系统设计一般都要涉及软件和硬件两个方面,SystemC在这两个方面都有其独到之处。它可以在任何C++集成环境中描述硬件和软件,以及它们之间的接口。SystemC语言平台提供的建模元素和建模能力主要包括以下内容:模块语句:SystemC中定义了“模块”类,它相当于C++中的类定义。它是一个层次式设计的入口,一个模块可以嵌套其他模块;进程语言:进程被包含在模块中,用来描述模块的功能。在SystemC中有三种不同类型进程以满足不同软、硬件设计人员的需求;端口语句:用来描述模块和外界通信的端口。SystemC中支持单向和双向的端口;信号语句:信号主要用来实现模块间以及模块内部各进程间的通讯。SystemC支持单驱动和多驱动的信号。多驱动的信号可以有多个驱动,就是通常说的总线(BUS);丰富的数据类型:SystemC提供丰富的数据类型以满足多种抽象模型,固定精度的数据类型可用于快速仿真,任意精度的数据类型可用于大量数据的计算,定点数据类型可用来实现DSP;时钟语句:时钟在同步电路设计中是一个非常重要的角色,而C/C++在描述系统时却很难表达时钟。SystemC中对时钟进行了描述,并把它当作一种特殊的信号。时钟为仿真过程提供了时间基准,SystemC同时还支持在同一系统中的多个时钟,以及任意相位的时钟;通讯协议:SystemC支持多层通讯协议,用来描述各种抽象级别的模型和系统I/O协议;波形跟踪:SystemC支持VCD、WIF和ISDB格式波形的跟踪。二、UML统一建模语言2.1概论6UML与SystemC的绝妙搭配形成一股新式的芯片设计风潮。他们都可以用来呈现软硬件设计,最大的不同之处在于,UML是一种图形语言,而SystemC则是程序语言。当芯片设计的复杂度不断增高时,SystemC代码机会变得越来越难以掌握,所以会需要通过UML的图形式设计来呈现真题的设计,再对应生成SystemC代码以得出更细致的设计。UML的目标是以面向对象图的方式来描述任何类型的系统,具有很宽的应用领域。其中最常用的是建立软件系统的模型,但它同样可以用于描述非软件领域的系统,如机械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。总之,UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模。此外,UML适用于系统开发过程中从需求规格描述到系统完成后测试的不同阶段。在需求分析阶段,可以用用例来捕获用户需求。通过用例建模,描述对系统感兴趣的外部角色及其对系统(用例)的功能要求。分析阶段主要关心问题域中的主要概念(如抽
本文标题:SOC课程设计_基于systemC和UML的语音备忘器设计_有程序代码_邱郁惠
链接地址:https://www.777doc.com/doc-4411728 .html