日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab浮点转定点的函数,FPGA基础知识17(Matlab中滤波器的定点化 浮点运算转换为定点运算)...

發布時間:2024/8/1 循环神经网络 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab浮点转定点的函数,FPGA基础知识17(Matlab中滤波器的定点化 浮点运算转换为定点运算)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

需求說明:IC設計基礎

內容 ? ? ? :浮點運算定點化處理

來自 ? ? ? :時間的詩

原文:http://blog.csdn.net/mccrocodile/article/details/6754929

通常在FPGA中做信號處理為達到比較高的fMax和較少的資源占用,通常使用定點化數字信號處理,雖然FPGA廠商和IP提供商提供了一些浮點IP,但是目前大多數應用還是趨向定點化處理。這里主要介紹在設計濾波器中使用工具中的定點化選項,實現濾波器的定點化,為后面一節的HDL代碼生成做鋪墊。

這兒還是使用前面的例子,來實施定點化。

FDAtool中定點化

如下圖所示為FDATool中的定點化過程中截圖,選擇左側設置量化參數(Set Quantization Parameters )按鈕,在濾波器結構欄選擇定點,濾波器精度有最高精度和指定精度,通常使用指定精度這樣比較節約資源,最后部分為對濾波器的參數,輸入數出和濾波器內部進行定點化設計。

在設置濾波器內部的參數,如乘法器,累加器的精度和整數的溢出模式。在設置精度是通常開始設置較大的精度和動態范圍,滿足要求后再優化。整數溢出的模式Wrap模式占用資源最少,但是如果正式部分動態范圍不夠會帶來糟糕情況,而且不利于整體的穩定性;Staturate會占用額外的邏輯資源。

FilterBuilder中定點化

從下圖可以看得出與FDATool的定點化設置是一致的。這兒就不再做介紹了。

fdesign中的定點化

(準確的應該成為使用面向對象的方式的濾波器定點化)

詳細的幫助中搜索Fixed-Point Filter Design。

前面介紹的基于GUI的定點化都是一個根據經驗的迭代化的優化過程,下面來詳細的說下基于fdesign的定點化過程。

濾波器的定點化包含兩個主要的部分:濾波器數的量化和動態范圍分析。(The dynamic range analysis is a process of fine tuning the scaling of each node to ensure that the fraction lengths are set for full

input range coverage and maximum precision。)

1、首先修改濾波器對象屬性為定點的:(當然這兒的濾波器對象也可以來自于fdatool等設計的導出的濾波器對象)

Hf=hd;

Hf.Arithmetic='fixed';

2、初步設置濾波器系數的字長

set(Hf, 'CoeffWordLength', 9);%設置濾波器系數的字長

fvtool(Hf)%,比較不同字長設置

屏幕剪輯的捕獲時間: 2011/8/30 22:22

可以清晰的觀察到定點化和浮點的幅頻響應的區別,通過觀察是否滿足要求進一步優化濾波器系數的字長,增加字長達到更高的性能,縮減字長節約資源減小面積。如在Altera的QII中,如果乘數是固定且位寬比較小(比如小于10bit時),綜合時會使用移位和加法實現乘法(有點類似于RAG算法),但當乘數比較大時則需要使用硬件乘法器。如果較小片子硬件乘法器不足就是個糟糕的事情了。

3、設置濾波器內部的位寬:累加器,乘法器,輸出信號

info(Hf) %有觀察到的信息可以看出位寬過寬

屏幕剪輯的捕獲時間: 2011/8/30 22:32

如圖所示可以看到,自動設置的位寬以及其動態范圍,這些自動設置的位寬通常是首先滿足精度,還需要根據硬件(DSP,FPGA)特性做修改。下面針對Altera的CIII片子給出一個設置:

set (Hf, 'InputWordLength', 10);%輸入ADC位寬

set (Hf, 'FilterInternals', 'SpecifyPrecision');%設置濾波器內部參數

set (Hf, 'ProductWordLength', 18);%如Altera的CIII片子的乘法器為9的倍數,這兒選18bit

set (Hf, 'AccumWordLength', 22);%累加器的字長,通常累加器比乘法器多4比特作為保護位寬

set (Hf, 'OutputWordLength', 16);%輸出數據總線

輸入信號位寬通常和ADC是保持一致的,乘法器的位寬通常設置9的倍數(某些高檔片子含有DSP40,那就設置為40)。諸如硬件乘法器資源,如果想要充分利用,那么你就需要參考器件的硬件特性。累加器通常要比乘法器寬4bit作為保護比特。如果設置得過寬會造成累加器的時延過大,得不到一個較大的fMax。

到這里濾波器的基本設置算是完成了,但是還是有可能在使用的使用發生溢出等錯誤。動態分析將進一步優化濾波器的定點化設置,以降低溢出的發生。

4、動態分析:進一步精細調整系數的比例(Scaling)。

系數最好是又能覆蓋所有輸入信號,同時保持最大的精度,但這是互相矛盾的。所以在動態分析過程中用于測試的輸入數據的選擇是非常重要的。如果設置較大的動態范圍,可以覆蓋輸入信號的范圍,但是精度會損失;如果設置較窄的動態范圍,可以保持較好的精度,但是輸入信號可能超出范圍引起溢出。

最壞情況測試法:

1)源代碼和報告如下,首先使用脈沖響應的取符號函數,設置信號最大幅度,作為信號的激勵。

2)以測試激勵自動調整動態范圍,如果不使用這個選項觀察一下3中的報告時什么樣子的。

3)創建fipref對象開啟記錄模式,定點化濾波,觀察定點化濾波過程的報告。

tx = 2*sign(fliplr(impz(Hf)));%激勵

Hf2 = autoscale(Hf, tx);%自動調整動態范圍

fipref('LoggingMode', 'on', 'DataTypeOverride', 'ForceOff');%創建fipref對象打開記錄

y = filter(Hf2, tx);

fipref('LoggingMode', 'off');

R = qreport(Hf2)%查看報告,報告最近的頂點濾波計算報告

屏幕剪輯的捕獲時間: 2011/9/5 21:29

下面是對信號分離的定點化測試:

%% 對信號分離的定點化測試

fipref('LoggingMode', 'on', 'DataTypeOverride', 'ForceOff');%創建fipref對象打開記錄

y = filter(Hf2, x);

fipref('LoggingMode', 'off');

R1 = qreport(Hf2)%查看報告,報告最近的頂點濾波計算報告

figure;plot(y);title('定點化濾波信號分離測試')

屏幕剪輯的捕獲時間: 2011/9/5 21:39

屏幕剪輯的捕獲時間: 2011/9/5 21:39

通過上面的報告和濾波結果觀察可以看出,定點化達到了效果。這就為后面HDL代碼生成做好基本的準備。

總結:

通過上面的例子,可以得知使用面向對象方式實現定點化是一個更優秀的方式。根據測試的激勵可以自動調整濾波器的精度以達到不同的動態范圍,達到精度和動態范圍(過小會引起溢出)的權衡,那么也就看出合適的測試激勵的重要性。這種濾波器的定點化方法對IIR濾波器的定點化優勢尤其明顯。這里先不介紹,由于IIR的定點化有時比較復雜,放到后面多帶帶討論。

所以建議親自試試使用fdesign的方式。

總結

以上是生活随笔為你收集整理的matlab浮点转定点的函数,FPGA基础知识17(Matlab中滤波器的定点化 浮点运算转换为定点运算)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。