王 嶸,張元樹,楊富琴,萬永菁
(華東理工大學 信息科學與工程學院,上海 200237)
創(chuàng)新人才、服務創(chuàng)新型社會是大學人才培養(yǎng)的中心任務[1]。一般而言,創(chuàng)新實驗只給定實驗任務和實驗要求,鼓勵學生廣泛查閱資料,充分發(fā)揮學生的主觀能動性和積極性,創(chuàng)造性地使用多元化的實驗方法完成實驗任務[2-3]。
數(shù)字電路作為一門專業(yè)基礎課,除了介紹數(shù)字電路的理論知識外,更需要通過配套的實驗平臺將理論知識和實踐環(huán)節(jié)相結合,培養(yǎng)學生的動手能力和實踐創(chuàng)新能力。為此,自主開發(fā)了基于FPGA 的數(shù)字電路“口袋實驗室”。該“口袋實驗室”基于目前流行的FPGA 芯片開發(fā),已經(jīng)實際應用于數(shù)字電路教學實踐中,得到了學生的好評。此外,該系統(tǒng)還為本科生創(chuàng)新教育、大學生創(chuàng)新創(chuàng)業(yè)計劃和各類學科競賽提供了服務[4-6]。
“口袋實驗室”的電路包括電源、FPGA、下載電路、數(shù)碼管、VGA 接口、撥碼開關、按鍵、LED燈和雙排針擴展接口。其總體框圖見圖1,實物圖見圖2。
圖1 系統(tǒng)總體框圖
圖2 系統(tǒng)實物圖
XC6SLX9 是Xilinx 公司的Spartan 系列FPGA,采用45 nm 工藝,共有9 152 個Logic Cells、1 430 個Slices、90 kB 分布式RAM,共有144 個引腳,其中102 個是通用I/O 口,資源相對豐富。XC6SLX9 內(nèi)核供電電壓為1.2 V;I/O 口的電平可以設置為LVTTL、LVCMOS、LVDS 等多種電壓標準;內(nèi)置高性能的時鐘管理模塊,1 個CMT 包含1 個PLL 和2 個DCM,能進行分頻、倍頻;XC6SLX9 支持主動模式和被動模式,以及SPI、BPI、JTAG 等多種配置方式。
設計中預留了30 個擴展接口,由雙排針引出,其中24 個是FPGA 的通用I/O,3 個3.3 V 引腳和3 個地引腳。串行通信采用CH340G 串口芯片,用于FPGA和PC 機之間的通信。“口袋實驗室”擁有2 個4 位共陽極數(shù)碼管、1 個無源蜂鳴器、1 個八位撥碼開關、1個VGA 接口以及10 顆LED 燈和6 個按鍵,可以滿足數(shù)字電路基本的實驗需要[7-9]。
電源系統(tǒng)為整個系統(tǒng)提供能量,是系統(tǒng)的基礎。采用LM1085 芯片提供3.3 V 電壓,采用AMS1117 芯片提供1.2 V 電壓[10]。
考慮到XC6SLX9 的3.3 V 電源和其他外設共用一個電源芯片,為保證其他外設電流突變時不影響XC6SLX9 的正常供電,使用一個功率電感以隔離FPGA 和外設的電源。具體電路設計見圖3[11]。
XC6SLX9 對電源的要求較高,電源引腳附近需要多個去耦電容,以減小電源瞬變,保證電源完整性。電源部分還設計有1 顆LED 燈用于指示FPGA 電源是否正常。
配置電路一個是使用JTAG 配置的電路,另一個是使用FLASH 的主動SPI 配置電路[12]。
圖3 LM1085 電路和AMS1117 電路[11]
2.2.1 JTAG 配置電路
JTAG 配置電路見圖4。
JTAG 的主要引腳TMS、TCK、TDI、TDO 經(jīng)4.7 kΩ電阻上拉,以保護電路。JTAG 引腳在印刷電路板(PCB)上通過14 針2.0 mm 間距的簡易牛角座引出。簡易牛角座采用防反插設計,以保證JTAG 連接正確。
PROGRAM_B 引腳默認上拉,通過按鍵接地,可以用于FPGA 的軟復位。DONE 引腳上拉,且有LED指示FPGA 是否配置完成。
2.2.2 FLASH 電路
設計所選用的FPGA 基于SRAM 工藝,掉電后不能保存數(shù)據(jù),因此在重新上電之后必須從外部的配置存儲器加載配置。FLASH 電路見圖5(a)。MODE0 和MODE1 的電平?jīng)Q定了FPGA 的配置方式,當MODE0拉高以及MODE1 拉低時,F(xiàn)PGA 使用主動SPI 配置模式。接口電路見圖5(b)[13]。
選用CH340G 作為FPGA 和PC 機之間通信的轉換芯片。CH340G 是常用的USB 轉串口的芯片,兼容5 V系統(tǒng)和3.3 V 系統(tǒng),由于本設計中選用的XC6SLX9屬于3.3 V 系統(tǒng),因此CH340G 的供電電壓設置為3.3 V,如果供電電壓調(diào)整為5 V,則串口通信將發(fā)生故障,數(shù)據(jù)不能通過串口發(fā)送至PC 機。串口部分電路見圖6。
圖4 JTAG 配置電路
圖5 FLASH 電路和FPGA 的FLASH 接口電路
為保證“口袋實驗室”的擴展能力,在設計時將FPGA 的24 個通用I/O 口通過雙排排針在PCB 上引出,可供使用者外接電路。
為了防止FPGA 的I/O 接口接入過高的電壓或者通過過大的電流而損壞FPGA,設計中使用雙向電平轉換芯片TXS0108E 對FPGA 的I/O 口和外部接口進行隔離,以保護FPGA 芯片。
實驗要求使用數(shù)碼管顯示時間精度為100 ms 的秒表,最低位數(shù)字每100 ms 加1。
3.1.1 實驗硬件電路
“口袋實驗室”選用的數(shù)碼管是4 位共陽極數(shù)碼管,其中公共端使用三極管驅動,其余A、B、C、D、E、F、G、DP 8 個引腳分別和FPGA 的I/O 口連接。電路如圖7 所示。
3.1.2 FPGA 代碼設計
FPGA 代碼設計思路如下:將系統(tǒng)的50 MHz 時鐘分頻為50 Hz 的逐位掃描時鐘和10 Hz 的計數(shù)時鐘,最低位通過10 Hz 的時鐘進行計數(shù),計數(shù)使用8421BCD 碼表示,并轉化為數(shù)碼管顯示的8 位二進制代碼輸出。由于是共陽極數(shù)碼管,當引腳公共端高電平,其他引腳為低電平時,對應的LED 才會亮。數(shù)碼管二進制碼的最高位為小數(shù)點位。實驗仿真及實際運行效果見圖8。
由于實際仿真時間過長,因此在仿真時縮短了計數(shù)的時間。表1 為BCD 碼與數(shù)碼管二進制碼對應表。
圖6 串口通信部分電路
圖7 數(shù)碼管電路
圖8 數(shù)碼管仿真時序圖與數(shù)碼管實驗實際運行圖
表1 數(shù)字的BCD 碼與數(shù)碼管二進制碼對應表
實驗要求通過編程控制無源蜂鳴器,使之在輸入不同頻率的PWM 波情況下,發(fā)出不同音調(diào)頻率的聲音。
3.2.1 實驗硬件電路
無源蜂鳴器的硬件電路設計見圖9。
圖9 蜂鳴器電路圖
3.2.2 FPGA 代碼設計
無源蜂鳴器輸入不同頻率的PWM 會發(fā)出不同頻率的聲音,頻率和音調(diào)對應見表2。
表2 頻率和音調(diào)對應表
通過ISE 的Clock Wizard 將50 MHz 的系統(tǒng)時鐘頻率分頻為12 MHz,然后通過計數(shù)輸出不同的頻率,計數(shù)的上限值由撥碼開關和按鍵控制,撥碼開關用于選擇3 個音調(diào),按鍵用于選擇各個音調(diào)下的7 個不同頻率,以此實現(xiàn)輸出不同音調(diào)頻率的聲音。圖10 為蜂鳴器控制仿真圖。
圖10 蜂鳴器控制仿真圖
結合創(chuàng)新實驗人才培養(yǎng)的需求,采用“專業(yè)性及綜合性強、使用簡單靈活、維護便捷、成本低廉”的設計原則,完成了基于FPGA 的數(shù)字電路“口袋實驗室”的設計。該平臺編程簡單、調(diào)試方便、可移植性較好,具有較強的創(chuàng)新性和實用性[14-16]。
目前,該“口袋實驗室”已應用于我校數(shù)字電路實驗課程、學科競賽及大學生創(chuàng)新創(chuàng)業(yè)培育項目中,并取得良好的效果。以我校自動化和信息工程專業(yè)為例,學生通過在“口袋實驗室的”學習,增強了學習數(shù)字電路的興趣,提高了數(shù)字電路設計水平。在2019年第十六屆“挑戰(zhàn)杯”上海市大學生課外學術科技作品競賽中,我校學生的 “基于FPGA 的導盲輔具”項目獲得特等獎。在2018 年第三屆全國大學生智能互聯(lián)創(chuàng)新大賽中,我校學生的“小型智能化管道檢測維護系統(tǒng)”獲得華東賽區(qū)一等獎。上述獎項的獲得,反過來又促進學生對電路設計的興趣以及實踐能力和創(chuàng)新能力的提升。