摘要:針對FPGA課程的特點,結合初學者沒有基礎的實際情況,闡述了FPGA入門級教材內容的設置原則和教學方法,進行了FPGA課程教材內容設置的探索與實踐,使初學者能夠輕松入門、快速領悟。教材的內容由淺入深、循序漸進和發(fā)散式滲透不僅適合高校教學使用,同時適合FPGA初學者自學。FPGA教材的改革已經應用于電子信息工程專業(yè)的教學中,并取得了一定的經驗和良好的成效。
關鍵詞:FPGA教學;FPGA教材;Verilog HDL;數字系統設計;電子設計自動化
中圖分類號:G642.0 文獻標識碼:A 文章編號:1007-0079(2014)21-0113-02
FPGA(Field-Programmable Gate Array)即現場可編程門陣列,一種半定制的集成電路,主要用在航空航天等高端領域中。隨著技術的進步和成本的降低,FPGA性價比越來越高、集成度越來越大,可編程性能方面呈現出快速構建系統(System-In-Weeks)的優(yōu)勢,逐步滲透至計算機、通信、控制、消費電子和汽車電子等民用領域中。尤其是在數據通信、無線通信、先進消費電子領域,FPGA更是已經取代了一些處理器,成為新一代的系統級的硬件開發(fā)平臺,各高校也紛紛開設了FPGA課程。FPGA教學是電子信息類專業(yè)設置的必修課程之一,引導學生迅速掌握這門技術的方法和入門手段是高等學校需要研究的課題。FPGA的陣列式硬件特性和語言并行特性與傳統的微機原理以及高級語言的思想是完全不同的,因此,需要科學的引導方式使學生進入FPGA的世界中。教材就是必備的手段之一,采用合適的教材是實現良好教學效果的基礎。
一、現有教材的內容安排對比
從應用過程來看,市場上FPGA教材一般具有以下共性問題:
第一,冗余度高,有用知識點少。多數教材在講述FPGA開發(fā)時,均從基本的Verilog HDL(或者是VHDL)語法講起,當語法結束后再講述相關的設計。實際上,語法內容在先修課程中已經完全(或者大部分)修讀過,不用再學一遍類似或完全相同的內容。
第二,教材內容按照固定的順序寫,先語法,后基本組合電路設計,再基本時序設計等,不符合學生學習的規(guī)律,應該按照硬件描述語言所能表達的電路形式去講解,而不局限于數字電路的知識點。
第三,部分教材動手實驗的內容過于簡單,且不具有實際應用價值。如一些自動售票器之類的實驗。
第四,很多教材一開始給出了EDA領域中的很多新名詞、新概念,讓初學者陷入抽象的名詞堆中,不能理解其內涵,不利于學習入門等。
由于這些原因限制了教師教學的主觀能動性和學生學習的引導性,提出了一套新的教材教學內容的規(guī)劃方法。
二、新教材的內容規(guī)劃
教材內容應根據現有的培養(yǎng)方案結構和先修課程的關系有效地進行內容的選擇,去冗留精,根據學生所能掌握知識的自然過程循序漸進并有機地結合工程應用等方面,才能達到學生學習上的“水到渠成”及學以致用的效果。
第一,合理規(guī)劃培養(yǎng)方案中的教學內容大綱,去除已經學習過或者不需要講述的內容。以教材中的HDL為例,現在很多高校電子信息類專業(yè)均以Verilog HDL為語言部分教學內容,Verilog HDL語言源自于C語言,C語言中的大部分語法和語句可以直接用于Verilog HDL中,這樣語言部分就不需要單獨花很多時間去講授,只有部分語句和語法需要單獨補充。例如塊語句“begin end”、拼接符“{}”和縮位運算符等。條件語句和c語言中的語法也不盡相同,只需要指出不同點即可。在很多計算機類的專業(yè)中,HDL部分講授的是VHDL語言。VHDL語言源自于PACAL,部分和PACAL語法相同,例如變量的賦值等可以省略。尤其是VHDL語言,語法內容較多,如果去除和PACAL語言相同的部分,可以省略很多課時用來講解其他更為重要的知識點,有利于提高教學效果。
第二,遵循學習規(guī)律,教材內容應循序漸進給出新知識點。以學生為主體,強調“學習者取向”。[1]教學內容的安排應從最簡單的數字電路設計和已經掌握的基本的語言語法開始,讓初學者不知不覺中掌握了一種新技術,利用所學過的數字電路知識和C語言類似的基本Verilog語句就能實現。然后在此基礎之上安排一些新的電路設計點和介入Verilog HDL語法。例如,在講述半加器電路設計時可以采用數字電路中的設計方式,使用兩個門(與門和或門)就可以實現半加器的設計。然后分析電路的行為,完全可以使用拼接符去實現,并重點從功能角度講述。即:兩個一位數相加,結果最多為兩位,結果中高位即為進位位,低位則為和輸出位。語法實現為assign {co,s}=a+b,一方面引入了新的語法(拼接符{}),另一方面從“行為”角度講述了半加器的工作,避開了數字電路中的化簡過程,且符合學生思考解決問題的思路,課堂教學效果很好。
第三,教學內容應盡可能結合應用或者結合應用的構成部分。FPGA是一項實用技術,在小的電路設計系統中經常作為外設的譯碼電路,可以結合多路譯碼器電路進行設計應用,在實驗過程中盡可能采用此類內容作為實驗;在較大型的設計中可能會涉及到DSP算法或者復雜的通信協議,結合學生已經掌握的知識點設計一些內容進行講授。如:奇偶校驗,在串行口的通信中校驗是基本的功能之一,在Verilog HDL中使用一條簡單的語句“assign P= ^D;”就可以實現。一方面實現了使用邏輯門電路很難實現的算法,另一方面也增加了新語法(“^”為縮位異或運算)的應用。再如:并串轉換和串并轉換,是現在串行通信中幾乎不可缺少的組成部分,大多數教材講述的方法不具有實用價值,應該結合應用時的通信握手,增加部分控制信號,使講述的內容能夠直接應用到系統中。
第四,入門知識點要盡可能簡單,最好使用所學知識引導進入新的知識點,然后擴展至知識面,最后達到全面掌握本課程全部知識點的范疇。現有教學內容的入門教學方式不符合思維方式,它采用的方法為從抽象化到具體化的安排過程?,F有的教材內容一般在第一章介紹EDA技術領域的一些新概念,發(fā)展過程和擴展至系統級中的一些內容,例如IP的概念、固核硬核軟核等。這些內容在基礎類教學中往往不會涉及,有些即使涉及了,學生也不明白和前面的概念之間的聯系,不利于教學的開展。按照常規(guī)的思維方式,教學的入門可以從一個熟悉的知識點入手,進而輻射至其他的新知識點、新概念。在教學內容安排上,可以從與門電路設計開始,然后引入兩個門電路同時實現,并給出HDL并行執(zhí)行的概念,有利于重點突出HDL的特點,激發(fā)學生學習FPGA的積極性。
第五,簡化邏輯產生過程,注重輸入輸出之間的行為關系。部分FPGA教學內容安排在數字電路設計之后。受數字電路設計思想的影響,很多學生認為HDL僅僅是用于描述門級電路的,而實際上HDL能夠從更高的系統級角度描述電路行為。以N位全加器為例,不需要知道內部電路構成的細節(jié),從行為級角度就可以直接描述出電路。再如:在教學內容的后期設計一個簡單的CPU。CPU是復雜數字電路的代表,通過CPU的設計一方面可以使學生掌握CPU的基本原理和設計方法,另一方面可以讓學生們了解,即使再復雜的電路都可以使用HDL描述,讓學生們有系統級的概念,為今后進行更加復雜的系統設計打下思想基礎。
6.語言方面要推陳出新,更新語言標準,注重實際綜合效果
硬件描述語言是FPGA硬件電路設計的重要組成部分。以Verilog為例,市面上早期的教材均是以IEEE1364-1995為標準編寫,而現在最新的Verilog標準為IEEE1364-2002。大多數教材仍然沿用IEEE1364-1995語法,這是不利于學習的。以存儲器設計為例,舊標準中存儲器空間的位初值無法直接給出,必須通過向量中間變量來實現,過程繁瑣,不符合系統及描述的特點。而在新標準中,語法上可以直接實現對存儲器空間的某個位進行操作,簡化了設計過程和設計理念。再如:在向量的部分選擇問題上,舊標準不能采用正向偏移或者反向偏移的方式實現部分向量的操作,不利于電路行為設計;而在新標準中,不僅能實現偏移,還可以動態(tài)更改索引表達式,使代碼的編寫更為靈活,更符合學習者的編寫代碼思維方式。
7.仿真要與物理綜合結果相結合
從物理意義上講解,注重設計綜合細節(jié)的說明。EDA仿真工具一般有專用仿真工具和廠家軟件自帶的仿真工具兩類。專業(yè)的仿真工具,如modelsim,嚴格遵守Verilog HDL仿真語法要求;而廠家的仿真一般會結合綜合效果,不完全符合HDL語言本身的要求。例如,若有always@(a)c=ab;在modelsim中進行仿真結果和QuartusII中的仿真結果不同。在modelsim中,若b信號發(fā)生了變化,仿真結果不會出現變化,而在QuartusII中若b變化了,c輸出也會跟著變化的(規(guī)律是與門的規(guī)律)。從語法角度上講,若b信號變化,但它不在敏感信號列表里,所以不會觸發(fā)always塊,因此modelsim仿真結果不變;而QuartuII認為,這個代碼就是用來描述一組合電路-與門的,它會按照與門的輸入輸出關系變化仿真結果,實際教學中應注意兩者仿真的不同,并對學生進行科學的解釋。當然,教學過程中應盡可能引導學生把這類代碼寫成完整的形式:always@(a ,b)c=ab,避免出現不必要的錯誤結果。
8.注意與其他相關課程的銜接
FPGA是硬件教學內容,與其他如單片機、ARM、微機原理與接口技術等課程會有一定的交叉和連接。
9.注重編程風格和編程思想
教材內容的附錄部分增加了代碼編寫的常用習慣和可綜合風格的書寫,有利于培養(yǎng)學生良好的書寫習慣,為語法檢查和功能檢查提供方便,為進一步編寫大規(guī)模的代碼奠定良好基礎。
三、教學效果
通過優(yōu)化教材內容、改革教學方法與教學手段,FPGA課程教學改革取得了較大的成效。具體表現為:第一,教材注重學生基礎,以往基礎差的學生也能入門,學生自主學習的興趣濃厚。第二,教學內容的安排更加合理,結構更加完整,教師和學生使用更加方面,無需輔助參考書。第三,課程的教材注重實驗環(huán)節(jié),實驗內容與理論知識結合緊密,學生的實驗能力得到了進一步的提高,大部分學生能夠獨立完成基本實驗,部分學生能自主完成部分創(chuàng)新實驗項目。第四,教材從學生基礎出發(fā),符合學生實際,教學效果良好,學生的期末成績取得了大幅度提高。第五,學生充分肯定了教師的教學水平,教學評估成績優(yōu)秀。
四、教材后續(xù)內容的完善和調整
本課程在大三上學期開設,側重入門和基礎教學。若學生在學習完本教材后需要繼續(xù)在FPGA方向上深入學習,教師應結合學生所學和嵌入式方向的需要,講授一些關于qsys和sopc的相關內容;若數字信號處理的內容已修,還可以結合dspbuilder等進行高層次的講解教學;可以結合altium designer等對8051類的單片機軟核進行完善修改,達到全面培養(yǎng)學生的FPGA系統設計和應用能力的目的。
參考文獻:
[1]李旭瓊,段吉海,韋保林.應用型本科模擬電子技術教材的建設與改革探索[J].中國電力教育,2014,(2).
(責任編輯:王祝萍)