數字電路作為一門專業基礎課,除了介紹數字電路的理論知識外,更需要通過配套的實驗平臺將理論知識和實踐環節相結合,培養學生的動手能力和實踐創新能力。為此,自主開發了基于 FPGA 的數字電路“口袋實驗室”。該“口袋實驗室”基于目前流行的FPGA 芯片開發,已經實際應用于數字電路教學實踐中。
1總體設計
“口袋實驗室”的電路包括電源、FPGA、下載電路、數碼管、VGA 接口、撥碼開關、按鍵、LED 燈和雙排針擴展接口。其總體框圖見圖 1,實物圖見圖 2。
圖 1 系統總體框圖
圖 2 系統實物圖
XC6SLX9 是 Xilinx 公司的 Spartan 系列 FPGA, 采用 45 nm 工藝,共有 9 152 個 Logic Cells、1 430 個Slices、90 kB 分布式 RAM,共有 144 個引腳,其中102 個是通用 I/O 口,資源相對豐富。XC6SLX9 內核供電電壓為 1.2 V;I/O 口的電平可以設置為 LVTTL、LVCMOS、LVDS 等多種電壓標準;內置高性能的時鐘管理模塊,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 位共陽極數碼管、1 個無源蜂鳴器、1 個八位撥碼開關、1 個 VGA 接口以及 10 顆 LED 燈和 6 個按鍵,可以滿足數字電路基本的實驗需要。
2電路設計
2.1電源電路
電源系統為整個系統提供能量,是系統的基礎。采用 LM1085 芯片提供 3.3 V 電壓,采用 AMS1117 芯片提供 1.2 V 電壓。
考慮到XC6SLX9 的 3.3 V 電源和其他外設共用一個電源芯片,為保證其他外設電流突變時不影響XC6SLX9 的正常供電, 使用一個功率電感以隔離FPGA 和外設的電源。具體電路設計見圖 3。
圖 3 LM1085 電路和 AMS1117 電路
XC6SLX9 對電源的要求較高,電源引腳附近需要多個去耦電容,以減小電源瞬變,保證電源完整性。電源部分還設計有 1 顆LED 燈用于指示FPGA 電源是否正常。
2.2配置電路設計
配置電路一個是使用 JTAG 配置的電路,另一個是使用 FLASH 的主動 SPI 配置電路。
2.2.1JTAG 配置電路
JTAG 配置電路見圖 4。
圖 4 JTAG 配置電路
JTAG 的主要引腳 TMS、TCK、TDI、TDO 經 4.7 kΩ
電阻上拉,以保護電路。JTAG 引腳在印刷電路板(PCB)上通過 14 針 2.0 mm 間距的簡易牛角座引出。簡易牛角座采用防反插設計,以保證 JTAG 連接正確。
PROGRAM_B 引腳默認上拉,通過按鍵接地,可以用于 FPGA 的軟復位。DONE 引腳上拉,且有 LED 指示 FPGA 是否配置完成。
2.2.2FLASH 電路
設計所選用的 FPGA 基于 SRAM 工藝,掉電后不能保存數據,因此在重新上電之后必須從外部的配置存儲器加載配置。FLASH 電路見圖 5(a)。MODE0 和MODE1 的電平決定了 FPGA 的配置方式,當 MODE0 拉高以及 MODE1 拉低時,FPGA 使用主動 SPI 配置模式。接口電路見圖 5(b)。
圖 5 FLASH 電路和 FPGA 的 FLASH 接口電路
2.3串口通信設計
選用 CH340G 作為 FPGA 和 PC 機之間通信的轉換芯片。CH340G 是常用的USB 轉串口的芯片,兼容 5 V 系統和 3.3 V 系統,由于本設計中選用的 XC6SLX9 屬于 3.3 V 系統,因此 CH340G 的供電電壓設置為3.3 V,如果供電電壓調整為 5 V,則串口通信將發生故障,數據不能通過串口發送至 PC 機。串口部分電路見圖 6。
圖 6 串口通信部分電路
2.4 擴展接口設計
為保證“口袋實驗室”的擴展能力,在設計時將FPGA 的 24 個通用 I/O 口通過雙排排針在 PCB 上引出,可供使用者外接電路。
為了防止 FPGA 的 I/O 接口接入過高的電壓或者通過過大的電流而損壞 FPGA,設計中使用雙向電平轉換芯片 TXS0108E 對 FPGA 的 I/O 口和外部接口進行隔離,以保護 FPGA 芯片。
3實踐教學實例
3.1數碼管顯示實驗
實驗要求使用數碼管顯示時間精度為 100 ms 的秒表,最低位數字每 100 ms 加 1。
3.1.1實驗硬件電路
“口袋實驗室”選用的數碼管是 4 位共陽極數碼管,其中公共端使用三極管驅動,其余 A、B、C、D、E、F、G、DP 8 個引腳分別和 FPGA 的 I/O 口連接。電路如圖 7 所示。
圖 7 數碼管電路
3.1.2FPGA 代碼設計
FPGA 代碼設計思路如下:將系統的 50 MHz 時鐘分頻為 50 Hz 的逐位掃描時鐘和 10 Hz 的計數時鐘,最低位通過 10 Hz 的時鐘進行計數,計數使用8421BCD 碼表示,并轉化為數碼管顯示的 8 位二進制代碼輸出。由于是共陽極數碼管,當引腳公共端高電平,其他引腳為低電平時,對應的 LED 才會亮。數碼管二進制碼的最高位為小數點位。實驗仿真及實際運行效果見圖 8。
圖 8 數碼管仿真時序圖與數碼管實驗實際運行圖
由于實際仿真時間過長, 因此在仿真時縮短了計數的時間。表 1 為 BCD 碼與數碼管二進制碼對應表。
表 1 數字的 BCD 碼與數碼管二進制碼對應表
3.2蜂鳴器控制實驗
實驗要求通過編程控制無源蜂鳴器,使之在輸入不同頻率的 PWM 波情況下,發出不同音調頻率的聲音。
3.2.1實驗硬件電路
無源蜂鳴器的硬件電路設計見圖 9。
圖 9 蜂鳴器電路圖
3.2.2FPGA 代碼設計
無源蜂鳴器輸入不同頻率的 PWM 會發出不同頻率的聲音,頻率和音調對應見表 2。
表 2 頻率和音調對應表
通過 ISE 的 Clock Wizard 將 50 MHz 的系統時鐘頻率分頻為 12 MHz,然后通過計數輸出不同的頻率, 計數的上限值由撥碼開關和按鍵控制,撥碼開關用于選擇 3 個音調,按鍵用于選擇各個音調下的 7 個不同頻率,以此實現輸出不同音調頻率的聲音。圖 10 為蜂鳴器控制仿真圖。
圖 10 蜂鳴器控制仿真圖
-
FPGA
+關注
關注
1630文章
21759瀏覽量
604291 -
數字電路
+關注
關注
193文章
1608瀏覽量
80689
發布評論請先 登錄
相關推薦
評論