張承暢, 龔昱文, 羅 元, 何 豐
(重慶郵電大學 重慶市電工電子實驗教學示范中心, 重慶 400065)
“數字電子技術基礎”是國內高等學校電子信息類專業的基礎核心課程,具有較強的實踐性和工程性,對培養學生實踐和創新意識、打造一批適應國際分工與合作的中國工程師有著十分重要的作用[1-3]。目前,數字電子技術基礎實驗的設置主要分基礎類、綜合類和課程設計類[4-6],基礎類實驗驗證課程章節內容,帶有一定的設計性,所依托的實驗器材以中規模集成芯片為主,如74系列芯片[7]。綜合類實驗在內容上包含跨章節的知識,若使用中規模芯片實現,則需要多片配合使用,隨著現場可編程門陣列(Field Programmable Gate Array,FPGA)的普及應用,綜合類實驗和課程設計類實驗往往均使用FPGA實現[8,9],所采用的實驗平臺為由FPGA實驗箱或開發板[10,11],在使用過程中,學生只需要弄清楚FPGA的管腳分配和FPGA程序配置流程,實驗設計的重點集中在FPGA的軟件設計與實現,對于由FPGA芯片到系統實現的完整硬件、軟件一體化設計則很少涉及到。
近年來,以學校工程教育專業認證為契機,圍繞電子信息技術專業人才的培養,持續、深入地進行實驗教學改革與創新[12-14]。在數字電子技術基礎實驗案例設計中,引導學生關注工程實際,以工程實現為目標,強調軟、硬件一體化設計和優化。本設計屬課程設計類實驗,由FPGA芯片到FPGA系統開發板的硬件系統實現、所開發的FPGA系統實現序列信號發生器自啟動特性驗證為設計任務,將學生軟、硬件設計能力培養與課程知識重、難點融合對接,突出實踐教學,激發學生學習興趣,發掘學生實驗探究意識,提升課程建設和人才培養質量[15]。
1.1.1實驗目的
這是一個數字電子技術中用FPGA設計通信領域常用的序列信號發生器的實驗案例,要求學生掌握數字設計中的軟、硬件設計及系統調試。需要綜合運用數字技術中的時序邏輯電路設計的基本方法、Verilog HDL/VHDL設計語言、Altium Designer原理圖和PCB圖設計、電子器件的選型、電路的測試等相關知識和方法。強調平時學習與工程實際相結合。
1.1.2實驗原理

