一种基于任务进程表的硬件控制实现方法和装置的制作方法

文档序号:6601762阅读:238来源:国知局
专利名称:一种基于任务进程表的硬件控制实现方法和装置的制作方法
技术领域
本发明涉及无线通信和信号处理技术领域,特别是涉及一种基于任务进程表的硬件控制实现方法和装置。
背景技术
在无线移动通信及信号处理系统中,硬件电路(或集成电路)通常需要按照既定的算法设计流程,对输入进硬件模块的信号数据进行运算处理,从而取得对数据实时处理的效果。对于一般情形下的硬件电路设计(或集成电路内的功能子模块),通常采用对应硬件模块的启动/使能信号作为触发信号,设计合适位宽的计数器对模块启动后的工作时钟进行累加计数,并将此累加得到的时钟计数值,作为当前硬件处理所对应的算法描述中某个数据处理流程的硬件时钟周期。一般而言,这种硬件处理周期在事先是可以确定的。因为通过对算法处理流程的分析,及其与硬件电路设计的对应关系,那么对应每一个算法流程处理的硬件时钟周期都是可以预先确定下来的。当工作中的硬件时钟累加计数值达到预先设定的硬件时钟周期时,停止当前的硬件处理,即完成了对算法描述中规定的数据处理流程。在 TD-SCDMA(Time Division Synchronous Code Division Multiple Access, 时分同步码分多址)移动通信基带处理系统中,特别是用户侧的移动终端处理系统中,基于联合检测设计的算法流程较为复杂,硬件实现其功能要求具有一定的设计难度,如多个小区的信道传输系数估计运算算法流程中,需要完成midamble码(中导码)的下行接收, 并对其进行时域到频域的转换(FFT(快速傅氏变换)过程);将频域内的接收midamble 码与所有接收小区的信号进行干扰消除;然后与软件配置下来的当前处理小区的基本 midamble码进行128点的对应点除操作,再将数据经过逆FFT转换至时域形式;接下来对传输函数中的传输径,进行基于多小区的联合主径判决、降噪处理,得到符合性能要求的有效传输径;最后又需要将数据经过FFT转换至频域形式,与软件配置下来的当前处理小区的基本midamble码进行1 点的对应点乘操作,完成信号的重构过程。而且,以上过程,根据性能仿真定义,需要做多次的迭代。现有的大多数硬件设计,均为基于计数器计数条件触发、实时生成控制信号作为控制流设计,而在处理TD-SCDMA终端基带芯片等功能设计实现较为复杂、对数据的处理流程控制要求颇高的场合,很难做到符合完整算法流程处理的硬件实现,控制流很难整体把握功能实现。

