楊祖芳 汪淳
摘 要 EDA技術(shù)課程設(shè)計(jì)是EDA技術(shù)學(xué)習(xí)的一個(gè)重要環(huán)節(jié),為培養(yǎng)學(xué)生的實(shí)際動(dòng)手能力及設(shè)計(jì)創(chuàng)新能力,從教學(xué)改革的實(shí)踐出發(fā),文章詳細(xì)介紹了課程設(shè)計(jì)的教學(xué)安排,給出了課程設(shè)計(jì)的具體方法。
關(guān)鍵詞 EDA技術(shù) 課程設(shè)計(jì) 實(shí)踐教學(xué)
中圖分類號:G424 文獻(xiàn)標(biāo)識碼:A
0 引言
隨著微電子技術(shù)的不斷發(fā)展和制造工藝水平的提高,現(xiàn)代電子產(chǎn)品正在以前所未有的革新速度,朝著功能多樣化、體積最小化、功耗最低化的方向迅速發(fā)展。EDA(Electronic Design Automation,電子設(shè)計(jì)自動(dòng)化)技術(shù)正是為了適應(yīng)這種現(xiàn)狀,以縮短電子產(chǎn)品的開發(fā)周期,降低開發(fā)成本,提高產(chǎn)品競爭力為目的,吸收多學(xué)科最新成果而形成的一門新技術(shù)。日趨完善的EDA技術(shù)正在逐步取代傳統(tǒng)的電子設(shè)計(jì)方法,廣泛應(yīng)用于工業(yè)生產(chǎn)、消費(fèi)電子、醫(yī)藥衛(wèi)生、汽車電子、無線通信、儀器儀表等領(lǐng)域。
1 EDA技術(shù)課程概述
EDA技術(shù)是以大規(guī)??删幊踢壿嬈骷樵O(shè)計(jì)載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達(dá)方式,以計(jì)算機(jī)、大規(guī)模可編程邏輯器件的開發(fā)軟件及實(shí)驗(yàn)開發(fā)系統(tǒng)為設(shè)計(jì)工具,由計(jì)算機(jī)自動(dòng)完成邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合及優(yōu)化、布局布線和仿真,直至對于特定目標(biāo)芯片的適配編譯、邏輯映射、編程下載等工作,最終形成集成電子系統(tǒng)或?qū)S眉尚酒囊婚T新技術(shù),或稱為IES/ASIC自動(dòng)設(shè)計(jì)技術(shù)。①
EDA技術(shù)是一門應(yīng)用性和實(shí)踐性很強(qiáng)的課程。需要掌握四個(gè)方面:大規(guī)??删幊踢壿嬈骷布枋稣Z言,軟件開發(fā)工具,實(shí)驗(yàn)開發(fā)系統(tǒng)。大規(guī)??删幊踢壿嬈骷饕橇私庵髁鞯腇PGA/CPLD廠商及其主要器件,對器件的內(nèi)部結(jié)構(gòu)可以少講,不作深入的剖析。常用的硬件描述語言包括VHDL和Verilog HDL兩種,在教學(xué)中應(yīng)讓學(xué)生至少掌握一種。選用不同廠家的可編程邏輯器件需要使用不同的EDA軟件開發(fā)工具。目前比較流行的、主流廠家的EDA 軟件工具有Altera公司的QuartusⅡ,Xilinx的ISE/ISE-WebPACK Series 和Lattice公司的ispLEVER。實(shí)驗(yàn)開發(fā)系統(tǒng)是硬件驗(yàn)證工具。②
EDA技術(shù)課程設(shè)計(jì)作為EDA技術(shù)理論課程的后續(xù)實(shí)踐教學(xué)環(huán)節(jié),主要教學(xué)目的是提高學(xué)生的實(shí)踐動(dòng)手能力,注重學(xué)生的自主設(shè)計(jì)能力和創(chuàng)新能力的培養(yǎng),比較全面的掌握EDA技術(shù)的設(shè)計(jì)方法和工程開發(fā)流程,為畢業(yè)后能適應(yīng)工作崗位打下基礎(chǔ)。
2 EDA課程設(shè)計(jì)教學(xué)實(shí)踐
2.1 教學(xué)安排
我校學(xué)生在上EDA課程設(shè)計(jì)之前已經(jīng)學(xué)習(xí)了EDA技術(shù)理論課,并進(jìn)行了18學(xué)時(shí)的EDA技術(shù)實(shí)驗(yàn),已經(jīng)具備一定的理論基礎(chǔ),掌握QuartusⅡ軟件的使用,能夠進(jìn)行一些基本的組合邏輯電路及時(shí)序邏輯電路的設(shè)計(jì),并下載到實(shí)驗(yàn)箱上面觀察硬件現(xiàn)象。課程設(shè)計(jì)的教學(xué)安排主要包括下面幾個(gè)階段。
圖1 系統(tǒng)組成框圖
選題:學(xué)生3人一組,根據(jù)分發(fā)的題目,通過查找資料,選擇自己感興趣的課題或者自由定題,如果是自由定題需經(jīng)過指導(dǎo)教師批準(zhǔn)后方可進(jìn)行后續(xù)設(shè)計(jì)。
具體設(shè)計(jì):主要包括設(shè)計(jì)方案的確定,各模塊程序設(shè)計(jì),仿真,硬件測試。學(xué)生在完成設(shè)計(jì)之后,需在實(shí)驗(yàn)箱上演示硬件現(xiàn)象并進(jìn)行講解,提交項(xiàng)目文件。指導(dǎo)教師根據(jù)學(xué)生的設(shè)計(jì)成果進(jìn)行驗(yàn)收。主要考察學(xué)生設(shè)計(jì)中所用的基礎(chǔ)理論、基本知識、基本技能的掌握程度,以及學(xué)生在實(shí)驗(yàn)箱實(shí)驗(yàn)過程中遇到的問題和解決方案。
課程設(shè)計(jì)報(bào)告撰寫:對設(shè)計(jì)過程進(jìn)行歸納總結(jié),按照規(guī)定的格式要求完成設(shè)計(jì)報(bào)告的撰寫,每人一份,不得抄襲。主要是培養(yǎng)學(xué)生的論文寫作能力。
答辯:學(xué)生對其設(shè)計(jì)內(nèi)容進(jìn)行講解并回答指導(dǎo)教師的提問。
2.2 電路系統(tǒng)的設(shè)計(jì)方法
EDA技術(shù)課程設(shè)計(jì)的題目一般比較復(fù)雜,需要綜合運(yùn)用所學(xué)的知識。采用自上而下的設(shè)計(jì)方法進(jìn)行設(shè)計(jì),主要包括下面幾個(gè)步驟:(1)分析課程設(shè)計(jì)任務(wù)書的題目及要求;(2)通過查找資料,確定系統(tǒng)方案,將整個(gè)系統(tǒng)進(jìn)行模塊劃分;(3)利用Altera公司的QuartusⅡ軟件,采用VHDL語言或原理圖的輸入方式進(jìn)行具體模塊設(shè)計(jì);(4)功能仿真、時(shí)序仿真,功能仿真是為了驗(yàn)證系統(tǒng)是否能夠完成要求的邏輯功能,時(shí)序仿真是考慮了器件延時(shí)特性之后的仿真。(5)硬件測試。下面以汽車尾燈控制器的設(shè)計(jì)為例介紹數(shù)字電路系統(tǒng)的設(shè)計(jì)方法。
設(shè)計(jì)任務(wù):設(shè)計(jì)一個(gè)汽車尾燈控制器,假設(shè)汽車尾部左右兩側(cè)各有3盞指示燈,其控制功能應(yīng)包括:(1)汽車正常行駛時(shí)指示燈都不亮;(2)汽車右轉(zhuǎn)彎時(shí),右側(cè)的一盞指示燈亮且閃爍;(3)汽車左轉(zhuǎn)彎時(shí),左側(cè)的一盞指示燈亮且閃爍;(4)汽車剎車時(shí),左右兩側(cè)的一盞指示燈同時(shí)亮;(5)汽車在夜間行駛,左右兩側(cè)的一盞指示燈同時(shí)一直亮,供照明使用。
按照設(shè)計(jì)要求,采用自頂向下的設(shè)計(jì)方式,將整個(gè)系統(tǒng)分為時(shí)鐘分頻模塊、主控模塊、汽車左燈控制模塊及汽車右燈控制模塊等四個(gè)模塊。其系統(tǒng)組成框圖如圖1所示。系統(tǒng)的輸入信號包括系統(tǒng)時(shí)鐘信號CLK、剎車信號BRAKE、夜間行駛信號NIGHT、汽車左轉(zhuǎn)彎控制信號LEFT及汽車右轉(zhuǎn)彎控制信號RIGHT,系統(tǒng)的輸出信號包括左側(cè)3盞指示燈LD1(左轉(zhuǎn)彎信號燈)、LD2(左剎車燈)、LD3(左夜燈)及RD1(右轉(zhuǎn)彎信號燈)、RD2(右剎車燈)、RD3(右夜燈)。
分頻模塊:輸入系統(tǒng)時(shí)鐘信號CLK(16Hz)進(jìn)行16分頻得到1Hz的時(shí)鐘信號CP,CP的電平信號分別和LEDL、LEDR電平相與,用于控制左轉(zhuǎn)彎信號燈LD1及右轉(zhuǎn)彎信號燈RD1的閃爍。
主控模塊:此模塊用于整體控制,當(dāng)輸入左轉(zhuǎn)彎信號LEFT時(shí),輸出左燈控制信號LP,當(dāng)輸入右轉(zhuǎn)彎信號RIGHT時(shí),輸出右燈控制信號RP,當(dāng)輸入剎車信號BRAKE時(shí),輸出剎車燈控制信號BRAKE_LED,當(dāng)輸入夜間行駛信號NIGHT時(shí),輸出夜燈控制信號NIGHT_LED,其它情況輸出錯(cuò)誤控制信號LR。主控模塊的VHDL源程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY CTRL IS
PORT(LEFT,RIGHT,BRAKE,NIGHT: IN STD_LOGIC;
LP,RP,LR,BRAKE_LED,NIGHT_LED: OUT STD_LOGIC);
END ENTITY CTRL;
ARCHITECTURE ART OF CTRL IS
BEGIN
NIGHT_LED<=NIGHT;
BRAKE_LED<=BRAKE;
PROCESS(LEFT,RIGHT)
VARIABLE TEMP:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
TEMP:=LEFT&RIGHT;
CASE TEMP IS
WHEN "00"=>LP<='0';RP<='0';LR<='0';
WHEN "01"=>LP<='0';RP<='1';LR<='0';
WHEN "10"=>LP<='1';RP<='0';LR<='0';
WHEN OTHERS=>LP<='0';RP<='0';LR<='1';
END CASE;
END PROCESS;
END ARCHITECTURE ART;
汽車左燈控制模塊:用于控制左側(cè)尾燈的亮、滅和閃爍情況。在時(shí)鐘信號上升沿的控制下,左燈控制信號LP有效時(shí),左燈LEDL輸出有效電平,輸出的LEDL信號與CP信號相與,使得左轉(zhuǎn)彎信號燈LD1閃爍。剎車控制信號有效時(shí),LEDB輸出高電平,使得左邊剎車燈LD2點(diǎn)亮;夜間行駛信號有效時(shí),LEDN輸出高電平,使得左邊夜燈LD3點(diǎn)亮。當(dāng)錯(cuò)誤控制信號出現(xiàn)時(shí),左側(cè)三盞燈都不亮。源程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY LC IS
PORT(CLK,LP,LR,BRAKE,NIGHT: IN STD_LOGIC;
LEDL,LEDB,LEDN: OUT STD_LOGIC);
END ENTITY LC;
ARCHITECTURE ART OF LC IS
BEGIN
LEDB<=BRAKE;
LEDN<=NIGHT;
PROCESS(CLK,LP,LR)
BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF(LR='0') THEN
IF(LP='0')THEN
LEDL<='0';
ELSE
LEDL<='1';
END IF;
ELSE
LEDL<='0';
END IF;
END IF;
END PROCESS;
END ARCHITECTURE ART;
汽車右燈控制模塊:此模塊與左燈控制模塊類似,在這里不作詳細(xì)介紹。
頂層電路:各模塊設(shè)計(jì)仿真實(shí)現(xiàn)后,可以分別創(chuàng)建各個(gè)模塊的元件符號,然后將各子模塊采用原理圖的輸入方式連接起來建立頂層文件,或者用VHDL語言編寫頂層文件實(shí)現(xiàn)系統(tǒng)電路。圖2是頂層VHDL文件編譯后生成的RTL電路圖。
系統(tǒng)設(shè)計(jì)完成后,對整個(gè)系統(tǒng)進(jìn)行功能仿真,根據(jù)設(shè)計(jì)要求添加測試輸入條件,觀察仿真后的輸出結(jié)果是否與理論結(jié)果相符,如果不符,則必須修改源程序,直到相符為止。圖3為系統(tǒng)仿真圖,由仿真現(xiàn)象可知,當(dāng)剎車信號Brake為高電平時(shí),不管時(shí)鐘信號如何,左右兩盞燈ld2及rd2同時(shí)點(diǎn)亮。當(dāng)夜燈Night為高電平時(shí),不管時(shí)鐘信號如何,左右兩盞燈ld3及rd3同時(shí)點(diǎn)亮。當(dāng)左轉(zhuǎn)信號Left及右轉(zhuǎn)信號Right同時(shí)有效時(shí),這是一種錯(cuò)誤輸入,左右三盞燈均不亮,而當(dāng)左轉(zhuǎn)信號Left單獨(dú)有效時(shí),在時(shí)鐘CLK的上升沿到來后,相應(yīng)尾燈Ld1開始閃爍。仿真結(jié)果與預(yù)期結(jié)果相符,驗(yàn)證了設(shè)計(jì)的正確性。
電路仿真正確后,進(jìn)行硬件驗(yàn)證。根據(jù)實(shí)驗(yàn)室的實(shí)驗(yàn)箱,選擇Altera公司的EP1K30TC144-3芯片,正確分配好引腳,進(jìn)行全編譯,生成編程文件,連接好實(shí)驗(yàn)箱,將編程文件通過編程器下載到實(shí)驗(yàn)箱上面,然后撥動(dòng)開關(guān),觀察實(shí)驗(yàn)現(xiàn)象是否符合設(shè)計(jì)要求。
3 結(jié)束語
通過課程設(shè)計(jì),同學(xué)們對EDA技術(shù)表現(xiàn)出濃厚的學(xué)習(xí)興趣,逐漸從被動(dòng)學(xué)習(xí)轉(zhuǎn)變成了主動(dòng)學(xué)習(xí)。同學(xué)們掌握了如何基于FPGA器件進(jìn)行系統(tǒng)電路設(shè)計(jì),學(xué)會了應(yīng)用編程技術(shù)設(shè)計(jì)專用集成電路芯片的方法,實(shí)踐動(dòng)手能力、綜合設(shè)計(jì)能力得到很大的提高,為將來的就業(yè)奠定了基礎(chǔ)。
注釋
① 譚會生,張昌凡.EDA技術(shù)及應(yīng)用(第三版)[M].西安:西安電子科技大學(xué)出版社,2011.
② 劉婭琴,林霖.EDA課程教學(xué)探索與實(shí)踐[J].電氣電子教學(xué)學(xué)報(bào),2010.8.32(4).