編者按隨著電子技術(shù)的發(fā)展,可編程邏輯器件成為電子設(shè)計(jì)中常用的技術(shù),有許多讀者發(fā)郵件或?qū)懶?,希望本刊增加這方面的內(nèi)容。本刊從今年開始,將“相約單片機(jī)”欄目改為“單片機(jī)與可編程邏輯器件”,并特約東北大學(xué)的杜玉遠(yuǎn)老師撰寫系列文章,以使讀者對(duì)其有一基本的認(rèn)識(shí)。
近年,數(shù)字化進(jìn)程的不斷加快,推動(dòng)了具有高速度、高集成度、低功耗的可編程ASIC器件的發(fā)展,同時(shí)也推動(dòng)了用于開發(fā)這類器件的EDA技術(shù)發(fā)展和進(jìn)步,電路設(shè)計(jì)構(gòu)成逐步地從中、小規(guī)模芯片轉(zhuǎn)為大規(guī)模、超大規(guī)模(LSI、VLSI)芯片,因此掌握EDA設(shè)計(jì)技術(shù),使用可編程大規(guī)模、超大規(guī)模(LSI、VLSI)芯片已經(jīng)成為從事電子設(shè)計(jì)人員必需具有的基本能力。本文將介紹如何在短時(shí)間內(nèi)學(xué)習(xí)掌握這項(xiàng)技術(shù),并在實(shí)際設(shè)計(jì)中運(yùn)用。
1. 可編程ASIC器件選擇
在電路設(shè)計(jì)中使用可編程ASIC器件,簡(jiǎn)單地說就是用大規(guī)模、超大規(guī)模(LSI、VLSI)芯片來代替中、小規(guī)模的芯片。在設(shè)計(jì)中主要依據(jù)芯片的內(nèi)部結(jié)構(gòu)、性能來選擇器件。在EDA技術(shù)中所使用的大規(guī)模、超大規(guī)模(LSI、VLSI)芯片被稱為可編程ASIC芯片,這些芯片包含有通用的邏輯資源,經(jīng)過設(shè)計(jì)編程,就可以實(shí)現(xiàn)所需的功能。這些芯片根據(jù)其內(nèi)部結(jié)構(gòu)可劃分為CPLD(Complex Programmable Logic Device)和FPGA (Field Programmable Gate Array)。CPLD是復(fù)雜可編程邏輯器件的簡(jiǎn)稱,其結(jié)構(gòu)與早期的PAL、GAL相似,內(nèi)部包含多個(gè)邏輯宏單元或宏模塊;FPGA是現(xiàn)場(chǎng)可編程門陣列的簡(jiǎn)稱。
CPLD的內(nèi)部結(jié)構(gòu)是基于乘積項(xiàng)(Product-Term)技術(shù)的可編程ASIC芯片。代表的器件有Altera公司的MAX7000系列和Xilinx公司的XC9500系列等等。圖1是Altera公司MAX7000S系列的內(nèi)部基本編程結(jié)構(gòu),從圖1中可以看出,MAX7000S系列的基本編程結(jié)構(gòu)是由邏輯陣列、乘積項(xiàng)選擇矩陣和可編程觸發(fā)器構(gòu)成的,這三部分都可以通過編程配置實(shí)現(xiàn)各種邏輯功能。不同型號(hào)器件中所包含的基本編程單元機(jī)構(gòu)相似,但包含基本單元的數(shù)量多少不等,即它們的容量不同。CPLD的編程信息是采用E2CMOS工藝實(shí)現(xiàn)的,這種工藝具有非易失性,編程數(shù)據(jù)可以保持?jǐn)?shù)十年,此類器件只能對(duì)其進(jìn)行有限次(幾千次)編程。另外,可以對(duì)器件進(jìn)行加密,而且一旦被加密,很難破解。
FPGA的內(nèi)部結(jié)構(gòu)是基于查找表(LUT)技術(shù)的可編程ASIC芯片。代表的器件有Altera公司的FLEX、ACEX、APEX系列和Xilinx公司的XC4000、Spartan、Virtex系列等等。圖2是Xilinx公司的XC4000系列的基本可配置邏輯塊CLB結(jié)構(gòu),從圖2可以看出,一個(gè)CLB由兩個(gè)獨(dú)立的4輸入查找表、一個(gè)3輸入查找表和兩個(gè)觸發(fā)器構(gòu)成。查找表實(shí)際上是一個(gè)RAM結(jié)構(gòu),一個(gè)4輸入的查找表就是一個(gè)16×1 RAM單元,通過編程可以實(shí)現(xiàn)4輸入變量的任意邏輯函數(shù)。CLB內(nèi)部的兩個(gè)觸發(fā)器通過編程,可以配置成不同類型的觸發(fā)器。圖2中的梯形符號(hào)均為可編程的數(shù)據(jù)選擇器符號(hào),對(duì)這些數(shù)據(jù)選擇器的控制端編程,就可以改變CLB的配置結(jié)構(gòu),進(jìn)而實(shí)現(xiàn)對(duì)器件的編程控制。數(shù)據(jù)選擇器的選擇控制端是由SRAM控制的,也就是說,F(xiàn)PGA的編程信息是通過SRAM實(shí)現(xiàn)的。由于器件掉電后,SRAM中的數(shù)據(jù)會(huì)丟失,因此,設(shè)計(jì)中需要根據(jù)情況為器件提供上電配置的電路,以保證上電后器件可以正常工作。配置FPGA的數(shù)據(jù)是存儲(chǔ)在非易失數(shù)據(jù)存儲(chǔ)器中的,使用時(shí)不便對(duì)其加密。
由此可見,CPLD內(nèi)部具有大量的乘積項(xiàng)和較少的觸發(fā)器,而FPGA正好相反,其內(nèi)部具有較少的組合邏輯資源和較多的觸發(fā)器。當(dāng)設(shè)計(jì)中組合邏輯電路成分較多,而時(shí)序電路成分較少的電路時(shí),或者需要很好的加密功能時(shí),選擇CPLD比較適合,例如設(shè)計(jì)寬譯碼器和復(fù)雜編碼器時(shí),最好選擇CPLD。當(dāng)我們要設(shè)計(jì)功能較為復(fù)雜的時(shí)序電路時(shí),由于復(fù)雜的時(shí)序電路需要大量的觸發(fā)器單元,例如設(shè)計(jì)ALU,選擇FPGA則比較適合。
2. EDA開發(fā)系統(tǒng)選擇
為了學(xué)習(xí)和使用可編程ASIC器件,需要有一個(gè)合適的開發(fā)平臺(tái),即EDA開發(fā)系統(tǒng)。EDA開發(fā)系統(tǒng)按功能劃分為集成開發(fā)系統(tǒng)、綜合系統(tǒng)和仿真系統(tǒng)。集成開發(fā)系統(tǒng)一般是由可編程ASIC器件生產(chǎn)廠商開發(fā)的開發(fā)系統(tǒng)平臺(tái),用戶利用這些開發(fā)平臺(tái)可以完成全部設(shè)計(jì)工作。代表的開發(fā)平臺(tái)如Xilinx公司的Foundation系列、Altera公司的MaxplusII 系列和QuartusII系列。綜合系統(tǒng)一般是由第三方軟件開發(fā)商開發(fā)的,為各器件廠商和普通用戶提供對(duì)原始設(shè)計(jì)輸入進(jìn)行綜合產(chǎn)生編程數(shù)據(jù)的軟件,代表的綜合系統(tǒng)如Synplicity公司的Synplicity 系列。仿真系統(tǒng)是僅用于對(duì)設(shè)計(jì)進(jìn)行功能仿真的EDA軟件,一般也是由第三方開發(fā)的,它不能生成編程數(shù)據(jù),只用作設(shè)計(jì)初期工作,也就是說它不涉及具體的器件。代表的仿真系統(tǒng)如Aldec公司的Active-HDL。
由此可見,作為初學(xué)者應(yīng)將功能齊全、能夠完成全部設(shè)計(jì)工作的集成開發(fā)系統(tǒng)作為EDA開發(fā)系統(tǒng)的首選。附表是Xilinx公司的Foundation系列和Altera公司的QuartusII系列的性能對(duì)比表,從附表中可以看出:兩種集成系統(tǒng)的設(shè)計(jì)流程基本相同,只是各自采用的具體程序不同,初學(xué)用戶可以根據(jù)自己喜好的需要選擇一種作為入門系統(tǒng)來學(xué)習(xí),一旦掌握一種系統(tǒng),很容易學(xué)習(xí)其它系統(tǒng)。筆者認(rèn)為,Altera公司的Quartus II系統(tǒng)提供了較多與74系列中小規(guī)模器件完全相同的設(shè)計(jì)元件,對(duì)于初學(xué)者更容易開始設(shè)計(jì);Xilinx公司的Foundation系統(tǒng)提供了較好的圖形導(dǎo)航界面,對(duì)于初學(xué)者更容易掌握軟件的使用。
3. EDA實(shí)驗(yàn)系統(tǒng)選擇
無(wú)論集成開發(fā)系統(tǒng)功能如何強(qiáng)大,仿真功能如何準(zhǔn)確,為了更快更好地學(xué)習(xí)和使用CPLD/FPGA,都需要有一個(gè)開發(fā)實(shí)驗(yàn)平臺(tái)。實(shí)驗(yàn)平臺(tái)根據(jù)其性能可以分為兩類:評(píng)估平臺(tái)和實(shí)驗(yàn)系統(tǒng)。評(píng)估平臺(tái)是用來對(duì)某一個(gè)具體的器件的功能進(jìn)行驗(yàn)證的實(shí)驗(yàn)平臺(tái),評(píng)估板大多占用CPLD/FPGA的引腳資源,用戶只能在此硬件約束的條件下,對(duì)器件驗(yàn)證和評(píng)估,而不能進(jìn)行其它設(shè)計(jì)。在這類評(píng)估平臺(tái)上,只可以完成特定的實(shí)驗(yàn)驗(yàn)證,例如各廠商提供的EVM板就屬于這一類平臺(tái)。實(shí)驗(yàn)系統(tǒng)則是一種開放的平臺(tái)。所謂開放的實(shí)驗(yàn)平臺(tái)是與各種評(píng)估板相對(duì)而言的。圖3所示為一個(gè)開放式的實(shí)驗(yàn)系統(tǒng)(多功能EDA實(shí)驗(yàn)系統(tǒng)),從圖3中可以看出,該多功能EDA實(shí)驗(yàn)系統(tǒng)由主板和子板構(gòu)成,用戶通過更換不同類型的子板,就可以實(shí)現(xiàn)對(duì)不同廠家的不同類型芯片進(jìn)行設(shè)計(jì)開發(fā)。在該實(shí)驗(yàn)系統(tǒng)中,還提供了豐富的輔助資源以及單片機(jī)調(diào)試接口。在這個(gè)系統(tǒng)中,不僅可以對(duì)CPLD/FPGA進(jìn)行設(shè)計(jì),還可以利用單片機(jī)開發(fā)系統(tǒng)方便地進(jìn)行CPLD/FPGA與單片機(jī)之間數(shù)據(jù)傳輸?shù)脑O(shè)計(jì)。另外,多功能EDA實(shí)驗(yàn)系統(tǒng)還應(yīng)該提供獨(dú)立的下載編程電纜,并且編程接口與各公司所提供的編程電纜接口完全相同,這樣可以為用戶的目標(biāo)系統(tǒng)提供器件編程服務(wù)。
4. EDA開發(fā)流程
根據(jù)自己的需要選擇了器件、開發(fā)系統(tǒng)和實(shí)驗(yàn)系統(tǒng)后,就可以開始EDA設(shè)計(jì)了。利用集成開發(fā)系統(tǒng)進(jìn)行EDA設(shè)計(jì)的流程如圖4所示。設(shè)計(jì)一般可分為設(shè)計(jì)輸入、設(shè)計(jì)綜合和器件編程三個(gè)步驟。設(shè)計(jì)輸入是由設(shè)計(jì)者完成,作為最原始的設(shè)計(jì)輸入;設(shè)計(jì)綜合包括優(yōu)化、合并、映射、布局、布線等工作,并產(chǎn)生最終的下(上接25頁(yè))載數(shù)據(jù)文件;器件編程是將設(shè)計(jì)輸出的數(shù)據(jù)文件通過下載電纜寫入到可編程器件內(nèi)部,使其實(shí)現(xiàn)設(shè)計(jì)的功能。 EDA開發(fā)系統(tǒng)同時(shí)還具有功能仿真和時(shí)序仿真的功能,通常情況下,這些仿真結(jié)果是可以信賴的,開發(fā)系統(tǒng)一般是以最壞的情況給出仿真結(jié)果的,實(shí)際的工作情況比仿真結(jié)果會(huì)好一些。為了提高設(shè)計(jì)效率,必須正確掌握功能仿真和時(shí)序仿真的方法,準(zhǔn)確理解仿真結(jié)果,以便于及時(shí)修改設(shè)計(jì),而不必采用反復(fù)下載方式來驗(yàn)證設(shè)計(jì)結(jié)果。圖4中的虛器件測(cè)試是EDA設(shè)計(jì)的最后一步,是在EDA實(shí)驗(yàn)系統(tǒng)或目標(biāo)系統(tǒng)中完成的。在整個(gè)設(shè)計(jì)過程中,設(shè)計(jì)輸入是最關(guān)鍵的,是由設(shè)計(jì)者對(duì)器件所實(shí)現(xiàn)的數(shù)字系統(tǒng)的邏輯功能進(jìn)行描述階段。設(shè)計(jì)輸入一般有電路圖輸入法、真值表輸入法、狀態(tài)機(jī)輸入法、波形輸入法、硬件描述語(yǔ)言輸入法等等,其中電路圖輸入和硬件描述語(yǔ)言輸入是最常用的兩種輸入形式。
電路圖輸入法是把數(shù)字系統(tǒng)用邏輯圖來表示的輸入方法,使用元件符號(hào)和連線等來描述設(shè)計(jì)。電路圖描述要求設(shè)計(jì)工具提供必要的元件庫(kù)和邏輯宏單元庫(kù)。這種輸入方法具有條理清楚、易學(xué)、易用等優(yōu)點(diǎn)。比較適用于初學(xué)者使用和較小的系統(tǒng)設(shè)計(jì)。幾乎所有的可編程器件開發(fā)系統(tǒng)都支持這種輸入方法。但是電路圖輸入法具有可移植性、可讀性較差、不便于交流的缺點(diǎn)。
硬件描述語(yǔ)言是用文本形式描述設(shè)計(jì),常用的硬件描述語(yǔ)言有不同語(yǔ)言形式。常用的有ABEL-HDL、VHDL和Verilog HDL。 ABEL-HDL支持布爾方程、真值表、狀態(tài)機(jī)等邏輯表達(dá)方式。適合對(duì)計(jì)數(shù)器、譯碼器、比較器和狀態(tài)機(jī)等邏輯功能的描述。VHDL和Verilog HDL類似于C語(yǔ)言,在描述復(fù)雜設(shè)計(jì)時(shí),非常簡(jiǎn)潔,具有很強(qiáng)的邏輯描述功能,適合設(shè)計(jì)比較復(fù)雜的數(shù)字系統(tǒng)。
在設(shè)計(jì)過程中,往往采用層次化設(shè)計(jì)方法,分模塊、分層次地進(jìn)行設(shè)計(jì)描述。描述系統(tǒng)總功能的設(shè)計(jì)為頂層設(shè)計(jì),描述系統(tǒng)中較小單元的設(shè)計(jì)為底層設(shè)計(jì)。層次化設(shè)計(jì)方法比較自由,可以在任何層次使用電路圖或硬件描述語(yǔ)言進(jìn)行描述。根據(jù)兩種輸入方式的特點(diǎn),通常我們?cè)陧攲釉O(shè)計(jì)中采用電路圖輸入方式,而在底層設(shè)計(jì)中,采用硬件描述語(yǔ)言描述模塊的邏輯功能。
結(jié)語(yǔ)
在學(xué)習(xí)EDA技術(shù)過程中,無(wú)論選擇何種器件和開發(fā)系統(tǒng),采用何種設(shè)計(jì)輸入方式和設(shè)計(jì)方法,一旦掌握了這種技術(shù),它一定會(huì)給電路設(shè)計(jì)帶來巨大效益。作為初學(xué)者還應(yīng)注意的是,無(wú)論集成開發(fā)系統(tǒng)的功能如何完備,其仿真能力多么準(zhǔn)確,僅在集成開發(fā)系統(tǒng)中學(xué)習(xí)EDA技術(shù),都將是“紙上談兵”,只有將設(shè)計(jì)下載到器件中,才算完成設(shè)計(jì)全部過程,才能真正把握和理解器件的性能,真正體會(huì)到EDA技術(shù)的優(yōu)越性,也才能真正發(fā)揮EDA技術(shù)的作用。