數字電路和EDA課程融合實踐與探討
數字邏輯設計及應用是高等院校電氣信息類學科中一門重要的學科基礎課程,是研究數字系統設計的入門課程,在整個人才培養中起承上啟下的作用。EDA(electronicdesignautomatic)是以大規??删幊踢壿嬈骷樵O計載體,以硬件描述語言為系統邏輯描述的主要表達方式,以計算機、大規??删幊唐骷拈_發軟件及實驗開發系統為設計工具,從而實現硬件設計軟件化的新技術。
目前,很多學校把EDA的設計思路引入到數字電路的教學中,使得數字電路設計風格更靈活、設計效率更高。也有一部分學校將數字電路和EDA技術兩門課程融合,建立傳統數字電路設計和現代設計方法相結合的新教學模式,借此提高學生的理論水平和實踐動手能力。中山學院在長期的數字電路教學實踐中,體會到使用“數字電路/ARM7嵌入式系統多功能教學科研平臺”能夠提高學生的理解能力和動手能力,能夠更好地推進數字電路的教學改革,并能更好地完成數字電路和EDA技術的融合。
1 實驗平臺搭建
在全國壓縮課時的大背景下,數字邏輯設計及應用課程融合EDA技術相關內容之后,學時量仍然保持為64學時。由于課時限制,教師雖然清楚使用EDA技術設計數字電路有諸多優點,但為了講清楚數字電路的基礎知識,只能對EDA技術的設計思路和方法做最簡單的介紹和演示,致使學生對現代電路設計技術淺嘗輒止,難以化為能力。為了知識體系的延伸和連貫,更為了提高學生的綜合實踐能力,本文自制了一系列基于FPGA的數字系統實驗實訓平臺,作為數字電路實驗和EDA綜合實驗共同的設計平臺。使用共同的平臺,學生學習數字邏輯設計及應用課程,就能習得QuartusII軟件和試驗箱平臺的使用方法。這一方面可以利用EDA技術全面改進數字邏輯設計及應用課程教學,另一方面為EDA綜合實驗課程打下基礎,促進EDA綜合實驗更好地進行教學改革。
2013年,學校組織研發了“數字電路/ARM7嵌入式系統多功能教學科研平臺”,如圖1所示。
該平臺以現場可編程門陣列(FPGA)為核心,以綜合性、創新性實驗為導向,具有豐富的外設接口和豐富的設計資源,可以實現傳統數字邏輯電路實驗設備的大部分實驗,卻具有傳統實驗設備無法實現的大部分功能。試驗箱研發初衷是為了將學生從繁重的插線工作中解脫出來,使用電子設計自動化技術實現數字電路設計,使設計風格更靈活,設計效率更高效。根據幾年的教學實踐,發現這個平臺雖能對數字電路和EDA課程的融合起重要作用,但學生對傳統數字電路的理解不夠真實、具體。

圖1數字電路/ARM7嵌入式系統多功能教學科研平臺
為了讓學生對固定功能芯片的使用有感性的認識,2015年學校組織研發了“數字邏輯及數字系統綜合實驗實訓平臺”,補充2013版實驗平臺的不足。該平臺不僅包含以FPGA為核心的實驗平臺,還包括傳統實驗箱的一部分功能,即為傳統數字實驗和現代數字電路設計的融合。學生剛開始學習數字邏輯設計及應用課程時,使用傳統實驗箱部分,理解數字電路的邏輯關系和芯片使用方法;對數字電路有一定的認識之后,學習固定功能芯片擴展應用,學習不同固定功能芯片之間如何通信,理解傳統數字電路設計方法并嘗試自己設計電路;固定功能芯片使用方法掌握之后,學習FPGA可編程芯片的使用,掌握現代數字電路設計思想,學習用現代設計思想設計數字電路,并通過實驗平臺學會FPGA和固定功能芯片如何通信。學生在學習固定功能芯片和FPGA芯片的過程中,理解真實的電路和用QuartusII搭建的使用FPGA實現的電路其實是一回事,以此實現數字電路設計體系的融會貫通。
2 案例分析
數字邏輯設計及應用課程立足于傳統設計方法,即使把EDA的設計思路引入到數字電路的教學中,也只是基于FPGA的原理圖設計方法設計數字系統,電路一旦復雜化,就需要借助HDL描述電路。EDA綜合實驗課程基于HDL進行數字電路設計,多數情況下采用行為描述方式描述數字電路,對于用原理圖描述的數字電路,學生對其相應的HDL描述并不清晰。這些現象阻礙了學生對數字電路設計的認知,阻斷了學習的連貫性和一致性。據此,我們改革課程內容,將數字電路設計的一部分內容使用原理圖輸入法(數字電路課程實現)和HDL(EDA綜合實驗)兩種方法來實現。

