浮點程序已經給出了,那么定點程序會是什么樣子呢?為什么要進行定點仿真呢?這是產品的要求!很多產品中用于實現算法的器件都會是FPGA或者DSP,在這些器件中,定點運算是絕對的主流!定點運算的性能不會比浮點差多少,但速度會快太多。因此浮點運算自然需要轉換為定點運算!如何轉換?確實包含很多原則和技巧!本文內容會特別的多,請大家耐心看完!
如何將定點數轉換為浮點數?通過量化!量化過程有技巧嗎?當然,后續慢慢講。此時第一步就是需要考慮器件的性能,然后決定量化的位數!不過在講定點程序之前還是先帶著大家熟悉一下指數濾波器的相關性能!怎么看性能?通過仿真來了解最直觀!
DSP處理器有定點型和浮點型之分。針對定點型DSP處理器,為了提高DSP運算速度,需要將浮點型參數轉化成定點型參數,同時還要考慮精度問題。采用定點數進行數值運算,其操作數一般采用整型數來表示。一個整型數的最大表示范圍取決于運算芯片所給定的字長。
字長越長,所能表示的數的范圍越大,精度也越高。matlab軟件里面也有字長的概念!在FPGA中,參與運算的數以二進制補碼形式表示。比如設定數的字長為16位。每個16位數用一個符號位來表示數的正負,0表示數值為正,1則表示數值為負。其余15位表示數值的大小。
參與數值運算的數為16位的整型數。但在許多情況下,數學運算過程中的數不一定都是整數。定點芯片本身無法處理小數,必須是由程序員來確定一個數的小數點處于16位中的哪一位。這就是數的定標!通過設定小數點在16位數中的不同位置,就可以表示不同大小和不同精度的小數。所以浮點轉定點的關鍵是定標和截位操作!
我們在編寫DSP浮點算法時,一般都是采用高級語言(如C語言或者matlab語言)來編寫浮點程序。程序中所用的變量一般既有整型數,又有浮點數。后來我都用matlab來寫定點程序,效果是一樣的。不過自己的c編程能力后來就慢慢退化了。
先看指數濾波器的程序,然后再學習AGC的定點程序!
指數濾波器也能濾除噪聲!但是什么樣的噪聲呢?白噪聲!再來看定點的AGC程序吧!這是之前工作時候寫的程序!沒有改動!這個定點程序能用在QAM接收機中,不能用于短波接收機中!為什么呢?后續文章再講解!當年研制完短波電臺后,我整整休整了一個星期,太累了。用腦過度,一時很難緩的過來!
%%%%%%% File: FixpointAGC_test_rel1.m %%%%%%
%%%%%%%% date: 2008-08-07 %%%%%%%%
%%%%% 目的
% 在程序DigitalAGC_test_rel1改進成定點優化的程序。
編輯:jq
-
dsp
+關注
關注
553文章
8005瀏覽量
348999 -
FPGA
+關注
關注
1629文章
21742瀏覽量
603537 -
濾波器
+關注
關注
161文章
7822瀏覽量
178162 -
C語言
+關注
關注
180文章
7605瀏覽量
136887
原文標題:大學畢業設計一席談之二十二 數字AGC的matlab仿真(3)
文章出處:【微信號:gh_30373fc74387,微信公眾號:通信工程師專輯】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論