(向上取整),由此確定2n個狀態,其中N個狀態的循環構成電路的有效循環。由于可編程邏輯芯片FPGA開機啟動時內部觸發器的初始狀態均為0,即使序列中沒有出現n個全0的片段,電路的工作也從全0的狀態開始進入主循環,因此,僅將2n-N個剩余狀態中的2n-N-1個非全0狀態作為偏離態。序列信號發生器的正常工作表現為N個有效狀態的循環,一旦出現干擾,狀態脫離主循環進入偏離態,其工作狀態分為:① 偏離態的自循環,即系統不能自啟動;② 偏離態回到主循環,即系統能夠自啟動。自啟動所需的時鐘周期數為m,則1≤m≤2n-N-1,定義m=2n-N-1為慢速自啟動,m=1為快速自啟動,其余1 (1) 設計FPGA硬件開發板。 (2) 結合原理圖和硬件描述語言在FPGA中設計給定序列信號發生器,給定序列111100010,用發光二極管直觀顯示狀態的循環過程。 (3) 能夠脫機演示序列信號發生器不能自啟動、慢速自啟動、中速自啟動、快速自啟動過程。 軟硬件一體化設計架構如圖1所示。 圖1 軟硬件一體化設計框圖 硬件和軟件的設計是分開進行的,硬件設計通過分析FPGA的電源方案、管腳分布、配置及外圍接口等,形成設計電路,通過Altium designer軟件開發硬件原理圖和PCB圖,由PCB圖制作成PCB,完成電子元器件的焊接和調試,形成FPGA硬件電路板。軟件設計通過分析序列信號發生器功能,形成組合邏輯電路和時序邏輯電路實現的功能電路,該電路在ISE開發軟件環境中的實現方式可以是原理圖或者是硬件描述語言,開發好的程序經過編譯和仿真生成可配置的文件。最后是程序文件的編程下載、軟硬件聯合測試和功能演示。 硬件系統結構如圖2所示。 實驗選用XCV100TQ144作為序列信號發生器的邏輯器件,選擇其配置PROM芯片系列中的XCF32P,利用該芯片的多版本特性,可同時存儲4個配置文件,分別存儲不能自啟動、慢速自啟動、中速自啟動、快速自啟動等四種自啟動方案。用綠燈和紅燈分別指示有效循環狀態和偏離狀態。 選用Altium Designer軟件設計開發板電路原理圖和PCB圖,采用自頂向下的設計方法設計原理圖,PCB圖的設計通過手工布線完成。硬件系統包括電源、時鐘、FPGA、配置PROM、JTAG、顯示部分(紅、綠燈)和控制接口(含配置復位、狀態置位、狀態初值設置、版本選擇)等幾部分。 圖2 硬件結構圖 完成設計、元件貼裝后的電路板如圖3所示。 電源選擇常用集成芯片1117-3.3/2.5/1.8,時鐘用有源晶體振蕩器,考慮有源晶體振蕩器的頻率都較高,FPGA內部分頻后送給序列發生器作為工作時鐘,分頻后的頻率以使紅、綠燈的交替顯示能為人觀察到為原則,如1 Hz。 XCF32P設置為可存儲4個設計的多版本方案,其存儲結構如圖4所示,4個版本的文件通過版本選擇控制信號sel1和sel0的取值組合選擇,其值00、01、10、11分別對應REV0、REV1、REV2、REV3。 設計要求產生序列111100010,并脫機演示4種不同自啟動方案。給定序列長度為9,需用4個D觸發器構成移位寄存器,4種自啟動方案狀態轉移關系如圖5~8所示,圖中用紅色代表偏離狀態,綠色代表有效循環狀態,全0狀態為系統上電/復位時初始狀態,作為單獨狀態看待,程序設計采用原理圖/VHDL語言實現。 圖5 不能自啟動狀態轉移圖 圖6 慢速自啟動狀態轉移圖 圖7 中速自啟動狀態轉移圖 圖8 快速自啟動狀態轉移圖 (1) 不能自啟動。此種情況下,若出現偏離態,則6種偏離狀態形成循環,狀態無法回到主循環中,系統不能自啟動。 (2) 慢速自啟動。慢速自啟動情況下,系統能由偏離態回到主循環中,所需的最大時鐘周期數為6。 (3) 中速自啟動。中速自啟動情況下,系統能由偏離態回到主循環中,所需的最大時鐘周期數小于6。 (4) 快速自啟動。快速自啟動情況下,無論出現哪一種偏離狀態,系統由偏離態回到主循環中所需時鐘周期數均為1。 序列信號發生器程序設計流程如圖9所示。 程序設計的任務是用設計工具實現圖5~8的4種狀態轉移方案,采用原理圖/VHDL語言作為設計輸入,先后經過編譯與綜合、功能仿真、布局布線、時序仿真等過程,生成配置文件。 圖9 程序設計流程 設計好的程序從上位機經JTAG接口寫入XCF32P的4個存儲版本中,當系統復位時,通過判斷版本選擇控制信號sel1和sel0的不同邏輯組合值(見表1),將設計程序配置到FPGA中,通過LED燈觀察狀態的循環情況。 表1 配置程序對應表 (1) 選用FPGA XCV100TQ144芯片,通過軟、硬件一體化的完整設計,實現較大程度的設計綜合和工程能力提升,所開發的FPGA硬件系統,可用于其他實驗項目的設計,成為學生自己開發完成的FPGA口袋實驗室。 (2) 充分利用了XCF32P芯片的多版本特點,4個不同配置文件由上位機下載到XCF32P不同版本中,可不再依賴上位機完成重配置,方便課堂演示、同學交流。另外,通過4種不同自啟動方案的設計,觀察實驗現象,引導學生按照設計要求,優化設計方案,如在最終實現方案選擇上,考慮項目背景的工程性,強調序列信號發生器的快速自啟動,即工程實現上的效率原則。1.2 實驗的內容、任務
1.3 軟硬件一體化設計

2 FPGA硬件系統設計

3 軟件設計方案
3.1 自啟動方案設計




3.2 程序設計

3.3 程序配置

4 結 語