王開宇, 趙海博, 秦曉梅, 趙權科, 張 晶
(1. 大連理工大學 電工電子國家級實驗教學示范中心, 電工電子國家級虛擬仿真實驗教學中心, 遼寧 大連 116024; 2. 大連理工大學 電信學部, 遼寧 大連 116024)
目前高校實體實驗教學使用的FPGA開發板一般是專業版,存在結構復雜、價格高、輸入輸出形式單一的問題;而價格較低的FPGA開發板則功能不全。這兩種形式的開發板均無法提供給學生復雜應用的實驗教學環境[1]。隨著Web技術、虛擬現實技術的推廣與應用[2],許多高校建設了具有較高水平的虛擬實驗室,開發了種類繁多的虛擬仿真實驗平臺,為教學工作提供了便捷的途徑[3]。
但是,電類專業所用的基于FPGA系列開發板的虛擬實驗[4],大多數以演示實驗為主,學生編寫程序模式較為死板;相比于實物實驗,虛擬實驗的靈活性、容錯性也較差[5]。
以數碼管實驗為例,傳統的FPGA實驗雖然只需要簡單的連線與編程,但仍然占用了大量的教學資源與學生的時間。虛擬的FPGA實驗多為演示類實驗,只有當編程正確的時候才會顯示預設的圖像,但不會提示錯誤的地方。
為此,研究了一種基于FPGA+HTML5動畫的八位數碼管虛擬仿真教學實驗。采用HTML5動畫技術,能夠真實地還原實驗的情況。
實驗總體流程如圖1所示。學生將編寫的Verilog程序導入虛擬實驗軟件中,選擇對應類型的HTML虛擬實驗并運行程序,得出與Verilog程序相對應的實驗結果。通過比較結果,可以驗證程序正確與否。

圖1 實驗總體流程
在基于數字電路實驗的數碼管實驗設計中,要求學生用Quartus II編寫Verilog文件,控制FPGA的端口電平值,實驗原理如圖2所示。

圖2 實驗設計原理
由于七段數碼管公共端連接到GND(共陰極型),所以當數碼管中的某一段被輸入高電平,則這一段被點亮,反之則不亮[6-7]。8位七段數碼管在單個靜態數碼管的基礎上加入了用于選擇哪一位數碼管的位選信號端口[8]。8個數碼管的a、b、c、d、e、f、g、dp都連在一起,8個數碼管分別由各自的位選信號來控制,當位選信號為低電平時該位數碼管被選中。
本實驗結合了HTML動畫的顯示功能,應用上述數碼管工作原理,設計出數碼管顯示圖像。
在HTML文件中調用JavaScript的callNative函數,讀取從FPGA服務器中返回的a、b、c、d、e、f、g、dp的8位端口電平值,通過判斷8位電平值和JavaScript判斷語句,調用對應的數碼管的顯示圖片[9]。數碼管一共有256種顯示結果,循環調用256種顯示結果,即可滿足每一種實驗結果的實現。
實驗所用的FPGA為Cyclone系列芯片,采用基于成本優化的全銅1.5V SRAM工藝,容量為2 910~20 060個邏輯單元,具有多達294 912 bit嵌入RAM[10]。Cyclone FPGA支持各種單端I/O標準如LVTTL、LVCMOS、PCI和SSTL-2/3,通過LVDS和RSDS標準可提供多達129個通道的差分I/O支持。每個LVDS通道高達640 Mbit/s。Cyclone是具有雙數據速率(DDR)SDRAM和FCRAM接口的專用電路。Cyclone FPGA中有2個鎖相環(PLLs),提供6個輸出和層次時鐘結構,以及復雜設計的時鐘管理電路[11]。
Verilog文件需要學生根據實驗要求自行設計,但是端口需要與FPGA中數碼管的端口相對應,以便與虛擬實驗接口對應。Verilog語言設計主要思路為循環控制a、b、c、d、e、f、g、dp 8位七段數碼管高低電平值,利用循環語句分段計數,更改8位數值,每次向LED寫數據時,通過片選,選通其中1個LED,然后把數據寫入該LED管。因此每個時刻只有1個LED管是亮的[12]。為了能持續看見LED上面的顯示內容,必須對LED管進行連續掃描,即依次循環點亮各LED管。利用人眼的視覺暫停效應,在一定的掃描頻率下,就會看見好幾個LED一起點亮[13]。
利用HTML動畫顯示則可以省略掃描頻率的語句編寫,在JS文件中的var Jsonobj = { port: 0, type: 'loop', freq:1};語句則可以代替Verilog文件中的掃描頻率,自由定義時鐘頻率,從而實現動畫的運行與顯示。
實驗流程見圖3,學生編寫Verilog文件,生成.rbf文件,通過USB傳輸到FPGA服務器中。通過FPGA服務器得出對應的數據并傳回電腦,再通過.js函數文件,將數據轉換為端口數據,通過計算端口數據,控制HTML文件,產生動畫。結果如圖4所示。

圖3 實驗流程

圖4 仿真實驗結果
根據仿真實驗產生的圖像,判斷編寫程序的正確與否。學生編寫的Verilog文件會在相應的端口產生一組高低電平值。這組值會通過USB傳回軟件,軟件中的.js文件讀取這組端口的值,通過庫函數文件,控制HTML文件產生相應的動畫效果。因為編寫的Verilog文件不同,產生的端口的值和動畫效果也會不同。與實際FPGA板的子端口類似,不同的高低電平產生的數碼管圖案與相應的管腳對應,學生可以根據圖案的變化,對自己的程序進行調整,最終達到對實驗進行虛擬仿真的目的。
本實驗具有以下優點:
(1) 具有虛擬實驗的便捷性,只需在學生端調試程序,就能直觀地看到實驗結果;
(2) 結合HTML動畫,使實驗具有二次開發的優勢,且動畫對多平臺適用,手機、電腦均可使用;
(3) 能夠完整地顯示學生編寫的每一種代碼的情況。
大多數虛擬仿真實驗在進展順利的情況下才能得到正確的實驗結果;而遇到錯誤時,多數情況是報錯而停止,需要操作人員查找錯誤,往往耗時耗力。本實驗可以根據錯誤的代碼顯示對應的圖像,學生可以根據圖像改寫自己編寫的代碼,能更好地學習有關數碼管的相關知識,并且節省了查錯的時間。