賀雪莉
(興義民族師范學院物聯網工程專業,興義 562400)
《數字邏輯電路》課程作為電子信息專業的必修課程之一,在電子電路專業學科人才培養中占據重要的地位。傳統的數字邏輯電路實驗教學多基于Logisim、Multisim等仿真工具來完成,主要培養學生重現邏輯電路和驗證分析電路功能的能力,對組合邏輯電路內部的邏輯關聯和電路應用分析能力培養不足。此外,隨著電子科學技術的飛速發展,現階段手工設計電子產品已經不再適應社會的需求。電子設計自動化(electronic design automation,EDA)技術是以計算機為工作平臺[1],實現電子電路技術、計算機技術和智能化技術的綜合應用,并以此來達到電子線路系統功能的技術手段。目前,EDA已成為電子領域的主要趨勢,因此,在數字電路課程設計中引入EDA技術是數字邏輯電路實驗及課程設計的教學改革方向[2]。EDA以大規模可編程邏輯器件為設計載體,來實現集成電子系統功能。而現場可編程門陣列(field programmable gate array,FPAG)因其具有運算速度快、存儲容量大、擴展性強和可無限重復編程等特點,在安防及工業領域、醫療檢測分析儀器、軟件無線電等各個領域均有應用,是當前主流的可編程邏輯器件之一。將基于EDA技術的FPGA設計開發應用到數字邏輯電路實驗課程的教學中來,通過實操實驗及綜合應用實驗,幫助學生更好地理解并掌握邏輯門電路的結構特點和時序邏輯,結合FPGA開發板的可擴展性和可重復編程特點,讓學生自主設計邏輯電路解決實際工程問題,以此培養學生的創造性,調動學生的積極性。
基于FPGA的數字邏輯電路實驗設計,主要通過XC7A35T-2FFG484開發板來完成,開發板如圖1所示。
開發板上集成有DDR3存儲顆粒、數碼管、通用按鍵、通用LED燈、OLED/攝像頭模塊、千兆以太網接口、HDMI接口和足量的擴展接口等,能夠滿足常規數字邏輯電路實驗的設計要求。實驗基于Vivado工具實現,通過Verilog硬件描述語言編寫程序設計,結合Notepad++編輯器和Modelsim仿真工具來完成各項實驗工程的搭建和驗證分析。研究基于FPGA的數字邏輯電路實驗方法具有很大的發展前景,在實驗教學上具有推廣的價值和意義[3]。
各系列數字邏輯電路教材內容基本大同小異,雖因不同專業培養方案不同,教學中的側重點會稍有差異,但是核心知識點基本一致,主要章節分布一般為數字邏輯概述、邏輯化簡、組合邏輯電路、觸發器和時序邏輯電路等幾個模塊。無論是純仿真的實驗還是基于FPGA的設計實驗,在實驗教學中均是圍繞重點章節展開。本文研究的基于FPGA的數字邏輯電路實驗設計,主要通過和理論知識重點章節映射完成實驗設計規劃,具體設計思路如表1所示。其中觸發器和計數器的設計實驗可綜合在顯示譯碼器實驗中完成,在此不再贅述,實驗五綜合應用實驗可根據不同專業培養方案做調整,達到考查學生綜合應用能力的目的即可,本文重點對實驗一至實驗四做詳細分析。

