CN103440155B - 一种数字信号处理器的编译器 - Google Patents
一种数字信号处理器的编译器 Download PDFInfo
- Publication number
- CN103440155B CN103440155B CN201310282726.4A CN201310282726A CN103440155B CN 103440155 B CN103440155 B CN 103440155B CN 201310282726 A CN201310282726 A CN 201310282726A CN 103440155 B CN103440155 B CN 103440155B
- Authority
- CN
- China
- Prior art keywords
- computing
- unit
- linker
- frequency
- organiser
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
一种数字信号处理器的编译器,包括依次串接的语法检查单元、编译单元、第一级链接器、优化单元、运算步排布器及第二级链接器,其中语法检查单元进行语法检查,编译单元将模型描述文件编译成DSP适用的汇编级别代码输出至第一级链接器,第一级链接器把编译单元输出的汇编代码链接起来,找出同步数据信息,生成各个频率下函数的链接关系;优化单元对第一级链接器输出的数据进行一次优化,运算步排布器完成每个频率下的编排之后需要根据情况链接上同步寄存器操作,完成需在每个频率下运算的相关代码,第二级链接器将运算步排布器排布之后的链表进行二次的链接,插入分频跳转指令,最终完成整体DSP代码的链接,最后输出处理器适用的微代码。
Description
【技术领域】
本发明涉及嵌入式数字信号处理器核的编译器领域,该编译器的源码比传统C语言更直观易懂,特别适用处理不同工作频率的数字信号处理。
【背景技术】
通用嵌入式处理器或者数字信号处理器的编译器处理的源代码一般为嵌入式C语言。C语言十分通用并且编写灵活,基于C语言的编译器前端工具也已经十分成熟。目前一般处理器核的编译器设计都只负责编写开发编译器的后端工具。但当软件设计面向硬件描述时,C语言会变的十分复杂,很多信息无法直观表示,比如源代码的工作频率,数据流的前后关系等。
【发明内容】
本发明的目的在于提供一种数字信号处理器的编译器,使得对指定数字信号处理器的软件编程变的十分简单快速,从而加速开发时间。
为实现以上目的,实施本发明的数字信号处理器的编译器包括依次串接的语法检查单元、编译单元、第一级链接器、优化单元、运算步排布器及第二级链接器,其中语法检查单元在编译单元进行代码编译之前进行语法检查,保证用户输入的模型可被编译并且可被链接;编译单元首先读取语法检查单元经语法检查后的模型描述文件,将之编译出DSP适用的汇编级别代码输出至第一级链接器,第一级链接器把编译单元输出的汇编代码链接起来,找出同步数据信息,生成各个频率下函数的链接关系;优化单元对第一级链接器输出的数据进行一次优化以减小其体积,运算步排布器完成每个频率下的编排之后需要根据情况链接上同步寄存器操作,完成需在每个频率下运算的相关代码,第二级链接器将运算步排布器排布之后的链表进行二次的链接,插入分频跳转指令,最终完成整体DSP代码的链接,最后输出处理器适用的微代码。
依据上述主要特征,编译单元有如下数学模型可提供:数制转换、RAM访问、PGA放大器模型、加减法、乘法、除法、开方、比较器模型、比差校正模块、CIC积分器、微分器、半带滤波器、带通滤波器及基波增益补偿模块等。
与现有技术相比较,实施本发明的编译器能够识别各种电路模块并自动计算,编排运算步,最后编译出处理器适用的微代码,使得对指定数字信号处理器的软件编程变的十分简单快速,从而加速开发时间。
【附图说明】
图1为实施本发明的数字信号处理器的编译器的功能模块架构图。
图2为实施本发明的数字信号处理器的编译器的工作示意图。
图3为图2中的滤波器模型描述语言方框的放大图。
【具体实施方式】
请参阅图1所示,为实施本发明的数字信号处理器的编译器的功能模块架构图,该数字信号处理器的编译器包括依次串接的语法检查单元、编译单元、第一级链接器、优化单元、运算步排布器及第二级链接器。
编译单元进行代码编译之前,需要首先通过语法检查单元进行语法检查,以最大程度保证用户输入的模型可被编译并且可被链接。
编译单元首先读取语法检查单元经语法检查后的matlab模型描述文件,将之编译出DSP适用的汇编级别代码。其中编译单元有如下数学模型可提供:数制转换、RAM访问、PGA放大器模型、加减法、乘法、除法、开方、比较器模型、比差校正模块、CIC积分器、微分器、半带滤波器、带通滤波器及基波增益补偿模块等。
第一级链接器的主要功能是把编译单元输出的汇编代码链接起来,并找出同步数据信息以提供给运算步排布器进行优化处理,第一级链接器会生成各个频率下函数的链接关系,运算步排布器根据此信息可以把各个函数分配到合适的运算步中去。
由于编译单元在编译阶段并不了解函数之间的相互连接关系,编译出来的代码并没考虑到链接之后的上下文,所以在链接完成之后函数的体积仍然比较大,在进行运算步分配之前需要对函数通过优化单元进行一次优化以减小其体积,即代码长度。
在运算步排布器完成每个频率下的编排之后需要根据情况链接上同步寄存器操作,最终完成需在每个频率下运算的相关代码。
第二级链接器将运算步排布器排布之后的链表进行二次的链接,插入分频跳转指令,最终完成整体DSP代码的链接,最后输出处理器适用的微代码。
上述的语法检查单元、编译单元、第一级链接器、优化单元及第二级链接器的工作原理现有技术中多有描述,此处不再详细说明。本发明的重心在于运算步排布器的工作方式,以下对运算步排布器的工作方式进行详细说明。
实施本发明的编译器针对的是特定的一种数字信号处理器,本专利的核心为运算步排布器对运算步的排布以及各频率函数的指令跳转和数据的同步。
在电能计量领域,数字信号处理有一个很重要的任务就是要保证实时性,对于电流、电压信号输入的处理如果出现不同时间延迟就会人为引入相位差。假设50Hz信号的采样频率为12.8KHz,数字信号处理器的主频工作在3.2MHz,通过计算可知数字信号处理器每隔256个工作周期必须实现一次信号的采样。如果超过或者低于这个256个周期进行采样,得到的信号便会出现误差。如果电流和电压通道的处理不同步,便会人为的引入相位差导致功率的误差。此种情况下256个工作周期即为一个运算步的大小。在电能计量领域的数字信号处理时,各种运算的频率是不一样的,最前端的信号采样频率为12.8KHz,但是最后的数据平均操作可能只需要50Hz,其他的一些操作也会在不同的频率下。此时便会需要对各个运算步进行排布以保证各个函数段的工作频率符合设计初衷,各个运算步之间的跳转即为多频率的指令跳转。下面对运算步排布和数据同步处理的方式进行详细说明。
根据用户输入的DSP晶振频率以及所有的函数运算频率,实施本发明的编译器将会计算出单个运算步的大小,即为:DSP频率/最快的函数运算频率。每一级运算频率都有其自己的运算步数量。对于运算频率最高的函数及其运算频率段,只有一个运算步可供选择,每个运算步都必须调用此函数。每降1次频(2分频),可供选择的运算步数量都会翻倍,调用一次此函数可间隔的运算步数量翻倍,但其运算步的大小会继承前一级余留下来的数据。每个运算步都有其在实际运行过程中的执行先后顺序,先被执行的为低端运算步(从函数指针看,地址为低)。
对于每一级频率,运算步排布器会依次(按照函数的执行频率从高到低)对每一个函数链进行分配。分配按照运算步从小往大进行,一旦发现低端运算步可以容纳下此函数时,立即完成分配。因此,在实际分配过程中,运算频率高的函数基本会被编排在第一级的运算步,并且容易保证运算频率高的函数基本会在同一个运算步内完成,以避免了高频次的额外数据同步操作。
当每个频率段的运算步排布完成后,需要对每个频率段下的操作进行输入,输出数据的同步操作以保证接口数据的同步。如果某个频率段只有一个运算步添加了函数链,则此额外附加的数据同步操作可以省略(这种情况下,输入数据的读取频率和输出数据的更新频率都已经保证了为当前频率,并且整个操作中间不可能有其他运算步的函数介入,即其操作可视为原子操作)。当某个频率段有2个或者2个以上的运算步添加了函数链,运算步排布器会在最后一个运算步的尾端链接上输入和输出数据的同步操作以保证数据的读取和更新为原子操作避免人为引入数据相位差。
有两种情况下,同步操作不论运算步的使用数量都将执行:1)整个运算的数据输入,比如AD数据的加载,此时因为无法确认外部输入的数据的更新频率;2)当前运算步内有乘除法或者开方操作时的相应数据的更新,因为乘除法或者开方操作由于其固有的硬件特性会被编译器进行过重新编排,其数据依赖关系已经被打破。
输入数据同步需要检查所有更高频的函数数据输出寄存器列表(此列表即为上一级运算频率的信号处理结果输出,此数据作为当前运算频率的信号处理数据输入),如果输入数据寄存器不在所有的列表内,则表示此输入数据为全局输入,需要强制同步。输出数据同步需要检查所有更低频的函数数据输入寄存器列表,如果输出数据寄存器不在所有的列表内,则表示此输出数据为最后输出数据,不需要进行同步处理,此时的输出数据往往为最后的稳定数据输出,不同步不会产生影响。所谓同步操作指的是将被选中的数据同时读出然后写入新的数据地址达到原子操作的目的。
请参阅图2与图3所示,为实施本发明的数字信号处理器的编译器的工作示意图,其中滤波器模型描述语言描述的是各种可对数字信号处理的滤波器的结构及其工作频率,前后串并联关系。编译器首先会将这个描述文件编译成一个个的软件函数体分别对应各种滤波器模型,软件的描述语言为汇编码。之后根据模型的前后串并联关系,编译器进行第一次函数链接,将同一个工作频率下的函数链接起来,并进行优化处理以减小整体函数大小可得到各个工作频率下的函数段。然后编译器根据各个频率信息以及DSP的工作频率信息进行计算及运算步的编排处理可获得所有工作频率下的函数间链接关系。最后再进行一次链接操作得到最终的代码并翻译成可供DSP执行的微代码。
可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。
Claims (2)
1.一种数字信号处理器的编译器,包括依次串接的语法检查单元、编译单元、第一级链接器、优化单元、运算步排布器及第二级链接器,其中语法检查单元在编译单元进行代码编译之前进行语法检查,保证用户输入的模型可被编译并且可被链接;编译单元首先读取语法检查单元经语法检查后的模型描述文件,将之编译出DSP适用的汇编级别代码输出至第一级链接器,第一级链接器把编译单元输出的汇编代码链接起来,找出同步数据信息,生成各个频率下函数的链接关系;优化单元对第一级链接器输出的数据进行一次优化以减小其体积,运算步排布器完成每个频率下的编排之后需要根据情况链接上同步寄存器操作,完成需在每个频率下运算的相关代码,第二级链接器将运算步排布器排布之后的链表进行二次的链接,插入分频跳转指令,最终完成整体DSP代码的链接,最后输出处理器适用的微代码,其中运算步排布器完成每个频率下的编排之后根据以下情况链接上同步寄存器操作:如果某个频率段只有一个运算步添加了函数链,则此额外附加的数据同步操作省略;当某个频率段有2个或者2个以上的运算步添加了函数链,运算步排布器会在最后一个运算步的尾端链接上输入和输出数据的同步操作;当有整个运算的数据输入或当前运算步内有乘除法或者开方操作时的相应数据的更新,同步操作不论运算步的使用数量都将执行。
2.如权利要求1所述的数字信号处理器的编译器,其特征在于:编译单元有如下数学模型可提供:数制转换、RAM访问、PGA放大器模型、加减法、乘法、除法、开方、比较器模型、比差校正模块、CIC积分器、微分器、半带滤波器、带通滤波器及基波增益补偿模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310282726.4A CN103440155B (zh) | 2013-07-05 | 2013-07-05 | 一种数字信号处理器的编译器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310282726.4A CN103440155B (zh) | 2013-07-05 | 2013-07-05 | 一种数字信号处理器的编译器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103440155A CN103440155A (zh) | 2013-12-11 |
CN103440155B true CN103440155B (zh) | 2016-08-31 |
Family
ID=49693846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310282726.4A Active CN103440155B (zh) | 2013-07-05 | 2013-07-05 | 一种数字信号处理器的编译器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103440155B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104715463A (zh) * | 2015-04-09 | 2015-06-17 | 哈尔滨工业大学 | 基于dsp进行超声图像平滑处理程序的优化方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW569138B (en) * | 2002-09-19 | 2004-01-01 | Faraday Tech Corp | A method for improving instruction selection efficiency in a DSP/RISC compiler |
CN1853164A (zh) * | 2003-09-30 | 2006-10-25 | 英特尔公司 | 用于开发dsp编译器构件块的组合方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005122452A (ja) * | 2003-10-16 | 2005-05-12 | Ricoh Co Ltd | プログラミング容量を低減化するアセンブラ、コンパイラ、リンカ、及びプログラム開発支援システム |
-
2013
- 2013-07-05 CN CN201310282726.4A patent/CN103440155B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW569138B (en) * | 2002-09-19 | 2004-01-01 | Faraday Tech Corp | A method for improving instruction selection efficiency in a DSP/RISC compiler |
CN1853164A (zh) * | 2003-09-30 | 2006-10-25 | 英特尔公司 | 用于开发dsp编译器构件块的组合方法 |
Non-Patent Citations (1)
Title |
---|
基于VLIW DSP的可重定向编译器设计与实现;余锋林 等;《中国集成电路》;20091231(第127期);第34-38页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103440155A (zh) | 2013-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2013290313B2 (en) | Method and system for automated improvement of parallelism in program compilation | |
US7882462B2 (en) | Hardware definition language generation for frame-based processing | |
Sander et al. | System modeling and transformational design refinement in ForSyDe [formal system design] | |
CN103744684B (zh) | 一种异构软硬件协同开发的方法及系统 | |
US20100199269A1 (en) | Program optimization device and program optimization method | |
CN110196720B (zh) | 一种Simulink生成动态链接库的优化方法 | |
Li et al. | Fluid: An asynchronous high-level synthesis tool for complex program structures | |
CN112540767A (zh) | 程序代码的生成方法、装置、电子设备及存储介质 | |
CN112416313B (zh) | 支持大整数数据类型和运算符的编译方法 | |
CN103440155B (zh) | 一种数字信号处理器的编译器 | |
Tonella et al. | Reverse engineering of the UML class diagram from C++ code in presence of weakly typed containers | |
US20170206068A1 (en) | Program optimization based on directives for intermediate code | |
CN101957772B (zh) | 一种具有轻量级比较指令生成的编译方法 | |
CN113448874A (zh) | 一种单元测试脚本的生成方法及装置 | |
Neukirchen et al. | Quality assurance for TTCN‐3 test specifications | |
CN114115827A (zh) | 嵌入式代码生成系统、方法、电子设备及存储介质 | |
US20090112568A1 (en) | Method for Generating a Simulation Program Which Can Be Executed On a Host Computer | |
JPH02176938A (ja) | 機械語命令最適化方式 | |
Cao et al. | Compiler backend generation for application specific instruction set processors | |
Zhong | Jparsec-a parser combinator for Javascript | |
Palakkal et al. | Automatic C to Simulink Model Converter (C2M) Tool | |
Borrione et al. | EDISYN: A Language-Based Editor for High-level | |
Klassen | ViCE-UPSLA: A visual high level language for accurate simulation of interlocked pipelined processors | |
Chang et al. | EDISYN: A language-based editor for high-level synthesis | |
CN117592409A (zh) | 一种基于流图的hdl信号二值分析系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee | ||
CP01 | Change in the name or title of a patent holder |
Address after: Hangzhou City, Zhejiang province 310051 Binjiang District Dangfeng Road No. 788 sea floor of Building 9 Patentee after: Hangzhou hi tech Limited by Share Ltd Address before: Hangzhou City, Zhejiang province 310051 Binjiang District Dangfeng Road No. 788 sea floor of Building 9 Patentee before: Wangao (Hangzhou) Technology Co.Ltd |