DSP與STM32大PK


1.FPGA:是可編程邏輯陣列,常用於處理高速數字信號,不過隨着科技的發展,現在很多FPGA CPLD可以集成mcu內核,甚至具備了ARM DSP的功能  
2.ARM,是一類內核的稱謂,就像51一樣,具體到芯片的話,會有很多不同的廠家不同等級,諸如三星、易法、飛利浦、摩托羅拉等等,其中STM32是易法半導體的一款面向工控低功耗內核為Cortex M3內核的ARM芯片  
3.DSP顧名思義就是數字信號處理,廠家主要是德州儀器(TI)主要用於數字型號處理等對運算速度有特殊要求的場合,諸如音頻視頻算法,軍工等領域,但同時dsp有2000 5000 6000等系列也可滿足不場合需要

1.FPGA一般不會用來做復雜的系統,只用來做些簡單的系統如狀態機實現的自動售貨機...展開>等,多少還是用來做信號的高速變換和處理,畢竟它只是可編程邏輯陣列。  
2.ARM和DSP就各有千秋了;  
ARM的系列從V3 V5 V7 V9 XSCALE,從thumb指令到arm指令(thumb arm也可同時實現),可以說遍布機會所有的領域,只要你接的價格可以接受(其實許多arm並不是很貴的),單片機所有的功能基本他都能實現,我就不用舉例子,特別是現在與各種RTOS結合更是開發方便功能強大。  
DSP相對arm價格要貴些,這也是可能個體廠家使用較少的一個原因吧,2000系列主要用於工控特別是2812這個用的人比較多,5000 6000主要用於手持設備、PDA、通信等領域; 
DSP還有一個特色就是對一些特殊算法的支持如快速福利葉變換等,所以對運算速度有特殊要求的場合一般會選擇DSP; 
DSP因其性能和功能比較好,還廣泛用於軍工領域!

 
 
關於DSP和普通51 AVR還有STM32的區別
     DSP是為運算而生的 芯片,他最強大的地方就在與它的數**算性能,那是由它的指令集支持的。那些拿DSP和STM32比較的,省省吧,如果你兩者都熟悉你就知道根本沒啥好比的,
     如果我需要很多高級的接口,比如以太網和USB,那么我自然選STM32,如果我需要實現一些算法,那肯定會選DSP。如果你對運算速度不敏感,反正72M的速度已經比原先 單片機快很多了,那當然是看你熟悉哪個,哪個價格比較好,支持比較好。
     從51 AVR到DSP最大的障礙
  1、應該是編譯環境吧,TI的DSP都用的是CCS,CCS界面和原先IAR區別不是一般的大,比如程序導入,比如觀察變量,比如燒寫FLASH。恩,是的。用過了IAR那種傻瓜化的操作了之后,真是怎么弄怎么別扭,CCS真是太不友好了。但是沒辦法,IAR他們是專門做編譯軟件的,TI主要是做DSP的,TI也意識到這個問題了,所以現在推出的CCSV4好像在這方面有很大的加強。不過網上還是CCS3.3的資料最多,大家也熟悉,如果剛接觸還是先用CCS3.3為好。
