童巧英
摘要:Verilog HDL是電子設計主流硬件的描述語言之一,在該硬件描述語言中存在大量類似語句。文章提出采用比較分析法對Verilog HDL進行教學,并以Verilog HDL中的兩種條件語句:case語句和if語句為例,在語句格式、應用范圍、占用資源三方面對兩種語句進行對比分析。分析表明,case語句在可讀性方面要優(yōu)于if語句,if語句的使用范圍要大于case語句,對于同樣的設計,case語句占用邏輯資源要大于if語句。比較分析法可以幫助學員分清概念,提高分析水平,獲得規(guī)律性認識,快速掌握Verilog HDL。
關(guān)鍵詞:比較分析法;硬件描述語言;Verilog HDL
中圖分類號:TP311.1 文獻標識碼:A 文章編號:1007-9416(2018)01-0121-03
硬件描述語言是EDA(Electronic Design Automation)技術(shù)的重要組成部分,常用的硬件描述語言主要有VHDL、Verilog HDL、SystemVerilog和System C等,Verilog HDL(hardware description language)以其簡明扼要的代碼、容易掌握的語法規(guī)定、很強的電路描述和建模能力,能從多個層次對數(shù)字系統(tǒng)進行描述,簡化硬件設計任務,提高設計效率和可靠性,成為基層電路建模與設計中最流行的硬件描述語言[1],幾乎所有的EDA設計平臺均支持Verilog HDL語言。在美國和日本等先進電子工業(yè)國,Verilog HDL已成為設計數(shù)字系統(tǒng)的基礎,作為新世紀的中國大學生和年輕的電子工程師應該盡早掌握這種新的設計方法,使我國在復雜數(shù)字電路及系統(tǒng)的設計競爭中逐步縮小與美國等先進的工業(yè)發(fā)達國家的差距[2]。
國內(nèi)介紹Verilog HDL的書籍,對硬件描述語言的描述基本都是先介紹下結(jié)構(gòu)與數(shù)據(jù)類型,然后對各種語句進行逐一說明[3-5]。國內(nèi)也對Verilog HDL進行了教學改革方法的研究[6-8],但這些書籍或教學改革都未對類似語句進行比較,學生需要在后期的不斷學習中自己去體會相似語句間的區(qū)別。因此,文章提出采用比較分析法對Verilog HDL進行教學。比較分析法的運用,有助于培養(yǎng)學員獨自動手,獨立思考的學習能力;有助于培養(yǎng)學員舉一反三,觸類旁通的推理能力;有助于培養(yǎng)學員從事物表面現(xiàn)象找出本質(zhì)差異的分析能力。正確運用比較分析法,可以幫助學員分清概念,提高分析水平,獲得規(guī)律性認識。比較分析法不僅為學員提供了課前思考,查找資料的機會,更給學員創(chuàng)造了參與討論的學習條件,使學員在熱烈、活潑的互動學習氛圍中,輕松,愉快地掌握知識和技能,從而獲得事半功倍的教學效果。
Verilog HDL中有各種類似語句,如兩種條件語句:case語句和if語句;兩種過程語句:always語句和initial語句;兩種賦值語句:阻塞式賦值和非阻塞式賦值;四種循環(huán)語句:for語句,while語句,repeat語句和forever語句等等。這些類似語句都可以采用比較分析法進行教學。文章以兩種條件語句:case語句和if語句為例,從語句格式、應用范圍、占用資源三方面對兩種語句進行對比分析,介紹語句間的區(qū)別,有助于學員的快速理解和掌握。
1 語句格式
case語句的一般格式如下:
case(表達式)
取值1:begin語句塊1;end
取值2:begin語句塊2;end
……
default:begin語句塊n;……end
endcase
if語句的一般格式如下:
if(條件表達式1)begin語句塊1;end
else if(條件表達式2)begin語句塊2;end
……
else if(條件表達式m)begin語句塊m;end
else begin語句塊m+1;end
由case語句和if語句的格式可以看出,兩種語句至少有以下幾點不同:
1.1 可讀性
case語句中,先獲得或計算出“表達式”的值,然后根據(jù)以下條件句中找到第一個相同的值,直接執(zhí)行后面的語句塊,整個語句可讀性好;if語句中,需要逐條對比各個“條件表達式”是否為真,當發(fā)現(xiàn)某個“條件表達式”返回的值為真,則執(zhí)行后續(xù)的語句塊,很明顯與case語句相比,格式較亂,可讀性較差。因此,case語句可讀性要好于if語句。
1.2 case和if后括號中的表達式
case語句格式中,case后面是“表達式”,該表達式是一個隨意值,如2b11、7d30等。而if語句格式中,if后面是“條件表達式”,“條件表達式”可以是一個標識符,如if(a),或者是一個判別表達式,如if(a<(b+1))等,標識符或判別表達式輸出值為1時判斷為真,輸出值為0、x或z時判斷為假,于是if語句根據(jù)判斷結(jié)果有條件地選擇執(zhí)行其后的語句塊。
1.3 結(jié)束語
case語句格式中,除非所有條件句中的選擇取值能完整覆蓋case語句中表達式的取值,否則最末一個條件句中的選擇必須加上default語句。關(guān)鍵詞default引導的語句表示本語句完成以上已列的所有條件句中未能列出的其他可能取值的邏輯操作,最后case語句以endcase作為結(jié)束語。
而if語句是沒有結(jié)束語的,在判別到一個“條件表達式”為真后,執(zhí)行后面的語句塊,就跳出if語句。
2 應用范圍
if語句的應用范圍要大于case語句,這從兩種語句的格式中就可以看出來,其實case語句都是可以用if語句進行改寫的。case格式用if語句來實現(xiàn)可以表示為:
if(表達式==取值1)begin語句塊1;end
else if(表達式==取值2)begin語句塊2;end
……
else begin語句塊n;end
而if語句因為各語句間有優(yōu)先級,因此很多if語句無法用case語句來實現(xiàn)。下面分別用case語句和if語句實現(xiàn)的四選一多路選擇器來看RTL圖的區(qū)別,圖1和圖2分別為采用case語句的程序和采用if語句的程序。
采用case語句實現(xiàn)的四選一多路選擇器RTL視圖如圖3所示,RTL視圖顯示的是編譯后的結(jié)果顯示的圖形都是調(diào)用標準單元的結(jié)果。
采用if語句實現(xiàn)的四選一多路選擇器RTL視圖如圖4所示。
從圖3和圖4的RTL視圖中可以看出,if語句有明顯的優(yōu)先級,而case語句是并行執(zhí)行的。雖然兩種語句的RTL視圖有較大差別,但是兩種語句的Technology Map相同,如圖5所示。Technology Map顯示的是已經(jīng)編譯并映射到對應的FPGA器件中,是fitter(place&route;)后的結(jié)果。
因此,隨著現(xiàn)在的仿真和綜合工具已經(jīng)足夠強大,最后綜合后的結(jié)果if語句與case語句其實是一樣的,無非是兩種不同的實現(xiàn)方式。
3 占用資源
由于許多電子設計既可以用case語句實現(xiàn),也可以用if語句實現(xiàn),在利用QuartusⅡ進行綜合,兩種語句的邏輯資源利用情況有很大不同,一般來講,采用case語句的程序占用資源要比采用if語句的程序占用資源要多。顯然,在進行程序設計時,if語句中各條件向上相與的功能大大簡化了電路的結(jié)構(gòu),在設計時,如要考慮到采用資源,盡可能使用if語句。
4 結(jié)語
隨著Verilog HDL在EDA技術(shù)上越來越廣泛的應用,Verilog HDL在各高校的電子信息專業(yè)的普及率也越來越高,文章以Verilog HDL中兩種條件語句case語句和if語句為例,采用比較分析法對兩種語句進行了分析,使學員能更有深度地理解該語言各種語句的靈活運用,更快速掌握該硬件描述語言,同時鍛煉了學生解決實際問題的能力,響應了各大電子企業(yè)對硬件描述語言人才的需求。
參考文獻
[1]潘松,陳龍,黃繼業(yè).EDA技術(shù)與Verilog HDL(第2版)[M].清華大學出版社,2010.
[2]王鵬,陳新武,陳詠恩等.面向應用型本科教育的FPGA課程教學探討[J].實驗技術(shù)與管理,2016,33(3):185-188.
[3](美)巴斯克著.Verilog HDL入門(第3版)[M].夏宇聞等譯.北京航空航天大學出版社,2008.
[4]李紅革,李峭,何鋒.VeriLog硬件描述語言與設計[M].北京航空航天大學出版社,2017.
[5](加)斯蒂芬·布朗(Stephen Brown),(加)斯萬克·瓦拉納西(Zvonko Vranesic)著.數(shù)字邏輯基礎與Verilog設計[M].吳建輝等譯.機械工業(yè)出版社,2016.
[6]趙天翔,何金枝.以Verilog HDL為重點的數(shù)字邏輯課程教學改革與實踐[J].電腦知識與技術(shù),2016,12(35):177-178.
[7]李俊一,牛萍娟.基于Verilog HDL設計的多功能數(shù)字鐘[J].微計算機信息,2006,22(11):79-81.
[8]郭家榮.項目教學法在Verilog HDL程序設計教學中的應用[J].教育現(xiàn)代化,2016,10(30):226-227.