System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術屬于計算機,具體而言,涉及基于cordic指令的角度解算系統。
技術介紹
1、在科學計算、數字信號處理、伺服控制和圖像處理等領域,反正切運算是常用的基礎操作之一。目前,多數處理器不支持三角函數運算,一般嵌入式微處理器在計算諸如反正切函數一類的三角運算時,采取調用軟件的方式,但以調用軟件的方式計算反正切函數來進行角度解算等工作很難滿足嵌入式微處理器對于實時性的要求。通過通用處理器進行反正切角度解算一般使用基礎的處理器指令集,往往需要使用幾十條指令來實現函數的計算,計算時間長。單獨設計反正切角度解算模塊又會增大硬件開銷,為了兼顧反正切函數計算的計算時間、資源消耗和工作頻率,在通用處理器中擴展角度解算指令集,設計相應硬件控制電路來實現反正切函數運算,視為更優的解決方法。
技術實現思路
1、為了解決上述技術問題,本專利技術提供基于cordic指令的角度解算系統,包括ifu取指令單元與exu執行單元;
2、ifu取指令單元在取指階段根據pc的地址讀取指令存儲器中的cordic指令;
3、exu執行單元包括譯碼模塊、算術邏輯單元、加載存儲單元與寫回單元;exu執行單元在執行階段通過譯碼模塊進行cordic指令譯碼將cordic指令解碼出相應的操作數并將解碼出的操作數傳遞給算術邏輯單元,并從加載存儲單元中讀取操作數;算術邏輯單元執行結束后,由寫回單元將結果寫回寄存器堆中;
4、算術邏輯單元,包括alu邏輯運算子單元、cordic運算子單元與運算數據通
5、cordic運算子單元包括象限與特殊角度判別模塊、cordic算法串行迭代模塊與角度補償模塊;象限與特殊角度判別模塊對輸入的源操作數對應的坐標值進行象限預判,并且對角度進行判別,當角度為預設角度值時,輸出預設的角度解算值,否則進入cordic算法串行迭代模塊,運算結束后經角度補償模塊輸出角度值。
6、在上述技術方案的基礎上,本專利技術還可以做如下改進。
7、進一步,cordic指令共32位,第25-31位為func7字段,內容為0000010,定義為cordic指令集;指令的第20-24位為第二源操作數索引;指令的第15-19位為第一源操作數索引;指令的第12-14位為func3字段,該字段為反正切運算指令;指令的第7-11位為結果操作數索引;指令的第0-6位為opcode碼。
8、進一步,alu邏輯運算子單元與cordic運算子單元在執行指令并進行運算的過程中,共享運算數據通路;alu邏輯運算子單元根據alu指令發起對共享運算通路的操作請求,并從共享運算通路中取回運算結果;cordic運算子單元根據cordic角度解算指令,發起對運算數據通路的共享操作請求,并從運算數據通路中取回運算結果;運算數據通路接受alu邏輯運算子模塊與cordic運算子單元的請求,同時進行運算過程,在計算完畢后,將計算結果返回給相應子單元的運算數據通路。
9、進一步,操作值包括執行cordic指令所需要讀取的操作數寄存器索引、寫回寄存器索引與操作數。
10、進一步,譯碼模塊與運算數據通路之間設置有派遣模塊;cordic角度解算長指令首先被派遣到alu邏輯運算子單元,通過alu邏輯運算子單元與交付模塊的接口進行交付,同時根據譯碼得到的相應指示信號經alu邏輯運算子單元將cordic角度解算長指令派遣給cordic運算子單元。
11、進一步,派遣模塊設置有fifo模塊,當派遣cordic角度解算長指令時,在fifo模塊中分配表項存儲該cordic角度解算長指令的源操作數寄存器索引與結果寄存器索引,之后cordic角度解算長指令完成寫回后將表項中信息從fifo模塊的緩存退出,后續cordic角度解算長指令在派遣時將cordic角度解算長指令的源操作數寄存器索引與結果寄存器索引分別與fifo模塊中各個表項進行對比,判斷cordic角度解算長指令是否與已經派遣但尚未寫回的cordic角度解算長指令產生raw和waw相關性。
12、進一步,cordic運算子單元初始狀態時接受到初始源操作數與源操作數,同時初始化首輪迭代的角度值;在收到cordic_i_valid信號時,進入cordic角度解算指令執行狀態,cordic_sta_is_exec有效;在接收到exec_last_cycle信號時,完成cordic角度解算指令最后一輪計算:退出角度計算迭代過程,cordic_sta_is_done信號有效;運算完成后輸出cordic_o_valid信號與最后解算出的32位角度值;cordic運算子單元在收到初始化與刷新等命令時,不采取任何操作,狀態為閑置狀態。
13、進一步,cordic運算子單元復用與共享運算數據通路,包括:
14、cordic運算子單元在每一輪迭代運算的過程中向運算數據通路x值和y值分別表示cordic運算輸入值,z值表示cordic運算輸出值,x和y均為坐標信息,z為根據輸入的角度信息求得的輸出角度值,并通過輸出控制信號同時控制迭代計算開始、迭代計算進行與迭代計算結束;控制信號包括加運算信號、減運算信號與移位信號;運算數據通路接收到控制信號,使用運算通路內部加法器、減法器與移位寄存器進行運算;每一輪迭代運算的輸出反饋為cordic運算子單元的輸入,直到導出最終結果。
15、進一步,cordic運算子單元包含角度補償單元與角度判別單元;角度補償單元通過區間轉換,將cordic角度輸出范圍拓寬至(0,2π),同時經過角度判別單元判斷cordic角度,在cordic角度屬于設定角度時,直接輸出對應的函數值。
16、本專利技術的有益效果是:
17、(1)本專利技術基于risc-v架構,根據risc-v架構的指令編碼規則擴展cordic角度解算指令集并設計相應的流水線硬件結構,原有的risc-v指令集采用固定的47條指令rv32i作為核心,為基本整數指令,其中r-type指令集為算數運算指令,包含基礎指令集(funct7字段為0000000)和乘法指令集(funct7字段為0000001)。本設計在原有指令集基礎上擴展cordic運算指令集(funct7字段為0000010),并具備完整的包含取指階段與執行階段的硬件流水線結構,使得risc-v架構支持三角函數運算;
18、(2)本專利技術設計完成了完整的cordic運算通路硬件電路結構。當接收到來自ifu指令寄存器中的cordic運算指令后由譯碼模塊根據risc-v架構的指令編碼規則進行譯碼,產生cordic運算指令類型信息、操作數寄存器索引。cordic運算指令經過譯碼且從寄存本文檔來自技高網...
【技術保護點】
1.基于CORDIC指令的角度解算系統,其特征在于,包括IFU取指令單元與EXU執行單元;
2.根據權利要求1所述基于CORDIC指令的角度解算系統,其特征在于,CORDIC指令共32位,第25-31位為func7字段,內容為0000010,定義為CORDIC指令集;指令的第20-24位為第二源操作數索引;指令的第15-19位為第一源操作數索引;指令的第12-14位為func3字段,該字段為反正切運算指令;指令的第7-11位為結果操作數索引;指令的第0-6位為opcode碼。
3.根據權利要求1所述基于CORDIC指令的角度解算系統,其特征在于,ALU邏輯運算子單元與CORDIC運算子單元在執行指令并進行運算的過程中,共享運算數據通路;ALU邏輯運算子單元根據ALU指令發起對共享運算通路的操作請求,并從共享運算通路中取回運算結果;CORDIC運算子單元根據CORDIC角度解算指令,發起對運算數據通路的共享操作請求,并從運算數據通路中取回運算結果;運算數據通路接受ALU邏輯運算子模塊與CORDIC運算子單元的請求,同時進行運算過程,在計算完畢后,將計算結果返
4.根據權利要求1所述基于CORDIC指令的角度解算系統,其特征在于,操作值包括執行CORDIC指令所需要讀取的操作數寄存器索引、寫回寄存器索引與操作數。
5.根據權利要求1所述基于CORDIC指令的角度解算系統,其特征在于,譯碼模塊與運算數據通路之間設置有派遣模塊;CORDIC角度解算長指令首先被派遣到ALU邏輯運算子單元,通過ALU邏輯運算子單元與交付模塊的接口進行交付,同時根據譯碼得到的相應指示信號經ALU邏輯運算子單元將CORDIC角度解算長指令派遣給CORDIC運算子單元。
6.根據權利要求4所述基于CORDIC指令的角度解算系統,其特征在于,派遣模塊設置有FIFO模塊,當派遣CORDIC角度解算長指令時,在FIFO模塊中分配表項存儲該CORDIC角度解算長指令的源操作數寄存器索引與結果寄存器索引,之后CORDIC角度解算長指令完成寫回后將表項中信息從FIFO模塊的緩存退出,后續CORDIC角度解算長指令在派遣時將CORDIC角度解算長指令的源操作數寄存器索引與結果寄存器索引分別與FIFO模塊中各個表項進行對比,判斷CORDIC角度解算長指令是否與已經派遣但尚未寫回的CORDIC角度解算長指令產生RAW和WAW相關性。
7.根據權利要求1所述基于CORDIC指令的角度解算系統,其特征在于,CORDIC運算子單元初始狀態時接受到初始源操作數與源操作數,同時初始化首輪迭代的角度值;在收到cordic_i_valid信號時,進入CORDIC角度解算指令執行狀態,cordic_sta_is_exec信號有效;在接收到exec_last_cycle信號時,完成CORDIC角度解算指令最后一輪計算:退出角度計算迭代過程,cordic_sta_is_done信號有效;運算完成后輸出cordic_o_valid信號與最后解算出的32位角度值;CORDIC運算子單元在收到初始化與刷新等命令時,不采取任何操作,狀態為閑置狀態。
8.根據權利要求1所述基于CORDIC指令的角度解算系統,其特征在于,CORDIC運算子單元復用與共享運算數據通路,包括:
9.根據權利要求1所述基于CORDIC指令的角度解算系統,其特征在于,CORDIC運算子單元包含角度補償單元與角度判別單元;角度補償單元通過區間轉換,將CORDIC角度輸出范圍拓寬至(0,2π),同時經過角度判別單元判斷CORDIC角度,在CORDIC角度屬于設定角度時,直接輸出對應的函數值。
...【技術特征摘要】
1.基于cordic指令的角度解算系統,其特征在于,包括ifu取指令單元與exu執行單元;
2.根據權利要求1所述基于cordic指令的角度解算系統,其特征在于,cordic指令共32位,第25-31位為func7字段,內容為0000010,定義為cordic指令集;指令的第20-24位為第二源操作數索引;指令的第15-19位為第一源操作數索引;指令的第12-14位為func3字段,該字段為反正切運算指令;指令的第7-11位為結果操作數索引;指令的第0-6位為opcode碼。
3.根據權利要求1所述基于cordic指令的角度解算系統,其特征在于,alu邏輯運算子單元與cordic運算子單元在執行指令并進行運算的過程中,共享運算數據通路;alu邏輯運算子單元根據alu指令發起對共享運算通路的操作請求,并從共享運算通路中取回運算結果;cordic運算子單元根據cordic角度解算指令,發起對運算數據通路的共享操作請求,并從運算數據通路中取回運算結果;運算數據通路接受alu邏輯運算子模塊與cordic運算子單元的請求,同時進行運算過程,在計算完畢后,將計算結果返回給相應子單元的運算數據通路。
4.根據權利要求1所述基于cordic指令的角度解算系統,其特征在于,操作值包括執行cordic指令所需要讀取的操作數寄存器索引、寫回寄存器索引與操作數。
5.根據權利要求1所述基于cordic指令的角度解算系統,其特征在于,譯碼模塊與運算數據通路之間設置有派遣模塊;cordic角度解算長指令首先被派遣到alu邏輯運算子單元,通過alu邏輯運算子單元與交付模塊的接口進行交付,同時根據譯碼得到的相應指示信號經alu邏輯運算子單元將cordic角度解算長指令派遣給cordic運算子單元。
6.根據權利要求4所述基于co...
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。