范秋華,宮 玥
(青島大學自動化學院,山東青島 266071)
數字化是信息社會中電子產業發展的必然趨勢,數字電子技術在電工學中占有重要地位,近年來FPGA(Field Programable Gate Array)技術作為數字電子技術的現代部分,已經引入到電氣信息類本科教學中。FPGA具有高度的靈活性、并行性、開發周期短等特點,與ASIC相比有極大的優勢,而且大量IP核的使用,縮短了產品的開發周期,使得企業更加具有市場競爭力,FPGA技術在未來會有極大的作為。目前,為滿足高等學校本科非電類各專業學生學習的需要,應該在電工學課程加入FPGA內容。
理解FPGA硬件原理,要先理解可編程邏輯器件PLD(Programable Logic Device)的原理,最基本的可編程邏輯器件的就是PROM,任何一個邏輯函數都可以寫成最小項的和的形式,PROM中的地址端當做輸入變量,那么地址譯碼器的輸出就是輸入變量的所有最小項,通過或陣列編程就可實現任意組合邏輯函數,加上觸發器即可實現時序邏輯函數。PROM是只有或陣列編程,與陣列、或陣列同時編程就是PLA(Programmable Logic Array),只有與陣列編程、或陣列不編程叫 PAL(Programmable Array Logic),這些都還沒有實際產品。GAL通用邏輯陣列(Generic Array Logic)是從PAL發展過來的,是一種電擦除可重復編程的可編程邏輯器件,具有靈活的可編程輸出結構,使得為數不多的幾種GAL器件幾乎能夠代替所有PAL器件和數百種中小規模標準器件。而且,GAL器件采 用先進的EECMOS工藝,可以在幾秒鐘內完成對芯片的擦除和寫入,并允許反復改寫,為研制開發新的邏輯 系統提供方便,因此,GAL器件得到了廣泛的應用。EPLD(Erasable Programmable Logic Device)的基本結構與GAL并無本質區別,但其集成密度比 GAL高得多,使其在一塊芯片內實現更多的邏輯功能 ,CPLD(Complex Programmable Logic Device),增加了內部連線,改進了內部結構體系,因而比EPLD性能更好,設計更加靈活,其發展也非常迅速。所有這些都是基于乘積項技術,EEPROM(或Flash)工藝的稱為PLD。
FPGA是可編程邏輯器件的一種。基于查找表技術,SRAM工藝的稱為FPGA查找表簡稱為LUT,LUT本質上就是一個RAM。目前FPGA中多使用4輸入的LUT,所以每一個LUT可以看成一個有4位地址線的16x1的RAM。當用戶通過原理圖或HDL語言描述了一個邏輯電路以后,PLD/FPGA開發軟件會自動計算邏輯電路的所有可能的結果,并把結果事先寫入RAM,這樣,每輸入一個信號進行邏輯運算就等于輸入一個地址進行查表,找出地址對應的內容,然后輸出即可。
FPGA的基本原理,發展歷程,可放到半導體存儲器這章,結合ROM實現函數的內容講解,占用時間不超過0.5個學時。
要用FPGA實現數字系統,就是在一定環境下使用硬件描述語言編寫程序,經編譯、仿真正確后下載到可編程邏輯器件上去實現。硬件描述語言有兩種標準VHDL和Virlog-HDL,作為IEEE的工業標準,在電子工程領域,已成為事實上的通用硬件描述語言。有專家認為,在新的世紀中,VHDL與Verilog語言將承擔起大部分的數字系統設計任務。介紹語言就是介紹基本語法規則,VHDL和Verilog兩種介紹一種即可,大約花3到4個學時即可,可以放在門電路后講解。
可編程邏輯器件目前主要是Altera、Xilinx、Lattice三大公司。三個公司使用的軟件環境是不同的,Altera公司使用QuartusII軟件,Xilinx使用ISE開發環境,Lattice是Isplever軟件。可以分別從各自公司網站下載學生版免費使用。各軟件環境都支持原理圖、VHDL語言和Verilog語言文本文件,以及波形EDIF等格式化的文件作為設計輸入。
1)在傳統數字技術中設計一基于觸發器的十進制計數器,要用四個觸發器,化狀態轉換圖,寫卡諾圖,用觸發器實現出來,非常麻煩,而用VHDL語言可以來寫就格外簡單其結構體程序如下:r異步清零端,s端,en同步使能端都是高電平有效 ,d數據輸入端 ,q數據輸出端,cout:進位輸出端

