黃金鳳
摘要:該文通過(guò)本科教學(xué)應(yīng)用型人才培養(yǎng)目標(biāo),針對(duì)FPGA這門(mén)課程,將理論和實(shí)踐結(jié)合起來(lái),從軟件平臺(tái)和硬件內(nèi)部結(jié)構(gòu)相結(jié)合的方式對(duì)課程進(jìn)行了教學(xué)探索。
關(guān)鍵詞:應(yīng)用型人才培養(yǎng);FPGA;教學(xué)探索
中圖分類(lèi)號(hào):TP311? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ? ? 文章編號(hào):1009-3044(2019)01-0138-03
對(duì)于普通高校電子與通信專(zhuān)業(yè)的學(xué)生,F(xiàn)PGA課程是實(shí)踐應(yīng)用性非常強(qiáng)的一門(mén)課程,不但涉及數(shù)字邏輯電路的相關(guān)知識(shí),還涉及現(xiàn)代電子系統(tǒng)設(shè)計(jì)的相關(guān)知識(shí),需要掌握軟件平臺(tái)的設(shè)計(jì)、硬件內(nèi)部結(jié)構(gòu)和外圍電路的設(shè)計(jì),理論教學(xué)和實(shí)踐教學(xué)的偏重性,使教學(xué)施用于學(xué)生產(chǎn)生的結(jié)果有所不同,如何使學(xué)生既能掌握理論知識(shí),又能將理論知識(shí)應(yīng)用到實(shí)踐中去,通過(guò)實(shí)踐應(yīng)用又能更好地鞏固理論知識(shí),這個(gè)問(wèn)題關(guān)乎到了FPGA課程的教學(xué)模式。傳統(tǒng)的教學(xué)是側(cè)重軟件的使用和硬件描述語(yǔ)言的編寫(xiě)這兩方面,這種教學(xué)模式使學(xué)生加強(qiáng)了軟件算法編程思維,而忽視了硬件電路設(shè)計(jì)思維。學(xué)生即使很好地掌握了硬件描述語(yǔ)言編寫(xiě),但對(duì)于硬件電路需要考慮的延遲、功耗、電氣連接等方面知之甚少,編寫(xiě)的代碼有的綜合優(yōu)化過(guò)程出問(wèn)題,有的適配、布局布線(xiàn)過(guò)程出問(wèn)題,有的時(shí)序約束不可測(cè),有的電氣連接不標(biāo)準(zhǔn)等。所以在很好掌握硬件描述語(yǔ)言編程的同時(shí),學(xué)生要結(jié)合可編程邏輯器件內(nèi)部結(jié)構(gòu)來(lái)看綜合優(yōu)化過(guò)程,適配、布局布線(xiàn)過(guò)程是否合理。本論文針對(duì)傳統(tǒng)教學(xué)方式的不足,從軟件平臺(tái)和硬件內(nèi)部結(jié)構(gòu)相結(jié)合的方式對(duì)課程進(jìn)行了教學(xué)改革方面的探索。
2 軟件平臺(tái)和硬件內(nèi)部結(jié)構(gòu)相結(jié)合
2.1 軟件平臺(tái)介紹
目前,可編程邏輯器件CPLD/FPGA的供應(yīng)廠商主要有四家,Altera、Xilinx、Lattice和Actel公司,每一個(gè)供應(yīng)廠商都有各自的軟件開(kāi)發(fā)工具,如Altera公司的Quartus II,Xilinx公司的ISE,Actel公司的libero。針對(duì)各所學(xué)校采購(gòu)的CPLD/FPGA型號(hào)不一樣,可以選用相應(yīng)的軟件開(kāi)發(fā)工具進(jìn)行設(shè)計(jì)。由于我院采購(gòu)的是Altera公司的FPGA芯片,所以學(xué)生應(yīng)利用Quartus II軟件進(jìn)行電子系統(tǒng)設(shè)計(jì)。
Quartus II是進(jìn)行電子系統(tǒng)設(shè)計(jì)的集成開(kāi)發(fā)軟件,里面集成了設(shè)計(jì)輸入所需的編輯器,設(shè)計(jì)處理所需的綜合器、適配器、布局布線(xiàn)優(yōu)化器、時(shí)序分析器、仿真器、編程下載器等多種軟件,通過(guò)這些軟件相互結(jié)合使用,可以實(shí)現(xiàn)電子系統(tǒng)設(shè)計(jì)的自動(dòng)化。 圖1所示的是利用Quartus II軟件對(duì)PLD進(jìn)行設(shè)計(jì)開(kāi)發(fā)的流程圖。
第一步,分析當(dāng)前的設(shè)計(jì)任務(wù)要求,針對(duì)電路系統(tǒng)的功能、復(fù)雜程度及一些性能參數(shù),選擇合適的設(shè)計(jì)方法,器件資源等準(zhǔn)備工作。
第二步,選擇適合的設(shè)計(jì)輸入方式,如畫(huà)電路原理圖的方式,用HDL描述電路方式,或者各種方式相互結(jié)合。
第三步,對(duì)設(shè)計(jì)的電路系統(tǒng)進(jìn)行處理,如綜合、適配、布局布線(xiàn)優(yōu)化等操作。
第四步,可以對(duì)設(shè)計(jì)的電路系統(tǒng)進(jìn)行功能仿真和時(shí)序仿真。
第五步,對(duì)設(shè)計(jì)的電路系統(tǒng)進(jìn)行編程下載及硬件測(cè)試。
在設(shè)計(jì)過(guò)程中,如果出現(xiàn)錯(cuò)誤,則需要重新回到設(shè)計(jì)輸入階段,在改正錯(cuò)誤或調(diào)整電路后重復(fù)上述過(guò)程。
2.2 FPGA硬件內(nèi)部結(jié)構(gòu)
FPGA的內(nèi)部結(jié)構(gòu)如圖2所示,都包含以下3個(gè)部分,芯片四周引腳端的可編程I/O單元,內(nèi)部主體區(qū)域的可編程LE,每個(gè)單元間的局部可編程連線(xiàn),有些芯片內(nèi)部還可嵌入專(zhuān)用存儲(chǔ)塊RAM,內(nèi)嵌功能單元和專(zhuān)用硬核等,可編程LE內(nèi)部結(jié)構(gòu)如圖3所示,主要由一個(gè)有四個(gè)輸入端的SRAM 加上D觸發(fā)器構(gòu)成。
2.3 采用軟件平臺(tái)和硬件內(nèi)部結(jié)構(gòu)相結(jié)合的方式進(jìn)行教學(xué)
關(guān)于通過(guò)軟件平臺(tái)進(jìn)行PLD設(shè)計(jì)開(kāi)發(fā)過(guò)程在前面已經(jīng)闡述過(guò),第一步通過(guò)任務(wù)分析進(jìn)行設(shè)計(jì)輸入,輸入方式通常有原理圖和HDL文本輸入兩種,原理圖輸入方式比較直觀,電路內(nèi)部結(jié)構(gòu)一目了然,然而HDL文本輸入方式就比較抽象,和軟件編程語(yǔ)言類(lèi)似,也有語(yǔ)法規(guī)則、編程格式等需要注意的,如何正確地編寫(xiě)成可綜合、適配的硬件電路結(jié)構(gòu),需要教師在課堂教學(xué)上改進(jìn)教學(xué)模式,以幫助學(xué)生更好的理解HDL語(yǔ)言。對(duì)于組合邏輯電路,輸出信號(hào)的變化隨著輸入信號(hào)的改變而改變,且不具有值存儲(chǔ)功能,在編寫(xiě)時(shí)各種信號(hào)相互之間的邏輯關(guān)系運(yùn)算符可以看成是各種邏輯門(mén)互相連接,例如賦值語(yǔ)句y = ~s & a | s & b,其中的運(yùn)算符“~、&、|”可以理解為“非門(mén)、與門(mén)、或門(mén)”。對(duì)于時(shí)序邏輯電路,輸出信號(hào)具有值存儲(chǔ)功能,在HDL描述時(shí)需要加入時(shí)鐘信號(hào),清零或置位信號(hào),硬件電路結(jié)構(gòu)里需要用到觸發(fā)器,而觸發(fā)器需要時(shí)鐘信號(hào)來(lái)控制。
第二步,對(duì)設(shè)計(jì)輸入文件進(jìn)行編譯,包括綜合和適配、布局布線(xiàn)優(yōu)化,在講解綜合器的作用時(shí),可以通過(guò)Quartus II軟件中的Netlist Viewers觀看綜合得到的硬件電路結(jié)構(gòu)。例如三人投票表決器設(shè)計(jì)實(shí)驗(yàn),用HDL描述電路如下所示:
module bj3(a,b,c,l1,l2); //a,b,表示投票的三人,l1表示通過(guò),l2表示不通過(guò)(少于2人投票)
input a,b,c;
output? l1,l2;
assign l1=(a&b)|(b&c)|(c&a)|(a&b&c);
assign l2=~l1;
endmodule
HDL描述的電路比較抽象,將抽象的描述語(yǔ)言轉(zhuǎn)化成具有內(nèi)部結(jié)構(gòu)的電路就是綜合器的主要作用,通過(guò)Netlist Viewers查看電路內(nèi)部結(jié)構(gòu)如圖2所示:
從圖2中可以看出,HDL中的位運(yùn)算符綜合成了電路的各個(gè)邏輯門(mén),在軟件學(xué)習(xí)過(guò)程中,教師可以通過(guò)這種舉例的方式直觀地讓學(xué)生感受到,綜合器的作用。
第三步,對(duì)綜合得到的網(wǎng)表文件進(jìn)行適配,適配器的主要作用是將電路與目標(biāo)器件FPGA中的可編程單元進(jìn)行映射,通過(guò)FPGA 生成實(shí)際的硬件電路。在實(shí)際講授過(guò)程中,我們可以通過(guò)Quartus II軟件中的Chip planner觀看適配結(jié)果,仍以三人投票表決器設(shè)計(jì)為例,在Chip planner觀察窗口,可以看到實(shí)際的FPGA內(nèi)部硬件結(jié)構(gòu),如圖3所示,F(xiàn)PGA型號(hào)選用Cyclone系列的EP1C12Q240C8,圖3和圖1所示的FPGA 內(nèi)部結(jié)構(gòu)劃分類(lèi)似,其中該例子中的輸入、輸出管腳在可編程I/O單元區(qū)域用深棕色標(biāo)出,三人投票表決器邏輯值用邏輯單元中的查找表存儲(chǔ),占用的LE單元用深藍(lán)色標(biāo)出。通過(guò)放大按鈕,可以清楚地看到電路資源分配情況,如圖4和圖5 所示。
從適配后電路資源分配情況,可以更清楚地掌握FPGA內(nèi)部結(jié)構(gòu),從而更好地理解可編程邏輯器件的編程原理。
通過(guò)軟件平臺(tái)和硬件內(nèi)部結(jié)構(gòu)相結(jié)合的方式進(jìn)行教學(xué),學(xué)生更容易理解硬件描述語(yǔ)言的本質(zhì),綜合器和適配器真正的作用,他們都是為了配合可編程邏輯器件內(nèi)部結(jié)構(gòu)而使用的工具。
3 結(jié)語(yǔ)
FPGA課程是實(shí)踐應(yīng)用性非常強(qiáng)的一門(mén)課程,雖然大部分工作都是在軟件開(kāi)發(fā)設(shè)計(jì)這塊,但是如果對(duì)可編程邏輯器件內(nèi)部結(jié)構(gòu)不了解,數(shù)字電路基本原理不清楚,軟件開(kāi)發(fā)設(shè)計(jì)這塊就會(huì)遇到很多問(wèn)題。如何有效地將軟件平臺(tái)和硬件電路結(jié)構(gòu)結(jié)合起來(lái),使學(xué)生高屋建瓴地進(jìn)行電子系統(tǒng)設(shè)計(jì),需要教師對(duì)于這門(mén)課程的教學(xué)不斷的探索、改進(jìn)。
參考文獻(xiàn)
[1] 李兆光.數(shù)字電子技術(shù)課程中FPGA技術(shù)教學(xué)內(nèi)容的改革[J].山西電子技術(shù),2015(2):23-24,31
[2] 高一沅.應(yīng)用型本科專(zhuān)業(yè)FPGA相關(guān)課程教學(xué)模式的探討[J].湖北科技學(xué)院學(xué)報(bào).2016(4):84-86
[3]龐前娟.應(yīng)用型本科EDA技術(shù)教學(xué)改革的研究[J].大學(xué)教育,2015(7):125-126
[4] 鄭利浩,王荃,等. FPGA數(shù)字邏輯設(shè)計(jì)教程[M].電子工業(yè)出版社,2010.
[5] 吳厚航.深入淺出玩轉(zhuǎn)FPGA[M],北京航空航天大學(xué)出版社,2010.