圖2用3-8譯碼器實現跑馬燈的電路原理圖
如用3-8譯碼器實現跑馬燈,用電路原理圖的實現方法如圖2所示,其中插圖為LED跑馬燈的亮燈圖。該實現電路是根據“數字電路/ARM7嵌入式系統多功能教學科研平臺”而設計的。
眾所周知,實現亮燈沿著一個方向移動,并且能夠循環往復,就可稱之為跑馬燈。如圖2所示,將74138的輸出Y0N~Y7N鎖定試驗箱上的LED0~LED7(低電平點亮LED),如果74138的A、B、C輸入端口能夠循環輸入000~111,則LED0~LED7可以實現跑馬燈功能。如果計數器的輸出大于等于3位,則計數器能夠循環輸出000~111。電路選擇4個8位計數器級聯,一方面用計數器的輸出作為74138的輸入,另一方面將系統時鐘49.152MHz分頻為大約1.5Hz。選擇8count的使能信號GN(低電平有效)作為系統使能,當GN=0時,芯片能夠正常工作;當GN=1時,保持系統原來的狀態不變。原理圖中將disp_cs置為0,目的是在LED燈和七段數碼管、LED矩陣復合使用時選擇使用LED燈,buzz置為1,目的是想讓系統中喇叭不發聲。
用VerilogHDL實現跑馬燈如例程1所示。
例程1:

可以看出,在VerilogHDL中,74138的功能由一個case語句實現,分頻器的功能是由兩個計數器級聯實現,其中一個計數器將系統時鐘49.152MHz進行10M分頻,另一個計數器將時鐘系統進行8分頻,這樣LED燈的流動頻率大概為0.6Hz。系統另設一個使能信號en,當en=0時,74138正常工作;當en=1時,保持原來的狀態不變。而原理圖中對disp_cs=0和buzz=1的設定,在VerilogHDL中用assign語句來實現。
在這個例子中,如果在例程1“endcase”后加上一句“elsey<=8’b11111111”,則實現的功能變為:當en=0時,74138正常工作;當en=1時,所有LED燈均熄滅。這個功能的改變如何在原理圖中表現出來呢?可以將74138芯片的G1端口設為輸入端口en,這樣就可以實現與例程1相同的功能。
通過用原理圖和HDL兩種不同電路描述方式的對照設計,學生能夠對用HDL描述的數字電路有更具體生動的認識;同時能夠理解對于一個數字電路,需要使用什么樣的語句描述,從而實現知識的融會貫通,增加學生的學習興趣和積極性。
3 結束語
借助“數字邏輯及數字系統綜合實驗實訓平臺”,使得使用傳統試驗箱驗證芯片功能的實驗方法和基于FPGA的電路原理圖設計方法得以統一,基于FPGA的電路原理圖和HDL這兩種數字電路描述得以融合。至此,數字邏輯設計及應用和EDA綜合實驗兩門課程真正實現了由基礎學習到深刻理解到實踐設計到創新的最終目標,學生對知識的理解和掌握才能融會貫通。這樣的學生是真正的應用型人才,是社會歡迎的人才,也是學校的培養目標。