一种算法转换的方法及装置制造方法

文档序号:6494071阅读:156来源:国知局
一种算法转换的方法及装置制造方法
【专利摘要】本发明适用于电子设计自动化【技术领域】,提供了一种算法转换的方法,所述方法包括:将C语言程序或C语言程序的流程图转化为状态图;将所述的状态图简化得到简化的状态图,所述简化的状态图包括控制逻辑和运算逻辑;将所述简化的状态图中的运算逻辑分离出来,用硬件来实现,实现后的结果为数据路径;将所述简化的状态图中的控制逻辑分离出来,用硬件来实现,实现后的结果为控制器;使用硬件描述语言HDL来实现所述数据路径和所述控制器。本发明通过将C语言转换为状态图并构造数据路径和控制器,用HDL来实现所述数据路径和所述控制器,解决了现有技术存在的将C语言转换为HDL硬件实现不具有通用性的问题。
【专利说明】一种算法转换的方法及装置
【技术领域】
[0001 ] 本发明属于电子设计自动化【技术领域】,尤其涉及一种算法转换的方法及装置。
【背景技术】
[0002]将C语言算法转换为手工编制硬件描述语言HDL硬件实现的方法很多,但是基本上都没有通用性。
[0003]现有技术中,C语言是软件设计中主流的程序设计语言,而HDL是硬件设计中主流的硬件描述语言,两者应用领域不同,所以两种语言之间的转换涉及两个不同的领域。
[0004]针对实际硬件的设计问题,设计者往往是首先使用C语言进行算法验证,然后再根据C语言的算法和思路编制HDL来实现硬件设计。这种C语言转换为HDL的实现方法,是基于C语言的算法和思路,因此不同的设计者会有不同的实现方法,所以这种实现方法不具有通用性。

【发明内容】

[0005]本发明实施例的目的在于提供一种算法转换的方法及装置,以解决现有技术存在的C语言转换为HDL硬件实现不具有通用性问题。
[0006]本发明的实施例是这样实现的,一种算法转换的方法,所述方法包括以下步骤:
[0007]将C语言程序或C语言程序的流程图转化为状态图;
[0008]将所述的状态图简化得到简化的状态图,所述简化的状态图包括控制逻辑和运算逻辑;
[0009]将所述简化的状态图中的运算逻辑分离出来,用硬件来实现,实现后的结果为数据路径;
[0010]将所述简化的状态图中的控制逻辑分离出来,用硬件来实现,实现后的结果为控制器;
[0011]使用硬件描述语言HDL来实现所述数据路径和所述控制器。
[0012]本发明的实施例的另一目的在于提供一种算法转换的装置,所述包括:
[0013]转换单元,用于将C语言程序或C语言程序的流程图转化为状态图;
[0014]简化单元,用于将所述的状态图简化得到简化的状态图,所述简化的状态图包括控制逻辑和运算逻辑;
[0015]第一分离单元,用于将所述简化的状态图中的运算逻辑分离出来,用硬件来实现,实现后的结果为数据路径;
[0016]第二分离单元,用于将所述简化的状态图中的控制逻辑分离出来,用硬件来实现,实现后的结果为控制器;
[0017]实现单元,用于使用硬件描述语言HDL来实现所述数据路径和所述控制器。
[0018]本发明实施例通过将C语言程序转换为状态图并简化,最终通过HDL硬件所表达的电路来实现C语言程序,解决了现有技术存在的将C语言转换为HDL硬件实现不具有通用性问题。
【专利附图】