從圖1所示的仿真波形上可以看到:r異步清零端有效時輸出q為0(左邊第一條紅線處);r無效時,s同步置數端,en同步使能端有效進行置數先是置零(左邊第二條紅線處),接著置3.開始計數(左邊第三條紅線處)。當r,s都無效時開始計數從0到9循環,每到9時,進位輸出端輸出一個時鐘周期的高電平。上面程序簡單,但稍加修改就可以改為任意進制計數器。

圖1 異步清零同步置數的10進制計數器仿真波形
2)各軟件環境都支持原理圖設計,凡是涉及數字電子的芯片都有。如設計一個30進制計數器,用中規模芯片兩片160可以實現,仿真如圖2所示。

圖2 用74160級聯構成30進制計數器原理圖
圖3仿真與圖1仿真有些區別,圖1用的是功能仿真,不考慮器件延時,圖3用的是時序仿真,考慮到具體器件的延時。

圖3 30進制計數器仿真波形
通過觀察可以看出,該仿真波形完全符合30進制計數器的邏輯功能。在軟件下進行綜合,可以得到該計數器的邏輯符號,當其他的設計工作中需要用到計數器時,可以直接調用此元器件,不必重新設計,簡化了設計工作。其實也是可編程邏輯器件中的IP核及參數可設的宏功能器件的應用。
使用FPGA技術設計數字系統時將數字電子技術中難以實現的硬件設計轉換為軟件設計,學生應用EDA技術除了可以實現小規模的電子電路設計,還可以通過對CPLD,FPGA編程,設計復雜的電路系統。用軟件代替硬件通過FPGA技術實現數字電路設計,實現了硬件電路軟件化。
在日常生活中,數字電路隨處可見,這就要求理論教學必須與實踐教學相結合,達到理論聯系實際的目的。學生并不能很好地將理論與實際聯系起來,特別是當學生設計好電路進行實驗時,經常出現與他們自己分析的理論結果不一致的現象。如果單純的進行理論講解,難以讓學生理解清楚。通過對仿真波形的分析,學生能夠比較形象地理解“異步清零”的工作過程,也能夠解釋在實驗過程中所觀察到的實驗現象。
“數字電子技術”課程是一門實踐性很強的課程,它主要是為學生今后從事電子設計打好基礎。如果學生沒有機會進行實際操作,就無法進行電子設計,更談不上設計好電路。
使用FPGA技術,相當于將數字電子技術實驗箱搬移到電腦上,學生可以根自身的情況,依托軟件平臺,結合所學習的內容,及時地進行接近于實際電路的設計、仿真和分析,加深對理論的理解。若仿真結果不正確,學生可以在電腦上修改電路,不會造成硬件資源的浪費。當仿真結果完全正確時,學生就可以非常放心地進行實際電路的搭接和使用,這一過程可以將理論與實際真正聯系起來。通過這個開放的隨身的數字電子技術實驗室,可以提高學生的創新能力和綜合素質。
可以使學生不拘泥于只有靠“芯片+連線”才能設計數字電路的想法,開闊了學生的設計思路。通過EDA工具對電路進行仿真,教師可以對學生難以理解的電路現象進行直觀的講解,加深學生對理論知識的掌握。同時,引入EDA技術,可以使學生有更多的機會動手設計電路,驗證自己的想法,激發了學生的熱情,為設計復雜的數字系統打下基礎。
[1] 潘松等.EDA技術實用教程(第三版)[M]北京:科學出版社,2006