目前世界上有兩種文明,一種是人類社會(huì)組成的的碳基文明,一種是各種芯片組成的硅基文明——因?yàn)閹缀跛械男酒际且詥尉Ч铻樵现谱鞯,芯片系統(tǒng)的總數(shù)比人類的數(shù)量還多出數(shù)十上百倍。芯片大家族里面也分各種不同類型的芯片,從古老的用電子管堆出來的成噸的邏輯門到現(xiàn)在的超級(jí)數(shù)據(jù)中心,電子技術(shù)的發(fā)展走過了一代又一代,到了今天,各種芯片更是百花齊放,芯片廠商百家爭(zhēng)鳴。
可是,這么多芯片,按照功能分類,有專門用于計(jì)算的、有專門用于控制的、有專門用于存儲(chǔ)的……按照集成電路規(guī)模分,有超大規(guī)模,大規(guī)模,和古老的中規(guī)模、小規(guī)模。而具體到了類型,又有CPU,SoC,DSP……有這么多的芯片,真的區(qū)分清除也是要花上一番功夫的,這篇文章就可以帶領(lǐng)大家了解一些基礎(chǔ)的、用來處理數(shù)據(jù)的集成電路芯片。
在這些專門用于處理數(shù)據(jù)的芯片中,最常用的就是由微處理器構(gòu)成的微處理器系統(tǒng),小到一塊單片機(jī),大到數(shù)據(jù)中心的幾十路幾十核地表最強(qiáng)處理器,都是由簡(jiǎn)單的微處理器系統(tǒng)發(fā)展而來,微處理器是應(yīng)用最廣泛的芯片。首先了解微處理器及微處理器系統(tǒng),對(duì)接下來了解各種芯片及控制系統(tǒng)的很有幫助。
微處理器系統(tǒng)
微處理器系統(tǒng),囊括了各種類型的計(jì)算機(jī),微控制器/單片機(jī)。世界上的微處理器系統(tǒng)的總數(shù)比人類總數(shù)還多得多。它的基本工作原理是用程序控制系統(tǒng)的行為。
微處理器系統(tǒng)的基本操作過程是中央處理器(Central Processing Unit, CPU)不斷地從存儲(chǔ)器取指并執(zhí)行,實(shí)現(xiàn)對(duì)系統(tǒng)的全面管理。
一、CPU結(jié)構(gòu)和功能CPU的結(jié)構(gòu):
▲圖:CPU的結(jié)構(gòu) 1) 控制器:完成指令的讀入、寄存、譯碼和執(zhí)行。
2) 寄存器:暫存用于尋址和計(jì)算過程的產(chǎn)生的地址和數(shù)據(jù)。
3) I/O控制邏輯:負(fù)責(zé)CPU中與輸入/輸出操作有關(guān)的邏輯。
4) 算數(shù)邏輯運(yùn)算單元(Arithmetic & Logic Unit, ALU):運(yùn)算器核心,負(fù)責(zé)進(jìn)行算術(shù)運(yùn)算、邏輯運(yùn)算和移位操作,用來進(jìn)行數(shù)值計(jì)算和產(chǎn)生存儲(chǔ)器訪問地址。
CPU的功能:
1) 與存儲(chǔ)器之間交換信息。
2) 和I/O設(shè)備之間交換信息。
3) 為了使系統(tǒng)正常工作而接收和輸出必要的信號(hào),如復(fù)位信號(hào)、電源、輸入時(shí)鐘脈沖等。
二、微處理器系統(tǒng)的結(jié)構(gòu)
▲圖:微處理器系統(tǒng)的結(jié)構(gòu) 1) CPU的外部特征就是數(shù)量有限的輸入輸出引腳。
2) 數(shù)據(jù)總線:用于CPU和存儲(chǔ)器或I/O接口之間傳送數(shù)據(jù),雙向通信;數(shù)據(jù)總線的條數(shù)決定了CPU和存儲(chǔ)器或I/O設(shè)備一次最多能交換數(shù)據(jù)的位數(shù),是微處理器的位數(shù)的判據(jù),例如:Intel 386DX、ARM Cortex-M3是32位微處理器;Intel采用了IA-64架構(gòu)的處理器、PowerPC 970是64位處理器;類似地,還有更加古老的8位、16位處理器等。
3) 地址總線:CPU通過地址總線輸出地址碼用以選擇某一存儲(chǔ)單元或某一成為I/O端口的寄存器,單向通信;地址總線的條數(shù)決定了地址碼的位數(shù),進(jìn)而決定了存儲(chǔ)空間的大小,例如:地址總線寬度(條數(shù))為8,則可以標(biāo)記2^8 = 256個(gè)存儲(chǔ)單元,若每個(gè)存儲(chǔ)單元的字長(zhǎng)為8 bit,則最大可以接入系統(tǒng)的存儲(chǔ)空間為256kB。
4) 控制總線:用來傳送自CPU發(fā)出的控制信息或外設(shè)送到CPU的狀態(tài)信息,雙向通信;
微處理器系統(tǒng)的程序設(shè)計(jì)語(yǔ)言:程序設(shè)計(jì)語(yǔ)言(Programming Language),又稱為編程語(yǔ)言,是用來定義計(jì)算機(jī)程序的,通過代碼向處理機(jī)發(fā)出指令。編程語(yǔ)言讓開發(fā)者能夠準(zhǔn)確地提供計(jì)算機(jī)所使用的數(shù)據(jù),并精確地控制在不同情況下所應(yīng)當(dāng)采取的行動(dòng)。最早的編程語(yǔ)言是在計(jì)算機(jī)發(fā)明之后產(chǎn)生的,當(dāng)時(shí)是用來控制提花織布機(jī)及自動(dòng)演奏鋼琴的動(dòng)作。在電腦領(lǐng)域已發(fā)明了上千不同的編程語(yǔ)言,而且每年仍有新的編程語(yǔ)言誕生。很多編程語(yǔ)言需要用指令方式說明計(jì)算的程序,而有些編程語(yǔ)言則屬于聲明式編程,說明需要的結(jié)果,而不說明如何計(jì)算。
機(jī)器語(yǔ)言:機(jī)器語(yǔ)言的每條語(yǔ)句即是處理器可以直接執(zhí)行的一條指令,這些指令是以二進(jìn)制0、1序列的形式表示,對(duì)應(yīng)數(shù)字集成電路的高低電平。不同的處理器指令的機(jī)器代碼各不相同,完成的具體功能也將不相同,按著一種計(jì)算機(jī)的機(jī)器指令編寫的程序,不能在另一種計(jì)算機(jī)上執(zhí)行。
示例:(僅作為示例,不代表真實(shí)硬件的機(jī)器代碼)
指令的機(jī)器代碼:
0000’0000 STORE
0000’0001 LOAD
地址的機(jī)器代碼:
0000’0000 寄存器R0
0000’0001 寄存器R1
優(yōu)點(diǎn):功能和代碼一一對(duì)應(yīng),CPU可以直接執(zhí)行,效率最高。
缺點(diǎn):只有二進(jìn)制0、1序列,枯燥,難以辨識(shí)。
匯編語(yǔ)言:用簡(jiǎn)潔的英文字母、符號(hào)串來替代一個(gè)特定的機(jī)器語(yǔ)言指令——二進(jìn)制0、1序列:用助記符(Memoni)代替操作碼,用地址符號(hào)(Symbol)或標(biāo)號(hào)(Label)代替地址碼。匯編語(yǔ)言與機(jī)器語(yǔ)言一一對(duì)應(yīng),所以和機(jī)器語(yǔ)言一樣對(duì)計(jì)算機(jī)硬件的依賴性很大。
示例:加法運(yùn)算(分號(hào)表示接注釋)
MOV R1,? R3;
將寄存器R3的值賦予R1
LDR R2, [R4]
;將寄存器R4的值代表的地址對(duì)應(yīng)的存儲(chǔ)空間的值賦予R2
ADCS R0, R1, R2
;將寄存器R1、R2與之前的進(jìn)位值相加且進(jìn)位,存儲(chǔ)到寄存器R0
優(yōu)點(diǎn):匯編語(yǔ)句和機(jī)器語(yǔ)言一一對(duì)應(yīng),助記符與標(biāo)號(hào)往往與實(shí)際意義相關(guān),相比于機(jī)器語(yǔ)言,更加直觀,容易理解,執(zhí)行效率上類似。
缺點(diǎn):不同的處理器指令集不同,移植性不好;即使完成簡(jiǎn)單的數(shù)據(jù)處理(如累加,簡(jiǎn)單排序等)所需的代碼體積很大,處理實(shí)際問題所需的工作量夸張,成本高。
高級(jí)語(yǔ)言:使用接近于數(shù)學(xué)語(yǔ)言或人類語(yǔ)言的表達(dá)描述程序。
特點(diǎn):相比于面向機(jī)器開發(fā)的機(jī)器語(yǔ)言和匯編語(yǔ)言,高級(jí)語(yǔ)言擁有較高的可讀性,并且代碼量大大減少;高級(jí)語(yǔ)言通常遠(yuǎn)離對(duì)硬件的直接操作,安全性較高,也有部分高級(jí)語(yǔ)言可以使用調(diào)用匯編語(yǔ)言的接口操控硬件;高級(jí)語(yǔ)言有很多成熟、易于使用、可移植的數(shù)據(jù)結(jié)構(gòu)與算法,使開發(fā)流程大大簡(jiǎn)化,節(jié)省開發(fā)成本,易于維護(hù);發(fā)展迅速,社區(qū)完備,可以很方便地求助,解決遇到的各種問題;已經(jīng)有很多各具特色、用以解決不同領(lǐng)域問題且發(fā)展相當(dāng)完備的高級(jí)語(yǔ)言供開發(fā)者選用,如:適合初學(xué)者了解編程思想的Basic;效率頗高,接近于硬件操控,適合系統(tǒng)、硬件驅(qū)動(dòng)編程與嵌入式開發(fā)的C/C++;跨平臺(tái)、可移植特性優(yōu)良的Java;搭配Visual Studio可以快速開發(fā)項(xiàng)目的C#。NET;適合于數(shù)據(jù)分析、人工智能,越來越被青睞的Python;Microsoft公司為未來的量子計(jì)算而開發(fā)的Q#,等等。諸如MATLAB、HTML、JavaScript這樣的用以在不同領(lǐng)域大顯身手的語(yǔ)言亦可以稱之為高級(jí)語(yǔ)言。
示例:加法運(yùn)算
int a = 1, b = 2, c;
c = a + b;
優(yōu)點(diǎn):不依賴于硬件,移植性好;不用場(chǎng)合選用適合的語(yǔ)言,開發(fā)效率高。
缺點(diǎn):不直接使用硬件,需要編譯-鏈接執(zhí)行或解釋執(zhí)行,沒有利用到具體硬件的特點(diǎn),效率相比于機(jī)器語(yǔ)言和匯編語(yǔ)言不高;先天的特點(diǎn)決定了高級(jí)語(yǔ)言在底層的設(shè)計(jì)中無法完全取代機(jī)器語(yǔ)言和匯編語(yǔ)言。
可以看出,微處理器系統(tǒng)的核心部件是CPU,使用微處理器系統(tǒng)控制外部的設(shè)備工作的實(shí)質(zhì)就是使用編寫軟件程序的手段來控制外部設(shè)備。由于CPU已經(jīng)是一個(gè)完整的、封裝好的部件,系統(tǒng)的設(shè)計(jì)人員只能通過編寫軟件,再經(jīng)由編譯器或解釋器翻譯為機(jī)器能夠理解的代碼來執(zhí)行,CPU并沒有專門的硬件電路來實(shí)現(xiàn)完全地控制外部設(shè)備的運(yùn)行,這種實(shí)現(xiàn)方式是軟件實(shí)現(xiàn),是一種通用的實(shí)現(xiàn),控制信號(hào)從軟件到硬件要經(jīng)過若干次轉(zhuǎn)化,但有的時(shí)候,工程和設(shè)計(jì)領(lǐng)域往往需要高速高性能的芯片來實(shí)現(xiàn)控制與計(jì)算,這時(shí)候就需要更加強(qiáng)大的CPU或?qū)讉(gè)CPU用一些技術(shù)并行起來協(xié)同工作,成本就會(huì)增加。這時(shí)候,可以不妨試試設(shè)計(jì)專門的硬件來滿足工作的需求。
三、專用集成電路
專用的集成電路(Application Specific Integrated Circuit, ASIC)是一種為專門目的而設(shè)計(jì)的集成電路。是指應(yīng)特定用戶要求和特定電子系統(tǒng)的需要而設(shè)計(jì)、制造的集成電路。ASIC的特點(diǎn)是面向特定用戶的需求,ASIC在批量生產(chǎn)時(shí)與通用集成電路相比具有體積更小、功耗更低、可靠性提高、性能提高、保密性增強(qiáng)、成本降低等優(yōu)點(diǎn)。
ASIC分為全定制和半定制。全定制設(shè)計(jì)需要設(shè)計(jì)者完成所有電路的設(shè)計(jì),包括芯片設(shè)計(jì)的所有流程,因此需要大量人力物力,靈活性好但開發(fā)效率低下。如果設(shè)計(jì)較為理想,全定制能夠比半定制的ASIC芯片運(yùn)行速度更快。半定制ASIC使用準(zhǔn)邏輯單元(Standard Cell),設(shè)計(jì)時(shí)可以從標(biāo)準(zhǔn)邏輯單元庫(kù)中選擇SSI(小規(guī)模集成電路,如門電路)、MSI(中規(guī)模集成電路,如加法器、比較器等)、數(shù)據(jù)通路(如ALU、存儲(chǔ)器、總線等)、存儲(chǔ)器甚至系統(tǒng)級(jí)模塊(如乘法器、微控制器等)和IP核,這些邏輯單元已經(jīng)布局完畢,而且設(shè)計(jì)得較為可靠,設(shè)計(jì)者可以較方便地完成系統(tǒng)設(shè)計(jì)。
當(dāng)今ASIC的設(shè)計(jì)方向已經(jīng)越來越多地使用可編程邏輯器件來構(gòu)造,開發(fā)門檻和難度不斷降低,流程不斷簡(jiǎn)化,成本不斷下降,業(yè)務(wù)也開始變得豐富且多元化。目前ASIC已經(jīng)走向了深度學(xué)習(xí)、人工智能、第五代移動(dòng)通信技術(shù)(5G)等高新技術(shù)領(lǐng)域,在可編程邏輯器件兩大巨頭Xilinx和Altera的推動(dòng)下,可以預(yù)見未來的ASIC設(shè)計(jì)將是可編程邏輯器件(尤其是現(xiàn)場(chǎng)可編程門陣列,F(xiàn)PGA)的天下。
四、可編程邏輯器件
可編程邏輯器件(Programmable Logic Device, PLD)是一種通用集成電路,它是ASIC的一個(gè)子集,邏輯功能可以按照用戶對(duì)器件編程來確定。一般的PLD的集成度很高,足以滿足設(shè)計(jì)一般的數(shù)字系統(tǒng)的需要。這樣就可以由設(shè)計(jì)人員自行編程而把一個(gè)數(shù)字系統(tǒng)“集成”在一片PLD上,而不必去請(qǐng)芯片制造廠商設(shè)計(jì)和制作ASIC芯片了,因?yàn)槿绻酒枨罅坎淮,設(shè)計(jì)制造ASIC的單片成本是很高的。
PLD與一般數(shù)字芯片不同的是:PLD內(nèi)部的數(shù)字電路可以在出廠后才規(guī)劃決定,甚至可以無限制改變,而一般數(shù)字芯片在出廠前就已經(jīng)決定其內(nèi)部電路,無法在出廠后再次改變,事實(shí)上一般的模擬芯片、通信芯片、微控制器也都一樣,出廠后就無法再對(duì)其內(nèi)部電路進(jìn)行更改。最近鬧得沸沸揚(yáng)揚(yáng)的Intel公司的芯片漏洞事件,就是因?yàn)镃PU的內(nèi)部電路已經(jīng)無法更改,所以只能設(shè)計(jì)新的CPU芯片來解決,或是損失一些性能用軟件修補(bǔ)的方法來彌補(bǔ)。
五、可編程邏輯器件的發(fā)展歷程
最早的可編程邏輯器件(PLD)是1970年制成的可編程只讀存儲(chǔ)器(PROM),它由固定的與陣列和可編程的或陣列組成。PROM采用熔絲技術(shù),只能寫一次,不能擦除和重寫。隨著技術(shù)的發(fā)展,此后又出現(xiàn)了紫外線可擦除只讀存儲(chǔ)器(UVEPROM)和電可擦除只讀存儲(chǔ)器(EEPROM)。由于其價(jià)格便宜、速度低、易于編程,適合于存儲(chǔ)函數(shù)和數(shù)據(jù)表格。
可編程邏輯陣列(PLA)于20世紀(jì)70年代中期出現(xiàn),它是由可編程的與陣列和可編程的或陣列組成,但由于器件的價(jià)格比較貴、編程復(fù)雜、資源利用率低,因而沒有得到廣泛應(yīng)用。
可編程陣列邏輯(PAL)是1977年美國(guó)MMI公司率先推出的,它采用熔絲編程方式,由可編程的與陣列和固定的或陣列組成,采用雙極性工藝制造,器件的工作速度很高。由于它的設(shè)計(jì)很靈活,輸出結(jié)構(gòu)種類很多,因而成為第一個(gè)得到普遍應(yīng)用的可編程邏輯器件
通用陣列邏輯(GAL)是1985年Lattice公司最先發(fā)明的可電擦寫、可重復(fù)編程、可設(shè)置加密位的PLD。GAL在PAL的基礎(chǔ)上,采用了輸出邏輯宏單元形式(EECMOS)工藝結(jié)構(gòu)。在實(shí)際應(yīng)用中,GAL對(duì)PAL仿真具有百分之百的兼容性,所以GAL幾乎完全代替了PAL,并可以取代大部分標(biāo)準(zhǔn)SSI、MSI集成芯片,因而獲得廣泛應(yīng)用。
可擦除可編程邏輯器件(EPLD)是20世紀(jì)80年代中期Altera公司推出的基于UVEPROM和CMOS技術(shù)的PLD,后來發(fā)展到采用EECMOS工藝制作的PLD,EPLD的基本邏輯單元是宏單元,宏單元是由可編程的與陣列、可編程寄存器和可編程I/O三部分組成的。從某種意義上講,EPLD是改進(jìn)的GAL,它在GAL基礎(chǔ)上大量增加輸出宏單元的數(shù)目,提供更大的與陣列,集成密度大幅提高,內(nèi)部連線相對(duì)固定,延時(shí)小,有利于器件在高頻下工作,但內(nèi)部互連能力較弱。
復(fù)雜可編程邏輯器件(CPLD)是20世紀(jì)80年代末Lattice公司提出了在線可編程技術(shù)(SP)以后于20世紀(jì)90年代初推出的。CPLD至少包含三種結(jié)構(gòu):可編程邏輯宏單元可編程I/O單元和可編程內(nèi)部連線,它是在EPLD的基礎(chǔ)上發(fā)展起來的,采用EECMOS工藝制作,與EPLD相比,增加了內(nèi)部連線,對(duì)邏輯宏單元和I/O單元也有很大改進(jìn)。
現(xiàn)場(chǎng)可編程門陣列(FPGA)器件是Xilinx公司1985年首家推出的,它是一種新型的高密度PLD,采用CMOS-SRAM工藝制作。FPGA的結(jié)構(gòu)與門陣列PLD不同,其內(nèi)部由許多獨(dú)立的可編程邏輯模塊(CLB)組成,邏輯塊之間可以靈活地相互連接,CLB的功能很強(qiáng),不僅能夠?qū)崿F(xiàn)邏輯函數(shù),還可以配置成RAM等復(fù)雜的形式。配置數(shù)據(jù)存放在芯片內(nèi)的SRAM中,設(shè)計(jì)人員可現(xiàn)場(chǎng)修改器件的邏輯功能,即所謂的現(xiàn)場(chǎng)可編程。FPGA出現(xiàn)后受到電子設(shè)計(jì)工程師的普遍歡迎,發(fā)展十分迅速。
FPGA和CPLD都具有體系結(jié)構(gòu)和邏輯單元靈活、集成度高以及適用范圍寬的特點(diǎn)。這兩種器件兼容了簡(jiǎn)單PLD和通用門陣列的優(yōu)點(diǎn),可實(shí)現(xiàn)較大規(guī)模的電路,編程也很靈活,與ASIC相比,具有設(shè)計(jì)開發(fā)周期短、設(shè)計(jì)制造成本低,開發(fā)工具先進(jìn)、標(biāo)準(zhǔn)產(chǎn)品無須測(cè)試、質(zhì)量穩(wěn)定等優(yōu)點(diǎn),用戶可以反復(fù)地編程、擦除、使用,或者在外圍電路不動(dòng)的情況下用不同軟件就可實(shí)現(xiàn)不同的功能以及可實(shí)時(shí)在線檢驗(yàn)。
CPLD是一種比PLD復(fù)雜的邏輯元件。CPLD是一種用戶可根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路。與FPGA相比,CPLD提供的邏輯資源相對(duì)較少,但是經(jīng)典CPLD構(gòu)架提供了非常好的組合邏輯實(shí)現(xiàn)能力和片內(nèi)信號(hào)延時(shí)可預(yù)測(cè)性,因此對(duì)于關(guān)鍵的控制應(yīng)用比較理想。
FPGA是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為ASIC領(lǐng)域中的一種半定制電路而出現(xiàn)的,提供了豐富的可編程邏輯資源、易用的存儲(chǔ)、運(yùn)算功能模塊和良好的性能,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。
FPGA和CPLD因?yàn)榻Y(jié)構(gòu)上的區(qū)別,各具自身特色。因?yàn)镕PGA的內(nèi)部構(gòu)造觸發(fā)器比例和數(shù)量多,所以它在時(shí)序邏輯設(shè)計(jì)方面更有優(yōu)勢(shì):而CPLD因具有與或門陣列資源豐富、程序掉電不易失等特點(diǎn),適用于組合邏輯為主的簡(jiǎn)單電路?傮w來說,由于FPGA資源豐富功能強(qiáng)大,在產(chǎn)品研發(fā)方面的應(yīng)用突出,當(dāng)前新推出的可編程邏輯器件芯片主要以FPGA類為主,隨著半導(dǎo)體工藝的進(jìn)步,其功率損耗越來越小,集成度越來越高。
在微處理器系統(tǒng)上,軟件設(shè)計(jì)師用程序設(shè)計(jì)語(yǔ)言控制整個(gè)系統(tǒng)的正常運(yùn)轉(zhuǎn),而在可編程器件領(lǐng)域,操作的對(duì)象不再是一組組數(shù)據(jù)類型,而是一些硬件器件,如存儲(chǔ)器,計(jì)數(shù)器等,甚至是一些更加底層的觸發(fā)器、邏輯門,有的甚至要精確到集成晶體管開關(guān)級(jí)的控制。并且很多器件不再是順序的阻塞式工作,而是并行的觸發(fā)工作,經(jīng)典的程序流程控制思想在可編程器件領(lǐng)域不適用。設(shè)計(jì)人員需要使用一種能夠構(gòu)造硬件電路的語(yǔ)言,即硬件描述語(yǔ)言。
六、硬件描述語(yǔ)言
硬件描述語(yǔ)言(Hardware Description Language, HDL)是一種用形式化方法描述邏輯電路和系統(tǒng)的語(yǔ)言。利用這種語(yǔ)言,邏輯電路系統(tǒng)的設(shè)計(jì)可以從上層到下層(從抽象到具體)逐層描述自己的設(shè)計(jì)思想,用一系列分層次的模塊來表示極其復(fù)雜的邏輯系統(tǒng)。然后,利用電子設(shè)計(jì)自動(dòng)化(EDA)工具,逐層進(jìn)行仿真驗(yàn)證,再把其中需要變?yōu)閷?shí)際電路的模塊組合,經(jīng)過自動(dòng)綜合工具轉(zhuǎn)換到門級(jí)電路網(wǎng)表。接下來,再用專用集成電路(ASIC)或現(xiàn)場(chǎng)可編程門陣列(FPGA)自動(dòng)布局布線工具,把網(wǎng)表轉(zhuǎn)換為要實(shí)現(xiàn)的具體電路布線結(jié)構(gòu)。據(jù)統(tǒng)計(jì),目前在美國(guó)的硅谷約有90%以上的ASIC和PLD采用硬件描述語(yǔ)言進(jìn)行設(shè)計(jì)。
硬件描述語(yǔ)言HDL的發(fā)展至今已有30多年的歷史,其成功地應(yīng)用于設(shè)計(jì)的各個(gè)階段:建模、仿真、驗(yàn)證和綜合等。到20世紀(jì)80年代,已出現(xiàn)了上百種硬件描述語(yǔ)言,對(duì)設(shè)計(jì)自動(dòng)化曾起到了極大的促進(jìn)和推動(dòng)作用。但是,這些語(yǔ)言一般各自面向特定的設(shè)計(jì)領(lǐng)域和層次,而且眾多的語(yǔ)言使用戶無所適從。因此,需要一種面向設(shè)計(jì)的多領(lǐng)域、多層次并得到普遍認(rèn)同的標(biāo)準(zhǔn)硬件描述語(yǔ)言。20世紀(jì)80年代后期至90年代,VHDL和Verilog HDL語(yǔ)言適應(yīng)了這種趨勢(shì)的要求,先后成為電氣和電子工程師協(xié)會(huì)(Institute of Electrical & Electronics Engineers, IEEE)標(biāo)準(zhǔn)。
現(xiàn)在,隨著超大規(guī)模FPGA以及包含SoC內(nèi)核FPGA芯片的出現(xiàn),軟硬件協(xié)調(diào)設(shè)計(jì)和系統(tǒng)設(shè)計(jì)變得越來越重要。傳統(tǒng)意義上的硬件設(shè)計(jì)越來越傾向于與系統(tǒng)設(shè)計(jì)和軟件設(shè)計(jì)結(jié)合。硬件描述語(yǔ)言為適應(yīng)新的情況,迅速發(fā)展,出現(xiàn)了很多新的硬件描述語(yǔ)言,像System Verilog,SystemC、Cynlib C++等;另一方面,PLD設(shè)計(jì)工具在原先僅支持硬件描述語(yǔ)言設(shè)計(jì)輸入的基礎(chǔ)上,日益增加對(duì)傳統(tǒng)高級(jí)設(shè)計(jì)語(yǔ)言(如C/C++)的設(shè)計(jì)支持。
目前,硬件描述語(yǔ)言可謂是百花齊放,有VHDL、Verilog HDL、Superlog、SystemC、System Verilog、Cynlib C++、C Level等。整體而言,在PLD開發(fā)領(lǐng)域應(yīng)用最廣的還是VHDL和Verilog HDL。隨著邏輯系統(tǒng)開發(fā)規(guī)模的不斷增大,SystemC和System Verilog等系統(tǒng)級(jí)硬件描述語(yǔ)言也得到越來越多的應(yīng)用。
VHDL
早在1980年,因?yàn)槊绹?guó)軍事工業(yè)需要描述電子系統(tǒng)的方法,美國(guó)國(guó)防部開始進(jìn)行VHDL的開發(fā)。1987年,IEEE將VHDL制定為標(biāo)準(zhǔn)。參考手冊(cè)為IEEE VHDL語(yǔ)言參考手冊(cè)標(biāo)準(zhǔn)草案1076/B版,于1987年批準(zhǔn),稱為IEEE 1076-1987。然而,起初VHDL只是作為系統(tǒng)規(guī)范的一個(gè)標(biāo)準(zhǔn),而不是為設(shè)計(jì)而制定的。第二個(gè)版本是在1993年制定的,稱為VHDL-93,增加了一些新的命令和屬性。
雖然有“VHDL是一個(gè)4億美元的錯(cuò)誤”這樣的說法,但VHDL畢竟是1995年以前唯一制定為標(biāo)準(zhǔn)的硬件描述語(yǔ)言,這是它不爭(zhēng)的事實(shí)和優(yōu)勢(shì);但同時(shí)它的使用確實(shí)比較麻煩,而且其綜合庫(kù)至今也沒有標(biāo)準(zhǔn)化,不具有晶體管開關(guān)級(jí)模擬設(shè)計(jì)的描述能力。目前來說,對(duì)于特大型的系統(tǒng)級(jí)邏輯電路設(shè)計(jì),VHDL是較為合適的。
實(shí)質(zhì)上,在底層的VHDL設(shè)計(jì)環(huán)境是由Verilog HDL描述的器件庫(kù)支持的,因此,它們之間的互操作性十分重要。目前,Verilog和VHDL的兩個(gè)國(guó)際組織OVI(Open Verilog International)、VI正在籌劃這一工作,準(zhǔn)備成立專門的工作組來協(xié)調(diào)VHDL和Verilog HDL語(yǔ)言的互操作性。OVI也支持不需要翻譯,由VHDL到Verilog的自由表達(dá)。
Verilog HDL
Verilog HDL是在1983年,由GDA(Gateway Design AUTOMATION)公司的Phil Moorby首創(chuàng)的。Phil Moorby后來成為Verilog-XL的主要設(shè)計(jì)者和Cadence公司的第一合伙人。在1984-1985年,Phil Moorby設(shè)計(jì)出了第一個(gè)名為Verilog-XL的仿真器;1986年,他對(duì)Verilog HDL的發(fā)展又作出了另一個(gè)巨大的貢獻(xiàn):提出了用于快速門級(jí)仿真的XL算法。
隨著Verilog-XL算法的成功,Verilog HDL語(yǔ)言得到迅速發(fā)展。1989年,Cadence公司收購(gòu)了GDA公司,Verilog HDL語(yǔ)言成為Cadence公司的私有財(cái)產(chǎn)。1990年,Cadence公司決定公開Verilog HDL語(yǔ)言,于是成立了OVI組織,負(fù)責(zé)促進(jìn)Verilog HDL語(yǔ)言的發(fā)展;赩erilog HDL的優(yōu)越性,IEEE于1995年制定了Verilog HDL的IEEE標(biāo)準(zhǔn),即Verilog HDL 1364-1995;2001年發(fā)布了Verilog HDL 1364—2001標(biāo)準(zhǔn),在這個(gè)標(biāo)準(zhǔn)中,加入了Verilog HDL - A標(biāo)準(zhǔn),使Verilog HDL有了模擬設(shè)計(jì)描述的能力
SystemC
隨著半導(dǎo)體技術(shù)的迅猛發(fā)展,SoC已經(jīng)成為當(dāng)今集成電路設(shè)計(jì)的發(fā)展方向,智能手機(jī),平板電腦里的處理器,嚴(yán)格地來說實(shí)際上是SoC,因?yàn)槠渖霞闪薈PU、圖形處理單元(Graphic Processing Unit, GPU)、數(shù)字信號(hào)處理器(Digital Signal Processor)、基帶(Baseband)信號(hào)處理器等。在系統(tǒng)芯片的各個(gè)設(shè)計(jì)(像系統(tǒng)定義、軟硬件劃分、設(shè)計(jì)實(shí)現(xiàn)等)中,集成電路設(shè)計(jì)界一直在考慮如何滿足SoC的設(shè)計(jì)要求,一直在尋找一種能同時(shí)實(shí)現(xiàn)較高層次的軟件和硬件描述的系統(tǒng)級(jí)設(shè)計(jì)語(yǔ)言
SystemC正是在這種情況下,由Synopsys公司和Coware公司積極響應(yīng)目前各方對(duì)系統(tǒng)級(jí)設(shè)計(jì)語(yǔ)言的需求而合作開發(fā)的。1999年9月27日,40多家世界著名的EDA公司、IP公司、半導(dǎo)體公司和嵌入式軟件公司宣布成立“開放式SystemC聯(lián)盟”。著名公司Cadence也于2001年加入了SystemC聯(lián)盟。SystemC從1999年9月聯(lián)盟建立初期的0.9版本開始更新,從1.0版到1.1版,一直到2001年10月推出了最新的2.0版。
七、常見的數(shù)據(jù)處理芯片
既然已經(jīng)梳理了兩大類(微處理器,專用集成電路)芯片的概念和原理,接下來就了解一下常見的芯片
MCU
日常生活中最常見得到的微處理器系統(tǒng)就是我們身邊的微型計(jì)算機(jī),也就是個(gè)人電腦(Personal Computer, PC),可以使臺(tái)式機(jī)、筆記本,或是PC界的新秀——各種炫酷的二合一設(shè)備。這些看起來復(fù)雜無比的電子系統(tǒng)都是由最簡(jiǎn)單的微處理器系統(tǒng)發(fā)展起來的。但是生活中并不需要那么多的電腦,比如想要做一臺(tái)能夠自動(dòng)控制加熱保溫的電飯煲,其CPU性能可能只需要電腦這樣的大家伙的九牛一毛即可,也不需要復(fù)雜的輸入輸出設(shè)備,在設(shè)計(jì)上大可以大刀闊斧地將用不到的部分砍掉,靈活地將CPU、時(shí)鐘發(fā)生器(Clock)、隨機(jī)存儲(chǔ)器(Random Access Memory, RAM)、只讀存儲(chǔ)器(Read-Only Memory, ROM)和需要的外部設(shè)備集成起來小型化,這種經(jīng)過大改觀的微處理器系統(tǒng),其所有部分都集成在了一塊芯片上,稱為微控制器或單片機(jī)(Micro Controller Unit, MCU)。目前MCU是應(yīng)用最廣泛的一種電子控制芯片,其控制程序可以由特殊的燒錄工具下載到ROM中,行使系統(tǒng)的功能。這些ROM可以使以是PROM、UVEPROM、EEPROM等,若MCU上沒有集成ROM,也可以外接ROM。按照系統(tǒng)結(jié)構(gòu),微處理器系統(tǒng)可以分為馮·諾依曼結(jié)構(gòu)(也稱普雷斯頓結(jié)構(gòu))和哈佛結(jié)構(gòu),其區(qū)別是程序與數(shù)據(jù)的存放方式不同,同樣地,MCU芯片也可以分為這兩種結(jié)構(gòu),靈活地滿足需要。
MPU
微處理器單元(Micro Processor Unit, MPU),就是把很多CPU集成在一起并行處理數(shù)據(jù)的芯片。通俗來說,MCU集成了RAM,ROM等設(shè)備;MPU則不集成這些設(shè)備,是高度集成的通用結(jié)構(gòu)的中央處理器矩陣,也可以認(rèn)為是去除了集成外設(shè)的MCU。
PLD(CPLD/FPGA)
因?yàn)槟壳皬V泛使用的PLD是CPLD和FPGA,因此把這兩種芯片作為例子介紹。前面已經(jīng)介紹過,CPLD/FPGA的內(nèi)部結(jié)構(gòu)和CPU完全不同,內(nèi)部電路可以被多次修改,可以按照用戶的編程形成不同的組合邏輯電路、時(shí)序邏輯電路結(jié)構(gòu),是一種“萬(wàn)能”的芯片,CPLD/FPGA看起來像一個(gè)CPU,其實(shí)不然,因?yàn)槭褂肅PLD/FPGA實(shí)現(xiàn)控制是純硬件實(shí)現(xiàn),實(shí)質(zhì)上和使用成千上萬(wàn)基本邏輯門搭建的數(shù)字邏輯電路沒有區(qū)別。因此可以直接用HDL編程在CPLD/FPGA里搭建出一個(gè)“CPU”(有時(shí)還有硬盒和軟核之分,限于篇幅,不再贅述),再做好相應(yīng)的I/O、總線,就是一個(gè)簡(jiǎn)單的微處理器系統(tǒng)了。但是這樣一來,又變成了軟件控制,PLD的硬件控制優(yōu)勢(shì)蕩然無存。故CPLD/FPGA經(jīng)常和實(shí)際的CPU搭配使用,在CPLD/FPGA上編寫一些較復(fù)雜算法的運(yùn)算電路,當(dāng)CPU處理到這些復(fù)雜任務(wù)時(shí),就交由CPLD/FPGA進(jìn)行處理,處理結(jié)束以后再將結(jié)果返回給CPU,提高控制系統(tǒng)的整體性能。
ADC、DAC 自然界的物理量分為模擬(Analog)量和數(shù)字(Digital)量?jī)煞N。模擬量在一定范圍內(nèi)的取值是連續(xù)的,個(gè)數(shù)是無窮的;數(shù)字量在一定范圍內(nèi)的取值是離散的,個(gè)數(shù)是有限的。計(jì)算機(jī)只能處理離散的數(shù)字量,所以模擬信號(hào)必須經(jīng)過變換才能交由計(jì)算機(jī)處理。將自然界的物理量轉(zhuǎn)化為連續(xù)變化的電流或電壓(故稱“模擬”),在滿足奈奎斯特采樣定理(Nyquist Sampling Theory,也稱香農(nóng)采樣定理,Shannon Sampling Theory)的條件下采樣,得到時(shí)域離散信號(hào),再經(jīng)量化器(可以是線性量化和非線性量化)量化后數(shù)字信號(hào),最后經(jīng)過一道編碼得到二進(jìn)制的0、1數(shù)字信息,才能交由計(jì)算機(jī)處理。以上的這一道變換稱為模數(shù)轉(zhuǎn)換(A/D),可以將這部分電路集成到一塊芯片上,這就是模數(shù)轉(zhuǎn)換電路(Analog Digital Circuit, ADC),相應(yīng)的也有數(shù)模轉(zhuǎn)換(D/A)和數(shù)模轉(zhuǎn)換電路(Digital Analog Circuit, DAC)芯片,進(jìn)行D/A的時(shí)候同樣要在數(shù)學(xué)和信息論上滿足相關(guān)定理。
DSP
數(shù)字信號(hào)處理器(Digital Signal Processor, DSP)是用來高速處理數(shù)字信號(hào)的專用芯片。
經(jīng)過ADC轉(zhuǎn)化好的數(shù)字信號(hào),數(shù)據(jù)量往往很龐大,直接交由CPU處理的效率是不高的,并且CPU還要進(jìn)行更多的通用計(jì)算的任務(wù)。因此,常常采用專用的電路來處理數(shù)字信號(hào),如數(shù)字濾波、快速傅里葉變換、時(shí)頻分析、語(yǔ)音信號(hào)和圖像信號(hào)的處理加工等。這些運(yùn)算往往很復(fù)雜,很多涉及復(fù)數(shù)的累加、累乘運(yùn)算,舉個(gè)例子:離散傅里葉變換的計(jì)算就十分復(fù)雜,但是運(yùn)用時(shí)域抽取或頻域抽取的快速傅里葉變換算法后就可以大大減少運(yùn)算量,但是電路較為復(fù)雜。將能完成這些復(fù)雜運(yùn)算的電路集成在一塊芯片上,能在一個(gè)時(shí)鐘周期完成一次乘加運(yùn)算,使其能完成如基2-FFT蝶形運(yùn)算、音頻濾波、圖像處理等復(fù)雜運(yùn)算,這樣的芯片叫做DSP。DSP也是一種特殊的CPU,特別適合信號(hào)的處理,如3G中的Node B就大量使用了DSP進(jìn)行信號(hào)處理。DSP對(duì)于流媒體的處理能力遠(yuǎn)遠(yuǎn)的優(yōu)于CPU,現(xiàn)在手機(jī)上的語(yǔ)音信號(hào)都是由DSP處理的,F(xiàn)階段DSP的概念正在變得模糊,如ARM9的架構(gòu)就不像是一顆CPU,更像是一顆DSP,F(xiàn)在有很多芯片,其上都集成了DSP,GPU,基帶處理器等,越來越多的傳統(tǒng)上分立的芯片被集成到一起,協(xié)同工作以提高效率,降低能耗,這也是未來的一個(gè)趨勢(shì)。
SoC
隨著半導(dǎo)體技術(shù)、移動(dòng)互聯(lián)網(wǎng)和智能終端的迅猛發(fā)展,傳統(tǒng)的微處理器系統(tǒng)的發(fā)展已經(jīng)跟不上時(shí)代的潮流,現(xiàn)代信息技術(shù)迫切地需要一種功能多,性能強(qiáng),功耗低的芯片來滿足越來越多的智能設(shè)備的需求。SoC便應(yīng)運(yùn)而生。
SoC的全稱是System on a Chip,顧名思義,就是在一塊芯片上集成一整個(gè)信息處理系統(tǒng),稱為片上系統(tǒng)或系統(tǒng)級(jí)芯片。這個(gè)定義現(xiàn)在也不盡明確,因?yàn)椴煌猛镜腟oC上集成的部件是不一樣的,一般說來,SoC是一個(gè)完整的整體,已經(jīng)擁有了整個(gè)數(shù)字系統(tǒng)的完整功能它也是一種ASIC,其中包含完整的控制系統(tǒng)并有嵌入式的軟件。
SoC也代表著一種技術(shù),是一種以確定系統(tǒng)功能為目標(biāo),各個(gè)模塊的軟硬件協(xié)同開發(fā),最后把開發(fā)成果集成為一塊芯片的技術(shù)。由于功能豐富,又要求有不俗的性能發(fā)揮,SoC已然是功能最為豐富的硬件,其上集成了CPU、GPU、RAM、ADC/DAC、Modem、高速DSP等各種芯片,有的SoC上還必須集成電源管理模塊,各種外部設(shè)備的控制模塊,充分考慮各總線的分布利用……現(xiàn)如今,智能手機(jī)里的SoC上就集成了以上的部件和基帶處理器等很多相關(guān)的通信模塊。
SoC的電路相比于傳統(tǒng)的微處理器系統(tǒng)更加復(fù)雜,其對(duì)設(shè)計(jì)和制造工藝的要求自然更上一層樓,對(duì)軟硬件協(xié)同開發(fā)的依賴性相當(dāng)高。迄今為止,在半導(dǎo)體行業(yè)首屈一指的企業(yè)才有自主設(shè)計(jì)制造SoC的能力,目前在性能和功耗敏感的終端芯片領(lǐng)域,SoC已占據(jù)主導(dǎo)地位,人們每天使用的手機(jī)里面,就有一顆顆性能強(qiáng)勁,永遠(yuǎn)在線的SoC在為我們服務(wù)。就連傳統(tǒng)的軟件大廠微軟也推出了基于高通公司的驍龍835平臺(tái)的Windows操作系統(tǒng);而且SoC的應(yīng)用正在擴(kuò)展到更廣的領(lǐng)域,SoC在無人機(jī)技術(shù)、自動(dòng)駕駛,深度學(xué)習(xí)等行業(yè)也有越來越多的應(yīng)用,用一塊單芯片就能實(shí)現(xiàn)完整的電子系統(tǒng),是半導(dǎo)體行業(yè)、IC產(chǎn)業(yè)未來的發(fā)展方向。