大俠好,歡迎來(lái)到FPGA技術(shù)江湖。本系列將帶來(lái)FPGA的系統(tǒng)性學(xué)習(xí),從最基本的數(shù)字電路基礎(chǔ)開(kāi)始,最詳細(xì)操作步驟,最直白的言語(yǔ)描述,手把手的“傻瓜式”講解,讓電子、信息、通信類專業(yè)學(xué)生、初入職場(chǎng)小白及打算進(jìn)階提升的職業(yè)開(kāi)發(fā)者都可以有系統(tǒng)性學(xué)習(xí)的機(jī)會(huì)。
系統(tǒng)性的掌握技術(shù)開(kāi)發(fā)以及相關(guān)要求,對(duì)個(gè)人就業(yè)以及職業(yè)發(fā)展都有著潛在的幫助,希望對(duì)大家有所幫助。后續(xù)會(huì)陸續(xù)更新 Xilinx 的 Vivado、ISE 及相關(guān)操作軟件的開(kāi)發(fā)的相關(guān)內(nèi)容,學(xué)習(xí)FPGA設(shè)計(jì)方法及設(shè)計(jì)思想的同時(shí),實(shí)操結(jié)合各類操作軟件,會(huì)讓你在技術(shù)學(xué)習(xí)道路上無(wú)比的順暢,告別技術(shù)學(xué)習(xí)小BUG卡破腦殼,告別目前忽悠性的培訓(xùn)誘導(dǎo),真正的去學(xué)習(xí)去實(shí)戰(zhàn)應(yīng)用,這種快樂(lè)試試你就會(huì)懂的。話不多說(shuō),上貨。
半導(dǎo)體存儲(chǔ)器和可編程邏輯器件簡(jiǎn)介
作者:郝旭帥 校對(duì):陸輝
半導(dǎo)體存儲(chǔ)器是一種能存儲(chǔ)大量二值信息的半導(dǎo)體器件。在電子計(jì)算機(jī)以及其他一些數(shù)字系統(tǒng)的工作過(guò)程中,都需要對(duì)大量的數(shù)據(jù)進(jìn)行存儲(chǔ)。因此,存儲(chǔ)器也就成為了數(shù)字系統(tǒng)不可缺少的組成部分。
由于計(jì)算機(jī)處理的數(shù)據(jù)量越來(lái)越大,運(yùn)算速度越來(lái)越快,這就要求存儲(chǔ)器具有更大的存儲(chǔ)容量和更快的存取速度。通常把存儲(chǔ)量和存取速度作為衡量存儲(chǔ)器性能的重要指標(biāo)。因?yàn)榘雽?dǎo)體存儲(chǔ)器的存儲(chǔ)單元數(shù)目及其龐大而器件的引腳數(shù)目有限,所以在電路結(jié)構(gòu)上就不可能像寄存器那樣把每個(gè)存儲(chǔ)單元的輸入和輸出直接引出。為了解決這個(gè)矛盾,在存儲(chǔ)器中給每個(gè)存儲(chǔ)單元編了一個(gè)地址,只有被輸入地址代碼指定的那些存儲(chǔ)單元才能與公共的輸入/輸出引腳接通,進(jìn)行數(shù)據(jù)的讀出或?qū)懭搿?/p>
半導(dǎo)體存儲(chǔ)器的種類很多,首先從存、取功能上可以分為只讀存儲(chǔ)器(read only memory 簡(jiǎn)稱ROM)和隨機(jī)存儲(chǔ)器(random access memory 簡(jiǎn)稱RAM)兩大類。
ROM:只讀存儲(chǔ)器(Read-Only Memory)是一種只能讀取資料的存儲(chǔ)器。在制造過(guò)程中,將資料以一特制光罩(mask)燒錄于線路中,其資料內(nèi)容在寫(xiě)入后就不能更改,所以有時(shí)又稱為“光罩式只讀內(nèi)存”(mask ROM)。此內(nèi)存的制造成本較低,常用于電腦中的開(kāi)機(jī)啟動(dòng)如啟動(dòng)光盤(pán),在系統(tǒng)裝好的電腦上時(shí),計(jì)算機(jī)將C盤(pán)目錄下的操作系統(tǒng)文件讀取至內(nèi)存,然后通過(guò)cpu調(diào)用各種配件進(jìn)行工作這時(shí)系統(tǒng)存放存儲(chǔ)器為RAM。
ROM:可編程只讀存儲(chǔ)器(Programmable ROM,PROM)之內(nèi)部有行列式的熔絲,是需要利用電流將其燒斷,寫(xiě)入所需的資料,但僅能寫(xiě)錄一次。PROM在出廠時(shí),存儲(chǔ)的內(nèi)容全為1,用戶可以根據(jù)需要將其中的某些單元寫(xiě)入數(shù)據(jù)0。部分的PROM在出廠時(shí)數(shù)據(jù)全為0,則用 戶可以將其中的部分單元寫(xiě)入1, 以實(shí)現(xiàn)對(duì)其“編程”的目的。PROM的典型產(chǎn)品是“雙極性熔絲結(jié)構(gòu)”,如果我們想改寫(xiě)某些單元,則可以給這些單元通以足夠大的電流,并維持一定的時(shí)間,原 先的熔絲即可熔斷,這樣就達(dá)到了改寫(xiě)某些位的效果。另外一類經(jīng)典的PROM為使用“肖特基二極管”的PROM,出廠時(shí),其中的二極管處于反向截止?fàn)顟B(tài),還 是用大電流的方法將反相電壓加在“肖特基二極管”,造成其永久性擊穿即可。
EPROM:可抹除可編程只讀存儲(chǔ)器(Erasable Programmable Read Only Memory,EPROM)可利用高電壓將資料編程寫(xiě)入,抹除時(shí)將線路曝光于紫外線下,則資料可被清空,并且可重復(fù)使用。通常在封裝外殼上會(huì)預(yù)留一個(gè)石英透明窗以方便曝光。
OTPROM :一次編程只讀存儲(chǔ)器(One Time Programmable Read Only Memory,OTPROM)之寫(xiě)入原理同EPROM,但是為了節(jié)省成本,編程寫(xiě)入之后就不再抹除,因此不設(shè)置透明窗。
EEPROM :電子式可抹除可編程只讀存儲(chǔ)器(Electrically Erasable Programmable Read Only Memory,EEPROM)之運(yùn)作原理類似EPROM,但是抹除的方式是使用高電場(chǎng)來(lái)完成,因此不需要透明窗。
FLASH :快閃存儲(chǔ)器(Flash memory)的每一個(gè)記憶胞都具有一個(gè)“控制閘”與“浮動(dòng)閘”,利用高電場(chǎng)改變浮動(dòng)閘的臨限電壓即可進(jìn)行編程動(dòng)作。
隨機(jī)存取存儲(chǔ)器(英語(yǔ):Random Access Memory,縮寫(xiě):RAM),也叫主存,是與CPU直接交換數(shù)據(jù)的內(nèi)部存儲(chǔ)器。它可以隨時(shí)讀寫(xiě)(刷新時(shí)除外),而且速度很快,通常作為操作系統(tǒng)或其他正在運(yùn)行中的程序的臨時(shí)數(shù)據(jù)存儲(chǔ)介質(zhì)。RAM工作時(shí)可以隨時(shí)從任何一個(gè)指定的地址寫(xiě)入(存入)或讀出(取出)信息。它與ROM的最大區(qū)別是數(shù)據(jù)的易失性,即一旦斷電所存儲(chǔ)的數(shù)據(jù)將隨之丟失。RAM在計(jì)算機(jī)和數(shù)字系統(tǒng)中用來(lái)暫時(shí)存儲(chǔ)程序、數(shù)據(jù)和中間結(jié)果。
SRAM : 靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)是在靜態(tài)觸發(fā)器的基礎(chǔ)上附加門(mén)控管而構(gòu)成的。因此,它是靠觸發(fā)器的自保功能存儲(chǔ)數(shù)據(jù)的。SRAM存放的信息在不停電的情況下能長(zhǎng)時(shí)間保留,狀態(tài)穩(wěn)定,不需外加刷新電路,從而簡(jiǎn)化了外部電路設(shè)計(jì)。但由于SRAM的基本存儲(chǔ)電路中所含晶體管較多,故集成度較低,且功耗較大。
DRAM :動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DRAM)利用電容存儲(chǔ)電荷的原理保存信息,電路簡(jiǎn)單,集成度高。由于任何電容都存在漏電,因此,當(dāng)電容存儲(chǔ)有電荷時(shí),過(guò)一段時(shí)間由于電容放電會(huì)導(dǎo)致電荷流失,使保存信息丟失。解決的辦法是每隔一定時(shí)間須對(duì)DRAM進(jìn)行刷新,使原處于邏輯電平“l”的電容上所泄放的電荷又得到補(bǔ)充,原處于電平“0”的電容仍保持“0”,這個(gè)過(guò)程叫DRAM的刷新。
上述簡(jiǎn)單介紹了各類存儲(chǔ)器,內(nèi)部結(jié)構(gòu)和驅(qū)動(dòng)原理不在介紹,有興趣的讀者可以自己查閱資料。
集成電路(integrated circuit)是一種微型電子器件或部件。采用一定的工藝,把一個(gè)電路中所需的晶體管、電阻、電容和電感等元件及布線互連一起,制作在一小塊或幾小塊半導(dǎo)體晶片或介質(zhì)基片上,然后封裝在一個(gè)管殼內(nèi),成為具有所需電路功能的微型結(jié)構(gòu);其中所有元件在結(jié)構(gòu)上已組成一個(gè)整體,使電子元件向著微小型化、低功耗、智能化和高可靠性方面邁進(jìn)了一大步。它在電路中用字母“IC”表示。集成電路發(fā)明者為杰克·基爾比(基于鍺(Ge)的集成電路)和羅伯特·諾伊思(基于硅(Si)的集成電路)。當(dāng)今半導(dǎo)體工業(yè)大多數(shù)應(yīng)用的是基于硅的集成電路。
集成電路是20世紀(jì)50年代后期一60年代發(fā)展起來(lái)的一種新型半導(dǎo)體器件。它是經(jīng)過(guò)氧化、光刻、擴(kuò)散、外延、蒸鋁等半導(dǎo)體制造工藝,把構(gòu)成具有一定功能的電路所需的半導(dǎo)體、電阻、電容等元件及它們之間的連接導(dǎo)線全部集成在一小塊硅片上,然后焊接封裝在一個(gè)管殼內(nèi)的電子器件。其封裝外殼有圓殼式、扁平式或雙列直插式等多種形式。集成電路技術(shù)包括芯片制造技術(shù)與設(shè)計(jì)技術(shù),主要體現(xiàn)在加工設(shè)備,加工工藝,封裝測(cè)試,批量生產(chǎn)及設(shè)計(jì)創(chuàng)新的能力上。
ASIC即專用集成電路,是指應(yīng)特定用戶要求和特定電子系統(tǒng)的需要而設(shè)計(jì)、制造的集成電路。
在設(shè)計(jì)一個(gè)復(fù)雜的數(shù)字系統(tǒng)后,在用量不大的情況下,設(shè)計(jì)和制造這樣的專用集成電路不僅成本很高,而且設(shè)計(jì)、制造的周期很長(zhǎng)。可編程邏輯器件(programmable logic device 簡(jiǎn)稱PLD)的研制成功為解決這個(gè)問(wèn)題提供了理想途徑。
PLD是做為一種通用集成電路產(chǎn)生的,他的邏輯功能按照用戶對(duì)器件編程來(lái)確定。一般的PLD的集成度很高,足以滿足設(shè)計(jì)一般的數(shù)字系統(tǒng)的需要。這樣就可以由設(shè)計(jì)人員自行編程而把一個(gè)數(shù)字系統(tǒng)“集成”在一片PLD上,而不必去請(qǐng)芯片制造廠商設(shè)計(jì)和制作專用的集成電路芯片了。
基于SRAM(靜態(tài)隨機(jī)存儲(chǔ)器)的可重配置PLD(可編程邏輯器件)的出現(xiàn),為系統(tǒng)設(shè)計(jì)者動(dòng)態(tài)改變運(yùn)行電路中PLD的邏輯功能創(chuàng)造了條件。PLD使用SRAM單元來(lái)保存配置數(shù)據(jù)。這些配置數(shù)據(jù)決定了PLD內(nèi)部的互連關(guān)系和邏輯功能,改變這些數(shù)據(jù),也就改變了器件的邏輯功能。
下面我們介紹兩種常用的PLD器件:CPLD和FPGA;
CPLD:復(fù)雜可編程邏輯器件,CPLD主要由邏輯塊、可編程互連通道和I/O塊三部分構(gòu)成。CPLD中的邏輯塊類似于一個(gè)小規(guī)模PLD,通常一個(gè)邏輯塊包含4~20個(gè)宏單元,每個(gè)宏單元一般由乘積項(xiàng)陣列、乘積項(xiàng)分配和可編程寄存器構(gòu)成。每個(gè)宏單元有多種配置方式,各宏單元也可級(jí)聯(lián)使用, 因此可實(shí)現(xiàn)較復(fù)雜組合邏輯和時(shí)序邏輯功能。對(duì)集成度較高的CPLD,通常還提供了帶片內(nèi)RAM/ROM的嵌入陣列塊??删幊袒ミB通道主要提供邏輯塊、宏單元、輸入/輸出引腳間的互連網(wǎng)絡(luò)。輸入/輸出塊(I/O塊)提供內(nèi)部邏輯到器件I/O引腳之間的接口。
FPGA :FPGA(Field Programmable Gate Array)是在PAL、GAL等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門(mén)電路數(shù)有限的缺點(diǎn)。FPGA 器件屬于專用集成電路中的一種半定制電路,是可編程的邏輯列陣,能夠有效的解決原有的器件門(mén)電路數(shù)較少的問(wèn)題。FPGA 的基本結(jié)構(gòu)包括可編程輸入輸出單元,可配置邏輯塊,數(shù)字時(shí)鐘管理模塊,嵌入式塊RAM,布線資源,內(nèi)嵌專用硬核,底層內(nèi)嵌功能單元。由于FPGA具有布線資源豐富,可重復(fù)編程和集成度高,投資較低的特點(diǎn),在數(shù)字電路設(shè)計(jì)領(lǐng)域得到了廣泛的應(yīng)用。
FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個(gè)概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸入輸出模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個(gè)部分。現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)是可編程器件,與傳統(tǒng)邏輯電路和門(mén)陣列(如PAL,GAL及CPLD器件)相比,F(xiàn)PGA具有不同的結(jié)構(gòu)。FPGA利用小型查找表(16×1RAM)來(lái)實(shí)現(xiàn)組合邏輯,每個(gè)查找表連接到一個(gè)D觸發(fā)器的輸入端,觸發(fā)器再來(lái)驅(qū)動(dòng)其他邏輯電路或驅(qū)動(dòng)I/O,由此構(gòu)成了既可實(shí)現(xiàn)組合邏輯功能又可實(shí)現(xiàn)時(shí)序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過(guò)向內(nèi)部靜態(tài)存儲(chǔ)單元加載編程數(shù)據(jù)來(lái)實(shí)現(xiàn)的,存儲(chǔ)在存儲(chǔ)器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯(lián)接方式,并最終決定了FPGA所能實(shí)現(xiàn)的功能,F(xiàn)PGA允許無(wú)限次的編程。
圖1 :FPGA的基本結(jié)構(gòu)圖
FPGA在安防,工業(yè)等領(lǐng)域有著比較廣泛的應(yīng)用,比如安防領(lǐng)域的視頻編碼解碼等協(xié)議在前端數(shù)據(jù)采集和邏輯控制的過(guò)程中可以利用FPGA處理。工業(yè)領(lǐng)域主要采用規(guī)模較小的FPGA,滿足靈活性的需求。另外,由于 FPGA具有比較高的可靠性,因此在軍工以及航天領(lǐng)域也有比較廣泛的應(yīng)用。未來(lái),隨著技術(shù)的不斷完善,相關(guān)工藝將會(huì)完成升級(jí)改造,在諸多新型行業(yè)比如大數(shù)據(jù)等,F(xiàn)PGA將會(huì)有更為廣泛的應(yīng)用前景。伴隨5G網(wǎng)絡(luò)的建設(shè),會(huì)大量應(yīng)用FPGA,人工智能等新型的領(lǐng)域也會(huì)更多的用到FPGA。
目前用CPLD(復(fù)雜可編程邏輯器件)和 FPGA(現(xiàn)場(chǎng)可編程邏輯陣列)來(lái)進(jìn)行ASIC設(shè)計(jì)是最為流行的方式之一,它們的共性是都具有用戶現(xiàn)場(chǎng)可編程特性,都支持邊界掃描技術(shù),但兩者在集成度、速度以及編程方式上具有各自的特點(diǎn)。