如果你手頭有快 開發板,那里面應該有對這些操作的詳細說明。所以這個慢慢應該也可以熟悉。

  2、庫文件。TI的庫文件都是聯合+結構+位域的形式。對這些結構不是非常熟悉的話可能看着有點暈,這個只能慢慢去看C的書。最納悶的可能就是它的地址映射,如何把寄存器映射到相應的地址,那是它由編譯器來支持的主要通過#PROGRM來實現,可以去看看它的CMD文件

  3、CMD,CMD文件可能是入門最大的一個坎了,單片機或者 ARM根本就沒這么一說,這破東西到底啥用吶?CMD文件主要作用就是用來做內存分配,你的芯片里面有FLASH有RAM有BOOT ROM,你編寫的程序有代碼,要燒到FLASH中,有全局變量要存到RAM的全局變量區域,有局部變量,要存到堆棧中。CDM文件其實就是把你代碼中的這些一塊一塊的東西和具體的硬件存儲對應起來。你可以隨你需要任意來配置,比如我有一個數據表格,普通的單片機你定義好了之后會有編譯器來幫你存放到一個地方,但是DSP里面你可以通過配置CMD把它放在你認為合適的地方。再比如堆棧空間的大小,以前從來沒關心過堆棧大小,但是開辟的太大的話可能浪費內存空間。當然,每個芯片都有一個標准的CMD文件,初學者完全可以不用去修改它。

  4、文檔。TI的文檔包括數據手冊和外設指南,很多人說很亂,不像其它芯片,所有外設的資料都會放在一起,但是TI會每個外設弄一個。這就要說說TI的外設,它的外設都非常專業,是的專業。比如它的PWM外設,叫ePWM,也就是增強型的PWM,這個外設可以輕松輸出非常復雜的PWM波形,而且不用CPU參與。所以它的外設指南有100多頁,你會發現很多外設都是這樣,里面有很多很多增強的功能,相對應的它的說明文檔也就非常長。要是全部都集合在一起那就會非常的大。而且它的每個外設都是有獨立版本的,比如ADC,已經從0版到3版,而ePWM還是1版,分開之后升級的維護會方便很多,很多外設在類似的芯片都是一樣的。

  用STM32的時候我從來沒看懂過它的庫,甚至都沒仔細看過它的手冊。但是最后也搞出來了,完了之后我對這塊芯片沒多少熟悉的感覺。但是用C2000系列的DSP的時候則要反反復復的去看外設指南,分析手冊上給出的結構,讓我對芯片非常熟悉,再加上它的編譯環境是完全可以配置的,我甚至都知道我某個變量會在哪個地方。
  工業控制與自動化, 這個按21IC的網友說:“那是萬精油”面很廣。。。!

  芯片只是個軀殼。 重要的是專業知識和算法。TI的DSP 性能質量穩定可靠。 讓你用的放心。
  而STM32, 有許多未知的因素,比如BUG,可靠性等等,  如果樓主的產品價錢利潤高,當然使用TI的DSP或者MICROCHIP的DSPIC.咱們不用太擔心 芯片的質量問題,芯片的BUG/抗干擾等等。。。
  TI的DSP有些地方做的比STM32專業好多。例如可靠性,TI的DSP的許多寄存器有寫保護功能,因此對某些從引腳等干擾芯片內部寄存器/改寫內部寄存器等嚴重問題,會有很大幫助。但是STM32沒有這個功能。還有TI在DSP在電機控制控制方面做得很專業,PWM部件的功能,比如死區,輸入保護,PWM脈沖的特殊波形等方面都有獨到的地方。
      而STM32 還是顯得比較嫩。 TI多年前都專門有虛擬浮點庫給定點的DSP使用。也是最找出浮點DSC的廠家。  28335比STM32F4早了3-4年推出市場。
  而且TI 還出了一個芯片內包括兩個核心:ARM7/CM3+DSP的控制器。還有多通道同時采樣轉換的ADC , TI在醫學/電力 電子與新能源方面的應用等都可以看出 TI比ST公司專業很多。更知道咱們需要什么。
  但對於咱們使用者來說,如果是中檔路線或民用的工業產品,或者對成本比較敏感的產品,當然要STM32之類的了。作為工程師,可以快速使用多種芯片,這個是必須的。
  用STM32的好處是, 芯片可以前后呼應, 有ARM7,ARM9, CORTEX-M/A等等。一系列的產品。從低到高,功能外設都很強大,可以承前啟后的。如果是作為學習,我建議樓主用STM32來入門。
 
 
*********************************************************************************************************************************************************************************************************************************************************************************************
 
 就電機控制而言,你怎么就覺得STM32的功能更強大呢?我從datasheet來看,dsPIC和STM32F4xx其實半斤八兩,只是Microchip已經在這個行業混了很久了,各種應用手冊相對ST的來說要多些。不用DSP,你會很累的。
        另外,注意的是,現在市面上很流行的STM32都是不帶DSP功能的STM32F1xx系列。而帶DSP和浮點運算的STM32F4系列才是面向電機控制的產品。但這個東西比較新,如果有什么BUG或有什么問題你現在在網上不一定有人幫你解決。除非你要的量比較大,可以讓ST的FAE來幫你搞定。
        其實做電機控制,我優先推薦:1:TI的C2XXX系列;2:Microchip的dsPIC系列。
 
        如果你做的項目中包含多種保護的話,外擴CPLD是一個推薦的方式。如果你只是想做三閉環PID控制,之前推薦的C2000 DSP基本是較好的選擇,這是硬件層面上的考慮。題外話,無刷控制難度在於控制算法的選擇,工業控制領域以PID見廣,如果是學校做項目的話不妨研究幾種較為前沿的控制算法。
        STM32做電機控制?可能有點偏頗。小型集成無刷直流電機控制用DSP+FPGA也是有點誇張了。
        推薦下簡單的做法,TI:TMS320F28335;如果你想要有更高大上的玩法:TI:TMS320F28377D,雙核浮點,做無刷控制無壓力。
 
 
