亚洲熟妇av一区二区三区,久久久久久精品观看sss,免费观看四虎精品国产永久,国产成人精品一区二三区熟女,天堂网在线最新版www资源网

單片機(jī)、DSP、ARM、FPGA區(qū)別(單片機(jī),dsp,fpga,arm哪個(gè)好)

概述

首先,“嵌入式”這是個(gè)概念,準(zhǔn)確的定義沒(méi)有,各個(gè)書上都有各自的定義。但是主要思想是一樣的,就是相比較PC機(jī)這種通用系統(tǒng)來(lái)說(shuō),嵌入式系統(tǒng)是個(gè)專用系統(tǒng),結(jié)構(gòu)精簡(jiǎn),在硬件和軟件上都只保留需要的部分,而將不需要的部分裁去。所以嵌入式系統(tǒng)一般都具有便攜、低功耗、性能單一等特性。

然后,mcu、DSP、FPGA這些都屬于嵌入式系統(tǒng)的范疇,是為了實(shí)現(xiàn)某一目的而使用的工具。

MCU俗稱”單片機(jī)“經(jīng)過(guò)這么多年的發(fā)展,早已不單單只有普林斯頓結(jié)構(gòu)的51了,性能也已得到了很大的提升。因?yàn)镸CU必須順序執(zhí)行程序,所以適于做控制,較多地應(yīng)用于工業(yè)。而ARM本是一家專門設(shè)計(jì)MCU的公司,由于技術(shù)先進(jìn)加上策略得當(dāng),這兩年單片機(jī)市場(chǎng)份額占有率巨大。

ARM的單片機(jī)有很多種類,從低端M0(小家電)到高端A8、A9(手機(jī)、平板電腦)都很吃香,所以也不是ARM的單片機(jī)一定要上系統(tǒng),關(guān)鍵看應(yīng)用場(chǎng)合。

DSP叫做數(shù)字信號(hào)處理器,它的結(jié)構(gòu)與MCU不同,加快了運(yùn)算速度,突出了運(yùn)算能力??梢园阉闯梢粋€(gè)超級(jí)快的MCU。低端的DSP,如C2000系列,主要是用在電機(jī)控制上,不過(guò)TI公司好像稱其為DSC(數(shù)字信號(hào)控制器)一個(gè)介于MCU和DSP之間的東西。高端的DSP,如C5000/C6000系列,一般都是做視頻圖像處理和通信設(shè)備這些需要大量運(yùn)算的地方。

FPGA叫做現(xiàn)場(chǎng)可編程邏輯陣列,本身沒(méi)有什么功能,就像一張白紙,想要它有什么功能完全靠編程人員設(shè)計(jì)(它的所有過(guò)程都是硬件,包括VHDL和Verilog HDL程序設(shè)計(jì)也是硬件范疇,一般稱之為編寫“邏輯”。)。

如果你夠NB,你可以把它變成MCU,也可以變成DSP。由于MCU和DSP的內(nèi)部結(jié)構(gòu)都是設(shè)計(jì)好的,所以只能通過(guò)軟件編程來(lái)進(jìn)行順序處理,而FPGA則可以并行處理和順序處理,所以比較而言速度最快。

**那么為什么MCU、DSP和FPGA會(huì)同時(shí)存在呢?**那是因?yàn)镸CU、DSP的內(nèi)部結(jié)構(gòu)都是由IC設(shè)計(jì)人員精心設(shè)計(jì)的,在完成相同功能時(shí)功耗和價(jià)錢都比FPGA要低的多。而且FPGA的開發(fā)本身就比較復(fù)雜,完成相同功能耗費(fèi)的人力財(cái)力也要多。

**所以三者之間各有各的長(zhǎng)處,各有各的用武之地。**但是目前三者之間已經(jīng)有融合的態(tài)勢(shì),ARM的M4系列里多加了一個(gè)精簡(jiǎn)的DSP核,TI的達(dá)芬奇系列本身就是ARM DSP結(jié)構(gòu),ALTERA和XINLIX新推出的FPGA都包含了ARM的核在里面。所以三者之間的關(guān)系是越來(lái)越像三基色的三個(gè)圓了。

一言以蔽之“你中有我,我中有你”。

硬件工程師學(xué)習(xí)從何開始?

  • 單片機(jī):通常無(wú)操作系統(tǒng),用于簡(jiǎn)單的控制,如電梯,空調(diào)等。
  • dsp:用于復(fù)雜的計(jì)算,像離散余弦變換、快速傅里葉變換,常用于圖像處理,在數(shù)碼相機(jī)等設(shè)備中使用。
  • arm:一個(gè)英國(guó)的芯片設(shè)計(jì)公司,但是不生產(chǎn)芯片。只賣知識(shí)產(chǎn)權(quán)。
  • fpga:現(xiàn)場(chǎng)可編程門陣列,以硬件描述語(yǔ)言(Verilog 或 VHDL)所完成的電路設(shè)計(jì),可以經(jīng)過(guò)簡(jiǎn)單的綜合與布局,快速的燒錄至 FPGA 上進(jìn)行測(cè)試,是現(xiàn)代 IC 設(shè)計(jì)驗(yàn)證的技術(shù)主流。
  • 嵌入式 是相對(duì)于臺(tái)式電腦而言,系統(tǒng)可裁剪,形態(tài)各異,可能體積、功耗、成本受限、實(shí)時(shí)性要求高,如示波器,手機(jī),平板電腦,全自動(dòng)洗衣機(jī),路由器、數(shù)碼相機(jī),這些設(shè)備中,雖然看不到臺(tái)式機(jī)的存在,但是都有一個(gè)或多個(gè)嵌入式系統(tǒng)在工作。

根據(jù)對(duì)象體系的功能復(fù)雜性和計(jì)算處理復(fù)雜性,提供的不同選擇。對(duì)于簡(jiǎn)單的家電控制嵌入式系統(tǒng),采用簡(jiǎn)單的8位單片機(jī)就足夠了,價(jià)廉物美,對(duì)于手機(jī)和游戲機(jī)等,就必須采用32位的ARM和DSP等芯片了。FPGA是一種更偏向硬件的實(shí)現(xiàn)方式。

所以要通過(guò)學(xué)習(xí)成為硬件工程師,要從單片機(jī)開始,然后學(xué)習(xí)ARM和DSP之類。

市面上七大主流單片機(jī)的詳細(xì)介紹

單片機(jī)現(xiàn)在可謂是鋪天蓋地,種類繁多,讓開發(fā)者們應(yīng)接不暇,發(fā)展也是相當(dāng)?shù)难杆?,從上世紀(jì)80年代,由當(dāng)時(shí)的4位8位發(fā)展到現(xiàn)在的各種高速單片機(jī)。

各個(gè)廠商們也在速度、內(nèi)存、功能上此起彼伏,參差不齊~~同時(shí)涌現(xiàn)出一大批擁有代表性單片機(jī)的廠商:Atmel、TI、ST、MicroChip、ARM…國(guó)內(nèi)的宏晶STC單片機(jī)也是可圈可點(diǎn)…

下面為大家?guī)?lái)51、MSP430、TMS、STM32、PIC、AVR、STC單片機(jī)之間的優(yōu)缺點(diǎn)比較及功能體現(xiàn)……

51單片機(jī)

單片機(jī)、DSP、ARM、FPGA區(qū)別(單片機(jī),dsp,fpga,arm哪個(gè)好)

應(yīng)用最廣泛的8位單片機(jī)當(dāng)然也是初學(xué)者們最容易上手學(xué)習(xí)的單片機(jī),最早由Intel推出,由于其典型的結(jié)構(gòu)和完善的總線專用寄存器的集中管理,眾多的邏輯位操作功能及面向控制的豐富的指令系統(tǒng),堪稱為一代“經(jīng)典”,為以后的其它單片機(jī)的發(fā)展奠定了基礎(chǔ)。

51單片機(jī)之所以成為經(jīng)典,成為易上手的單片機(jī)主要有以下特點(diǎn):

特性:

  • 從內(nèi)部的硬件到軟件有一套完整的按位操作系統(tǒng),稱作位處理器,處理對(duì)象不是字或字節(jié)而是位。不但能對(duì)片內(nèi)某些特殊功能寄存器的某位進(jìn)行處理,如傳送、置位、清零、測(cè)試等,還能進(jìn)行位的邏輯運(yùn)算,其功能十分完備,使用起來(lái)得心應(yīng)手。
  • 同時(shí)在片內(nèi)RAM區(qū)間還特別開辟了一個(gè)雙重功能的地址區(qū)間,使用極為靈活,這一功能無(wú)疑給使用者提供了極大的方便,
  • 乘法和除法指令,這給編程也帶來(lái)了便利。很多的八位單片機(jī)都不具備乘法功能,作乘法時(shí)還得編上一段子程序調(diào)用,十分不便。

缺點(diǎn):(雖然是經(jīng)典但是缺點(diǎn)還是很明顯的)

  • AD、EEPROM等功能需要靠擴(kuò)展,增加了硬件和軟件負(fù)擔(dān)
  • 雖然I/O腳使用簡(jiǎn)單,但高電平時(shí)無(wú)輸出能力,這也是51系列單片機(jī)的最大軟肋
  • 運(yùn)行速度過(guò)慢,特別是雙數(shù)據(jù)指針,如能改進(jìn)能給編程帶來(lái)很大的便利
  • 51保護(hù)能力很差,很容易燒壞芯片

應(yīng)用范圍:

  • 目前在教學(xué)場(chǎng)合和對(duì)性能要求不高的場(chǎng)合大量被采用
  • 使用最多的器件:8051、80C51

MSP430單片機(jī)

單片機(jī)、DSP、ARM、FPGA區(qū)別(單片機(jī),dsp,fpga,arm哪個(gè)好)

MSP430系列單片機(jī)是德州儀器1996年開始推向市場(chǎng)的一種16位超低功耗的混合信號(hào)處理器,給人們留下的最大的亮點(diǎn)是低功耗而且速度快,匯編語(yǔ)言用起來(lái)很靈活,尋址方式很多,指令很少,容易上手。

主要是由于其針對(duì)實(shí)際應(yīng)用需求,把許多模擬電路、數(shù)字電路和微處理器集成在一個(gè)芯片上,以提供“單片”解決方案。其迅速發(fā)展和應(yīng)用范圍的不斷擴(kuò)大,主要取決于以下的特點(diǎn)…