表1 基于FPGA的數字電路實驗設計規劃表
基于FPGA的數字邏輯電路實驗設計,實施分為四個步驟來完成,即分析、設計、仿真和實測驗證。每個實驗均通過分析邏輯電路的功能特點擬定設計思路,再結合Verilog硬件描述語言完成設計,接著通過仿真檢驗設計的邏輯性和功能性,最后通過JTAG下載接口實現工程的實測驗證。
本文研究的基于FPGA設計的數字邏輯電路均是基于芯片型號為xc7a35tfgg484-2達芬奇FPGA開發板來實現,考慮到圖片的顯示問題,文中給出的FPGA設計原理圖部分為不完整的縮減圖。在設計中賦值操作均通過非阻塞賦值完成,因此在FPGA設計仿真波形圖顯示中,結果均要比輸入數據晚一個系統時鐘周期。
無論是組合邏輯電路、觸發器還是時序邏輯電路,其最基本的邏輯元器件構成都是基本邏輯門電路。基本邏輯門電路指實現簡單邏輯關系的電路[4],比如“與”邏輯、“或”邏輯和“非”邏輯。三種基本的邏輯門電路可以組成例如“與非”“或非”“與或非”“同或”和“異或”等多種符合邏輯運算,也可以搭配構成復雜的組合邏輯電路,多種不同類型的觸發器電路和各類時序邏輯電路。圖2的(a)、(b)、(c)圖依次表示二端口“與”邏輯、“或”邏輯和“非”邏輯的中國國標符號,其邏輯表達式分別為Y=A·B,Y=A+B和Y=Aˉ。
基于FPGA設計基本的邏輯門電路可根據門電路的邏輯運算關系,通過簡單的算術運算來實現。圖3所示為FPGA工程的原理圖。為了便于觀察結果,實測中將端口輸入數據data_a和data_b通過按鍵控制輸入,三個邏輯門的輸出接在LED引腳,通過LED燈的亮滅來觀察邏輯門電路的輸出結果狀態。
圖4所示為FPGA設計的邏輯門電路的仿真波形圖,所有輸出數據在復位信號高電平無效狀態和時鐘上升沿到來時刻觸發有效。分析波形圖可以看出,當邏輯門電路的數據以00、01、10、11、00輸入時(其中“or”邏輯只有一個輸入端口data_a),仿真輸出結果與邏輯表達式Y=A·B、Y=A+B和Y=Aˉ計算結果一致。
2.2.1 二進制加法器
數字邏輯電路中的加法器分為半加器、全加器和n位加法器三大類。其中半加器位最基礎的二進制加法器,只需要考慮當前位的計算結果即可;全加器在計算本位結果的同時需要考慮運算后是否產生進位問題;而n位加法器是一種全加器的級聯擴展模式。因此本文研究的基于FPGA的加法器設計主要針對全加器來完成。全加器的邏輯電路圖和邏輯符號如圖5所示。
基于FPGA設計的全加器原理圖如圖6所示。設計包括脈沖產生、動態顯示和全加器三個模塊,輸入信號A和B通過開發板的按鍵輸入實現,運算后的sum值和進位C的值通過數碼管顯示。仿真結果如圖7所示。全加器依次輸入00-01-10-11-00的數值,對應的和值S依次顯示0-1-1-0-0數值,進位C依次顯示0-0-0-1-0數值,全加器功能驗證完成。
2.2.2 數值比較器
數電中的數值比較器是指用來比較兩個二進制數大小的邏輯電路,輸入變量是兩個n位二進制數值,輸出變量有Y(A>B)、Y(A=B)和Y(A<B)三個狀態[4]。數值比較器邏輯符號如圖8所示,其中輸入端A、B可以是多位二進制數。工作原理為當兩個多位二進制數相比較時,應從高位到低位逐位比較,如果最高位不相等,則可立即判斷兩個數值的大小;如果最高位相等,則需比較次高位,以此類推,直到最低位。
基于FPGA設計數值比較器,結合開發板的數碼顯示模塊、按鍵模塊和LED燈模塊來完成。由于本文設計用到的達芬奇Artix-7 FPGA開發板只包含4個獨立按鍵,因此實測設計時以2 bit輸入端為例完成實驗,并通過LED亮滅來表示輸入端按鍵的狀態,比較器輸出結果通過數碼管顯示。實驗設計的原理如圖9所示。
圖10所示為數值比較器仿真波形圖。其中輸入數據data_1和data_2由按鍵控制輸入,由于開發板按鍵是低電平有效,因此需要引入一個按鍵標志信號key_flag來表示正邏輯下的按鍵狀態數值,并通過LED亮滅來顯示按鍵通斷狀態;輸出結果result表示,初始狀態為“00”,當data_1<data_2時輸出“01”;當data_1>data_2時輸出“10”;data_1=data_2時輸出“11”。觀察波形圖可以看到,2bit數值比較器的功能正常實現。
基于FPGA實現數值邏輯電路編碼器的設計,主要設計二進制編碼器。所謂二進制編碼器,即將數值通過編碼轉換為計算機能夠識別的二進制形式。編碼器是組合邏輯電路中最基礎的電路之一,基于FPGA設計編碼器,只需要將編碼器的輸入和輸出接入FPGA的相應控制管腳即可,在實操中等同于實現了按鍵控制LED的實驗,操作較簡單。本文重點分析譯碼器設計,對編碼器不做詳細分析。譯碼是編碼的逆過程,即將具有特定含義的一組代碼“翻譯”出來的過程,其原理框圖如圖11所示。
基于FPGA的譯碼器設計包括譯碼器設計和顯示譯碼兩個模塊,其原理圖如圖12所示。按鍵控制譯碼器輸入,數碼管輸入端接譯碼器輸出端,通過數碼管顯示出譯碼器的輸出結果,由于本文所使用的開發板只有六個數碼管,因此對于3-8線的譯碼器實現,需要結合2位的LED來表示數值6和7。
數碼管實際上是由七個發光管組成“8”字形構成的,加上小數點就是8個,這些段分別由字母a,b,c,d,e,f,g,dp來表示,八個發光二極管有共陰極和共陽極兩種接法,如圖13所示,前者某一段接高電平時發光,后者某一段接低電平時發光。達芬奇Artix-7 FPGA開發板上集成有六個八段數碼管,LED數碼管由多個發光二極管封裝在一起組成“8”字形的器件,引線已在內部連接完成,只需引出它們的各個筆劃,公共電極,其原理圖如圖14所示。
圖15所示為譯碼器設計仿真圖,按鍵控制輸入,按鍵輸入的數值從000~111變化,對應的顯示譯碼值從7~0變化,當數值為7和6時,通過LED燈的狀態表示輸出結果;當數值為5~0時,通過數碼管的位選信號LED_SEL表示結果,并在對應的數碼管上顯示數值1,表示當前數碼管被選通。
2.4.1 數據選擇器
數據選擇器是一種多路調制器,主要由地址譯碼和多路數字開關組成[4]。數據選擇器是數字邏輯電路中常見的一種組合邏輯電路,主要功能是通過地址選通控制數據的多路輸入單路輸出,其邏輯框圖如圖16所示。當選擇器有nbit的地址輸入控制時,則允許的最多數據輸入端為2n路,根據地址來選擇可以輸出的數據通路。
基于FPGA設計多路數據選擇器原理圖如圖17所示。實驗設計地址輸入為3 bit,通過按鍵控制輸入,考慮到開發板的可顯示資源情況,實測分析中僅利用了4路輸入數據端口,并通過開發板的LED指示信號表示當前被選通的輸入端,輸出端結果通過數碼管顯示。
圖18 所示為多路數據選擇器仿真波形圖。地址控制端由key_flag表示,輸入為3 bit,可用于實現8路數據的選通,綜合考慮達芬奇Artix-7 FPGA開發板資源情況,假設數據輸入端有4路數據,即iC0~iC3。分析仿真波形,當地址選路key_flag從1~4變化時,對應的輸出端Z依次輸出iC0~iC3的數據,數據選擇器的功能得到驗證。LED_SEG和LED_SEL為數碼管的段選和位選信號,通過查看共陽極數碼管的顯示數值表可知,數碼管顯示數值LED_SEG依次為1、2、4、8,即為輸入端iC0~iC3的數據0001、0010、0100、1000所對應的十進制數值。
2.4.2 數據分配器
數據分配器實現的即為數據選擇器的逆過程,將1路輸入數據信號通過地址控制端,從不同的輸出端口輸出數據,其原理框圖如圖19所示。
數據分配器設計原理和思路與數據選擇器一致,不再重復描述,其FPGA設計原理圖如圖20所示。
新時代高校的人才培養目標隨著科技的發展不斷進行著變革和更新,高素質、高技能的綜合實踐型人才是現今高等院校為中國特色社會主義主要輸送的人才類型[5]。在數字邏輯課程中運用FPGA技術,一方面可以將理論教學知識點和實驗教學的知識點實現一一映射,讓學生不僅對數字邏輯電路的內部結構知其然而且要知其所以然,真正地弄懂、學透組合邏輯的知識,并能熟練地應用組合邏輯電路來解決實際問題;另一方面,FPGA作為在各個行業均能發揮重要作用的技術,懂數字邏輯電路設計、FPGA的專業人才也備受用人單位的青睞[6],讓學生學習并掌握FPGA的應用也能讓其在職業生涯上多一個選擇的機會,這也是高校培養計算機專業學生創新能力和實踐能力的一種有效方式。