发明内容
本发明要解决的问题是提供一种基于任务进程表的硬件控制实现方法和装置,以克服现有技术中很难做到符合完整算法流程处理的硬件实现的缺陷。为达到上述目的,本发明的技术方案提供一种基于任务进程表的硬件控制实现方法,所述方法包括以下步骤:A、将硬件电路需要实现的任务分为多个子进程,根据子进程的个数确定任务进程表的深度;B、根据每个子进程对应的硬件电路的控制信息及该子进程的硬件处理时钟个数SPAN确定任务进程表的比特宽度,并生成任务进程表;C、按照子进程的顺序,在任务进程表中的控制信息的控制下,依次启动每个子进程对应的硬件电路,完成对每个子进程的处理。进一步,在所述步骤B中包括子进程的合并步骤,具体为当某个子进程与其相邻的下一个子进程之间是直接的数据输入输出关系,且其中间结果不需要存储以用于跨子进程后再处理时,将所述两个子进程进行合并;或相邻时间处理的两个子进程,其用到的硬件单元不存在复用关系时,将所述两个子进程的控制字进行合并。进一步,在所述步骤B中包括子进程的并行控制步骤,具体为当两个子进程所需的输入数据没有并行关系,且使用到的硬件单元不存在复用关系时,控制所述两个子进程进行并行处理。进一步,所述任务进程表的比特宽度包括每个单进程的时钟个数,用于控制子进程的跳转;对每个单进程需要用到的控制字,用于启动对应硬件机制。进一步,所述步骤C具体包括Cl、按照子进程的顺序,依次从任务进程表中读取控制信息,所述控制信息包括输入控制字、输出控制字和使能控制字;C2、根据所述输入控制字,从输入数据中选取当前子进程所需的数据输入;C3、根据所述使能控制字,启动与当前子进程对应的硬件电路进行数据处理;C4、根据所述输出控制字,将当前子进程的处理结果进行输出;C5、在进行步骤C2 C4的同时,对完成所述步骤需要的时钟进行计数累加,当累加的时钟个数等于硬件处理时钟个数SPAN时,读取任务进程表中下一子进程的控制信息;C6、重复步骤C2 C4,直到完成所有子进程的处理。进一步,所述控制信息还包括常数控制字和/或中间结果控制字;在所述步骤C3 中还包括根据所述常数控制字,选择读取运行中所需的常数数据;和/或根据所述中间结果控制字,进行子进程处理中的数据中间节点结果的读取或存储。本发明的技术方案还提供一种基于任务进程表的硬件控制实现装置,所述装置包括控制单元,存储有任务进程表,用于根据所述任务进程表控制每个子进程对应的硬件电路的启动和子进程的跳转,所述任务进程表中包括每个子进程对应的硬件电路的控制信息及该子进程的硬件处理时钟个数SPAN ;输入数据存储单元,用于存储每个子进程所需的输入数据;多路选择器1,用于根据所述任务进程表选择当前子进程所需的输入数据,并将选择的数据发送到硬件电路;硬件电路,包括与每个子进程对应的硬件电路,用于完成对应子进程的处理;输出数据存储单元,用于存储硬件电路处理后的输出数据。进一步,所述控制单元包括任务进程表存储子单元,用于存储任务进程表;控制子单元,用于根据所述任务进程表控制每个子进程对应的硬件电路的启动和数据处理;跳转子单元,用于当完成一个子单元的处理后,控制所述硬件电路进行下一个子进程的处理。进一步,所述跳转子单元包括加法器1,用于在子进程对应的硬件电路启动后, 进行时钟计数;比较器1,用于将所述加法器1的计数结果与该子进程的硬件处理时钟个数 SPAN进行比较,当加法器1的计数结果小于SPAN时,比较器1输出脉冲信号驱动加法器1 继续进行时钟计数;当加法器1的计数结果等于SPAN时,比较器1输出脉冲信号对加法器 1进行清零,同时驱动加法器2 ;加法器2,用于对完成的子进程数进行计数;比较器2,用于将所述加法器2的计数结果与子进程的总数进行比较,当加法器2的计数结果小于子进程的总数时,比较器2输出脉冲信号驱动加法器2继续进行计数;当加法器2的计数结果等于子进程的总数时,比较器2输出脉冲信号对加法器2进行清零。进一步,所述装置还包括常数存储单元,用于存储子进程处理中所需的常数数据;多路选择器2,用于根据所述任务进程表,选择读取所述常数存储单元存储的常数数据,并将所述常数数据发送到所述硬件电路;中间结果存储单元,用于存储子进程处理中的数据中间节点结果;多路选择器3,用于根据所述任务进程表,对所述中间结果存储单元存储的数据和对应的子进程进行选择,完成所述中间结果的读取或存储。与现有技术相比,本发明有益效果如下本发明通过对任务分析细化为多个子进程,预置硬件设计的任务进程表,系统把握硬件整体功能,实现硬件控制流的精确控制;另外,本发明通用性强,特别对于具有复杂算法流程的任务的硬件实现场景,能够把握处理数据流程的精确性,极大提高开发效率。


