本發明涉及數模轉換器技術領域,尤其涉及一種提高數模轉換器的輸出精度的方法和裝置。
背景技術:
數模轉換器,又稱D/A轉換器,簡稱DAC,是一種將二進制數字量形式的離散信號轉換成以標準量(或參考量)為基準的模擬量的轉換器。由數模轉換器的工作原理可知,n位的數模轉換器輸出的分辨率為1/2n,輸入精度為1。若實際應用中需要用到更小的分辨率,由于輸入精度不能修改,則需要選擇分辨率更高的數模轉換器。但是分辨率越高的數模轉換器越昂貴,并且數模轉換器的分辨率不能無限地提高。
并且,因為數模轉換器的輸入是二進制的,所以能夠輸入一個整型數值,但不能輸入浮點型數值。通常,在輸入浮點型數值的時候,小數部分將被忽略,于是,小數部分成為輸入誤差。輸入誤差在短時間內的影響是小的,但是多次輸入后,將會累計成為一個巨大的積分輸出誤差。
技術實現要素:
本發明的目的在于提出一種提高數模轉換器的輸出精度的方法和裝置,能夠利用低分辨率的數模轉換器獲得較高的輸出精度。
為達此目的,本發明采用以下技術方案:
一方面,本發明提供一種提高數模轉換器的輸出精度的方法,包括:
根據數模轉換器的輸出精度和輸入誤差,計算數模轉換器的輸出誤差;
獲取至少一個所述輸出誤差,與預設閾值進行比較;
根據比較結果對數模轉換器的整型輸入值進行調整。
其中,獲取至少一個所述輸出誤差,與預設閾值進行比較,根據比較結果對數模轉換器的整型輸入值進行調整,包括:
將多個連續的輸出誤差累加得到累計輸出誤差;
若所述累計輸出誤差大于第一閾值,則將數模轉換器的整型輸入值設置為浮點輸入值取整,直到所述累計輸出誤差小于第二閾值;
若所述累計輸出誤差小于第二閾值,則將數模轉換器的整型輸入值設置為浮點輸入值取整后加1,直到所述累計輸出誤差大于第一閾值。
其中,獲取至少一個所述輸出誤差,與預設閾值進行比較,根據比較結果對數模轉換器的整型輸入值進行調整,包括:
根據數模轉換器的輸出精度和期望的精度,計算調整次數,所述調整次數≥數模轉換器的輸出精度/期望的精度;
若一個所述輸出誤差的絕對值大于預設閾值,則向數模轉換器輸入與調整次數相應數量的整型輸入值;
其中一個所述整型輸入值設置為浮點輸入值取整,其他所述整型輸入值設置為浮點輸入值取整后加1。
其中,根據數模轉換器的輸出精度和輸入誤差,計算數模轉換器的輸出誤差,包括:
獲取浮點輸入值;
對所述浮點輸入值進行取整運算得到整型輸入值;
計算輸入誤差,所述輸入誤差=整型輸入值-浮點輸入值;
所述整型輸入值輸入數模轉換器后得到的輸出誤差=輸出精度*輸入誤差。
進一步的,所述第一閾值的絕對值等于所述第二閾值的絕對值。
另一方面,本發明提供一種提高數模轉換器的輸出精度的裝置,包括:
輸出誤差計算模塊,用于根據數模轉換器的輸出精度和輸入誤差,計算數模轉換器的輸出誤差;
誤差比較模塊,用于獲取至少一個所述輸出誤差,與預設閾值進行比較;
輸入調整模塊,用于根據比較結果對數模轉換器的整型輸入值進行調整。
其中,輸入調整模塊具體用于:
將多個連續的輸出誤差累加得到累計輸出誤差;
若所述累計輸出誤差大于第一閾值,則將數模轉換器的整型輸入值設置為浮點輸入值取整,直到所述累計輸出誤差小于第二閾值;
若所述累計輸出誤差小于第二閾值,則將數模轉換器的整型輸入值設置為浮點輸入值取整后加1,直到所述累計輸出誤差大于第一閾值。
其中,輸入調整模塊具體用于:
根據數模轉換器的輸出精度和期望的精度,計算調整次數,所述調整次數≥數模轉換器的輸出精度/期望的精度;
若一個所述輸出誤差的絕對值大于預設閾值,則向數模轉換器輸入與調整次數相應數量的整型輸入值;
其中一個所述整型輸入值設置為浮點輸入值取整,其他所述整型輸入值設置為浮點輸入值取整后加1。
其中,輸出誤差計算模塊具體用于:
獲取浮點輸入值;
對所述浮點輸入值進行取整運算得到整型輸入值;
計算輸入誤差,所述輸入誤差=整型輸入值-浮點輸入值;
所述整型輸入值輸入數模轉換器后得到的輸出誤差=輸出精度*輸入誤差。
進一步的,所述第一閾值的絕對值等于所述第二閾值的絕對值。
本發明的有益效果為:
本發明通過計算輸入浮點型數值時數模轉換器的輸出誤差,并與預設閾值進行比較,從而根據比較結果對數模轉換器的整型輸入值進行調整,實現了在不更換高分辨率數模轉換器且重新設計電路的情況下,得到等效的更高的輸出精度。
附圖說明
圖1是本發明實施例一提供的提高數模轉換器的輸出精度的方法的流程圖;
圖2是本發明實施例一提供的對數模轉換器的整型輸入值進行調整的流程圖;
圖3是本發明實施例二提供的對數模轉換器的整型輸入值進行調整的流程圖;
圖4是本發明實施例三提供的提高數模轉換器的輸出精度的方法的流程圖。
具體實施方式
為使本發明解決的技術問題、采用的技術方案和達到的技術效果更加清楚,下面將結合附圖對本發明實施例的技術方案作進一步的詳細描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。
實施例一
本實施例提供一種提高數模轉換器的輸出精度的方法,適用于在數模轉換器存在輸出誤差時,對其輸入值進行調整,以消除輸入浮點值時產生的輸入誤差。
圖1是本發明實施例一提供的提高數模轉換器的輸出精度的方法的流程圖。如圖1所示,所述方法包括如下步驟:
S11,根據數模轉換器的輸出精度和輸入誤差,計算數模轉換器的輸出誤差。
獲取浮點輸入值;對所述浮點輸入值進行取整運算得到整型輸入值,所述取整運算為取浮點輸入值的整數部分,將小數部分省略;計算輸入誤差,所述輸入誤差=整型輸入值-浮點輸入值;所述整型輸入值輸入數模轉換器后得到的輸出誤差=輸出精度*輸入誤差,輸出精度=1/2n,n為數模轉換器的位數。
例如,要輸入浮點數值1.5,取整得到整型值為1,輸入誤差=1-1.5=-0.5;三位的數模轉換器的輸出精度為1/23=1/8=0.125,則輸出誤差=-0.5*0.125=-0.0625。
S12,獲取至少一個所述輸出誤差,與預設閾值進行比較,根據比較結果對數模轉換器的整型輸入值進行調整。
圖2是本發明實施例一提供的對數模轉換器的整型輸入值進行調整的流程圖,如圖2所示,步驟S12包括:
S121,將多個連續的輸出誤差累加得到累計輸出誤差。
S122,若所述累計輸出誤差大于第一閾值,則將數模轉換器的整型輸入值設置為浮點輸入值取整,直到所述累計輸出誤差小于第二閾值。
S123,若所述累計輸出誤差小于第二閾值,則將數模轉換器的整型輸入值設置為浮點輸入值取整后加1,直到所述累計輸出誤差大于第一閾值。
本實施例中,所述預設閾值包括第一閾值和第二閾值,根據需要調整的頻率來設定,預設閾值的絕對值越小,調整越頻繁,一般情況下,|預設閾值|<1,第一閾值≥0,第二閾值≤0,優選的,可設置所述第一閾值的絕對值等于所述第二閾值的絕對值。
數模轉換器的等效輸出精度=最大的累計輸出誤差/調整方法執行時間。例如,第一閾值=0.5,第二閾值=-0.5,假設第x次輸入后,累計輸出誤差=0.5625,大于第一閾值,則開始進行調整,調整方法執行時間為40秒時,等效輸出精度=0.5265/40=0.014,調整方法執行時間為200秒時,等效輸出精度=0.5265/200=0.0028。調整方法執行時間越長,數模轉換器的等效輸出精度越高。
另外,還可通過增加調整頻率達到更高的等效輸出精度,一秒輸入40個整型輸入值,等效輸出精度=0.5265/40=0.014,一秒輸入200個整型輸入值,等效輸出精度=0.5265/200=0.0028。
根據具體應用的需求,可以將調整設置為不規則的輸入,兩次輸入之間的時間間隔不相等也是可以的。
本實施例適用于對累計的輸出誤差進行調整的情況,通過調整數模轉換器的整型輸入值,將輸出誤差抹平,達到等效提高數模轉換器的輸出精度的效果。
實施例二
本實施例對實施例一的部分步驟進行替換,通過相近的技術手段,達到近似的技術效果,解決相同的技術問題。
S21,根據數模轉換器的輸出精度和輸入誤差,計算數模轉換器的輸出誤差。
S22,獲取至少一個所述輸出誤差,與預設閾值進行比較,根據比較結果對數模轉換器的整型輸入值進行調整。
圖3是本發明實施例二提供的對數模轉換器的整型輸入值進行調整的流程圖,如圖3所示,步驟S22還可以包括:
S221,根據數模轉換器的輸出精度和期望的精度,計算調整次數。
將數模轉換器的輸出精度除以期望的精度得到的值進行四舍五入得到調整次數,調整次數≥輸出精度/期望的精度。
S222,若一個所述輸出誤差的絕對值大于預設閾值,則向數模轉換器輸入與調整次數相應數量的整型輸入值。
其中一個所述整型輸入值設置為浮點輸入值取整,其他所述整型輸入值設置為浮點輸入值取整后加1。
例如,要使用輸出精度為1/8的3位數模轉換器輸出1/32精度的數據,根據上述公式可計算出調整次數至少為4次,浮點輸入值為1.5,取整后得到整型輸入值為1,輸入誤差為-0.5,輸出誤差為-0.0625,輸出誤差的絕對值大于預設閾值1/32,第一次已經輸入1,則接下來的3次輸入,每次輸入為1.5取整后加1,即2;4次輸入完成后,累計輸出誤差為0.125,平均到每次輸入上0.125/4=0.03125,在4次輸入做到了等效1/32,等效的提高了精度。同理可得,如果期望獲得更高的等效精度,只是需要更多的時間,或者相同時間內執行更多次的輸入,這樣可以通過計算,精確的控制數模轉換器的輸入和輸出。
本實施例適用于需要利用低分辨率的數模轉換器輸出高精度數據的情況,低分辨率的數模轉換器由于精度達不到要求,只要一次輸入的輸入誤差就會造成輸出誤差超過預設閾值,則需要對接下來的幾次輸入進行調整。根據期望的精度和數模轉換器的輸出精度,計算需要輸入整型值的個數,并且按照預設的規則對整型輸入值賦值,以達到多次低精度輸入等效一次高精度輸入的結果。
實施例三
本實施例提供一種提高數模轉換器的輸出精度的裝置,用于執行上述實施例所述的方法,解決相同的技術問題,達到相同的技術效果。
所述裝置包括:輸出誤差計算模塊31,誤差比較模塊32和輸入調整模塊33。
輸出誤差計算模塊31,用于根據數模轉換器的輸出精度和輸入誤差,計算數模轉換器的輸出誤差;
誤差比較模塊32,用于獲取至少一個所述輸出誤差,與預設閾值進行比較;
輸入調整模塊33,用于根據比較結果對數模轉換器的整型輸入值進行調整。
其中,輸入調整模塊33具體用于:
將多個連續的輸出誤差累加得到累計輸出誤差;
若所述累計輸出誤差大于第一閾值,則將數模轉換器的整型輸入值設置為浮點輸入值取整,直到所述累計輸出誤差小于第二閾值;
若所述累計輸出誤差小于第二閾值,則將數模轉換器的整型輸入值設置為浮點輸入值取整后加1,直到所述累計輸出誤差大于第一閾值。
其中,輸入調整模塊33具體用于:
根據數模轉換器的輸出精度和期望的精度,計算調整次數,所述調整次數≥數模轉換器的輸出精度/期望的精度;
若一個所述輸出誤差的絕對值大于預設閾值,則向數模轉換器輸入與調整次數相應數量的整型輸入值;
其中一個所述整型輸入值設置為浮點輸入值取整,其他所述整型輸入值設置為浮點輸入值取整后加1。
其中,輸出誤差計算模塊31具體用于:
獲取浮點輸入值;
對所述浮點輸入值進行取整運算得到整型輸入值;
計算輸入誤差,所述輸入誤差=整型輸入值-浮點輸入值;
所述整型輸入值輸入數模轉換器后得到的輸出誤差=輸出精度*輸入誤差。
進一步的,所述第一閾值的絕對值等于所述第二閾值的絕對值。
本實施例通過計算輸入浮點型數值時數模轉換器的輸出誤差,并與預設閾值進行比較,從而根據比較結果對數模轉換器的整型輸入值進行調整,實現了在不更換高分辨率數模轉換器且重新設計電路的情況下,得到等效的更高的輸出精度。
以上結合具體實施例描述了本發明的技術原理。這些描述只是為了解釋本發明的原理,而不能以任何方式解釋為對本發明保護范圍的限制。基于此處的解釋,本領域的技術人員不需要付出創造性的勞動即可聯想到本發明的其它具體實施方式,這些方式都將落入本發明的保護范圍之內。