以MCS51為內核構造的單片集成系統
2.1 數據截取
根據抽樣速率和DTMG占空比及持續時間,可以對接收的數據進行截斷。根據FFT的要求,前后兩段數據之間應該有一定長度的公共部分。計算出截新的數據幀的長度為128字。為了減少面積,我們比較了幾個方案。在不會出現溢出的情況下,最后采取了圖4所示的設計方案。 數據讀取時,為了保證每次數據讀取時與前后兩段都有32字的公共部分,第一次從讀數據段1中讀出160字的數據,其前32字的數據為上一幀數據的最后32字的數據;下一次在讀數據段2中讀出160字的數據,然后兩個數據段讀出數據前后之間都有32字的共有數據。 2.2 DTMF解碼 對于DTMF解碼中用到的FFT,我們采用經典的Goertzel算法。其思想是利用簡單的遞歸運算代替復雜的FFT運算,且只需要計算幾個頻率占上的值,大大簡化了計算量,通過比較幾個頻率點上數值的大小和判斷占空時間,就可確定發送的DTMG頻率組合。為了減少設計中用到的乘法驗證,在滿足通信標準的前提下,將寬度降到12位。Goertzel算法的計算公式如下: 結語 該系統是一個典型的以MCS51為核心。加、DTMG以及門控時鐘等外圍電路組成的控制系統。我們采用自頂向下的設計方法。系統中所有功能模塊均采用VHDL語言進行描述;用FPGA實現的集成系統替換原來的系統通過了功能測試。不但在可靠性上得到了提高,而且滿足芯片面積的要求,達到降低成本的目的。
數據截取由一個256字的雙口RAM完成。復位時,對前32字清零。A/D采樣的數據幀先放到寫數據段1中,再放到寫數據段2中,按照寫數據段1和寫數據段2交替寫入數據。在每次寫完一個數據段之后,產生一個數據改變脈沖。用來表明已完成1幀數據,可以進行數據讀取,從而啟動數據讀取操作。
評論