图1是本发明的一种基于任务进程表的硬件控制实现装置的结构示意图;图2是本发明的任务进程表的结构示意图;图3是本发明的跳转子单元的结构示意图;图4是本发明实施例的多小区信道估计算法流程实现示意图;图5是本发明实施例的一种基于任务进程表的硬件控制实现方法的流程图;图6是本发明实施例的TASK_TABLE硬件控制设计对多小区信道估计算法流程实现的应用示意图。
具体实施例方式下面结合附图和实施例,对本发明的具体实施方式
作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。本发明的一种基于任务进程表(TASK-TABLE)的硬件控制实现装置的结构如图1 所示,所述装置包括控制单元(R0M_TASK_TABLE_C0NTRL),存储有任务进程表,用于根据所述任务进程表控制每个子进程对应的硬件电路的启动和子进程的跳转,所述任务进程表中包括每个子进程对应的硬件电路的控制信息及该子进程的硬件处理时钟个数SPAN。R0M_TASK_TABLE_ CONTRL按照硬件电路需要实现的功能流程而设计的一个控制表能从总体上把握整个硬件的控制流及其功能实现。输入数据存储单元(INPUT_MEM0RY),用于存储每个子进程所需的输入数据,可以是用来存储输入数据的多个ram组成。MUX(多路选择器)1,用于根据所述任务进程表选择当前子进程所需的输入数据, 并将选择的数据发送到硬件电路。硬件电路(M0DULE_0PERATI0N_UNIT),包括与每个子进程对应的硬件电路,用于完成对应子进程的处理。M0DULE_0PERAT 10N_UNI T表示该硬件模块的具体功能实现电路,可以是由加法器、乘法器、比较器和计数器等具体的硬件单元组成的功能体。输出数据存储单元(0UTPUT_MEM0RY),用于存储硬件电路处理后的输出数据,可以是用来存储输出数据的多个ram组成。常数存储单元(R0M_S0URCE),用于存储子进程处理中所需的常数数据。MUX2,用于根据所述任务进程表,选择读取所述常数存储单元存储的常数数据,并将所述常数数据发送到所述硬件电路;中间结果存储单元(RAM-SOURCE),用于存储子进程处理中的数据中间节点结果。MUX3,用于根据所述任务进程表,对所述中间结果存储单元存储的数据和对应的子进程进行选择,完成所述中间结果的读取或存储。图1中的控制单元(R0M_TASK_TABLE_C0NTRL)包括任务进程表存储子单元、控制子单元和跳转子单元。任务进程表存储子单元用于存储任务进程表;控制子单元用于根据所述任务进程表控制每个子进程对应的硬件电路的启动和数据处理;跳转子单元用于当完成一个子单元的处理后,控制所述硬件电路进行下一个子进程的处理。R0M_TASK_TABLE_ CONTRL具体的设计形式为一块存储深度为(N+1)、比特宽度为(M+1)的ROM,其存储深度对应整个硬件功能实现的子进程个数,其存储比特宽度对应为每个子进程中所需的控制信号的对应比特位总和,再加上该子进程对应的硬件时钟周期SPAN比特,得到的总的比特位宽。其中,任务进程表的结构如图2所示。R0M_TASK_TABLE_C0NTRL具体内容的设计,即图 2所示与ROM的bit_0至应的其中各个控制信号,均视实际的硬件功能要求及运算过程而定,比如硬件处理子进程中需要的加法、乘法、比较、逻辑判断及其他具体的运算等;其中的SPAN值的确定和设计,则是根据各个硬件处理子进程实际所需的工作时钟数来确定的。最终的SPAN变量的比特位宽定义,以当前算法流程对应的所有硬件处理子进程中的、需要最多工作时钟数的那个子进程来确定。本发明中子进程对应的硬件时钟周期SPAN值和R0M_TASK_TABLE_C0NTRL的读地址R0M_rdaddr存在一定的关系,且这种关系决定了任务进程表方式实现硬件的子进程跳转过程,本发明中跳转子单元的结构如图2所示,包括两个加法器和两个比较器。加法器1 用于在子进程对应的硬件电路启动后,进行时钟计数。比较器1用于将所述加法器1的计数结果与该子进程的硬件处理时钟个数SPAN进行比较,当加法器1的计数结果小于SPAN 时,比较器1输出脉冲信号驱动加法器1继续进行时钟计数;当加法器1的计数结果等于 SPAN时,比较器1输出脉冲信号对加法器1进行清零,同时驱动加法器2。加法器2用于对完成的子进程数进行计数。比较器2用于将所述加法器2的计数结果与子进程的总数进行比较,当加法器2的计数结果小于子进程的总数时,比较器2输出脉冲信号驱动加法器2继续进行计数;当加法器2的计数结果等于子进程的总数时,比较器2输出脉冲信号对加法器 2进行清零。当硬件电路被启动运算的初始时刻,图3中所示的计数器值task_Cnt为0,此时输入给任务进程表的读地址R0M_rdaddr也是0,SPAN变量值初始值也为0。加法器1作为task_Cnt计数器,其运行过程为在硬件电路被启动后的enable期间加法器1 一直处于工作状态,且同时通过比较器1进行比较检测当task_Cnt计数值小于SPAN值时,那么由比较器1输出脉冲信号(图3中比较器1输出的信号“0”)驱动task_ cnt计数器继续进行加一运算;而当task_cnt计数值等于当前的SPAN变量值时,那么由比较器1输出脉冲信号(图3中比较器1输出的信号“1”)对task_cnt计数器进行清零,同时驱动加法器2。
加法器2用于产生任务进程表的读地址R0M_rdaddr信号,其运行过程为当硬件电路启动后,且当当前的ROMjdaddr小于该硬件电路子进程的最大进程数(N+1)时,加法器2根据比较器1输出的脉冲信号(图3中比较器1输出的信号“ 1 ”),来驱动其自身的加一运算;否则,当当前的ROMjdaddr等于该硬件电路子进程的最大进程数(N+1)时(图3 中比较器2输出的信号“ 1 ”),则对R0M_rdaddr计数器进行清零,相当于当前硬件对算法流程的实现已经完成了一个循环。SPAN变量值为每单个子进程的硬件处理时钟个数,即单个子进程的“生存周期”, SPAN是根据对R0M_TASK_TABLE_C0NTRL读取得到的读数据的部分比特变量来定义假设读数据为(M+1)位宽,而其中的ρ个位宽数据赋值给变量SPAN,即一个ρ比特二进制的常数值。SPAN变量的位宽由硬件处理子进程中的最多工作时钟数来确定。对任务进程表的读控制,如图3所示,即读使能直接连接为硬件电路的enable信号,表示在硬件驱动期间,一直对这个任务进程表进行读操作以获取控制信号;而读地址, 则连接为前述加法器2生成的R0M_rdaddr。下面以任务为多个小区的信道传输系数估计运算算法流程的硬件控制实现为实施例对本发明的基于任务进程表的硬件控制实现方法进行详细说明。本实施例中,硬件电路需要实现的算法流程包括完成midamble码的下行接收,并对其进行时域到频域的转换 (FFT过程);将频域内的接收midamble码与所有接收小区的信号进行干扰消除;然后与软件配置下来的当前处理小区的基本midamble码进行1 点的对应点除操作,再将数据经过逆FFT转换至时域形式;接下来对传输函数中的传输径,进行基于多小区的联合主径判决、 降噪处理,得到符合性能要求的有效传输径;最后又需要将数据经过FFT转换至频域形式, 与软件配置下来的当前处理小区的基本midamble码进行1 点的对应点乘操作,完成信号的重构过程。以上过程,根据性能仿真定义,需要做四次的迭代,即算法流程的四次循环,具体的数据处理流程如图4所示。本发明实施例的一种基于任务进程表的硬件控制实现方法的流程如图4所示, 首先将硬件电路需要实现的任务分为多个子进程,根据子进程的个数确定任务进程表的深度;然后根据每个子进程对应的硬件电路的控制信息及该子进程的硬件处理时钟个数 SPAN确定任务进程表的比特宽度,形成任务进程表,其中任务进程表的比特宽度包括两个部分1、每个单进程的时钟个数,用于控制子进程的跳转;2、对每个单进程需要用到的控制字,用于启动对应硬件机制,如读取或输出数据、对应启动硬件单元等;最后按照子进程的顺序,在任务进程表中的控制信息的控制下,依次启动每个子进程对应的硬件电路,完成对每个子进程的处理。参照图5,本实施例包括以下步骤步骤s501,分析硬件电路所要实现的任务,并对其流程进行细分,转化为(N+1)个功能子进程的总和,即硬件按照这(N+1)个功能子进程来顺序依次实现,就可以完成整个
算法流程。本实施例中,确定子进程个数的过程,即分析硬件电路所要实现的任务,并对其流程进行细分,转化为(N+1)个功能子进程的总和。对TD-SCDMA移动通信基带处理系统中多小区信道估计处理的算法流程分析,本实施例将上述数据处理过程细分为以下10个子进程①receive MA data 接收数据的过程,即对应“完成midamble码的下行接收”;
②MA FFT :FFT变换过程,即对应“对midamble码数据进行时域到频域的转换(FFT 过程)”;③interference-counteract 干扰抵消(减法)的过程,即对应“将频域内的接收midamble码与所有接收小区的信号进行干扰消除”;④initial_Che 初始信道估计(点乘)的过程,即对应“与软件配置下来的当前处理小区的基本midamble码进行128点的对应点除操作”;⑤IFFT 逆FFT的过程,即对应“将点除得到的初始信道估计结果进行逆FFT变换,变换至时域数据形式”;⑥mainpathjustify 判决的过程,即对应“对传输函数中的传输径进行基于多小区的联合主径判决”;⑦noisethrjustify 判决的过程,即对应“降噪处理,得到符合性能要求的有效传输径”;⑧FFT =FFT变换的过程,即对应“将时域数据进行FFT变换,得到频域的传输径信息,,;⑨reconstjnterf 点乘的过程,即对应“将其与软件配置下来的当前处理小区的基本midamble码进行128点的对应点乘操作,完成信号的重构过程”;⑩后续的迭代处理,只需要再重复③-⑨的处理过程三遍即可,即一共完成了算法流程定义的四次迭代数据处理。通过以上对算法流程的分析,我们可以确定TASK_TABLE (任务进程表)的深度 (N+1)为2+7*4 = 30,其中:“2”对应①和②;“7”对应③-⑨;“4”对应四次迭代,其中的
③-⑨重复四次。步骤s502,确定任务进程表的比特宽度。设计对应步骤s501中(N+1)子进程的硬件设计电路,比如硬件实现中使用到的ranurom、门电路、乘法器、加法器、比较器、计数器的使用等,设计其分别对应的控制比特。本实施例中,比特宽度的确定分为三个方面子进程处理所涉及Memory (ram or rom)的个数;对应所需对硬件单元的控制字设计;SPAN比特位宽的确定。以下结合各个子进程处理详细分析子进程“①receive MA data”中,涉及到子模块的数据源midamble输入,故需要 1比特的数据选择控制;一datasOurCe_sel
;子进程“②MA FFT”中,涉及到的数据处理有FFT过程,数据处理的输入及结果的输出;—FFT_en, data_sel
, result_temp_sel
;子进程“③interference-counteract”中,涉及到干扰消除中的减法处理,被减数据的 ram 选择;—ic_en, Data_sel [1];子进程“④initial_Che”中,涉及到点除运算,除法计算中数据ram选择及结果的存储;—initial_che, Data_sel [2],result_temp_sel [1];子进程“⑤IFFT”中,涉及到IFFT数据转换,计算中数据ram选择及结果的存储;—initial_che,Data—sel[3],result_temp_sel[2];子进程“⑥mainpathjustify”中,涉及到基于联合主径的有效传输径判决,数据 ram 选择及结果的存储;—mainpathjustify,data—sel [3],result_temp_sel [3];
子进程“⑦noisethrjustify”中,涉及到基于噪声径的有效传输径判决,数据 ram 选择及结果的存储;—noisethr_justify, data_sel [4], postH_sel
, result_temp_ sel[4];子进程“⑧FFT”中,涉及到FFT过程,数据处理的输入及结果的输出;__FFT_ en, data—sel[5],result_temp_sel[5];子进程“⑨reconst—interf”中,涉及到点乘过程,以及数据的输入及结果的输出;—reconst_interf,data—sel[6],interf—sel
;上述子进程③-⑨的迭代轮次,及对本小区、邻小区(共3个)的数据流区分,还需要添加控制字turn_flag[1:0]-共四轮迭代;eell_flag[30]-单比特对应每一个小区的处理,共四个小区。以上分析,我们统计控制比特的宽度,可得到TASK_TABLE的比特宽度(M+1)为41, 详见图6TASK_TABLE硬件控制设计对多小区信道估计算法流程实现的应用示意图。以上控制字比特,只包含了数据流选择及处理方式(如乘法、减法、FFT变换或判决等)的控制,而没有包含各个子进程对应的“硬件时钟个数” SPAN的控制。当然,以上控制过程,基于控制清晰或节省控制比特字的考虑,不同的设计者可选择不同的方式,只要能满足对子进程的精确控制且不浪费用作R0M_TASKTABLE的R0M_ memory资源艮阿。步骤s503,确定TASK_TABLE的硬件处理时钟个数SPAN。本实施例中量化每个子进程中所使用的硬件工作时钟个数,得到单个子进程的SPAN值。具体包括子进程“①receive MA data"按照算法设计思路,共1 个midamble码数据的接收分两路数据同时输入,则需要128/2 = 64clks ;另考虑读使能的有效,传递至顶层有 register的打拍操作,故多加2clks。故共需64+2 = 66clk,即span_①=66 ;子进程“②MA FFTM28点FFT过程,且基于资源的节省,使用一个复数乘法器来完成,七级FFT蝶形运算,每级64个蝶形,按照流水设计的思路,共需6虹7 = 448clks,考虑每个蝶形复数乘法需要3clks,且每级运算需要统计溢出标示及位移处理(和定点方案有关),精确统计需要485clks,即span_②=485 ;子进程“③interference-counteract” 需要生成对应子进程所需数据的读使能,并对数据进行减法运算,共64次减法,按照流水设计的思路,考虑定点处理过程,共需 78clks,艮口 span_@= 78 ;子进程“④initial_che”:点除运算,使用子进程“③ interference-counteract,, 的结果进行除法(乘倒数的过程),共64次乘法,按照流水设计的思路,考虑定点处理过程, 共需 78clks,即 span_ (4)= 78 ;子进程“⑤IFFT” 1 点IFFT过程,处理过程类似FFT,只是在数据的输入输出处进行共轭处理及数据输出的倍数放大或缩小,分析过程见“②MAFFT”。精确统计需要 485clks,艮口 span_ ⑤=485 ;子进程“⑥mainpathjustify”:数据判决的过程,挑选出最大的传输径能量,然后做加权,进行门限判决过滤。共64组数据,按照流水设计的思路,且考虑定点过程,共需要 78clks,即 spa_n(D= 78 ;子进程“⑦noisethrjustify”:数据判决的过程,使用噪声功率加权得到判决门限,进行判决过滤。共64组数据,按照流水设计的思路,且考虑定点过程,共需要78clks,即 span_ = 78 ;子进程“⑧FFT” 128点FFT过程,处理过程分析见“②MA FFT”。精确统计需要 485clks,艮口 span_(8)= 485 ;子进程“⑨reconstjnterf ” 点乘运算,使用子进程“⑧FFT”的结果进行乘法运算,共64次乘法,按照流水设计的思路,考虑定点处理过程,共需78clks,即span_ = 78.至此,各个子进程的数据处理所需时钟数均已确定,故可以确定对应于TASK_ TABLE的各个rom读地址的SPAN值。且其中SPAN的最大值为485,使用9比特表示,故在 TASK_TABLE的控制比特中增加这对应span的9比特的控制字。从上面的分析,我们看到很多子进程的span值是相同的,如78和485,这是因为在硬件设计中,一般不会按照算法流程来“平铺”设计硬件,而应该严格考虑硬件资源的复用。步骤S504,合并子进程。当某个子进程与其相邻的下一个子进程之间是直接的数据输入输出关系,且其中间结果不需要存储以用于跨子进程后再处理时,将所述两个子进程进行合并;或相邻时间处理的两个子进程,其用到的硬件单元不存在复用关系时,将所述两个子进程的控制字进行合并。子进程的合理合并,可以节省整个硬件处理在子进程间切换时需耗费在memory数据的存储、读取时间。本实施例中,假设四个顺序子进程A、B、C、D,其中子进程A的输出为A1、A2,而Al、 A2是全部作为子进程B的输入来使用的,且子进程B没有其他输入,则可以考虑A、B这两个子进程的合并,合并为子进程E ;而如果子进程C的输出为Cl、C2、C3,而其中只有Cl作为子进程D的输入来使用(或子进程D根本需要使用到C1、C2、C3中的任何一个数据),而计算的其他两个结果C2、C3,可能在跨好多个子进程后才能被使用到,那么这时为了考虑精确控制,还是需要将子进程C和子进程D分开来,而不考虑子进程C、D的合并。举例说明 在多小区信道估计算法中,子进程“③interference-counteract”的所有输出,就是子进程 “④initialche”的所有输入,此时考虑子进程的合并设计。步骤S505,对子进程进行并行设计。本实施例中,当两个子进程所需的输入数据没有并行关系,且使用到的硬件单元不存在复用关系时,控制所述两个子进程进行并行处理。 假设四个子进程A、B、C、D,其中子进程A、B所需的输入数据没有串行关系,即子进程B不需要子进程A计算的结果作为输入,此时就可以考虑子进程A、B并行的可能性。另外,假设子进程B计算需要比较长时间的硬件工作时钟(对应SPAN值),而在这段时间内子进程C、 D都可以完整处理结束,且子进程C、D所需的输入数据和子进程B没有关系,输出结果和子进程B的输出也不共享输出ram,那么可以考虑子进程B与子进程C、D的并行设计,即在子进程B处理的同时,让子进程C、D同时在处理数据。此时的子进程设计就是子进程B拆分为Bi、B2和B3,其中Bl的处理时间和子进程C 一致(即SPAN值设定一致),B2的处理时间和子进程D —致,而B3为Bl和B2的处理完后、继续处理完整子进程B的剩下过程,即 SPAN_B = SPAN_B1+SPAN_B2+SPAN_B3。举例说明在多小区信道估计算法中,本小区的数据处理子进程“⑤IFFT”在子进程“④initial_Che”之后,但是考虑其他多个小区数据的处理流程,且子进程“⑤IFFT”因为是1 点数据的逆FFT变换,需要的硬件处理时钟数较多G85clks远多于78clks),则考虑此时并行处理其他邻小区的子进程“④initial_che”。比如子进程“④initial_Che”需要78clks,而子进程“⑤IFFT”需要485clks,则应用子进程并行设计的思路,可以实现为本小区数据处理子进程“④initial_che” (78clks);一〉本小区数据处理子进程“⑤IFFT 的子进程“④ initial_che,,(78clks);一〉本小区数据处理子进程“⑤IFFT 的子进程“④ initial_che,,(78clks);一>本小区数据处理子进程“⑤IFFT 的子进程“④ initial_che” (78clks);—>本小区数据处理子进程“⑤IFFT”(剩下的时间500-78-78-78 = 251clks).以上处理流程即为子进程并行设计,体现在图6的task5_8中。如此设计,既实现了算法流程的定义,又尽可能地节省了硬件处理时间。步骤s506,减少控制比特。在图6中,对应子进程的输入或者输出ram的控制比特,都是单比特对应控制方式,即一个比特位对应一种控制方式。但是,当统计最后形成的 TASKTABLE的所有控制比特位宽时,如果比特数恰比2的η次方稍多余了一点点(比如65 或66个比特,比64多了几个比特),此时为了考虑ram资源的节省,可以考虑比特组合的方式来设计控制信号。假设原来的4个比特Al、A2、A3、A4对应控制RAMI、RAM2、RAM3、RAM4,如果基于节省比特位的考虑,可设计两个比特A1、A2组合来控制这四个RAM即可,因为两个比特组合也是可以控制四个状态的。但是,在硬件资源不是特别紧张的情况下,还是尽量采用单比特对应控制,因为类似TASKTABLE的控制流设计,一般所用的ram深度及宽度都不是很大,在最后的实现都是采用固化REG方式实现,而并不一定真正使用很大、很苛刻的ram资源。另外,单比特对应控制的设计方式,对仿真纠错阶段非常方便使用,及利于后续版本开发设计。通过以上步骤,本实施例完成了针对多小区信道估计算法流程的TASKTABLE的 “预制”设计过程,得到R0M_TASK_TABLE_C0NTRL的内容。步骤s507,按照子进程的顺序,依次从任务进程表中读取控制信息,得到输入控制字、输出控制字、使能控制字、常数控制字、中间结果控制字等。本实施例中,硬件电路开始启动,按照子进程的顺序(从1至N+1)从任务进程表R0M_TASK_TABLE_C0NTRL中读取控制字,即读取得到taskl的相关控制字及SPAN值,包括:data_sel[5:0] = 6,bOOOOOl, result_temp_sel[3:0] = 4,bOOOl, span[8:0] = 9,d66,而其他控制字均为 0。步骤s508,根据输入控制字,从输入数据中选取当前子进程所需的数据输入。本实施例中,按照data_sel[5:0] = 6’b000001的控制比特定义,从输入数据中选取当前子进程所需的数据输入,准备接收下发下来的天线midamble码数据。步骤s509,根据使能控制字,启动与当前子进程对应的硬件电路进行数据处理。本实施例中,按照result_temp_sel[3:0] = 4’ bOOOl的控制比特定义,对模块内的功能单元进行启动、数据处理,即将天线midamble码数据存储至指定ram中。按照常数控制字的控制比特定义,选择读取运行中所需的ROM常数数据;按照中间结果控制字的控制比特定义, 将子进程处理中的数据中间节点结果合理读取或存储。
,,(第一个78clks),同时进行第一个邻小区 ,,(第二个78clks),同时进行第二个邻小区 ”(第三个78clks),同时进行第三个邻小区
步骤S510,根据输出控制字,将当前子进程的处理结果进行输出。本实施例中,因为taskl仅只需要处理接收64组数据,故达到当前SPAN值规定的硬件时钟计数后,即将数据存储至指定ram中待读取即可。步骤s511,在进行步骤s508 s510的同时,对完成所述步骤需要的时钟进行计数累加,当累加的时钟个数等于硬件处理时钟个数SPAN时,读取任务进程表中下一子进程的控制信息。本实施例中,task_cnt按照图3硬件电路进行计数累加。当步骤s510结束时,即task_cnt计数已经达到当前子进程taskl的“生存周期” SPAN值(即66clks),则触发Rom_rdaddr加一运算,读取任务进程控制表R0M_TASK_TABLE_C0NTRL的下一个读地址, 得到其新的比特控制字。步骤s512,重复步骤s508 s510,直到完成所有子进程的处理。本实施例中,依次读取task2、task3……taskN+1得到新的相关控制字及SPAN值,分别重复步骤s508 s510,当硬件处理完成该硬件设计对应的算法流程的最后一个(N+1)子进程,至此,硬件的全部运算处理结束。以上就是硬件数据处理的全部实际过程。整个硬件输出的最后结果依次在预先定义的ram或标示寄存器单元中读取。在本实施例中,TASK-TABLE的硬件设计方式,推荐模块内子进程间及模块与其他外部硬件子系统的接口,考虑以RAM为接口交互批量数据、以标示寄存器输出变量结果。本发明采用的独特设计有(1)细化及设计硬件电路的全部控制流程和所有控制信号,预置TASK-TABLE控制ROM的控制内容;( 硬件模块内的过程节点数据通过子进程间的ram接口传递,便于硬件仿真及对错误的快速定位;(3)根据实际处理流程实现,可选硬件实现并行设计,提高硬件处理效率;(4)通过读取硬件内的预置ROM中规定的任务子进程,来精确控制硬件数据流及硬件实现过程,特别适合应用于数据流程处理复杂的实时系统,并便于新的算法流程对应的硬件实现升级,压缩开发周期。本发明基于任务进程表的硬件控制实现具有以下优点1、通过对任务的算法流程分析细化,预置硬件设计的TASK-TABLE控制表,系统把握硬件整体功能,实现硬件控制流的精确控制;2、模块内数据处理的中间节点结果易于区分存储且通过memory导出,利于设计初期的GOLDEN-CASE (典型仿真用例)阶段仿真,提高设计效率,节省开发时间;3、硬件模块整体处理时间的精确控制,利于与后续硬件子系统的信号接口设计;4、通过对硬件处理中的子进程归类分析(算法角度或硬件实现角度),易于后续开发的优化维护和系统(算法)设计升级,缩短后续版本的开发周期;5、通用性强,具有很强的实用性,特别对于具有复杂算法流程的任务的硬件实现场景,能够把握处理数据流程的精确性,极大提高开发效率。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种基于任务进程表的硬件控制实现方法,其特征在于,所述方法包括以下步骤A、将硬件电路需要实现的任务分为多个子进程,根据子进程的个数确定任务进程表的深度;B、根据每个子进程对应的硬件电路的控制信息及该子进程的硬件处理时钟个数SPAN 确定任务进程表的比特宽度,并生成任务进程表;C、按照子进程的顺序,在任务进程表中的控制信息的控制下,依次启动每个子进程对应的硬件电路,完成对每个子进程的处理。
2.如权利要求1所述的基于任务进程表的硬件控制实现方法,其特征在于,在所述步骤B中包括子进程的合并步骤,具体为当某个子进程与其相邻的下一个子进程之间是直接的数据输入输出关系,且其中间结果不需要存储以用于跨子进程后再处理时,将所述两个子进程进行合并;或相邻时间处理的两个子进程,其用到的硬件单元不存在复用关系时,将所述两个子进程的控制字进行合并。
3.如权利要求1所述的基于任务进程表的硬件控制实现方法,其特征在于,在所述步骤B中包括子进程的并行控制步骤,具体为当两个子进程所需的输入数据没有并行关系,且使用到的硬件单元不存在复用关系时,控制所述两个子进程进行并行处理。
4.如权利要求1至3任一项所述的基于任务进程表的硬件控制实现方法,其特征在于, 所述任务进程表的比特宽度包括每个单进程的时钟个数,用于控制子进程的跳转;对每个单进程需要用到的控制字,用于启动对应硬件机制。
5.如权利要求1至3任一项所述的基于任务进程表的硬件控制实现方法,其特征在于, 所述步骤C具体包括Cl、按照子进程的顺序,依次从任务进程表中读取控制信息,所述控制信息包括输入控制字、输出控制字和使能控制字;C2、根据所述输入控制字,从输入数据中选取当前子进程所需的数据输入;C3、根据所述使能控制字,启动与当前子进程对应的硬件电路进行数据处理;C4、根据所述输出控制字,将当前子进程的处理结果进行输出;C5、在进行步骤C2 C4的同时,对完成所述步骤需要的时钟进行计数累加,当累加的时钟个数等于硬件处理时钟个数SPAN时,读取任务进程表中下一子进程的控制信息;C6、重复步骤C2 C4,直到完成所有子进程的处理。
6.如权利要求5所述的基于任务进程表的硬件控制实现方法,其特征在于,所述控制信息还包括常数控制字和/或中间结果控制字;在所述步骤C3中还包括根据所述常数控制字,选择读取运行中所需的常数数据;和/或根据所述中间结果控制字,进行子进程处理中的数据中间节点结果的读取或存储。
7.一种基于任务进程表的硬件控制实现装置,其特征在于,所述装置包括控制单元,存储有任务进程表,用于根据所述任务进程表控制每个子进程对应的硬件电路的启动和子进程的跳转,所述任务进程表中包括每个子进程对应的硬件电路的控制信息及该子进程的硬件处理时钟个数SPAN ;输入数据存储单元,用于存储每个子进程所需的输入数据;多路选择器1,用于根据所述任务进程表选择当前子进程所需的输入数据,并将选择的数据发送到硬件电路;硬件电路,包括与每个子进程对应的硬件电路,用于完成对应子进程的处理; 输出数据存储单元,用于存储硬件电路处理后的输出数据。
8.如权利要求7所述的基于任务进程表的硬件控制实现装置,其特征在于,所述控制单元包括任务进程表存储子单元,用于存储任务进程表;控制子单元,用于根据所述任务进程表控制每个子进程对应的硬件电路的启动和数据处理;跳转子单元,用于当完成一个子单元的处理后,控制所述硬件电路进行下一个子进程的处理。
9.如权利要求8所述的基于任务进程表的硬件控制实现装置,其特征在于,所述跳转子单元包括加法器1,用于在子进程对应的硬件电路启动后,进行时钟计数; 比较器1,用于将所述加法器1的计数结果与该子进程的硬件处理时钟个数SPAN进行比较,当加法器1的计数结果小于SPAN时,比较器1输出脉冲信号驱动加法器1继续进行时钟计数;当加法器1的计数结果等于SPAN时,比较器1输出脉冲信号对加法器1进行清零,同时驱动加法器2 ;加法器2,用于对完成的子进程数进行计数;比较器2,用于将所述加法器2的计数结果与子进程的总数进行比较,当加法器2的计数结果小于子进程的总数时,比较器2输出脉冲信号驱动加法器2继续进行计数;当加法器 2的计数结果等于子进程的总数时,比较器2输出脉冲信号对加法器2进行清零。
10.如权利要求7至9任一项所述的基于任务进程表的硬件控制实现装置,其特征在于,所述装置还包括常数存储单元,用于存储子进程处理中所需的常数数据;多路选择器2,用于根据所述任务进程表,选择读取所述常数存储单元存储的常数数据,并将所述常数数据发送到所述硬件电路;中间结果存储单元,用于存储子进程处理中的数据中间节点结果; 多路选择器3,用于根据所述任务进程表,对所述中间结果存储单元存储的数据和对应的子进程进行选择,完成所述中间结果的读取或存储。
全文摘要
本发明公开了一种基于任务进程表的硬件控制实现方法,包括A、将硬件电路需要实现的任务分为多个子进程,根据子进程的个数确定任务进程表的深度;B、根据每个子进程对应的硬件电路的控制信息及该子进程的SPAN确定任务进程表的比特宽度,并生成任务进程表;C、按照子进程的顺序,在任务进程表中的控制信息的控制下,依次启动每个子进程对应的硬件电路,完成对每个子进程的处理。本发明还公开了一种硬件控制实现装置。本发明通过对任务分析细化,预置硬件设计的任务进程表,系统把握硬件整体功能,实现硬件控制流的精确控制;本发明通用性强,对于具有复杂算法流程的任务的硬件实现场景,能把握处理数据流程的精确性,提高了开发效率。
文档编号G06F9/38GK102236542SQ20101016287
公开日2011年11月9日 申请日期2010年5月5日 优先权日2010年5月5日
发明者孙映先 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1