九九色综合,91sss,亚洲国产综合在线,伊人婷婷色,国产香蕉精品,国产第四页

內頁廣告7

熱搜關鍵詞: PCIe高速數據采集卡RFSOC高速數據采集軟件無線電平臺VPX高速數據采集卡高速信號采集卡PCIe數據采集數字信號處理

您的當前位置:首頁 » 資訊中心 » 技術文章 » FPGA高速數據采集浮點數定點數轉換

FPGA高速數據采集浮點數定點數轉換

返回列表 來源:坤馳科技 查看手機網址
掃一掃!FPGA高速數據采集浮點數定點數轉換掃一掃!
瀏覽:- 發布日期:2015-06-02 18:04:00【
  在FPGA實現數字信號處理過程中經常會遇到將MATLAB程序放到FPGA中去運算,運算完后再導入MATLAB查看數據結果做后續處理。而MATLAB一般為雙精度浮點運算,而FPGA一般為定點運算。所以需要將浮點數轉為定點數,再送到FPGA中去運算,將運算結果導入MATLAB后再轉為浮點數。這就涉及到DSP定標問題。
  在定點DSP芯片中,采用定點數進行數值運算,其操作數一般采用整型數來表示。一個整型數的大表示范圍取決于DSP芯片所給定的字長,一般為16位或24位。顯然,字長越長,所能表示的數的范圍越大,精度也越高。如無特別說明,本書均以16位字長為例。
DSP芯片的數以2的補碼形式表示。每個16位數用一個符號位來表示數的正負,0表示數值為正,l則表示數值為負。其余15位表示數值的大小。因此,
      二進制數0010000000000011b=8195
      二進制數1111111111111100b= -4
  對DSP芯片而言,參與數值運算的數就是16位的整型數。但在許多情況下,數學運算過程中的數不一定都是整數。那么,DSP芯片是如何處理小數的呢?應該說,DSP芯片本身無能為力。那么是不是說DSP芯片就不能處理各種小數呢?當然不是。這其中的關鍵就是由程序員來確定一個數的小數點處于16位中的哪一位。這就是數的定標。
通過設定小數點在16位數中的不同位置,就可以表示不同大小和不同精度的小數了。數的定標有Q表示法和S表示法兩種。表1.1列出了一個16位數的16種Q表示、S表示及它們所能表示的十進制數值范圍。
  從表1.1可以看出,同樣一個16位數,若小數點設定的位置不同,它所表示的數也就不同。例如,
         16進制數2000H=8192,用Q0表示
         16進制數2000H=0.25,用Q15表示
但對于DSP芯片來說,處理方法是完全相同的。
  從表1.1還可以看出,不同的Q所表示的數不僅范圍不同,而且精度也不相同。Q越大,數值范圍越小,但精度越高;相反,Q越小,數值范圍越大,但精度就越低。例如,Q0 的數值范圍是一32768到+32767,其精度為1,而Q15的數值范圍為-1到0.9999695,精度為1/32768=0.00003051。因此,對定點數而言,數值范圍與精度是一對矛盾,一個變量要想能夠表示比較大的數值范圍,必須以犧牲精度為代價;而想精度提高,則數的表示范圍就相應地減小。在實際的定點算法中,為了達到佳的性能,必須充分考慮到這一點。
浮點數與定點數的轉換關系可表示為:
        浮點數(x)轉換為定點數(xq):xq=(int)x* 2Q
        定點數(xq)轉換為浮點數(x):x=(float)xq*2-Q
    例如,浮點數x=0.5,定標Q=15,則定點數xq=L0.5*32768J=16384,式中LJ表示下取整。反之,一個用Q=15表示的定點數16384,其浮點數為163幼*2-15=16384/32768=0.5。浮點數轉換為定點數時,為了降低截尾誤差,在取整前可以先加上0.5。
表1.1    Q表示、S表示及數值范圍
Q表示    S表示    十進制數表示范圍
Q15    S0.15    -1≤x≤0.9999695
Q14    S1.14    -2≤x≤1.9999390
Q13    S2.13    -4≤x≤3.9998779
Q12    S3.12    -8≤x≤7.9997559
Q11    S4.11    -16≤x≤15.9995117
Q10    S5.10    -32≤x≤31.9990234
Q9    S6.9    -64≤x≤63.9980469
Q8    S7.8    -128≤x≤127.9960938
Q7    S8.7    -256≤x≤255.9921875
Q6    S9.6    -512≤x≤511.9804375
Q5    S10.5    -1024≤x≤1023.96875
Q4    S11.4    -2048≤x≤2047.9375
Q3    S12.3    -4096≤x≤4095.875
Q2    S13.2    -8192≤x≤8191.75
Q1    S14.1    -16384≤x≤16383.5
Q0    S15.0    -32768≤x≤32767
 
附錄:下面MATLAB代碼實現了將浮點數(注:絕對值小于1)轉為設定的位數的二進制補碼形式
 
 
 
function [y]=dectobin(innum,N);
%將絕對值小于1的值轉換為(N+1)位的二進制數負數用補碼表示
%N表示abs(innum)*2^N;多出的一位表示符號位
 
if (abs(innum)>=1)|(N == 0)%判斷輸入的有效性 注:輸入數據必須為-1到1之間的值
   disp('error!');
   return;
end
%如果需要轉換的浮點數X2^N還小于1的話,該值就為0
%very important
if((abs(innum)*2^N)<1)
    innum=0;
end
 
count=0;
tempnum=abs(innum);
record=zeros(1,N+1);
while(N)
   count=count+1;%長度小于N
   if(count>N)
      break;
   end
   tempnum=tempnum*2;%小數轉換為二進制,乘2取整
   if tempnum>1
       record(count+1)=1;
       tempnum=tempnum-1;  
   elseif(tempnum==1)
       record(count+1)=1;
       N=0;%stop loop
   else
      record(count+1)=0;     
   end
end
 
if innum>=0  %輸入值大于等于0
    record(1)=0;
    y=record;
else              %輸入值小于0
    record(1)=1;
    for i=2:N+1    %取反
        if record(i)==1
            record(i)=0;
        else
            record(i)=1;
        end
    end
        temp=N+1;  %加1
        while(temp>1)
            if record(temp)==0
                record(temp)=1;
                temp=0;%循環結束
            else
                record(temp)=0;
                temp=temp-1;
            end
        end
     y=record;
end
 
return;
 

 

  若您有高速數據采集板卡定制需求,請聯系我們:400-000-4026
 

  關于坤馳科技:
  坤馳科技是專注于
高速數據采集與信號處理、高速數據存儲與記錄的高科技公司。坤馳科技為用戶提供成熟的標準高速數據采集產品與技術,也可為用戶提供定制化的高速信號采集解決方案。目前坤馳科技服務過的研究所、科研單位已達近百家。高速數據采集產品線涵蓋PCIExpress、cPCI、PXIe、VPX、USB等總線,包含高速AD、DA平臺、FPGA、DSP處理平臺,SATA/SSD、Flash存儲平臺等。
  全國咨詢電話:400-000-4026
 

  公司官方網站:http://www.queentest.cn  

 

推薦閱讀

    【本文標簽】:高速采集卡 高速信號采集卡 高速數據采集卡
    【責任編輯】:坤馳科技版權所有:轉載請注明出處