*********************************************************************************************************************************************************************************************************************************************************************************************
 
 
常所說的單片機側重於控制,不支持信號處理,屬於低端嵌入式處理器,arm可以看做是低端單片機升級版,支持操作系統管理,更多接口如網卡,處理能力更強;fpga是可編程邏輯器件,側重時序,可構建從小型到大型的幾乎所有數字電路系統,DSP主要完成復雜的數字信號處理,如fft,通常一個復雜系統可以由單片機、arm、FPGA、dsp中的一種或幾種構成,各有優勢和不足。

    dsp通常用於運算密集型,fpga用於控制密集型,許多人都用dsp高算法,用fpga作外圍控制電路。

    去年xilinx在北京介紹FPGA和DSP融合的時候,大有席卷DSP和FPGA市場之勢。但后來在實際中發現其阻力也是不小的,關鍵是很難搭配FPGA和DSP的比重。我們知道FPGA擅長各種控制(也包括適時性非常高的信號處理如移動通信中基帶濾波,該濾波用C5000,C6000很難勝任,除非多芯片並行),DSP擅長各種信號處理運算,但在一個系統中究竟有多大的控制電路,有多少密集運算?變數是很大的,我們不可能用一個芯片解決這個問題。對於運算密集性系統,我們如果使用這種芯片的話很有可能還要其他DSP,那么我們需要了解多種DSP編程和接口設計,這是否與我們的初衷背道而馳呢?

    上面都是一些基本概念的介紹,下面我就來通俗介紹一下,在DSP里,你是一個軟件設計者,硬件已經完全固化,你所要做的,就是在這個固定的硬件平台實現其功能的最優化,一般TI的DSP涉及最多的是一些基本的BIOS操作系統之間的任務調度,以及算法改進與優化等待,DSP的關鍵優勢包括其對於新型及復雜算法時的更短的開發時間,以及能夠運行多種算法的靈活性。

    而對於FPGA來說,你是一個硬件設計者,FPGA就是一張白紙,上面寫什么,畫什么都取決於你。同樣一片FPGA,菜鳥和高手實現的功能會是天壤之別,FPGA的最大優勢在於硬件實現已及通過並行處理實現的效率增益。使用FPGA,您大多的時間並非進行算法設計與優化,而是邏輯設計與時序約束等等。

    FPGA與DSP關系:

    1、DSP側重於核心算法處理,FPGA側重於外圍控制處理。

    2、DSP內是用C語言編寫,語言執行是串行處理,效率比較低。

    FPGA側重於並行處理,效率較高;還有交合邏輯(外圍接口、通訊等);

    FPGA發展領域:

    使用領域:電子設計、通訊、汽車、軍工

    不適合:消費類產品(手機)—FPGA功耗高;

    FPGA技術難點:

    1、需要專門的硬件語言來開發

    2、FPGA靈活性比較高,設計是由工程師來決定,需要測試驗證

 

 

****************************************************************************************************************************************************************************************************************************

 

1.內容概要
信號處理系統一般不單單是模擬信號或者數字信號,一般兩者都會有。信號的處理關注的是信號以及信號所包含的信息的表示、變換及運算。

 

圖1 典型的數字信號處理系統

 

1>模擬信號(analog signal)的輸入一般包括(聲、電、光、熱等)模擬的連續信號;
2>模擬信號抗混疊(anti-aliasing filter)希望分開兩個或多個混疊在一起的信號,或者增強某些信號;
3>AD將模擬信號轉換成數字信號;
4>DSP/FPGA/ARM/MPU數字信號處理。
整個系統分為三個域,從模擬到數字,再到數字信號處理,再到數字變模擬。
數字信號處理一般所研究的內容涉及采樣、濾波、變換、檢測、譜分析、估計、壓縮以及識別等;數字信號處理的理論和算法是密不可分的;相對於模擬信號系統處理,數字信號處理體積小、功耗低、精度高、易於大規模集成以及可進行二維以及多維處理等優勢。

數字信號處理系統的性能取決於三個因素:采樣頻率、架構和字長。

 

2.典型處理器對比
DSP芯片,也稱數字信號處理器,是一種特別適合於進行數字信號處理運算的微處理器,其主要應用是實時快速地實現各種數字信號處理算法。根據數字信號處理的要求,DSP芯片一般具有如下主要特點:
(1)在一個指令周期內可完成一次乘法和一次加法;
(2)程序和數據空間分開,可以同時訪問指令和數據;
(3)片內具有快速RAM,通常可通過獨立的數據總線在兩塊中同時訪問;
(4)具有低開銷或無開銷循環及跳轉的硬件支持;
(5)快速的中斷處理和硬件I/O支持;
(6)具有在單周期內操作的多個硬件地址產生器;
(7)可以並行執行多個操作;
(8)支持流水線操作,使取指、譯碼和執行等操作可以重疊執行。
當然,與通用微處理器相比,DSP芯片的其他通用功能相對較弱些。
MPU(Microprocessor Unit)微處理器
微機中的中央處理器(CPU)稱為微處理器(MPU),是構成微機的核心部件,也可以說是微機的心臟。它起到控制整個微型計算機工作的作用,產生控制信號對相應的部件進行控制,並執行相應的操作。
微處理器的功能結構主要包括:運算器、控制器、寄存器三部分:
運算器的主要功能就是進行算術運算和邏輯運算。
控制器是整個微機系統的指揮中心,其主要作用是控制程序的執行。包括對指令進行譯碼、寄存,並按指令要求完成所規定的操作,即指令控制、時序控制和操作控制。
寄存器用來存放操作數、中間數據及結果數據。
FPGA 具有規則的可編程結構,可實現各種邏輯功能。
1>運算能力強,並行能力強。
2>設計過程中具有很大的靈活性。

3>通過集成可以降低系統成本。

 

3. 混合系統

圖2 FPGA作為協處理系統



 
圖3 FPGA作為預處理系統

 

圖4 FPGA+DSPs+ARM的數字信號處理系統

 

如圖2、3和4數字信號處理系統,在不同的情況下我們可以采用不同的系統,具體根據芯片各自的優勢來選擇不同的系統。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM