一種算法轉換的方法及裝置製造方法
2023-06-24 16:13:36
一種算法轉換的方法及裝置製造方法
【專利摘要】本發明適用於電子設計自動化【技術領域】,提供了一種算法轉換的方法,所述方法包括:將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日
【發明者】賀敬凱 申請人:深圳信息職業技術學院