特性:

  • **強(qiáng)大的處理能力,**采用了精簡(jiǎn)指令集(RISC)結(jié)構(gòu),具有豐富的尋址方式( 7 種源操作數(shù)尋址、 4 種目的操作數(shù)尋址)、簡(jiǎn)潔的 27 條內(nèi)核指令以及大量的模擬指令;大量的寄存器以及片內(nèi)數(shù)據(jù)存儲(chǔ)器都可參加多種運(yùn)算;還有高效的查表處理指令;有較高的處理速度,在 8MHz 晶體驅(qū)動(dòng)下指令周期為 125 ns 。這些特點(diǎn)保證了可編制出高效率的源程序
  • 運(yùn)算速度方面,能在 8MHz 晶體的驅(qū)動(dòng)下,實(shí)現(xiàn) 125ns 的指令周期。16 位的數(shù)據(jù)寬度、 125ns 的指令周期以及多功能的硬件乘法器(能實(shí)現(xiàn)乘加)相配合,能實(shí)現(xiàn)數(shù)字信號(hào)處理的某些算法(如 FFT 等)。
  • 超低功耗方面,MSP430 單片機(jī)之所以有超低的功耗,是因?yàn)槠湓诮档托酒碾娫措妷杭办`活而可控的運(yùn)行時(shí)鐘方面都有其獨(dú)到之處。電源電壓采用的是 1.8~3.6V 電壓。因而可使其在 1MHz 的時(shí)鐘條件下運(yùn)行時(shí), 芯片的電流會(huì)在 200~400uA 左右,時(shí)鐘關(guān)斷模式的最低功耗只有 0.1uA

缺點(diǎn):

  • 個(gè)人感覺不容易上手,不適合初學(xué)者入門,資料也比較少,只能***網(wǎng)去找
  • 占的指令空間較大,因?yàn)槭?6位單片機(jī),程序以字為單位,有的指令竟然占6個(gè)字節(jié)。雖然程序表面上簡(jiǎn)潔, 但與PIC單片機(jī)比較空間占用很大

應(yīng)用范圍:

  • 在低功耗及超低功耗的工業(yè)場(chǎng)合應(yīng)用的比較多
  • 使用最多的器件:MSP430F系列、MSP430G2系列、MSP430L09系列

TMS單片機(jī)

單片機(jī)、DSP、ARM、FPGA區(qū)別(單片機(jī),dsp,fpga,arm哪個(gè)好)

這里也提一下TMS系列單片機(jī),雖不算主流。由TI推出的8位CMOS單片機(jī),具有多種存儲(chǔ)模式、多種外圍接口模式,適用于復(fù)雜的實(shí)時(shí)控制場(chǎng)合。雖然沒(méi)STM32那么優(yōu)秀,也沒(méi)MSP430那么張揚(yáng),但是TMS370C系列單片機(jī)提供了通過(guò)整合先進(jìn)的外圍功能模塊及各種芯片的內(nèi)存配置,具有高性價(jià)比的實(shí)時(shí)系統(tǒng)控制。

同時(shí)采用高性能硅柵CMOS EPROM和EEPROM技術(shù)實(shí)現(xiàn)。低工作功耗CMOS技術(shù),寬工作溫度范圍,噪聲抑制,再加上高性能和豐富的片上外設(shè)功能,使TMS370C系列單片機(jī)在汽車電子,工業(yè)電機(jī)控制,電腦,通信和消費(fèi)類具有一定的應(yīng)用。

STM32單片機(jī)

單片機(jī)、DSP、ARM、FPGA區(qū)別(單片機(jī),dsp,fpga,arm哪個(gè)好)

由ST廠商推出的STM32系列單片機(jī),行業(yè)的朋友都知道,這是一款性價(jià)比超高的系列單片機(jī),應(yīng)該沒(méi)有之一,功能及其強(qiáng)大。其基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計(jì)的ARM Cortex-M內(nèi)核。

同時(shí)具有一流的外設(shè):1μs的雙12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,在功耗和集成度方面也有不俗的表現(xiàn),當(dāng)然和MSP430的功耗比起來(lái)是稍微遜色的一些,但這并不影響工程師們對(duì)它的熱捧程度,由于其簡(jiǎn)單的結(jié)構(gòu)和易用的工具再配合其強(qiáng)大的功能在行業(yè)中赫赫有名…

特性:

  • 內(nèi)核:?jiǎn)沃芷诔朔ê陀布?/span>
  • 存儲(chǔ)器:片上集成32-512KB的Flash存儲(chǔ)器。6-64KB的SRAM存儲(chǔ)器
  • 時(shí)鐘、復(fù)位和電源管理:2.0-3.6V的電源供電和I/O接口的驅(qū)動(dòng)電壓。POR、PDR和可編程的電壓探測(cè)器(PVD)。4-16MHz的晶振。內(nèi)嵌出廠前調(diào)校的8MHz RC振蕩電路。內(nèi)部40 kHz的RC振蕩電路。用于CPU時(shí)鐘的PLL。帶校準(zhǔn)用于RTC的32kHz的晶振
  • 調(diào)試模式:串行調(diào)試(SWD)和JTAG接口。最多高達(dá)112個(gè)的快速I/O端口、最多多達(dá)11個(gè)定時(shí)器、最多多達(dá)13個(gè)通信接口
  • 使用最多的器件:STM32F103系列、STM32 L1系列、STM32W系列

PIC單片機(jī)

單片機(jī)、DSP、ARM、FPGA區(qū)別(單片機(jī),dsp,fpga,arm哪個(gè)好)

PIC單片機(jī)系列是美國(guó)微芯公司(Microship)的產(chǎn)品,共分三個(gè)級(jí)別,即基本級(jí)、中級(jí)、高級(jí),是當(dāng)前市場(chǎng)份額增長(zhǎng)最快的單片機(jī)之一,CPU采用RISC結(jié)構(gòu),分別有33、35、58條指令,屬精簡(jiǎn)指令集。

同時(shí)采用Harvard雙總線結(jié)構(gòu),運(yùn)行速度快,它能使程序存儲(chǔ)器的訪問(wèn)和數(shù)據(jù)存儲(chǔ)器的訪問(wèn)并行處理,這種指令流水線結(jié)構(gòu),在一個(gè)周期內(nèi)完成兩部分工作,一是執(zhí)行指令,二是從程序存儲(chǔ)器取出下一條指令,這樣總的看來(lái)每條指令只需一個(gè)周期,這也是高效率運(yùn)行的原因之一,此外PIC單片機(jī)之所以成為一時(shí)非常熱的單片機(jī)不外乎以下特點(diǎn):

特點(diǎn):

  • 具有低工作電壓、低功耗、驅(qū)動(dòng)能力強(qiáng)等特點(diǎn)。PIC系列單片機(jī)的I/O口是雙向的,其輸出電路為CMOS互補(bǔ)推挽輸出電路。I/O腳增加了用于設(shè)置輸入或輸出狀態(tài)的方向寄存器,從而解決了51系列I/O腳為高電平時(shí)同為輸入和輸出的狀態(tài)。
  • 當(dāng)置位1時(shí)為輸入狀態(tài),且不管該腳呈高電平或低電平,對(duì)外均呈高阻狀態(tài);置位0時(shí)為輸出狀態(tài),不管該腳為何種電平,均呈低阻狀態(tài),有相當(dāng)?shù)尿?qū)動(dòng)能力,低電平吸入電流達(dá)25mA,高電平輸出電流可達(dá)20mA。相對(duì)于51系列而言,這是一個(gè)很大的優(yōu)點(diǎn)。
  • 它可以直接驅(qū)動(dòng)數(shù)碼管顯示且外電路簡(jiǎn)單。它的A/D為10位,能滿足精度要求。具有在線調(diào)試及編程(ISP)功能。

不足之處:

  • 其專用寄存器(SFR)并不像51系列那樣都集中在一個(gè)固定的地址區(qū)間內(nèi)(80~FFH),而是分散在四個(gè)地址區(qū)間內(nèi)。只有5個(gè)專用寄存器PCL、STATUS、FSR、PCLATH、INTCON在4個(gè)存儲(chǔ)體內(nèi)同時(shí)出現(xiàn),但是在編程過(guò)程中,少不了要與專用寄存器打交道,得反復(fù)地選擇對(duì)應(yīng)的存儲(chǔ)體,也即對(duì)狀態(tài)寄存器STATUS的第6位(RP1)和第5位(RP0)置位或清零。
  • 數(shù)據(jù)的傳送和邏輯運(yùn)算基本上都得通過(guò)工作寄存器W(相當(dāng)于51系列的累加器A)來(lái)進(jìn)行,而51系列的還可以通過(guò)寄存器相互之間直接傳送,因而PIC單片機(jī)的瓶頸現(xiàn)象比51系列還要嚴(yán)重,這在編程中的朋友應(yīng)該深有體會(huì)。
  • 使用最多的器件:PIC16F873、PIC16F877

AVR單片機(jī)

單片機(jī)、DSP、ARM、FPGA區(qū)別(單片機(jī),dsp,fpga,arm哪個(gè)好)

AVR單片機(jī)是Atmel公司推出的較為新穎的單片機(jī),其顯著的特點(diǎn)為**高性能、高速度、低功耗。**它取消機(jī)器周期,以時(shí)鐘周期為指令周期,實(shí)行流水作業(yè)。

AVR單片機(jī)指令以字為單位,且大部分指令都為單周期指令。而單周期既可執(zhí)行本指令功能,同時(shí)完成下一條指令的讀取。通常時(shí)鐘頻率用4~8MHz,故最短指令執(zhí)行時(shí)間為250~125ns。

特點(diǎn):

  • AVR系列沒(méi)有類似累加器A的結(jié)構(gòu),它主要是通過(guò)R16~R31寄存器來(lái)實(shí)現(xiàn)A的功能。在AVR中,沒(méi)有像51系列的數(shù)據(jù)指針DPTR,而是由X(由R26、R27組成)、Y(由R28、R29組成)、Z(由R30、R31組成)三個(gè)16位的寄存器來(lái)完成數(shù)據(jù)指針的功能(相當(dāng)于有三組DPTR)。
  • 而且還能作后增量或先減量等的運(yùn)行,而在51系列中,所有的邏輯運(yùn)算都必須在A中進(jìn)行;而AVR卻可以在任兩個(gè)寄存器之間進(jìn)行,省去了在A中的來(lái)回折騰,這些都比51系列出色些
  • AVR的專用寄存器集中在00~3F地址區(qū)間,無(wú)需像PIC那樣得先進(jìn)行選存儲(chǔ)體的過(guò)程,使用起來(lái)比PIC方便。AVR的片內(nèi)RAM的地址區(qū)間為0~00DF(AT90S2313) 和0060~025F(AT90S8515、AT90S8535),它們占用的是數(shù)據(jù)空間的地址,這些片內(nèi)RAM僅僅是用來(lái)存儲(chǔ)數(shù)據(jù)的,通常不具備通用寄存器的功能。
  • 當(dāng)程序復(fù)雜時(shí),通用寄存器R0~R31就顯得不夠用;而51系列的通用寄存器多達(dá)128個(gè)(為AVR的4倍),編程時(shí)就不會(huì)有這種感覺。
  • AVR的I/O腳類似PIC,它也有用來(lái)控制輸入或輸出的方向寄存器,在輸出狀態(tài)下,高電平輸出的電流在10mA左右,低電平吸入電流20mA。這點(diǎn)雖不如PIC,但比51系列還是要優(yōu)秀的…

缺點(diǎn):

  • 沒(méi)有位操作,都是以字節(jié)形式來(lái)控制和判斷相關(guān)寄存器位。
  • C語(yǔ)言與51的C語(yǔ)言在寫法上存在很大的差異,這讓從開始學(xué)習(xí)51單片機(jī)的朋友很不習(xí)慣。
  • 通用寄存器一共32個(gè)(R0~R31),前16個(gè)寄存器(R0~R15)都不能直接與立即數(shù)打交道,因而通用性有所下降。而在51系列中,它所有的通用寄存器(地址00~7FH)均可以直接與立即數(shù)打交道,顯然要優(yōu)于前者。
  • 使用最多的器件:ATUC64L3U、ATxmega64A1U、AT90S8515

STC單片機(jī)

說(shuō)到STC單片機(jī)有人會(huì)說(shuō)到,STC也能算主流,估計(jì)要被噴了~~我們基于它是國(guó)內(nèi)還算是比較不錯(cuò)的單片機(jī)來(lái)說(shuō)。

STC單片機(jī)是宏晶生產(chǎn)的單時(shí)鐘/機(jī)器周期的單片機(jī),說(shuō)白了STC單片機(jī)是51與AVR的結(jié)合體,有人說(shuō)AVR是51的替代單片機(jī),但是AVR單片機(jī)在位控制和C語(yǔ)言寫法上存在很大的差異。而STC單片機(jī)洽洽結(jié)合了51和AVR的優(yōu)點(diǎn),雖然功能不及AVR那么強(qiáng)大,但是在AVR能找到的功能,在STC上基本都有,同時(shí)STC單片機(jī)是51內(nèi)核,這給以51單片機(jī)為基礎(chǔ)的工程師們提供了極大的方便,省去了學(xué)習(xí)AVR的時(shí)間,同時(shí)也不失AVR的各種功能…

STC單片機(jī)是高速、低功耗、超強(qiáng)抗干擾的新一代8051單片機(jī)51單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8~12倍,內(nèi)部集成MAX810專用復(fù)位電路。4路PWM 、8路高速10位A、D轉(zhuǎn)換,針對(duì)電機(jī)電機(jī) 的供應(yīng)商控制,強(qiáng)干擾場(chǎng)合,成為繼51單片機(jī)后一個(gè)全新系列單片機(jī)…

特性:

  • 下載燒錄程序用串口方便好用,容易上手,擁有大量的學(xué)習(xí)資料及視頻,最著名的要屬于杜老師的那個(gè)視頻了,好多對(duì)單片機(jī)有興趣的朋友都是通過(guò)這個(gè)視頻入門的,同時(shí)具有寬電壓:5.5~3.8V,2.4~3.8V, 低功耗設(shè)計(jì):空閑模式,掉電模式(可由外部中斷喚醒)
  • STC單片機(jī)具有在應(yīng)用編程,調(diào)試起來(lái)比較方便;帶有10位AD、內(nèi)部EEPROM、可在1T/機(jī)器周期下工作,速度是傳統(tǒng)51單片機(jī)的8~12倍,價(jià)格也較便宜
  • STC12C2052AD系列為2通道,也可用來(lái)再實(shí)現(xiàn)4個(gè)定時(shí)器或4個(gè)外部中斷,2個(gè)硬件16位定時(shí)器,兼容普通8051的定時(shí)器。4路PCA還可再實(shí)現(xiàn)4個(gè)定時(shí)器,具有硬件看門狗、高速SPI通信端口、全雙工異步串行口,兼容普通8051的串口,同時(shí)還具有先進(jìn)的指令集結(jié)構(gòu),兼容普通8051指令集。
  • **PS:**STC單片機(jī)功能雖不及AVR、STM32強(qiáng)大,價(jià)格也不及51和ST32便宜,但是這些并并不重要,重要的是這屬于國(guó)產(chǎn)單片機(jī)比較出色的單片機(jī),但愿國(guó)產(chǎn)單片機(jī)能一路長(zhǎng)虹…
  • 使用最多的器件:STC12C2052AD

Freescale單片機(jī)

單片機(jī)、DSP、ARM、FPGA區(qū)別(單片機(jī),dsp,fpga,arm哪個(gè)好)

主要針對(duì)S08,S12這類單片機(jī),當(dāng)然Freescale單片機(jī)遠(yuǎn)非于此。Freescale系列單片機(jī)采用哈佛結(jié)構(gòu)和流水線指令結(jié)構(gòu),在許多領(lǐng)域內(nèi)都表現(xiàn)出低成本,高性能的的特點(diǎn),它的體系結(jié)構(gòu)為產(chǎn)品的開發(fā)節(jié)省了大量時(shí)間。此外Freescale提供了多種集成模塊和總線接口,可以在不同的系統(tǒng)中更靈活的發(fā)揮作用!Freescale單片機(jī)的特有的特點(diǎn)如下:

  • 全系列:從低端到高端,從8位到32位全系列應(yīng)有盡有,其推出的8位/32位管腳兼容的QE128,可以從8位直接移植到32位,彌補(bǔ)單片機(jī)業(yè)界8/32 位兼容架構(gòu)中缺失的一環(huán)
  • 多種系統(tǒng)時(shí)鐘模塊:三種模塊,七種工作模式。多種時(shí)鐘源輸入選項(xiàng),不同的mcu具有不同的時(shí)鐘產(chǎn)生機(jī)制,可以是RC振蕩器,外部時(shí)鐘或晶振,也可以是內(nèi)部時(shí)鐘,多數(shù)CPU同時(shí)具有上述三種模塊!可以運(yùn)行在FEI,F(xiàn)EE,F(xiàn)BI,F(xiàn)BILP,F(xiàn)BE,F(xiàn)BELP,STOP這七種工作模式
  • 多種通訊模塊接口:Freescale單片機(jī)幾乎在內(nèi)部集成各種通信接口模塊:包括串行通信接口模塊SCI,多主I2C總線模塊,串行外圍接口模塊 SPI,MSCAN08控制器模塊,通用串行總線模塊(USB/PS2)
  • 具有更多的可選模塊:具有LCD驅(qū)動(dòng)模塊,帶有溫度傳感器,具有超高頻發(fā)送模塊,含有同步處理器模塊,含有同步處理器的MCU還具有屏幕顯示模塊OSD,還有少數(shù)的MCU具有響鈴檢測(cè)模塊RING和雙音多頻/音調(diào)發(fā)生器DMG模塊
  • 可靠性高,抗干擾性強(qiáng),多種引腳數(shù)和封裝選擇
  • 低功耗、也許Freescale系列的單片機(jī)的功耗沒(méi)有MSP430的低,但是他具有全靜態(tài)的“等待”和“停止”兩種模式,從總體上降低您的功耗!新近推出的幾款超低功耗已經(jīng)與MSP430的不相上下!
  • 使用最多的器件:MC9S12G系列

如果真要在這些單片機(jī)中分個(gè)一二三等,那么如果你想跟隨大眾,無(wú)可厚非51單片機(jī)還是首選;如果你追求超高性價(jià)比,STM32將是你理想選擇;如果你渴望超低功耗,MSP430肯定不會(huì)讓你失望;如果你想支持國(guó)產(chǎn),STC會(huì)讓你興奮…


已剪輯自: https://zhuanlan.zhihu.com/p/106985266

一、什么是DSP

DSP,Digital Signal Processor,也就是數(shù)字信號(hào)處理器。這是一種具有特殊結(jié)構(gòu)的微處理器,是以數(shù)字信號(hào)來(lái)處理大量信息的微處理器。將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),用于專用處理器的高速實(shí)時(shí)處理。

DSP的工作原理:接收外部輸入的模擬信號(hào),然后將其轉(zhuǎn)換為數(shù)字信號(hào)(為0或1),再對(duì)數(shù)字信號(hào)進(jìn)行運(yùn)算處理,并在其他系統(tǒng)芯片中把數(shù)字?jǐn)?shù)據(jù)解譯回模擬數(shù)據(jù)或?qū)嶋H環(huán)境格式。

單片機(jī)、DSP、ARM、FPGA區(qū)別(單片機(jī),dsp,fpga,arm哪個(gè)好)

DSP芯片的內(nèi)部采用程序和數(shù)據(jù)分開的哈佛結(jié)構(gòu),具有專門的硬件乘法器,廣泛采用流水線操作,提供特殊的DSP 指令,可以用來(lái)快速地實(shí)現(xiàn)各種數(shù)字信號(hào)處理算法。它不僅具有可編程性,而且其實(shí)時(shí)運(yùn)行速度可達(dá)每秒數(shù)以千萬(wàn)條復(fù)雜指令程序,遠(yuǎn)遠(yuǎn)超過(guò)通用微處理器,是當(dāng)前越來(lái)越熱門、應(yīng)用越來(lái)越廣泛的微處理器芯片。

二、 DSP的發(fā)展

1.世界上第一個(gè)單片DSP芯片是1978年AMI公司宣布的S2811

2.1979年,美國(guó)Iintel公司發(fā)布的商用可編程期間2920是DSP芯片的一個(gè)主要里程碑。

以上兩種芯片內(nèi)部都沒(méi)有現(xiàn)代DSP芯片所必須的單周期芯片。

3.1980年,日本NEC公司推出的μPD7720,這是第一個(gè)具有乘法器的商用DSP 芯片。

4.1982年,日本Hitachi 公司推出浮點(diǎn)DSP芯片,是第一個(gè)采用CMOS工藝生產(chǎn)浮點(diǎn)DSP芯片。

5.1983年,日本的Fujitsu公司推出的MB8764,其指令周期為120ns ,且具有雙內(nèi)部總線,從而處理的吞吐量發(fā)生了一個(gè)大的飛躍。

6.1984年,AT&T公司推出的DSP32,是第一個(gè)高性能的浮點(diǎn)DSP芯片。

在這么多的DSP芯片種類中,最成功的是美國(guó)德克薩斯儀器公司(Texas Instruments,簡(jiǎn)稱TI)的一系列產(chǎn)品。

TI是DSP領(lǐng)域的的老大。

單片機(jī)、DSP、ARM、FPGA區(qū)別(單片機(jī),dsp,fpga,arm哪個(gè)好)

TI公司1982年成功推出啟迪一代DSP芯片TMS32010及其系列產(chǎn)品TMS32011、TMS32C10/C14/C15/C16/C17等,之后相繼推出了:

第二代DSP芯片TMS32020、TMS320C25/C26/C28,

第三代DSP芯片TMS32C30/C31/C32,

第四代DSP芯片TMS32C40/C44,

第五代DSP芯片TMS32C50/C51/C52/C53以及集多個(gè)DSP于一體的高性能DSP芯片TMS32C80/C82等。

自1980年以來(lái),DSP芯片獲得迅猛發(fā)展:

1.從運(yùn)算速度來(lái)看,MAC(一次乘法和一次加法)時(shí)間已經(jīng)從80年代初的400ns(如TMS32010)降低到40ns(如TMS32C40),處理能力提高了10多倍。DSP芯片內(nèi)部關(guān)鍵的乘法器部件從1980年的占模區(qū)的40左右下降到5以下,片內(nèi)RAM增加一個(gè)數(shù)量級(jí)以上。

2.從制造工藝來(lái)看,1980年采用4μ的N溝道MOS工藝,而現(xiàn)在則普遍采用亞微米CMOS工藝。

3.從封裝工藝來(lái)看,DSP芯片的引腳數(shù)量從1980年的最多64個(gè)增加到現(xiàn)在的200個(gè)以上,引腳數(shù)量的增加,意味著結(jié)構(gòu)靈活性的增加。

此外,DSP芯片的發(fā)展,是DSP系統(tǒng)的成本、體積、重量和功耗都有很大程度的下降。

三、DSP芯片的類型

1. 根據(jù)基礎(chǔ)特性

根據(jù)DSP芯片的工作時(shí)鐘和指令類型來(lái)分類的。如果DSP芯片在某時(shí)鐘頻率范圍內(nèi)的任何頻率上能正常工作,除計(jì)算速度有變化外,沒(méi)有性能的下降,這類DSP芯片一般稱之為靜態(tài)DSP芯片。如果有兩種或兩種以上的DSP芯片,它們的指令集和相應(yīng)的機(jī)器代碼機(jī)管腳結(jié)構(gòu)相互兼容,則這類DSP芯片稱之為一致性的DSP芯片。

2. 根據(jù)數(shù)據(jù)格式

數(shù)據(jù)以定點(diǎn)格式工作的DSP芯片稱之為定點(diǎn)DSP芯片。以浮點(diǎn)格式工作的稱為浮點(diǎn)DSP芯片。不同的浮點(diǎn)DSP芯片所采用的浮點(diǎn)格式不完全一樣,有的DSP芯片采用自定義的浮點(diǎn)格式,有的DSP芯片則采用IEEE的標(biāo)準(zhǔn)浮點(diǎn)格式。

3. 根據(jù)用途

可分為通用型DSP芯片和專用型的DSP芯片。通用型DSP芯片適合普通的DSP應(yīng)用,如TI公司的一系列DSP芯片。專用型DSP芯片市為特定的DSP運(yùn)算而設(shè)計(jì),更適合特殊的運(yùn)算,如數(shù)字濾波,卷積和FFT等。

四、DSP芯片的基本結(jié)構(gòu)

DSP芯片的基本結(jié)構(gòu)包括:

(1)哈佛結(jié)構(gòu);

(2)流水線操作;

(3)專用的硬件乘法器;

(4)特殊的DSP指令;

(5)快速的指令周期。

哈佛結(jié)構(gòu)

哈佛結(jié)構(gòu)的主要特點(diǎn)是將程序和數(shù)據(jù)存儲(chǔ)在不同的存儲(chǔ)空間中,即程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器是兩個(gè)相互獨(dú)立的存儲(chǔ)器,每個(gè)存儲(chǔ)器獨(dú)立編址,獨(dú)立訪問(wèn)。與兩個(gè)存儲(chǔ)器相對(duì)應(yīng)的是系統(tǒng)中設(shè)置了程序總線和數(shù)據(jù)總線,從而使數(shù)據(jù)的吞吐率提高了一倍。由于程序和存儲(chǔ)器在兩個(gè)分開的空間中,因此取指和執(zhí)行能完全重疊。

流水線與哈佛結(jié)構(gòu)相關(guān),DSP芯片廣泛采用流水線以減少指令執(zhí)行的時(shí)間,從而增強(qiáng)了處理器的處理能力。處理器可以并行處理二到四條指令,每條指令處于流水線的不同階段。

專用的硬件乘法器

乘法速度越快,DSP處理器的性能越高。由于具有專用的應(yīng)用乘法器,乘法可在一個(gè)指令周期內(nèi)完成。

特殊的DSP指令DSP芯片是采用特殊的指令。

快速的指令周期哈佛結(jié)構(gòu)、流水線操作、專用的硬件乘法器、特殊的DSP指令再加上集成電路的優(yōu)化設(shè)計(jì)可使DSP芯片的指令周期在200ns以下。

TMS320F28335 嵌入式DSP內(nèi)部結(jié)構(gòu)框圖:

單片機(jī)、DSP、ARM、FPGA區(qū)別(單片機(jī),dsp,fpga,arm哪個(gè)好)

TMS320F28335 嵌入式DSP 來(lái)自網(wǎng)上 侵刪

SEED-DEC28335主要集成了150M系統(tǒng)時(shí)鐘的DSP、64K x 16 位的片外SRAM、16 路片內(nèi)12 位A/D、12 路PWM、2 路UART、1 路CAN、一路高速USB、片外4 通道12-位D/A 和串行EEPROM RTC 實(shí)時(shí)時(shí)鐘等外設(shè)。這樣使其能夠應(yīng)用在電機(jī)、電力等工業(yè)控制領(lǐng)域。

五、如何選擇DSP芯片

一般來(lái)說(shuō),我們選擇DSP芯片時(shí),需要考慮如下因素:

TI系列推薦:

如果用于控制,主要是選擇TMS320C2000系列;

如果用于通信,主要是選擇TMS320C5000系列;

如果用于圖像處理,那就選擇6000系列。

具體指標(biāo):

1.運(yùn)算速度。運(yùn)算速度是芯片的一個(gè)最重要的性能指標(biāo),也是選擇芯片時(shí)所需要考慮的一個(gè)主要因素。運(yùn)算速度可以用以下幾種性能指標(biāo)來(lái)衡量:

(1) 指令周期。就是執(zhí)行一條指令所需要的時(shí)間,通常以納秒(ns)為單位。

(2) MAC時(shí)間。即一次乘法加上一次加法的時(shí)間。

(3) FFT執(zhí)行時(shí)間。即運(yùn)行一個(gè)N點(diǎn)FFT程序所需的時(shí)間。

(4) MIPS。即每秒執(zhí)行百萬(wàn)條指令。

(5) MOPS。即每秒執(zhí)行百萬(wàn)次操作。

(6) MFLOPS。即每秒執(zhí)行百萬(wàn)次浮點(diǎn)操作。

(7) BOPS。即每秒執(zhí)行十億次操作。

2.價(jià)格。根據(jù)實(shí)際應(yīng)用,確定一個(gè)價(jià)格適中的芯片。

3.硬件資源。

4.運(yùn)算速度。

5.開發(fā)工具。

6.功耗。

另外還要考慮一些其它的因素,如封裝的形式等等。

DSP應(yīng)用系統(tǒng)的運(yùn)算量是確定選用處理能力多大的DSP芯片的基礎(chǔ)。確定一個(gè)DSP系統(tǒng)的運(yùn)算量以選擇DSP芯片的方法:

1. 按樣點(diǎn)處理

就是DSP算法對(duì)每一個(gè)輸入樣點(diǎn)循環(huán)一次。比如:設(shè)計(jì)一個(gè)采用LMS算法的256抽頭的自適應(yīng)FIR濾波器,假定每個(gè)抽頭的計(jì)算需要3個(gè)MAC周期,則256抽頭計(jì)算需要256*3=768個(gè)MAC周期。如果采樣頻率為8KHz,即樣點(diǎn)之間的間隔為125μs的時(shí)間,DSP芯片的MAC周期為200μs,則768個(gè)周期需要153.6μs的時(shí)間,顯然無(wú)法實(shí)時(shí)處理,需要選用速度更快的芯片。

2. 按幀處理

有些數(shù)字信號(hào)處理算法不是每個(gè)輸入樣點(diǎn)循環(huán)一次,而是每隔一定的時(shí)間間隔(通常稱為幀)循環(huán)一次。所以選擇DSP芯片應(yīng)該比較一幀內(nèi)DSP芯片的處理能力和DSP算法的運(yùn)算量。假設(shè)DSP芯片的指令周期為P(ns),一幀的時(shí)間為⊿τ(ns),則該DSP芯片在一幀內(nèi)所提供的最大運(yùn)算量為⊿τ/ P 條指令。

六、DSP系統(tǒng)

三大特色:強(qiáng)大數(shù)據(jù)處理能力、數(shù)字信號(hào)處理的實(shí)時(shí)性和高運(yùn)行速度,最值得稱道。一般具有如下的一些主要特點(diǎn):

(1) 在一個(gè)指令周期內(nèi)可完成一次乘法和一次加法。

(2) 程序和數(shù)據(jù)空間分開,可以同時(shí)訪問(wèn)指令和數(shù)據(jù)。

(3) 片內(nèi)具有快速RAM,通常可通過(guò)獨(dú)立的數(shù)據(jù)總線在兩塊中同時(shí)訪問(wèn)。

(4) 具有低開銷或無(wú)開銷循環(huán)及跳轉(zhuǎn)的硬件支持。

(5) 快速的中斷處理和硬件I/O支持。

(6) 具有在單周期內(nèi)操作的多個(gè)硬件地址產(chǎn)生器。

(7) 可以并行執(zhí)行多個(gè)操作。

(8) 支持流水線操作,使取指、譯碼和執(zhí)行等操作可以重疊執(zhí)行。

與通用微處理器相比,DSP芯片的其他通用功能相對(duì)較弱些。

數(shù)字信號(hào)處理系統(tǒng)是以數(shù)字信號(hào)處理為基礎(chǔ),因此具有數(shù)字處理的全部特點(diǎn):

(1) 接口方便。DSP系統(tǒng)與其它以現(xiàn)代數(shù)字技術(shù)為基礎(chǔ)的系統(tǒng)或設(shè)備都是相互兼容,這樣的系統(tǒng)接口以實(shí)現(xiàn)某種功能要比模擬系統(tǒng)與這些系統(tǒng)接口要容易的多。

(2) 編程方便。DSP系統(tǒng)種的可編程DSP芯片可使設(shè)計(jì)人員在開發(fā)過(guò)程中靈活方便地對(duì)軟件進(jìn)行修改和升級(jí)。

(3) 穩(wěn)定性好。DSP系統(tǒng)以數(shù)字處理為基礎(chǔ),受環(huán)境溫度以及噪聲的影響較小,可靠性高。

(4) 精度高。16位數(shù)字系統(tǒng)可以達(dá)到的精度。

(5) 可重復(fù)性好。模擬系統(tǒng)的性能受元器件參數(shù)性能變化比較大,而數(shù)字系統(tǒng)基本上不受影響,因此數(shù)字系統(tǒng)便于測(cè)試,調(diào)試和大規(guī)模生產(chǎn)。

(6) 集成方便。DSP系統(tǒng)中的數(shù)字部件有高度的規(guī)范性,便于大規(guī)模集成。

目前廣泛應(yīng)用的是TMS320F28335芯片系列。

DSP芯片實(shí)例TMS320C542:

TMS320C542屬于TI公司C5000系列。C5000系列具有以下特點(diǎn):

·改進(jìn)的哈佛結(jié)構(gòu),包含一條程序總線,三條數(shù)據(jù)總線和四條地址總線

·高度并行的CPU和針對(duì)應(yīng)用優(yōu)化的硬件

·針對(duì)算法和高級(jí)語(yǔ)言優(yōu)化的指令集

·先進(jìn)的IC技術(shù)使其既高性能又低功耗。

單片機(jī)、DSP、ARM、FPGA區(qū)別(單片機(jī),dsp,fpga,arm哪個(gè)好)

C5000系列DSP微處理器內(nèi)部結(jié)構(gòu)功能框圖,如圖1所示。包括:40bit算數(shù)邏輯單元(ALU);2個(gè)40bit累加器A和B;17×17bit乘加單元、40bitMAC ,可作64級(jí)FIR運(yùn)算而不必考慮溢出;計(jì)算、選擇、存儲(chǔ)單元(CCSU),特別適合Viterbi等算法;40bit桶型移位寄存器;片上雙存取RAM,每機(jī)器周期可存取兩次;片上單存取RAM,可同時(shí)訪問(wèn)兩塊片上存儲(chǔ)區(qū);片上外圍接口,包括串口、定時(shí)器、PLL、HPI接口等。

TMS320C542自身特點(diǎn)如下:

·25ns單周期定點(diǎn)指令執(zhí)行時(shí)間,5V供電

·10K Words16bit 片上雙存取RAM

·64K Words程序,64K Words數(shù)據(jù),64K Words I/O存儲(chǔ)空間

·2K Words HPI接口,可通過(guò)此接口方便地與主設(shè)備進(jìn)行信息交換,主設(shè)備也可通過(guò)此接口下載DSP程序

·一個(gè)自動(dòng)緩沖的串口和一個(gè)TDM串口,且都可用作標(biāo)準(zhǔn)同步串口

此外,C5000系列DSP可使用JTAG接口進(jìn)行調(diào)試,可完全控制DSP上的所有資源,使用方便可靠。

學(xué)習(xí)指導(dǎo)

一本非常好用的DSP教材:手把手教你學(xué)DSP。

這本書以TMS320X281x的開發(fā)為主線,介紹與DSP開發(fā)相關(guān)的知識(shí):DSP開發(fā)環(huán)境的搭建、新工程的建立、CCS6.0的使用、CMD文件的編寫、硬件電路的設(shè)計(jì)、存儲(chǔ)器的映像、三級(jí)中斷系統(tǒng)以及TMS320X281X各個(gè)外設(shè)模塊的功能和使用。

每部分內(nèi)容都有應(yīng)用實(shí)例,并手把手地講解例程的編寫過(guò)程。所有代碼都標(biāo)注有詳細(xì)的中文注釋,為讀者快速熟悉并掌握DSP的開發(fā)方法和技巧提供了方便。

基于CCS6.0,生活化語(yǔ)言,淺顯易懂,深入淺出,非常適合新手學(xué)習(xí)。

出版社: 北京航空航天大學(xué)出版社 出版時(shí)間:2019-02-01

第1章如何開始DSP的學(xué)習(xí)和開發(fā)
第2章TMS320X2812的結(jié)構(gòu)、資源及性能
第3章TMS320X281x的硬件設(shè)計(jì)
第4章創(chuàng)建一個(gè)新工程
第5章CCS的常用操作
第6章使用C語(yǔ)言操作DSP的寄存器
第7章存儲(chǔ)器的結(jié)構(gòu)、映像及CMD文件的編寫
第8章X281x的時(shí)鐘和系統(tǒng)控制
第9章通用輸入/輸出多路復(fù)用器GPIO
第10章CPU定時(shí)器
第11章X2812的中斷系統(tǒng)
第12章事件管理器EV
第13章模/數(shù)轉(zhuǎn)換器ADC
第14章串行通信接口SCI
第15章串行外設(shè)接口SPI
第16章增強(qiáng)型控制器局域網(wǎng)通信接口eCAN
第17章基于HDSPSuper2812的開發(fā)實(shí)例

B站上 手把手教你學(xué)DSP視頻教程DSP281X

參考

  1. ^如有侵犯您的權(quán)益,請(qǐng)聯(lián)系作者刪除。

已剪輯自: https://dongka.github.io/2018/11/17/cpu/arm體系架構(gòu)的發(fā)展/

ARM體系架構(gòu)的發(fā)展

本文將從以下幾點(diǎn)去展開介紹arm體系架構(gòu)的發(fā)展:

  1. 指令集架構(gòu)
  2. arm公司的發(fā)展歷史以及授權(quán)模式
  3. arm的體系架構(gòu)

arm公司的發(fā)展歷史

arm的發(fā)展歷程在此文章講的非常詳細(xì),故不再贅述一文帶你了解ARM的發(fā)展歷程

arm授權(quán)模式

在傳統(tǒng)PC領(lǐng)域,半導(dǎo)體有兩種路子可以走,一種是Intel這種,從頭到尾一條龍,架構(gòu)和芯片設(shè)計(jì),生產(chǎn)一律不靠任何人; 這樣做需要極其雄厚,全方位的實(shí)力做保障,得有錢,有人,有技術(shù),在半導(dǎo)體技術(shù)日益復(fù)雜的今天,能這么做屈指可數(shù);好處就是利潤(rùn)率比較高,想賣多少錢就多少;當(dāng)然技術(shù)上得做到領(lǐng)先甚至于壟斷的地位優(yōu)勢(shì)才比較明顯;

另外一種則無(wú)工廠模式(Fabless),NVIDIA,AMD,這類企業(yè)都是自己設(shè)計(jì)芯片,制造交給代工廠,比如臺(tái)積電,聯(lián)電,GlobalFoundries,三星電子。好處很明顯,負(fù)擔(dān)輕,但是在半導(dǎo)體這種工藝在功耗與性能中扮演重要角色的行業(yè),你設(shè)計(jì)出來(lái)的是否能設(shè)計(jì)出來(lái),怎么設(shè)計(jì)出來(lái),很大程度看代工廠的能耐;幸好這些代工廠也十分給力,不斷的逼近物理極限;使得AMD最近也能慢慢的趕上擠牙膏的Intel;

arm就不一樣了,它不制造,不銷售芯片,只是自己設(shè)計(jì)IP,包括指令集,微處理器,GPU,總線,然后誰(shuí)要的話就買arm的授權(quán);授權(quán)模式分為此三種:

處理器授權(quán)

ARM設(shè)計(jì)好一顆CPU或者GPU,armv7架構(gòu)對(duì)應(yīng)的IP為Cortex-A5/A7/A9/A12/A15/A17這幾個(gè)核心架構(gòu),對(duì)應(yīng)armv8-A就有Cortext-A35/A53/A57/A72/A73;ARMv8.2A指令集:Cortext-A55/A75;然后授權(quán)賣給伙伴,買下它們后,只能按照?qǐng)D紙實(shí)現(xiàn),能發(fā)揮的不多,如何實(shí)現(xiàn)就比較隨便,如配置哪些模塊,幾個(gè)核心,多少緩存,多高頻率,什么工藝,誰(shuí)來(lái)代工等等;

如果想優(yōu)化,但是技術(shù)有限,那么可以買arm的處理器優(yōu)化包/物理IP包授權(quán)(POP)
如果只是想更快速搞出產(chǎn)品,那么更干脆了,arm已經(jīng)幫你制定好代工廠處理器類型和工藝了;
代表商家有聯(lián)發(fā)科,展訊,聯(lián)芯,全志,瑞芯微,炬力等;這些設(shè)計(jì)公司獲得的是軟核或者這點(diǎn)硬核授權(quán),通過(guò)購(gòu)買的CPU核,與GPU核,以及通過(guò)一定的流程,集成出SOC;

購(gòu)買處理器授權(quán)的本質(zhì)上就大同小異了,可以做出差異化的只能在一些IP上做出差異化;

架構(gòu)/指令授權(quán)

這種授權(quán)方式價(jià)格比較貴,為防止碎片化的情況出現(xiàn)還有可能處于技術(shù)上的保護(hù),arm禁止對(duì)指令集進(jìn)行修改或者添加,但其他公司是否確切遵守了,這個(gè)就不得而知了;總之這種授權(quán)需要具有非常強(qiáng)的技術(shù)實(shí)力,也不過(guò)15家,如我們熟知的高通,蘋果,三星,華為等公司;

除了版稅,那些購(gòu)買了arm IP授權(quán)的,還需要為每一個(gè)芯片支付版稅;

在這里有些問(wèn)題就應(yīng)該提出來(lái)思考了,為什么都是arm的指令集,蘋果的芯片卻可以吊打現(xiàn)在的Android廠商的芯片呢?評(píng)價(jià)CPU性能指標(biāo)在以下幾個(gè)方面:

一:指令集寬度(ISSUE)6

二:亂序指令執(zhí)行緩沖區(qū)(Recorder Buffer)(192)

三:內(nèi)存加載延遲(Load Latency):4

四:分支預(yù)測(cè)錯(cuò)誤代價(jià)(Misprediction Penalty):16(一般介于14~19)

不得不說(shuō),蘋果很早就開始布局CPU的設(shè)計(jì)之路,具有極強(qiáng)的芯片設(shè)計(jì)能力,在廠家都是基于arm的公版進(jìn)行設(shè)計(jì),蘋果就已經(jīng)通過(guò)購(gòu)買arm指令集,然后進(jìn)行自己的CPU設(shè)計(jì),在14年的時(shí)候A7處理器,作為第一個(gè)ARM 64位CPU商用,而且將指令集寬度位6,作為對(duì)比arm目前的指令集為3;由于封閉式的開發(fā),不像高通,需要考慮各個(gè)廠家的需求和成本,蘋果有更高的溢價(jià)能力,可以用面積去換取性能與功耗,并根據(jù)自己的系統(tǒng)去做定制化;

指令集架構(gòu)(ISA)

CPU執(zhí)行計(jì)算任務(wù)時(shí)都需要遵從一定的規(guī)范,程序在被執(zhí)行時(shí)都需要先翻譯成CPU可以理解的語(yǔ)言。這種規(guī)范就是指令集**(ISA,Intruction Set Architecrure);**

例如以下的機(jī)器碼:1110 0001 1010 0000 0010 0000 0000 0001

比如有個(gè)CPU定位1110 0001就是ADD指令,1010 0000對(duì)應(yīng)的是存儲(chǔ)數(shù)據(jù)的寄存器R2;0010 0000對(duì)應(yīng)的寄存器R0;
0000 0001對(duì)應(yīng)是寄存器R1,故意思可以是ADD R2 R0 R1,將R0,R1的值加起來(lái)放到R2;指令集就是定義一套約定俗成的CPU運(yùn)行規(guī)則,對(duì)于編程人員,面對(duì)的匯編指令;而對(duì)于CPU來(lái)說(shuō),就是怎么去理解這段二進(jìn)制碼,不同的CPU對(duì)這段二進(jìn)制代碼不同,故就有了不同的指令集架構(gòu);

指令集一般分為兩種:精簡(jiǎn)指令集(RISC:reduced instruction set computer)和復(fù)雜指令集(CISC:Complex Instrution Set Computer),以洗衣機(jī)洗衣服為例,RISC架構(gòu)為,加水->漂洗->風(fēng)干;而復(fù)雜指令集則可以發(fā)出洗衣服的指令,從而讓洗衣機(jī)自動(dòng)幫忙做這一整套的流程;CISC可以通過(guò)一條復(fù)雜的指令來(lái)完成許多事情,性能在處理復(fù)雜的任務(wù)時(shí),會(huì)比RISC更為高效;但隨之而來(lái)的是面積和功耗的提升;基于2/8理論,程序大部分時(shí)間(80%)都是在做重復(fù)而簡(jiǎn)單的事情;所以RISC架構(gòu)就應(yīng)運(yùn)而生,更為精簡(jiǎn)的指令,將任務(wù)更多的放在了編譯器這塊,通過(guò)復(fù)雜的指令轉(zhuǎn)化成簡(jiǎn)單指令的組合,在一定程度上增加了代碼量,但使其大部分場(chǎng)合能比CISC取得更小的面積和功耗;

采用精簡(jiǎn)指令集的微處理,常見為ARM,MIPS,Power Architecture(包括PowerPC,PowerXCell),SPARC,RISC-V等而采用CISC則為X86和AMD

至于arm為代表RISC架構(gòu)與以X86為代表的CISC之間的優(yōu)劣比較還有是否存在替代一說(shuō),筆者認(rèn)為,不會(huì),而且從目前的發(fā)展來(lái)看,已經(jīng)出現(xiàn)了你中有我,我中有你的局面;
更進(jìn)一步的探討可以看下知乎上關(guān)于精簡(jiǎn)指令集與負(fù)雜指令集的討論,我也很贊同其中一個(gè)答主的觀點(diǎn),這已經(jīng)不是個(gè)技術(shù)問(wèn)題了,而是一個(gè)商業(yè)的問(wèn)題

總結(jié)完RISC和CISC之間的關(guān)系,再講講基于RISC陣營(yíng)里面的ARM和最近比較火熱的RISC-V,arm大家都熟悉,而RISC-V又是個(gè)什么東西呢?

RISC-V是加州大學(xué)伯克利分校的開源指令集,由計(jì)算機(jī)架構(gòu)的宗師級(jí)任務(wù)David Patterson領(lǐng)銜打造,通過(guò)將核心指令集以及
關(guān)鍵IP開源,意圖改變半導(dǎo)體生態(tài);詳細(xì)的可以看這篇文檔;名家專欄丨一文看懂RISC-V

總結(jié)如下:RISC-V具有以下優(yōu)點(diǎn):1.可模塊化配置的指令集。 2.支持可擴(kuò)展的指令集 3.一套指令集支持所有架構(gòu),基本指令集僅40余條指令,以此為共用基礎(chǔ),加上其他常用模塊子集指令總指令集也僅幾十條 4.硬件設(shè)計(jì)和編譯器非常簡(jiǎn)單

筆者認(rèn)為,RISC-V目前作為一個(gè)像linux看齊的硬件開源組織,linux之所以能健康長(zhǎng)足發(fā)展,在于社區(qū)成千上萬(wàn)的內(nèi)核愛好者的不斷貢獻(xiàn),使得linux能夠蓬勃發(fā)展;而硬件則不同,在這動(dòng)輒上百萬(wàn)的流片費(fèi)的無(wú)數(shù)擺在硬件設(shè)計(jì)者面前的坎,是否會(huì)有公司或者團(tuán)體愿意將自己用血與淚驗(yàn)證的IP,貢獻(xiàn)到社區(qū),如果沒(méi)有做到這一點(diǎn),即將面臨由于廠家擴(kuò)展指令不同的碎片化問(wèn)題解決,還有RISC-V后面的長(zhǎng)足發(fā)展,將付之空談;這樣RISC-V架構(gòu)只能作為幾個(gè)大廠找到的低廉的替代arm方案的選擇,而無(wú)法真正做到普惠;

arm的體系架構(gòu)

時(shí)間 架構(gòu) 主要更新

1985

ARMv1

只有26位的尋值空間,沒(méi)有用于商業(yè)產(chǎn)品

1986

ARMv2

首顆量產(chǎn)的ARM處理器,包括32位乘法指令和協(xié)處理器指令

1990

ARMv3

具有片上高速緩存,MMU和寫緩沖,尋址空間增大到32位

1993

ARMv4

ARM7,ARM8,ARM9和Strong ARM采用這種架構(gòu)。增加了16 Thumb指令集

1998

ARMv5

ARM7(EJ),ARM9(E),ARM10(E)和Xscale采用這種了該架構(gòu),改進(jìn)了ARM/Thumb狀態(tài)之間的切換效率,此外還引入DSP指令和支持JAVA

2001

ARMv6

ARM11,強(qiáng)化了圖形處理性能,通過(guò)追加有效進(jìn)行多媒體處理的SIMD將語(yǔ)音及圖像的處理功能大大提高。此外ARM在這個(gè)系列中引入混合16位/32位的Thumb-2指令集

2004

ARMv7

Cortex-M3/4/7,Cortex-R4/5/6/7,Cortex-A8/9都是基于該架構(gòu),該架構(gòu)包括NEON技術(shù)擴(kuò)展,可將DSP和媒體處理吞吐量高達(dá)400%,并提供改進(jìn)的浮點(diǎn)支持以滿足下一代3D圖形和游戲以及傳統(tǒng)嵌入式控制應(yīng)用的需要

2007

ARMv6-M

專門為低成本,高性能的設(shè)備而設(shè)計(jì),Cortex-M0/1即采用該架構(gòu)

2011

ARMv8

Cortex-A32/35/53/57/72/73采用此架構(gòu),第一款支持64位的處理器架構(gòu)

ARM架構(gòu)發(fā)展圖:

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-KLo8uaGM-1666278819947)(http://yoursite.com/2018/11/17/cpu/arm體系架構(gòu)的發(fā)展/arm_develop.png)]

arm體系的CPU工作模式:

1.用戶模式(usr):正常的程序執(zhí)行狀態(tài)
2.快速中斷模式(fiq):用于支持高速數(shù)據(jù)傳輸或者通道處理
3.中斷模式(irq):用于普通中斷處理
4.管理模式(svc):操作系統(tǒng)使用的保護(hù)模式
5.系統(tǒng)模式(sys):運(yùn)行具有特權(quán)的操作系統(tǒng)的任務(wù);
6.數(shù)據(jù)訪問(wèn)終止模式(abt):數(shù)據(jù)或指令與預(yù)取終止時(shí)進(jìn)入該模式
7.未定義指令終止模式(und):未定義的指令執(zhí)行時(shí)進(jìn)入該模式;

linux如何從用戶態(tài)進(jìn)入內(nèi)核態(tài)
分為兩種:主動(dòng)式和被動(dòng)式、

1.主動(dòng)式:就是linux用戶在(ARM在用戶模式下)工作,通過(guò)發(fā)起用戶態(tài)程序發(fā)起命令請(qǐng)求,ARM響應(yīng)進(jìn)入特權(quán)模式進(jìn)而Linux切入內(nèi)核態(tài),就是系統(tǒng)調(diào)用;系統(tǒng)調(diào)用可被堪稱一個(gè)內(nèi)核與用戶空間程序交互的接口;把用戶進(jìn)程的請(qǐng)求傳達(dá) 給內(nèi)核,待內(nèi)核把請(qǐng)求處理完畢后再將處理結(jié)果送回給用戶空間;
系統(tǒng)調(diào)用的主要用途:

一:控制硬件-系統(tǒng)調(diào)用往往作為硬件資源和用戶空間的抽象接口,比如讀寫文件用到的write/read調(diào)用

二:設(shè)置系統(tǒng)狀態(tài)或讀取內(nèi)核數(shù)據(jù);

2.被動(dòng)式:就是Linux在用戶態(tài)(ARM在用戶模式)工作,沒(méi)有主動(dòng)發(fā)起請(qǐng)求,而被動(dòng)地進(jìn)入內(nèi)核態(tài),包括硬件中斷和程序異常;

參考資料:

arm匯編基礎(chǔ)教程

給開源架構(gòu)潑潑冷水

ARMv8-a

ARM介紹1:發(fā)展史
ARM介紹2:授權(quán)模式

ARMV8

從arm到三星,蘋果是如何走向自研芯片的

一樣是ARM架構(gòu),為何蘋果處理器效能就是壓下其他人
淺析arm的異常,中斷和arm工作模式的聯(lián)系


如何零基礎(chǔ)入門FPGA?這篇文章讓你吃透!

已剪輯自: https://www.eet-china.com/mp/a124380.html

1. 看代碼,建模型

只有在腦海中建立了一個(gè)個(gè)邏輯模型,理解FPGA內(nèi)部邏輯結(jié)構(gòu)實(shí)現(xiàn)的基礎(chǔ),才能明白為什么寫Verilog和寫C整體思路是不一樣的,才能理解順序執(zhí)行語(yǔ)言和并行執(zhí)行語(yǔ)言的設(shè)計(jì)方法上的差異。在看到一段簡(jiǎn)單程序的時(shí)候應(yīng)該想到是什么樣的功能電路。

2. 用數(shù)學(xué)思維來(lái)簡(jiǎn)化設(shè)計(jì)邏輯

學(xué)習(xí)FPGA不僅邏輯思維很重要,好的數(shù)學(xué)思維也能讓你的設(shè)計(jì)化繁為簡(jiǎn),所以啊,那些看見高數(shù)就頭疼的童鞋需要重視一下這門課哦。舉個(gè)簡(jiǎn)單的例子,比如有兩個(gè)32bit的數(shù)據(jù)X[31:0]與Y[31:0]相乘。

當(dāng)然,無(wú)論Altera還是Xilinx都有現(xiàn)成的乘法器IP核可以調(diào)用,這也是最簡(jiǎn)單的方法,但是兩個(gè)32bit的乘法器將耗費(fèi)大量的資源。那么有沒(méi)有節(jié)省資源,又不太復(fù)雜的方式來(lái)實(shí)現(xiàn)呢?我們可以稍做修改:

將X[31:0]拆成兩部分X1[15:0]和X2[15:0],令X1[15:0]=X[31:16],X2[15:0]=X[15:0],則X1左移16位后與X2相加可以得到X;同樣將Y[31:0]拆成兩部分Y1[15:0]和Y2[15:0],令 Y1[15:0]=Y[31:16],Y2[15:0]=Y[15:0],則Y1左移16位后與Y2相加可以得到Y(jié),則X與Y的相乘可以轉(zhuǎn)化為X1和X2 分別與Y1和Y2相乘,這樣一個(gè)32bit32bit的乘法運(yùn)算轉(zhuǎn)換成了四個(gè)16bit16bit的乘法運(yùn)算和三個(gè)32bit的加法運(yùn)算。轉(zhuǎn)換后的占用資源將會(huì)減少很多,有興趣的童鞋,不妨綜合一下看看,看看兩者差多少。

3. 時(shí)鐘與觸發(fā)器的關(guān)系

“時(shí)鐘是時(shí)序電路的控制者”這句話太經(jīng)典了,可以說(shuō)是FPGA設(shè)計(jì)的圣言。FPGA的設(shè)計(jì)主要是以時(shí)序電路為主,因?yàn)榻M合邏輯電路再怎么復(fù)雜也變不出太多花樣,理解起來(lái)也不沒(méi)太多困難。

但是時(shí)序電路就不同了,它的所有動(dòng)作都是在時(shí)鐘一拍一拍的節(jié)奏下轉(zhuǎn)變觸發(fā),可以說(shuō)時(shí)鐘就是整個(gè)電路的控制者,控制不好,電路功能就會(huì)混亂。

打個(gè)比方,時(shí)鐘就相當(dāng)于人體的心臟,它每一次的跳動(dòng)就是觸發(fā)一個(gè) CLK,向身體的各個(gè)器官供血,維持著機(jī)體的正常運(yùn)作,每一個(gè)器官體統(tǒng)正常工作少不了組織細(xì)胞的構(gòu)成,那么觸發(fā)器就可以比作基本單元組織細(xì)胞。

時(shí)序邏輯電路的時(shí)鐘是控制時(shí)序邏輯電路狀態(tài)轉(zhuǎn)換的“發(fā)動(dòng)機(jī)”,沒(méi)有它時(shí)序邏輯電路就不能正常工作。

因?yàn)闀r(shí)序邏輯電路主要是利用觸發(fā)器存儲(chǔ)電路的狀態(tài),而觸發(fā)器狀態(tài)變換需要時(shí)鐘的上升或下降沿,由此可見時(shí)鐘在時(shí)序電路中的核心作用。

最后簡(jiǎn)單說(shuō)一下體會(huì)吧,歸結(jié)起來(lái)就是多實(shí)踐、多思考、多問(wèn)。實(shí)踐出真知,看100遍別人的方案不如自己去實(shí)踐一下。實(shí)踐的動(dòng)力一方面來(lái)自興趣,一方面來(lái)自壓力。有需求會(huì)容易形成壓力,也就是說(shuō)最好能在實(shí)際的項(xiàng)目開發(fā)中鍛煉,而不是為了學(xué)習(xí)而學(xué)習(xí)。

02

為什么你會(huì)覺得FPGA難學(xué)?

不熟悉FPGA的內(nèi)部結(jié)構(gòu)

FPGA為什么是可以編程的?

恐怕很多初學(xué)者不知道,他們也不想知道。

因?yàn)樗麄冇X得這是無(wú)關(guān)緊要的。他們潛意識(shí)的認(rèn)為可編程嘛,肯定就是像寫軟件一樣啦。

軟件編程的思想根深蒂固,看到Verilog或者VHDL就像看到C語(yǔ)言或者其它軟件編程語(yǔ)言一樣。一條條的讀,一條條的分析。

拒絕去了解為什么FPGA是可以編程的,不去了解FPGA的內(nèi)部結(jié)構(gòu),要想學(xué)會(huì)FPGA 恐怕是天方夜譚。

那么FPGA為什么是可以“編程”的呢?首先來(lái)了解一下什么叫“程”。

啟示 “程”只不過(guò)是一堆具有一定含義的01編碼而已。

編程,其實(shí)就是編寫這些01編碼。只不過(guò)我們現(xiàn)在有了很多開發(fā)工具運(yùn)算或者是其它操作。

所以軟件是一條一條的,通常都不是直接編寫這些01編碼,而是以高級(jí)語(yǔ)言的形式來(lái)編寫,最后由開發(fā)工具轉(zhuǎn)換為這種01編碼而已。

對(duì)于軟件編程而言,處理器會(huì)有一個(gè)專門的譯碼電路逐條把這些01編碼翻譯為各種控制信號(hào),然后控制其內(nèi)部的電路完成一個(gè)個(gè)的讀,因?yàn)檐浖牟僮魇且徊揭徊酵瓿傻摹?/span>

而FPGA的可編程,本質(zhì)也是依靠這些01編碼實(shí)現(xiàn)其功能的改變,但不同的是FPGA之所以可以完成不同的功能,不是依靠像軟件那樣將01編碼翻譯出來(lái)再去控制一個(gè)運(yùn)算電路,F(xiàn)PGA里面沒(méi)有這些東西。

FPGA內(nèi)部主要三塊:可編程的邏輯單元、可編程的連線和可編程的IO模塊。

其基本結(jié)構(gòu)某種存儲(chǔ)器(SRAM、 FLASH等)制成的4輸入或6輸入1輸出地“真值表”加上一個(gè)D觸發(fā)器構(gòu)成。

任何一個(gè)4輸入1輸出組合邏輯電路,都有一張對(duì)應(yīng)的“真值表”,同樣的如果用這么一個(gè)存儲(chǔ)器制成的4輸入1輸出地“真值表”,只需要修改其“真值表”內(nèi)部值就可以等效出任意4輸入1輸出的組合邏輯,這些“真值表”內(nèi)部值就是那些01編碼。

如果要實(shí)現(xiàn)時(shí)序邏輯電路怎么辦?任何的時(shí)序邏輯都可以轉(zhuǎn)換為組合邏輯 D觸發(fā)器來(lái)完成。但這畢竟只實(shí)現(xiàn)了4輸入1輸出的邏輯電路而已,通常邏輯電路的規(guī)模那是相當(dāng)?shù)拇蟆?/span>

3.1 可編程連線

那怎么辦呢?這個(gè)時(shí)候就需要用到可編程連線了。在這些連線上有很多用存儲(chǔ)器控制的鏈接點(diǎn),通過(guò)改寫對(duì)應(yīng)存儲(chǔ)器的值就可以確定哪些線是連上的而哪些線是斷開的。這就可以把很多可編程邏輯單元組合起來(lái)形成大型的邏輯電路。

3.2 可編程的IO

任何芯片都必然有輸入引腳和輸出引腳。有可編程的IO可以任意的定義某個(gè)非專用引腳(FPGA中有專門的非用戶可使用的測(cè)試、下載用引腳)為輸入還是輸出,還可以對(duì)IO的電平標(biāo)準(zhǔn)進(jìn)行設(shè)置。

總歸一句話,F(xiàn)PGA之所以可編程是因?yàn)榭梢酝ㄟ^(guò)特殊的01代碼制作成一張張 “真值表”,并將這些“真值表”組合起來(lái)以實(shí)現(xiàn)大規(guī)模的邏輯功能。

不了解FPGA內(nèi)部結(jié)構(gòu),就不能明白最終代碼如何變到FPGA里面去的,也就無(wú)法深入的了解如何能夠充分運(yùn)用FPGA?,F(xiàn)在的FPGA,不單單是有前面講的那三塊,還有很多專用的硬件功能單元,如何利用好這些單元實(shí)現(xiàn)復(fù)雜的邏輯電路設(shè)計(jì),是從菜鳥邁向高手的路上必須要克服的障礙。而這一切,還是必須先從了解FPGA內(nèi)部邏輯及其工作原理做起。

3.3 錯(cuò)誤理解HDL語(yǔ)言,怎么看都看不出硬件結(jié)構(gòu)

HDL語(yǔ)言的英語(yǔ)全稱是:Hardware Deion Language,注意這個(gè)單詞Deion,而不是Design。老外為什么要用Deion這個(gè)詞而不是Design呢?因?yàn)镠DL確實(shí)不是用用來(lái)設(shè)計(jì)硬件的,而僅僅是用來(lái)描述硬件的。

描述這個(gè)詞精確地反映了HDL語(yǔ)言的本質(zhì),HDL語(yǔ)言不過(guò)是已知硬件電路的文本表現(xiàn)形式而已,只是將以后的電路用文本的形式描述出來(lái)而已。而在編寫語(yǔ)言之前,硬件電路應(yīng)該已經(jīng)被設(shè)計(jì)出來(lái)了。語(yǔ)言只不過(guò)是將這種設(shè)計(jì)轉(zhuǎn)化為文字表達(dá)形式而已。

硬件設(shè)計(jì)也是有不同的抽象層次,每一個(gè)層次都需要設(shè)計(jì)。最高的抽象層次為算法級(jí)、然后依次是體系結(jié)構(gòu)級(jí)、寄存器傳輸級(jí)、門級(jí)、物理版圖級(jí)。

使用HDL的好處在于我們已經(jīng)設(shè)計(jì)好了一個(gè)寄存器傳輸級(jí)的電路,那么用HDL描述以后轉(zhuǎn)化為文本的形式,剩下的向更低層次的轉(zhuǎn)換就可以讓EDA工具去做了,這就大大的降低了工作量。這就是可綜合的概念,也就是說(shuō)在對(duì)這一抽象層次上硬件單元進(jìn)行描述可以被EDA工具理解并轉(zhuǎn)化為底層的門級(jí)電路或其他結(jié)構(gòu)的電路。

在FPGA設(shè)計(jì)中,就是在將這以抽象層級(jí)的意見描述成HDL語(yǔ)言,就可以通過(guò)FPGA開發(fā)軟件轉(zhuǎn)化為上一點(diǎn)中所述的FPGA內(nèi)部邏輯功能實(shí)現(xiàn)形式。

HDL也可以描述更高的抽象層級(jí)如算法級(jí)或者是體系結(jié)構(gòu)級(jí),但目前受限于EDA軟件的發(fā)展,EDA軟件還無(wú)法理解這么高的抽象層次,所以HDL描述這樣抽象層級(jí)是無(wú)法被轉(zhuǎn)化為較低的抽象層級(jí)的,這也就是所謂的不可綜合。

所以在閱讀或編寫HDL語(yǔ)言,尤其是可綜合的HDL,不應(yīng)該看到的是語(yǔ)言本身,而是要看到語(yǔ)言背后所對(duì)應(yīng)的硬件電路結(jié)構(gòu)。

3.4 FPGA本身不算什么,一切皆在FPGA之外

FPGA是給誰(shuí)用的?很多學(xué)校是為給學(xué)微電子專業(yè)或者集成電路設(shè)計(jì)專業(yè)的學(xué)生用的,其實(shí)這不過(guò)是很多學(xué)校受資金限制,買不起專業(yè)的集成電路設(shè)計(jì)工具而用FPGA工具替代而已。其實(shí)FPGA是給設(shè)計(jì)電子系統(tǒng)的工程師使用的。

這些工程師通常是使用已有的芯片搭配在一起完成一個(gè)電子設(shè)備,如基站、機(jī)頂盒、視頻監(jiān)控設(shè)備等。當(dāng)現(xiàn)有芯片無(wú)法滿足系統(tǒng)的需求時(shí),就需要用FPGA來(lái)快速的定義一個(gè)能用的芯片。

前面說(shuō)了,F(xiàn)PGA里面無(wú)法就是一些“真值表”、觸發(fā)器、各種連線以及一些硬件資源,電子系統(tǒng)工程師使用FPGA進(jìn)行設(shè)計(jì)時(shí)無(wú)非就是考慮如何將這些以后資源組合起來(lái)實(shí)現(xiàn)一定的邏輯功能而已,而不必像IC設(shè)計(jì)工程師那樣一直要關(guān)注到最后芯片是不是能夠被制造出來(lái)。

本質(zhì)上和利用現(xiàn)有芯片組合成不同的電子系統(tǒng)沒(méi)有區(qū)別,只是需要關(guān)注更底層的資源而已。

要想把FPGA用起來(lái)還是簡(jiǎn)單的,因?yàn)闊o(wú)非就是那些資源,在理解了前面兩點(diǎn)再搞個(gè)實(shí)驗(yàn)板,跑跑實(shí)驗(yàn),做點(diǎn)簡(jiǎn)單的東西是可以的。

而真正要把FPGA用好,那光懂點(diǎn)FPGA知識(shí)就遠(yuǎn)遠(yuǎn)不夠了。因?yàn)樽罱K要讓FPGA里面的資源如何組合,實(shí)現(xiàn)何種功能才能滿足系統(tǒng)的需要,那就需要懂得更多更廣泛的知識(shí)。

3.5 數(shù)字邏輯知識(shí)是根本

無(wú)論是FPGA的哪個(gè)方向,都離不開數(shù)字邏輯知識(shí)的支撐。FPGA說(shuō)白了是一種實(shí)現(xiàn)數(shù)字邏輯的方式而已。如果連最基本的數(shù)字邏輯的知識(shí)都有問(wèn)題,學(xué)習(xí)FPGA的愿望只是空中樓閣而已。數(shù)字邏輯是任何電子電氣類專業(yè)的專業(yè)基礎(chǔ)知識(shí),也是必須要學(xué)好的一門課。

如果不能將數(shù)字邏輯知識(shí)爛熟于心,養(yǎng)成良好的設(shè)計(jì)習(xí)慣,學(xué)FPGA到最后仍然是霧里看花水中望月,始終是一場(chǎng)空的。

以上幾條只是我目前總結(jié)菜鳥們?cè)趯W(xué)習(xí)FPGA時(shí)所最容易跑偏的地方,F(xiàn)PGA的學(xué)習(xí)其實(shí)就像學(xué)習(xí)圍棋一樣,學(xué)會(huì)如何在棋盤上落子很容易,成為一位高手卻是難上加難。要真成為李昌鎬那樣的神一般的選手,除了靠刻苦專研,恐怕還確實(shí)得要一點(diǎn)天賦。

4.1 入門首先要掌握HDL(HDL=verilog VHDL)

第一句話是:還沒(méi)學(xué)數(shù)電的先學(xué)數(shù)電。然后你可以選擇verilog或者VHDL,有C語(yǔ)言基礎(chǔ)的,建議選擇VHDL。因?yàn)関erilog太像C了,很容易混淆,最后你會(huì)發(fā)現(xiàn),你花了大量時(shí)間去區(qū)分這兩種語(yǔ)言,而不是在學(xué)習(xí)如何使用它。當(dāng)然,你思維能轉(zhuǎn)得過(guò)來(lái),也可以選verilog,畢竟在國(guó)內(nèi)verilog用得比較多。

接下來(lái),首先找本實(shí)例抄代碼。

抄代碼的意義在于熟悉語(yǔ)法規(guī)則和編譯器(這里的編譯器是硅編譯器又叫綜合器,常用的編譯器有:

Quartus、ISE、Vivado、Design Compiler 、Synopsys的VCS、iverilog、Lattice的Diamond、Microsemi/Actel的Libero、Synplify pro),然后再模仿著寫,最后不看書也能寫出來(lái)。

編譯完代碼,就打開RTL圖,看一下綜合出來(lái)是什么樣的電路。

HDL是硬件描述語(yǔ)言,突出硬件這一特點(diǎn),所以要用數(shù)電的思維去思考HDL,而不是用C語(yǔ)言或者其它高級(jí)語(yǔ)言,如果不能理解這句話的,可以看《什么是硬件以及什么是軟件》。

在這一階段,推薦的教材是《Verilog傳奇》、《Verilog HDL高級(jí)數(shù)字設(shè)計(jì)》或者是《用于邏輯綜合的VHDL》。不看書也能寫出個(gè)三段式狀態(tài)機(jī)就可以進(jìn)入下一階段了。

此外,你手上必須準(zhǔn)備Verilog或者VHDL的官方文檔,《verilog_IEEE官方標(biāo)準(zhǔn)手冊(cè)-2005_IEEE_P1364》、《IEEE Standard VHDL Language_2008》,以便遇到一些語(yǔ)法問(wèn)題的時(shí)候能查一下。

4.2 獨(dú)立完成中小規(guī)模的數(shù)字電路設(shè)計(jì)

現(xiàn)在,你可以設(shè)計(jì)一些數(shù)字電路了,像交通燈、電子琴、DDS等等,推薦的教材是夏老《Verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程》(第三版)。在這一階段,你要做到的是:給你一個(gè)指標(biāo)要求或者時(shí)序圖,你能用HDL設(shè)計(jì)電路去實(shí)現(xiàn)它。這里你需要一塊開發(fā)板,可以選Altera的cyclone IV系列,或者Xilinx的Spantan 6。

還沒(méi)掌握HDL之前千萬(wàn)不要買開發(fā)板,因?yàn)槟阗I回來(lái)也沒(méi)用。這里你沒(méi)必要每次編譯通過(guò)就下載代碼,咱們用modelsim仿真(此外還有QuestaSim、NC verilog、Diamond的Active-HDL、VCS、Debussy/Verdi等仿真工具),如果仿真都不能通過(guò)那就不用下載了,肯定不行的。

在這里先掌握簡(jiǎn)單的testbench就可以了。推薦的教材是《WRITING TESTBENCHES Functional Verification of HDL Models》。

4.3 掌握設(shè)計(jì)方法和設(shè)計(jì)原則

你可能發(fā)現(xiàn)你綜合出來(lái)的電路盡管沒(méi)錯(cuò),但有很多警告。這個(gè)時(shí)候,你得學(xué)會(huì)同步設(shè)計(jì)原則、優(yōu)化電路,是速度優(yōu)先還是面積優(yōu)先,時(shí)鐘樹應(yīng)該怎樣設(shè)計(jì),怎樣同步兩個(gè)異頻時(shí)鐘等等。

推薦的教材是《FPGA權(quán)威指南》、《IP核芯志-數(shù)字邏輯設(shè)計(jì)思想》、《Altera FPGA/CPLD設(shè)計(jì)》第二版的基礎(chǔ)篇和高級(jí)篇兩本。學(xué)會(huì)加快編譯速度(增量式編譯、LogicLock),靜態(tài)時(shí)序分析(timequest),嵌入式邏輯分析儀(signaltap)就算是通關(guān)了。如果有不懂的地方可以暫時(shí)跳過(guò),因?yàn)檫@部分還需要足量的實(shí)踐,才能有較深刻的理解。

4.4 學(xué)會(huì)提高開發(fā)效率

因?yàn)镼uartus和ISE的編輯器功能太弱,影響了開發(fā)效率。所以建議使用Sublime text編輯器中代碼片段的功能,以減少重復(fù)性勞動(dòng)。Modelsim也是常用的仿真工具,學(xué)會(huì)TCL/TK以編寫適合自己的DO文件,使得仿真變得自動(dòng)化,推薦的教材是《TCL/TK入門經(jīng)典》。

你可能會(huì)手動(dòng)備份代碼,但是專業(yè)人士都是用版本控制器的,所以,為了提高工作效率,必須掌握GIT。

文件比較器Beyond Compare也是個(gè)比較常用的工具。此外,你也可以使用System Verilog來(lái)替代testbench,這樣效率會(huì)更高一些。如果你是做IC驗(yàn)證的,就必須掌握System Verilog和驗(yàn)證方法學(xué)(UVM)。推薦的教材是《Writing Testbenches using SystemVerilog》、《The UVM Primer》、《System Verilog1800-2012語(yǔ)法手冊(cè)》。

掌握了TCL/TK之后,可以學(xué)習(xí)虛擬Jtag(ISE也有類似的工具)制作屬于自己的調(diào)試工具,此外,有時(shí)間的話,最好再學(xué)個(gè)python。腳本,意味著一勞永逸。

4.5 增強(qiáng)理論基礎(chǔ)

這個(gè)時(shí)候,你已經(jīng)會(huì)使用FPGA了,但是還有很多事情做不了(比如,F(xiàn)IR濾波器、PID算法、OFDM等),因?yàn)槔碚摏](méi)學(xué)好。我大概地分幾個(gè)方向供大家參考,后面跟的是要掌握的理論課。

  • 信號(hào)處理 —— 信號(hào)與系統(tǒng)、數(shù)字信號(hào)處理、數(shù)字圖像處理、現(xiàn)代數(shù)字信號(hào)處理、盲信號(hào)處理、自適應(yīng)濾波器原理、雷達(dá)信號(hào)處理
  • 接口應(yīng)用 —— 如:UART、SPI、IIC、USB、CAN、PCIE、Rapid IO、DDR、TCP/IP、SPI4.2(10G以太網(wǎng)接口)、SATA、光纖、DisplayPort
  • 無(wú)線通信 —— 信號(hào)與系統(tǒng)、數(shù)字信號(hào)處理、通信原理、移動(dòng)通信基礎(chǔ)、隨機(jī)過(guò)程、信息論與編碼
  • CPU設(shè)計(jì) —— 計(jì)算機(jī)組成原理、單片機(jī)、計(jì)算機(jī)體系結(jié)構(gòu)、編譯原理
  • 儀器儀表 —— 模擬電子技術(shù)、高頻電子線路、電子測(cè)量技術(shù)、智能儀器原理及應(yīng)用
  • 控制系統(tǒng) —— 自動(dòng)控制原理、現(xiàn)代控制理論、過(guò)程控制工程、模糊控制器理論與應(yīng)用
  • 壓縮、編碼、加密 —— 數(shù)論、抽象代數(shù)、現(xiàn)代編碼技術(shù)、信息論與編碼、數(shù)據(jù)壓縮導(dǎo)論、應(yīng)用密碼學(xué)、音頻信息處理技術(shù)、數(shù)字視頻編碼技術(shù)原理

現(xiàn)在你發(fā)現(xiàn),原來(lái)FPGA會(huì)涉及到那么多知識(shí),你可以選一個(gè)感興趣的方向,但是工作中很有可能用到其中幾個(gè)方向的知識(shí),所以理論還是學(xué)得越多越好。如果你要更上一層,數(shù)學(xué)和英語(yǔ)是不可避免的。

4.6 學(xué)會(huì)使用MATLAB仿真

設(shè)計(jì)FPGA算法的時(shí)候,多多少少都會(huì)用到MATLAB,比如CRC的系數(shù)矩陣、數(shù)字濾波器系數(shù)、各種表格和文本處理等。

此外,MATLAB還能用于調(diào)試HDL(用MATLAB的計(jì)算結(jié)果跟用HDL算出來(lái)的一步步對(duì)照,可以知道哪里出問(wèn)題)。推薦的教材是《MATLAB寶典》和杜勇的《數(shù)字濾波器的MATLAB與FPGA實(shí)現(xiàn)》。

4.7 圖像處理

Photoshop

花一、兩周的時(shí)間學(xué)習(xí)PS,對(duì)圖像處理有個(gè)大概的了解,知道各種圖片格式、直方圖、色相、通道、濾鏡、拼接等基本概念,并能使用它。這部分是0基礎(chǔ),目的讓大家對(duì)圖像處理有個(gè)感性的認(rèn)識(shí),而不是一上來(lái)就各種各樣的公式推導(dǎo)。推薦《Photoshop CS6完全自學(xué)教程》。

基于MATLAB或OpenCV的圖像處理

有C/C 基礎(chǔ)的可以學(xué)習(xí)OpenCV,否則的話,建議學(xué)MATLAB。這個(gè)階段下,只要學(xué)會(huì)簡(jiǎn)單的調(diào)用函數(shù)即可,暫時(shí)不用深究實(shí)現(xiàn)的細(xì)節(jié)。推薦《數(shù)字圖像處理matlab版》、《學(xué)習(xí)OpenCV》。

圖像處理的基礎(chǔ)理論

這部分的理論是需要高數(shù)、復(fù)變、線性代數(shù)、信號(hào)與系統(tǒng)、數(shù)字信號(hào)處理等基礎(chǔ),基礎(chǔ)不好的話,建議先補(bǔ)補(bǔ)基礎(chǔ)再來(lái)??床欢睦碚撘部梢詴簳r(shí)先放下,或許學(xué)到后面就自然而然地開竅了。推薦《數(shù)字圖像處理》。

基于FPGA的圖像處理

把前面學(xué)到的理論運(yùn)用到FPGA上面,如果這時(shí)你有前面第七個(gè)階段的水平,你將輕松地獨(dú)立完成圖像算法設(shè)計(jì)(圖像處理是離不開接口的,上面第五個(gè)階段有講)。推薦《基于FPGA的嵌入式圖像處理系統(tǒng)設(shè)計(jì)》、《基于FPGA的數(shù)字圖像處理原理及應(yīng)用》。

進(jìn)一步鉆研數(shù)學(xué)。要在算法上更上一層,必然需要更多的數(shù)學(xué),所以這里建議學(xué)習(xí)實(shí)分析、泛涵分析、小波分析等。

5.1 為什么不推薦學(xué)習(xí)MicroBlaze等軟核?

性價(jià)比不高,一般的軟核性能大概跟Cortex M3或M4差不多,用FPGA那么貴的東西去做一個(gè)性能一般的CPU,在工程上是非常不劃算的。不如另外加一塊M3。

加上軟核,可能會(huì)影響到其它的邏輯的功能。這是在資源并不十分充足的情況下,再加上軟核,導(dǎo)致布局布線變得相當(dāng)困難。軟核不開源,出現(xiàn)Bug的時(shí)候,不容易調(diào)試。工程上很少使用,極有可能派不上用場(chǎng)。

5.2 為什么不推薦0基礎(chǔ)學(xué)習(xí)ZYNQ或SOC?

入門應(yīng)該學(xué)習(xí)盡量簡(jiǎn)單的東西,要么專心學(xué)習(xí)ARM,要么專心學(xué)習(xí)FPGA。這樣更容易有成就感,增強(qiáng)信心。

ZYNQ和SOC的應(yīng)用領(lǐng)域并不廣,還有很多人沒(méi)聽過(guò)這種東西,導(dǎo)致求職的不利。開發(fā)工具編譯時(shí)間長(zhǎng),浪費(fèi)較多時(shí)間。絕大多數(shù)工作,都只是負(fù)責(zé)一方面,也就是說(shuō)另一方面,很有可能派不上用場(chǎng)。

5.3 為什么已經(jīng)存在那么多IP核,仍需寫HDL?

問(wèn)這種問(wèn)題的,一般是學(xué)生,他們沒(méi)有做過(guò)產(chǎn)品,沒(méi)有遇到過(guò)工程上的問(wèn)題。IP核并非萬(wàn)能,不能滿足所有需求。盡量少用閉源IP核,一旦出問(wèn)題,這種黑匣子很可能讓產(chǎn)品難產(chǎn)。

深入理解底一層次,可以更好地使用高一層次。該法則可以適用于所有編程語(yǔ)言。

-END-

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。