范秋華,宮 玥
(青島大學(xué)自動(dòng)化學(xué)院,山東青島 266071)
數(shù)字化是信息社會(huì)中電子產(chǎn)業(yè)發(fā)展的必然趨勢(shì),數(shù)字電子技術(shù)在電工學(xué)中占有重要地位,近年來FPGA(Field Programable Gate Array)技術(shù)作為數(shù)字電子技術(shù)的現(xiàn)代部分,已經(jīng)引入到電氣信息類本科教學(xué)中。FPGA具有高度的靈活性、并行性、開發(fā)周期短等特點(diǎn),與ASIC相比有極大的優(yōu)勢(shì),而且大量IP核的使用,縮短了產(chǎn)品的開發(fā)周期,使得企業(yè)更加具有市場(chǎng)競(jìng)爭(zhēng)力,F(xiàn)PGA技術(shù)在未來會(huì)有極大的作為。目前,為滿足高等學(xué)校本科非電類各專業(yè)學(xué)生學(xué)習(xí)的需要,應(yīng)該在電工學(xué)課程加入FPGA內(nèi)容。
理解FPGA硬件原理,要先理解可編程邏輯器件PLD(Programable Logic Device)的原理,最基本的可編程邏輯器件的就是PROM,任何一個(gè)邏輯函數(shù)都可以寫成最小項(xiàng)的和的形式,PROM中的地址端當(dāng)做輸入變量,那么地址譯碼器的輸出就是輸入變量的所有最小項(xiàng),通過或陣列編程就可實(shí)現(xiàn)任意組合邏輯函數(shù),加上觸發(fā)器即可實(shí)現(xiàn)時(shí)序邏輯函數(shù)。PROM是只有或陣列編程,與陣列、或陣列同時(shí)編程就是PLA(Programmable Logic Array),只有與陣列編程、或陣列不編程叫 PAL(Programmable Array Logic),這些都還沒有實(shí)際產(chǎn)品。GAL通用邏輯陣列(Generic Array Logic)是從PAL發(fā)展過來的,是一種電擦除可重復(fù)編程的可編程邏輯器件,具有靈活的可編程輸出結(jié)構(gòu),使得為數(shù)不多的幾種GAL器件幾乎能夠代替所有PAL器件和數(shù)百種中小規(guī)模標(biāo)準(zhǔn)器件。而且,GAL器件采 用先進(jìn)的EECMOS工藝,可以在幾秒鐘內(nèi)完成對(duì)芯片的擦除和寫入,并允許反復(fù)改寫,為研制開發(fā)新的邏輯 系統(tǒng)提供方便,因此,GAL器件得到了廣泛的應(yīng)用。EPLD(Erasable Programmable Logic Device)的基本結(jié)構(gòu)與GAL并無本質(zhì)區(qū)別,但其集成密度比 GAL高得多,使其在一塊芯片內(nèi)實(shí)現(xiàn)更多的邏輯功能 ,CPLD(Complex Programmable Logic Device),增加了內(nèi)部連線,改進(jìn)了內(nèi)部結(jié)構(gòu)體系,因而比EPLD性能更好,設(shè)計(jì)更加靈活,其發(fā)展也非常迅速。所有這些都是基于乘積項(xiàng)技術(shù),EEPROM(或Flash)工藝的稱為PLD。
FPGA是可編程邏輯器件的一種?;诓檎冶砑夹g(shù),SRAM工藝的稱為FPGA查找表簡(jiǎn)稱為L(zhǎng)UT,LUT本質(zhì)上就是一個(gè)RAM。目前FPGA中多使用4輸入的LUT,所以每一個(gè)LUT可以看成一個(gè)有4位地址線的16x1的RAM。當(dāng)用戶通過原理圖或HDL語言描述了一個(gè)邏輯電路以后,PLD/FPGA開發(fā)軟件會(huì)自動(dòng)計(jì)算邏輯電路的所有可能的結(jié)果,并把結(jié)果事先寫入RAM,這樣,每輸入一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算就等于輸入一個(gè)地址進(jìn)行查表,找出地址對(duì)應(yīng)的內(nèi)容,然后輸出即可。
FPGA的基本原理,發(fā)展歷程,可放到半導(dǎo)體存儲(chǔ)器這章,結(jié)合ROM實(shí)現(xiàn)函數(shù)的內(nèi)容講解,占用時(shí)間不超過0.5個(gè)學(xué)時(shí)。
要用FPGA實(shí)現(xiàn)數(shù)字系統(tǒng),就是在一定環(huán)境下使用硬件描述語言編寫程序,經(jīng)編譯、仿真正確后下載到可編程邏輯器件上去實(shí)現(xiàn)。硬件描述語言有兩種標(biāo)準(zhǔn)VHDL和Virlog-HDL,作為IEEE的工業(yè)標(biāo)準(zhǔn),在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語言。有專家認(rèn)為,在新的世紀(jì)中,VHDL與Verilog語言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。介紹語言就是介紹基本語法規(guī)則,VHDL和Verilog兩種介紹一種即可,大約花3到4個(gè)學(xué)時(shí)即可,可以放在門電路后講解。
可編程邏輯器件目前主要是Altera、Xilinx、Lattice三大公司。三個(gè)公司使用的軟件環(huán)境是不同的,Altera公司使用QuartusII軟件,Xilinx使用ISE開發(fā)環(huán)境,Lattice是Isplever軟件??梢苑謩e從各自公司網(wǎng)站下載學(xué)生版免費(fèi)使用。各軟件環(huán)境都支持原理圖、VHDL語言和Verilog語言文本文件,以及波形EDIF等格式化的文件作為設(shè)計(jì)輸入。
1)在傳統(tǒng)數(shù)字技術(shù)中設(shè)計(jì)一基于觸發(fā)器的十進(jìn)制計(jì)數(shù)器,要用四個(gè)觸發(fā)器,化狀態(tài)轉(zhuǎn)換圖,寫卡諾圖,用觸發(fā)器實(shí)現(xiàn)出來,非常麻煩,而用VHDL語言可以來寫就格外簡(jiǎn)單其結(jié)構(gòu)體程序如下:r異步清零端,s端,en同步使能端都是高電平有效 ,d數(shù)據(jù)輸入端 ,q數(shù)據(jù)輸出端,cout:進(jìn)位輸出端
從圖1所示的仿真波形上可以看到:r異步清零端有效時(shí)輸出q為0(左邊第一條紅線處);r無效時(shí),s同步置數(shù)端,en同步使能端有效進(jìn)行置數(shù)先是置零(左邊第二條紅線處),接著置3.開始計(jì)數(shù)(左邊第三條紅線處)。當(dāng)r,s都無效時(shí)開始計(jì)數(shù)從0到9循環(huán),每到9時(shí),進(jìn)位輸出端輸出一個(gè)時(shí)鐘周期的高電平。上面程序簡(jiǎn)單,但稍加修改就可以改為任意進(jìn)制計(jì)數(shù)器。
圖1 異步清零同步置數(shù)的10進(jìn)制計(jì)數(shù)器仿真波形
2)各軟件環(huán)境都支持原理圖設(shè)計(jì),凡是涉及數(shù)字電子的芯片都有。如設(shè)計(jì)一個(gè)30進(jìn)制計(jì)數(shù)器,用中規(guī)模芯片兩片160可以實(shí)現(xiàn),仿真如圖2所示。
圖2 用74160級(jí)聯(lián)構(gòu)成30進(jìn)制計(jì)數(shù)器原理圖
圖3仿真與圖1仿真有些區(qū)別,圖1用的是功能仿真,不考慮器件延時(shí),圖3用的是時(shí)序仿真,考慮到具體器件的延時(shí)。
圖3 30進(jìn)制計(jì)數(shù)器仿真波形
通過觀察可以看出,該仿真波形完全符合30進(jìn)制計(jì)數(shù)器的邏輯功能。在軟件下進(jìn)行綜合,可以得到該計(jì)數(shù)器的邏輯符號(hào),當(dāng)其他的設(shè)計(jì)工作中需要用到計(jì)數(shù)器時(shí),可以直接調(diào)用此元器件,不必重新設(shè)計(jì),簡(jiǎn)化了設(shè)計(jì)工作。其實(shí)也是可編程邏輯器件中的IP核及參數(shù)可設(shè)的宏功能器件的應(yīng)用。
使用FPGA技術(shù)設(shè)計(jì)數(shù)字系統(tǒng)時(shí)將數(shù)字電子技術(shù)中難以實(shí)現(xiàn)的硬件設(shè)計(jì)轉(zhuǎn)換為軟件設(shè)計(jì),學(xué)生應(yīng)用EDA技術(shù)除了可以實(shí)現(xiàn)小規(guī)模的電子電路設(shè)計(jì),還可以通過對(duì)CPLD,F(xiàn)PGA編程,設(shè)計(jì)復(fù)雜的電路系統(tǒng)。用軟件代替硬件通過FPGA技術(shù)實(shí)現(xiàn)數(shù)字電路設(shè)計(jì),實(shí)現(xiàn)了硬件電路軟件化。
在日常生活中,數(shù)字電路隨處可見,這就要求理論教學(xué)必須與實(shí)踐教學(xué)相結(jié)合,達(dá)到理論聯(lián)系實(shí)際的目的。學(xué)生并不能很好地將理論與實(shí)際聯(lián)系起來,特別是當(dāng)學(xué)生設(shè)計(jì)好電路進(jìn)行實(shí)驗(yàn)時(shí),經(jīng)常出現(xiàn)與他們自己分析的理論結(jié)果不一致的現(xiàn)象。如果單純的進(jìn)行理論講解,難以讓學(xué)生理解清楚。通過對(duì)仿真波形的分析,學(xué)生能夠比較形象地理解“異步清零”的工作過程,也能夠解釋在實(shí)驗(yàn)過程中所觀察到的實(shí)驗(yàn)現(xiàn)象。
“數(shù)字電子技術(shù)”課程是一門實(shí)踐性很強(qiáng)的課程,它主要是為學(xué)生今后從事電子設(shè)計(jì)打好基礎(chǔ)。如果學(xué)生沒有機(jī)會(huì)進(jìn)行實(shí)際操作,就無法進(jìn)行電子設(shè)計(jì),更談不上設(shè)計(jì)好電路。
使用FPGA技術(shù),相當(dāng)于將數(shù)字電子技術(shù)實(shí)驗(yàn)箱搬移到電腦上,學(xué)生可以根自身的情況,依托軟件平臺(tái),結(jié)合所學(xué)習(xí)的內(nèi)容,及時(shí)地進(jìn)行接近于實(shí)際電路的設(shè)計(jì)、仿真和分析,加深對(duì)理論的理解。若仿真結(jié)果不正確,學(xué)生可以在電腦上修改電路,不會(huì)造成硬件資源的浪費(fèi)。當(dāng)仿真結(jié)果完全正確時(shí),學(xué)生就可以非常放心地進(jìn)行實(shí)際電路的搭接和使用,這一過程可以將理論與實(shí)際真正聯(lián)系起來。通過這個(gè)開放的隨身的數(shù)字電子技術(shù)實(shí)驗(yàn)室,可以提高學(xué)生的創(chuàng)新能力和綜合素質(zhì)。
可以使學(xué)生不拘泥于只有靠“芯片+連線”才能設(shè)計(jì)數(shù)字電路的想法,開闊了學(xué)生的設(shè)計(jì)思路。通過EDA工具對(duì)電路進(jìn)行仿真,教師可以對(duì)學(xué)生難以理解的電路現(xiàn)象進(jìn)行直觀的講解,加深學(xué)生對(duì)理論知識(shí)的掌握。同時(shí),引入EDA技術(shù),可以使學(xué)生有更多的機(jī)會(huì)動(dòng)手設(shè)計(jì)電路,驗(yàn)證自己的想法,激發(fā)了學(xué)生的熱情,為設(shè)計(jì)復(fù)雜的數(shù)字系統(tǒng)打下基礎(chǔ)。
[1] 潘松等.EDA技術(shù)實(shí)用教程(第三版)[M]北京:科學(xué)出版社,2006