【附图说明】
[0019]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]图1是本发明一实施例提供的算法转换的方法的实现流程图;
[0021]图2是本发明另一实施例提供的根据赋值语句标识、循环语句标识和条件判断语句标识,找到赋值语句、循环语句和条件判断语句的内容,放入内容方框的方法示意图;
[0022]图3是本发明另一实施例提供的C语言转换的状态图的示意图;
[0023]图4是本发明另一实施例提供的简化的状态图的示意图;
[0024]图5是本发明另一实施例提供的数据路径的示意图;
[0025]图6是本发明另一实施提供的控制器的示意图;
[0026]图7是本发明另一实施例提供的数据路径和控制器连接的示意图;
[0027]图8是本发明另一实施例提供的算法转换的装置。
【具体实施方式】
[0028]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0029]本发明一实施例提供了一种算法转换的方法,所述方法如图1所示,具体由图8所示的算法转换的装置执行,具体步骤包括:
[0030]Slljf C语言程序或C语言程序的流程图转化为状态图。
[0031]需要说明的,此方法只对C语言有效,C语言为结构化的语言。
[0032]S12、将所述的状态图简化得到简化的状态图,所述简化的状态图包括控制逻辑和运算逻辑。
[0033]S13、将简化的状态图中的运算逻辑分离出来,用硬件来实现,实现后的结果为数据路径。
[0034]S14、将所述简化的状态图中的控制逻辑分离出来,用硬件来实现,实现后的结果为控制器。
[0035]S15、使用硬件描述语言HDL来实现所述数据路径和所述控制器。
[0036]可选的,实现Sll的方法具体为:
[0037]根据赋值语句标识、循环语句标识和条件判断语句标识,提取赋值语句、循环语句和条件判断语句,构成状态图的内容方框,根据所述赋值语句、循环语句和条件判断语句的逻辑关系将所述状态图的内容方框组合起来,构成状态图。
[0038]需要说明的是,C语言中“=”是赋值语句标识,“while”是循环语句标识,“if”、“else”和“else if”是条件判断语句标识,根据这些标识可以提取对应的语句,形成状态图的内容方框,根据这些语句之间的输入输出关系,将这些状态图的内容方框组合起来,构成状态图。
[0039]可选的,实现S12的方法具体为:
[0040]将状态图中输入、输出和次态都一样的内容方框合并为一个内容方框,得到所述简化的状态图。
[0041 ] 次态是指逻辑上的下一个内容方框。
[0042]可选的,实现S13方法具体为:
[0043]为C语言程序或C语言流程图中声明的变量建立寄存器;
[0044]为简化的状态图的每个运算逻辑建立一个功能单元;
[0045]根据简化的状态图,连接寄存器和数据路径的输入端,连接寄存器和功能单元,连接功能单元和数据路径的输出端,所述数据路径的输入端和数据路径的输出端分别用于和控制器的输出端和输入端连接,以及用于连接输入数据和输出结果;
[0046]根据所述简化的状态图的连接关系,为所述数据路径的输入端和数据路径的输出端建立唯一的标识符。
[0047]可选的,实现S13的方法还包括:
[0048]对简化的状态图中每个写变量的操作,建立其他寄存器与所述变量对应的寄存器的连接。
[0049]可选的,实现S13的方法还包括:
[0050]当连接到所述变量对应的寄存器的数据路径的输入端、功能单元和其他寄存器的数量总共超过一个时,使用多路选择器连接所述对应的寄存器与数据路径的输入端、功能单元和其他寄存器。
[0051]可选的,实现S14的方法还包括:
[0052]将变量的写入操作转换为控制信号,所述控制信号作为寄存器的输入端信号;
[0053]将条件运算逻辑转换为控制信号,作为控制器输出端与数据路径的输入端相连接。
[0054]需要说明的是,写入操作是为变量赋值,写入操作转换为控制信号意思是,当控制信号值为预设写入操作控制值时,则执行写入操作,否则不执行写入操作;例如控制信号为O时,而预设写入操作控制值也为O时,执行写入操作,当控制信号为I或者其他值时,不执行写入操作。将条件逻辑运算转换为控制信号也是同样的道理,上述条件逻辑运算是指C语言中的if、else if和else所执行的运算
[0055]可选的,上述方法还包括:
[0056]将多路选择器的选择信号和寄存器的输入端信号配合确定寄存器的最终输入端信号。
[0057]需要说明的是,这里的配合相当于与门电路,必须多路选择器的选择信号和寄存器的输入端信号符合同样的条件,将选择信号或者寄存器的输入端信号确定为寄存器的最终输入信号,如果多路选择器的选择信号和寄存器的输入端信号不符合同样的条件,则上述多路选择器的选择信号和寄存器的输入端信号都不能作为最终输入端信号。
[0058]可选的,实现S15的方法具体为:
[0059]使用HDL的条件case语句配合真值表实现数据路径;
[0060]使用HDL的条件case语句配合触发器实现控制器。[0061]需要说明的是,真值表为数字电路输入输出表;通过HDL来实现控制器可以使用流行的电子设计自动化EDA工具,例如synopsys、QuartusII等,数据路径需要手工编程来实现。
[0062]可选的,上述方法还包括:
[0063]使用工具验证所述的硬件描述语言HDL所表达的硬件电路。
[0064]需要说明的是,完成HDL所表达的硬件电路后,可以采用modelsim仿真、或QuartusI1、或 ISE 等。
[0065]本发明另一实施例提供一种根据赋值语句标识、循环语句标识和条件判断语句标识,找到赋值语句、循环语句和条件判断语句的内容,放入内容方框的方法,所述方法如图2所示,具体步骤包括:
[0066]根据赋值语句标识“ = ”,将赋值语句放入内容方框;
[0067]根据循环语句标识“while”,确定内容方框的内容,根据图中所示的条件是否成立,确定内容方框的流向是循环体语句还是下一条语句;
[0068]根据条件判断语句标识“if”、“else if ”和“else”,确定内容方框的内容,并根据条件判断内容cl、c2决定内容方框的流向。
[0069]本发明另一实施例提供了一种将C语言程序转换为状态图的方法,所示方法如图3所示,具体步骤包括:
[0070]以求最大公约数的C语言程序为例,C语言程序如下:
[0071]
O:1nt X,y, r;
[0072]
【权利要求】
1.一种算法转换的方法,其特征在于,所述方法包括: 将C语言程序或C语言程序的流程图转化为状态图; 将所述的状态图简化得到简化的状态图,所述简化的状态图包括控制逻辑和运算逻辑; 将所述简化的状态图中的运算逻辑分离出来,用硬件来实现,实现后的结果为数据路径; 将所述简化的状态图中的控制逻辑分离出来,用硬件来实现,实现后的结果为控制器; 使用硬件描述语言HDL来实现所述数据路径和所述控制器。
2.如权利要求1所述的方法,其特征在于,所述将C语言程序或C语言程序的流程图转化为状态图具体为: 根据赋值语句标识、循环语句标识和条件判断语句标识,提取赋值语句、循环语句和条件判断语句,构成状态图的内容方框,根据所述赋值语句、循环语句和条件判断语句的逻辑关系将所述状态图的内容方框组合起来,构成状态图。
3.如权利要求1或2所述的方法,其特征在于,所述将所述的状态图简化得到简化的状态图,所述简化的状态图包括控制逻辑和运算逻辑具体为: 将状态图中输入、输出和次态都一样的内容方框合并为一个内容方框,得到所述简化的状态图。
4.如权利要求1所述的方法,其特征在于,所述将所述简化的状态图中的运算逻辑分离出来,用硬件来实现,实现后的结果为数据路径具体为: 为C语言程序或C语言流程图中声明的变量建立寄存器; 为简化的状态图的每个运算逻辑建立一个功能单元; 根据简化的状态图,连接寄存器和数据路径的输入端,连接寄存器和功能单元,连接功能单元和数据路径的输出端,所述数据路径的输入端和数据路径的输出端分别用于和控制器的输出端和输入端连接,以及用于连接输入数据和输出结果; 根据所述简化的状态图的连接关系,为所述数据路径的输入端和数据路径的输出端建立唯一的标识符。
5.如权利要求4所述的方法,其特征在于,所述方法还包括: 对简化的状态图中每个写变量的操作,建立其他寄存器与所述变量对应的寄存器的连接。
6.如权利要求5所述的方法,其特征在于,所述方法还包括: 当连接到所述变量对应的寄存器的数据路径的输入端、功能单元和其他寄存器的数量总共超过一个时,使用多路选择器连接所述对应的寄存器与数据路径的输入端、功能单元和其他寄存器。
7.如权利要求1至4任一项所述的方法,其特征在于,所述将所述简化的状态图中的控制逻辑分离出来,用硬件来实现,实现后的结果为控制器具体为: 将变量的写入操作转换为控制信号,所述控制信号作为寄存器的输入端信号; 将条件运算逻辑转换为控制信号,作为控制器输出端与数据路径的输入端相连接。
8.如权利要求7所述的方法,其特征在于,所述方法还包括:将多路选择器的选择信号和寄存器的输入端信号配合确定寄存器的最终输入端信号。
9.如权利要求1所述的方法,其特征在于,所述使用硬件描述语言HDL来实现所述数据路径和所述控制器具体为: 使用HDL的条件case语句配合真值表实现数据路径; 使用HDL的条件case语句配合触发器实现控制器。
10.如权利要求1所述的方法,其特征在于,所述方法还包括: 使用工具验证所述的硬件描述语言HDL所表达的硬件电路。
11.一种算法装换的装置,其特征在于,所述装置包括: 转换单元,用于将C语言程序或C语言程序的流程图转化为状态图; 简化单元,用于将所述的状态图简化得到简化的状态图,所述简化的状态图包括控制逻辑和运算逻辑 ; 第一分离单元,用于将所述简化的状态图中的运算逻辑分离出来,用硬件来实现,实现后的结果为数据路径; 第二分离单元,用于将所述简化的状态图中的控制逻辑分离出来,用硬件来实现,实现后的结果为控制器; 实现单元,用于使用硬件描述语言HDL来实现所述数据路径和所述控制器。
12.如权利要求11所述的装置,其特征在于,所述转换单元具体用于: 根据赋值语句标识、循环语句标识和条件判断语句标识,提取赋值语句、循环语句和条件判断语句,构成状态图的内容方框,根据所述赋值语句、循环语句和条件判断语句的逻辑关系将所述状态图的内容方框组合起来,构成状态图。
13.如权利要求11或12所述的装置,其特征在于,所述简化单元具体用于: 将状态图中输入、输出和次态都一样的内容方框合并为一个内容方框,得到所述简化的状态图。
14.如权利要求11所述的装置,其特征在于,所述第一分离单元具体用于: 为C语言程序或C语言流程图中声明的变量建立寄存器; 为简化的状态图的每个运算逻辑建立一个功能单元; 根据简化的状态图,连接寄存器和数据路径的输入端,连接寄存器和功能单元,连接功能单元和数据路径的输出端,所述数据路径的输入端和数据路径的输出端分别用于和控制器的输出端和输入端连接,以及用于连接输入数据和输出结果; 根据所述简化的状态图的连接关系,为所述数据路径的输入端和数据路径的输出端建立唯一的标识符。
15.如权利要求14所述的装置,其特征在于,所述第一分离单元还包括: 连接模块,用于对简化的状态图中每个写变量的操作,建立其他寄存器与所述变量对应的寄存器的连接。
16.如权利要求15所述的装置,其特征在于,所述连接模块还包括: 多路选择子模块,用于当连接到所述变量对应的寄存器的数据路径的输入端、功能单元和其他寄存器的数量总共超过一个时,使用多路选择器连接所述对应的寄存器与数据路径的输入端、功能单元和其他寄存器。
17.如权利要求11至14任一项所述的装置,其特征在于,所述第二分离单元具体用于: 将变量的写入操作转换为控制信号,所述控制信号作为寄存器的输入端信号; 将条件运算逻辑转换为控制信号,作为控制器输出端与数据路径的输入端相连接。
18.如权利要求17所述的装置,其特征在于,所述装置还包括: 配合单兀,用于将多路选择器的选择信号和寄存器的输入端信号配合确定寄存器的最终输入端信号。
19.如权利要求11所述的装置,其特征在于,所述装置还包括: 数据路径实现单元,用于使用HDL的条件case语句配合真值表实现数据路径; 触发器实现单元,用于使用HDL的条件case语句配合触发器实现控制器。
20.如权利要求11所述的装置,其特征在于,所述装置还包括: 验证单元,用于使用工 具验证所述的硬件描述语言HDL所表达的硬件电路。
【文档编号】G06F9/44GK103455318SQ201210583534
【公开日】2013年12月18日 申请日期:2012年12月28日 优先权日:2012年12月28日
【发明者】贺敬凯 申请人:深圳信息职业技术学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1