本技術(shù)涉及硬件加速算法,尤其涉及一種復(fù)數(shù)坐標(biāo)對應(yīng)的三角函數(shù)值確定方法、裝置及存儲介質(zhì)。
背景技術(shù):
1、坐標(biāo)旋轉(zhuǎn)數(shù)字計算機(jī)算法(coordinate?rotation?digital?computer,cordic)主要用于解決三角函數(shù)、反三角函數(shù)和開方等運(yùn)算的實時計算問題。從廣義上講,cordic算法提供了一種數(shù)學(xué)計算的逼近方法,由于它最終可分解為一系列的加減和移位操作,故非常適合硬件實現(xiàn),在利用硬件實現(xiàn)cordic算法來計算復(fù)數(shù)坐標(biāo)對應(yīng)的三角函數(shù)值時,如何節(jié)省硬件資源是目前需要解決的問題。
技術(shù)實現(xiàn)思路
1、本技術(shù)提供一種復(fù)數(shù)坐標(biāo)對應(yīng)的三角函數(shù)值確定方法、裝置及存儲介質(zhì),節(jié)省了硬件資源。
2、第一方面,本技術(shù)提供一種復(fù)數(shù)坐標(biāo)對應(yīng)的三角函數(shù)值確定方法,包括:
3、將復(fù)數(shù)坐標(biāo)對應(yīng)的初始向量移動至第一象限,得到目標(biāo)向量;
4、對所述目標(biāo)向量進(jìn)行預(yù)設(shè)數(shù)量次旋轉(zhuǎn),使得旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值趨向于零;其中,每次旋轉(zhuǎn)按照特定的角度,每次旋轉(zhuǎn)的方向基于前一次旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值;
5、基于第二次及之后旋轉(zhuǎn)的方向確定第一索引和第二索引,并根據(jù)所述第一索引和所述第二索引從存儲器中存儲的第一三角函數(shù)表中分別查找得到所述目標(biāo)向量對應(yīng)的第一三角函數(shù)值和第二三角函數(shù)值;其中,所述第一三角函數(shù)表中存儲了按照每次旋轉(zhuǎn)特定的角度、遍歷預(yù)設(shè)數(shù)量次旋轉(zhuǎn)的方向所得到的多個旋轉(zhuǎn)角度累加和各自對應(yīng)的第一三角函數(shù)值,所述第一三角函數(shù)為正弦函數(shù),所述第二三角函數(shù)為余弦函數(shù),或者,所述第一三角函數(shù)為余弦函數(shù),所述第二三角函數(shù)為正弦函數(shù);
6、基于所述目標(biāo)向量對應(yīng)的第一三角函數(shù)值和第二三角函數(shù)值確定所述復(fù)數(shù)坐標(biāo)對應(yīng)的初始向量的第一三角函數(shù)值和第二三角函數(shù)值。
7、所述方法通過一個存儲器中存儲的第一三角函數(shù)表即可計算復(fù)數(shù)坐標(biāo)對應(yīng)的第一三角函數(shù)值和第二三角函數(shù)值,節(jié)省了硬件資源。
8、在一種實現(xiàn)方式中,所述第一三角函數(shù)表中的第一三角函數(shù)值記錄按照旋轉(zhuǎn)角度累加從大到小的順序排列;
9、所述基于第二次及之后旋轉(zhuǎn)的方向確定第一索引和第二索引,包括:
10、基于第二次及之后旋轉(zhuǎn)的方向確定所述第一索引;
11、將所述第一三角函數(shù)表的記錄條數(shù)減去一再減去所述第一索引,得到所述第二索引。
12、利用第一三角函數(shù)表中的記錄的排列順序,以及第一三角函數(shù)和第二三角函數(shù)之間的數(shù)學(xué)關(guān)系,確定第一三角函數(shù)值和第二三角函數(shù)值的索引地址的對應(yīng)關(guān)系,節(jié)省了硬件存儲資源。
13、在一種實現(xiàn)方式中,針對第二次及之后旋轉(zhuǎn),若前一次旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值大于零,則旋轉(zhuǎn)方向為順時針,若前一次旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值小于或等于零,則旋轉(zhuǎn)方向為逆時針。
14、在一種實現(xiàn)方式中,每次旋轉(zhuǎn)得到的向量對應(yīng)的實部坐標(biāo)值和虛部坐標(biāo)值基于前一次旋轉(zhuǎn)得到的向量對應(yīng)的實部坐標(biāo)值和虛部坐標(biāo)值確定。
15、在一種實現(xiàn)方式中,確定每次旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值和實部坐標(biāo)值時所有數(shù)據(jù)的數(shù)據(jù)類型均為無符號數(shù),實現(xiàn)了數(shù)據(jù)類型的統(tǒng)一。
16、在一種實現(xiàn)方式中,對數(shù)據(jù)類型為無符號數(shù)的數(shù)據(jù)按照如下規(guī)則進(jìn)行運(yùn)算:
17、將第一數(shù)據(jù)減去第二數(shù)據(jù),轉(zhuǎn)換為第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼,若第一數(shù)據(jù)的最高位和第二數(shù)據(jù)的最高位相同,則在第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和產(chǎn)生進(jìn)位的情況下舍棄進(jìn)位;若第一數(shù)據(jù)的最高位和第二數(shù)據(jù)的最高位不同,則在第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和產(chǎn)生進(jìn)位的情況下保留進(jìn)位。
18、在一種實現(xiàn)方式中,若第一數(shù)據(jù)的最高位和第二數(shù)據(jù)的最高位相同,則在第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和未產(chǎn)生進(jìn)位的情況下,或者,在第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和產(chǎn)生進(jìn)位并已舍棄進(jìn)位的情況下,將第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和的最高位進(jìn)行復(fù)制擴(kuò)展,實現(xiàn)了結(jié)果的位數(shù)統(tǒng)一。
19、第二方面,本技術(shù)提供一種復(fù)數(shù)坐標(biāo)對應(yīng)的三角函數(shù)值確定裝置,包括存儲器,收發(fā)機(jī),處理器:
20、存儲器,用于存儲計算機(jī)程序;收發(fā)機(jī),用于在所述處理器的控制下收發(fā)數(shù)據(jù);處理器,用于讀取所述存儲器中的計算機(jī)程序并執(zhí)行以下操作:
21、將復(fù)數(shù)坐標(biāo)對應(yīng)的初始向量移動至第一象限,得到目標(biāo)向量;
22、對所述目標(biāo)向量進(jìn)行預(yù)設(shè)數(shù)量次旋轉(zhuǎn),使得旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值趨向于零;其中,每次旋轉(zhuǎn)按照特定的角度,每次旋轉(zhuǎn)的方向基于前一次旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值;
23、基于第二次及之后旋轉(zhuǎn)的方向確定第一索引和第二索引,并根據(jù)所述第一索引和所述第二索引從存儲器中存儲的第一三角函數(shù)表中分別查找得到所述目標(biāo)向量對應(yīng)的第一三角函數(shù)值和第二三角函數(shù)值;其中,所述第一三角函數(shù)表中存儲了按照每次旋轉(zhuǎn)特定的角度、遍歷預(yù)設(shè)數(shù)量次旋轉(zhuǎn)的方向所得到的多個旋轉(zhuǎn)角度累加和各自對應(yīng)的第一三角函數(shù)值,所述第一三角函數(shù)為正弦函數(shù),所述第二三角函數(shù)為余弦函數(shù),或者,所述第一三角函數(shù)為余弦函數(shù),所述第二三角函數(shù)為正弦函數(shù);
24、基于所述目標(biāo)向量對應(yīng)的第一三角函數(shù)值和第二三角函數(shù)值確定所述復(fù)數(shù)坐標(biāo)對應(yīng)的初始向量的第一三角函數(shù)值和第二三角函數(shù)值。
25、在一種實現(xiàn)方式中,所述第一三角函數(shù)表中的第一三角函數(shù)值記錄按照旋轉(zhuǎn)角度累加從大到小的順序排列;
26、所述處理器,用于基于第二次及之后旋轉(zhuǎn)的方向確定第一索引和第二索引,具體包括:
27、基于第二次及之后旋轉(zhuǎn)的方向確定所述第一索引;
28、將所述第一三角函數(shù)表的記錄條數(shù)減去一再減去所述第一索引,得到所述第二索引。
29、在一種實現(xiàn)方式中,針對第二次及之后旋轉(zhuǎn),若前一次旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值大于零,則旋轉(zhuǎn)方向為順時針,若前一次旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值小于或等于零,則旋轉(zhuǎn)方向為逆時針。
30、在一種實現(xiàn)方式中,每次旋轉(zhuǎn)得到的向量對應(yīng)的實部坐標(biāo)值和虛部坐標(biāo)值基于前一次旋轉(zhuǎn)得到的向量對應(yīng)的實部坐標(biāo)值和虛部坐標(biāo)值確定。
31、在一種實現(xiàn)方式中,確定每次旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值和實部坐標(biāo)值時所有數(shù)據(jù)的數(shù)據(jù)類型均為無符號數(shù)。
32、在一種實現(xiàn)方式中,對數(shù)據(jù)類型為無符號數(shù)的數(shù)據(jù)按照如下規(guī)則進(jìn)行運(yùn)算:
33、將第一數(shù)據(jù)減去第二數(shù)據(jù),轉(zhuǎn)換為第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼,若第一數(shù)據(jù)的最高位和第二數(shù)據(jù)的最高位相同,則在第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和產(chǎn)生進(jìn)位的情況下舍棄進(jìn)位;若第一數(shù)據(jù)的最高位和第二數(shù)據(jù)的最高位不同,則在第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和產(chǎn)生進(jìn)位的情況下保留進(jìn)位。
34、在一種實現(xiàn)方式中,若第一數(shù)據(jù)的最高位和第二數(shù)據(jù)的最高位相同,則在第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和未產(chǎn)生進(jìn)位的情況下,或者,在第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和產(chǎn)生進(jìn)位并已舍棄進(jìn)位的情況下,將第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和的最高位進(jìn)行復(fù)制擴(kuò)展。
35、第三方面,本技術(shù)提供一種復(fù)數(shù)坐標(biāo)對應(yīng)的三角函數(shù)值確定裝置,包括:
36、移相單元,用于將復(fù)數(shù)坐標(biāo)對應(yīng)的初始向量移動至第一象限,得到目標(biāo)向量;
37、旋轉(zhuǎn)單元,用于對所述目標(biāo)向量進(jìn)行預(yù)設(shè)數(shù)量次旋轉(zhuǎn),使得旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值趨向于零;其中,每次旋轉(zhuǎn)按照特定的角度,每次旋轉(zhuǎn)的方向基于前一次旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值;以及,用于基于第二次及之后旋轉(zhuǎn)的方向確定第一索引和第二索引,并根據(jù)所述第一索引和所述第二索引從存儲器中存儲的第一三角函數(shù)表中分別查找得到所述目標(biāo)向量對應(yīng)的第一三角函數(shù)值和第二三角函數(shù)值;其中,所述第一三角函數(shù)表中存儲了按照每次旋轉(zhuǎn)特定的角度、遍歷預(yù)設(shè)數(shù)量次旋轉(zhuǎn)的方向所得到的多個旋轉(zhuǎn)角度累加和各自對應(yīng)的第一三角函數(shù)值,所述第一三角函數(shù)為正弦函數(shù),所述第二三角函數(shù)為余弦函數(shù),或者,所述第一三角函數(shù)為余弦函數(shù),所述第二三角函數(shù)為正弦函數(shù);
38、恢復(fù)單元,用于基于所述目標(biāo)向量對應(yīng)的第一三角函數(shù)值和第二三角函數(shù)值確定所述復(fù)數(shù)坐標(biāo)對應(yīng)的初始向量的第一三角函數(shù)值和第二三角函數(shù)值。
39、在一種實現(xiàn)方式中,所述第一三角函數(shù)表中的第一三角函數(shù)值記錄按照旋轉(zhuǎn)角度累加從大到小的順序排列;
40、所述旋轉(zhuǎn)單元用于:
41、基于第二次及之后旋轉(zhuǎn)的方向確定所述第一索引;
42、將所述第一三角函數(shù)表的記錄條數(shù)減去一再減去所述第一索引,得到所述第二索引。
43、在一種實現(xiàn)方式中,針對第二次及之后旋轉(zhuǎn),若前一次旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值大于零,則旋轉(zhuǎn)方向為順時針,若前一次旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值小于或等于零,則旋轉(zhuǎn)方向為逆時針。
44、在一種實現(xiàn)方式中,每次旋轉(zhuǎn)得到的向量對應(yīng)的實部坐標(biāo)值和虛部坐標(biāo)值基于前一次旋轉(zhuǎn)得到的向量對應(yīng)的實部坐標(biāo)值和虛部坐標(biāo)值確定。
45、在一種實現(xiàn)方式中,確定每次旋轉(zhuǎn)得到的向量對應(yīng)的虛部坐標(biāo)值和實部坐標(biāo)值時所有數(shù)據(jù)的數(shù)據(jù)類型均為無符號數(shù)。
46、在一種實現(xiàn)方式中,對數(shù)據(jù)類型為無符號數(shù)的數(shù)據(jù)按照如下規(guī)則進(jìn)行運(yùn)算:
47、將第一數(shù)據(jù)減去第二數(shù)據(jù),轉(zhuǎn)換為第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼,若第一數(shù)據(jù)的最高位和第二數(shù)據(jù)的最高位相同,則在第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和產(chǎn)生進(jìn)位的情況下舍棄進(jìn)位;若第一數(shù)據(jù)的最高位和第二數(shù)據(jù)的最高位不同,則在第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和產(chǎn)生進(jìn)位的情況下保留進(jìn)位。
48、在一種實現(xiàn)方式中,若第一數(shù)據(jù)的最高位和第二數(shù)據(jù)的最高位相同,則在第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和未產(chǎn)生進(jìn)位的情況下,或者,在第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和產(chǎn)生進(jìn)位并已舍棄進(jìn)位的情況下,將第一數(shù)據(jù)的補(bǔ)碼加上第二數(shù)據(jù)的相反數(shù)的補(bǔ)碼的和的最高位進(jìn)行復(fù)制擴(kuò)展。
49、第四方面,本技術(shù)提供一種處理器可讀存儲介質(zhì),所述處理器可讀存儲介質(zhì)存儲有計算機(jī)程序,所述計算機(jī)程序用于使所述處理器執(zhí)行第一方面所述的任一方法。
50、第五方面,本技術(shù)提供一種計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品包括:計算機(jī)程序,所述計算機(jī)程序存儲在可讀存儲介質(zhì)中,處理器可以從所述可讀存儲介質(zhì)讀取所述計算機(jī)程序產(chǎn)品,所述處理器執(zhí)行所述計算機(jī)程序以執(zhí)行第一方面所述的任一方法。
51、應(yīng)當(dāng)理解,上述
技術(shù)實現(xiàn)要素:
部分中所描述的內(nèi)容并非旨在限定本發(fā)明的實施例的關(guān)鍵或重要特征,亦非用于限制本發(fā)明的范圍。本發(fā)明的其它特征將通過以下的描述變得容易理解。