硬件電路設(shè)計(jì)-FPGA(EP4CE6)最小系統(tǒng)

本文內(nèi)容的相關(guān)資料可在公眾號(hào)“ecircuitlab”后臺(tái)發(fā)送:
EP4CE6最小系統(tǒng)
獲取
注意?。?!
需要發(fā)送完整的黑體字內(nèi)容過(guò)去,后臺(tái)才能自動(dòng)回復(fù)資料信息,建議直接復(fù)制過(guò)去發(fā)送。
說(shuō)明:本公眾號(hào)的網(wǎng)站因?yàn)楣δ苄略鲈谥貙懼?,網(wǎng)站www.ecircuitlab.com暫時(shí)不開放訪問(wèn),預(yù)估在6月上線
干貨概述
FPGA一直在通信行業(yè)應(yīng)用得比較火,隨著近幾年AI的熱度不斷,F(xiàn)PGA也逐漸被很多自媒體引入大家的視野。那到底FPGA能做啥事呢?FPGA是一個(gè)數(shù)字電路可編程的芯片(比較通俗的理解),你可以通過(guò)硬件電路描述的方式去構(gòu)建你需要的數(shù)字電路,比如一個(gè)簡(jiǎn)單的譯碼器或者復(fù)雜的MCU。學(xué)習(xí)FPGA也跟學(xué)單片機(jī)一樣,需要一個(gè)開發(fā)板做驗(yàn)證,才能真正的去理解FPGA和應(yīng)用,所以本文將帶你去搞定一個(gè)FPGA的最小系統(tǒng)電路,然后自己可以DIY個(gè)最小系統(tǒng)板去學(xué)習(xí)。
本文選用的FPGA芯片是Intel(原Altera)的EP4CE6E22C8N,選它的原因是這個(gè)型號(hào)是個(gè)比較經(jīng)典的型號(hào),很多入門開發(fā)板都用它,不過(guò)最近價(jià)格被炒得老高,400多一片。價(jià)格是高得離譜,不過(guò)大家可以找二手料來(lái)做,問(wèn)題不大。首先是老樣子,先放上完整的參考原理圖先,然后再一一的講解,如下。

圖1. FPGA最小系統(tǒng)供電電路

圖2.?FPGA最小系統(tǒng)電路

圖3.?FPGA?BANK電路,IO沒(méi)拉出去,可自行拉出去接到排針或者其他地方
設(shè)計(jì)詳解
1.?電源設(shè)計(jì)
首先我們先來(lái)看EP4CE6E22C8N的供電,EP4CE6E22C8N屬于Cyclone IV E系列,在官方的引腳連接指南資料里提供了電源設(shè)計(jì)的example如下圖所示。

圖4.?電源設(shè)計(jì)參考和相關(guān)指標(biāo)
從上圖可以知道,EP4CE6E22C8N有4組電源軌,各個(gè)電源軌的描述整理如下。
VCCINT、VCCD_PLL:
VCCINT、VCCD_PLL電壓為內(nèi)核電源和PLL的數(shù)字電路電源。電壓支持1.0V/1.2V可選,允許的偏差分別為±30mV/±50mV,VCCINT和VCCD_PLL兩組電源軌電壓一樣,供電雖然可以由一個(gè)開關(guān)穩(wěn)壓器提供,但要求VCCD_PLL必須用磁珠跟VCCINT隔離,VCCD_PLL對(duì)電源紋波要求非常高,最大紋波必須控制在±3%以內(nèi),超出這個(gè)范圍可能導(dǎo)致PLL工作異常,比如時(shí)不時(shí)失鎖啥的。
VCCA:
VCCA是給PLL的模擬電路供電的,使用2.5V供電,電源紋波一樣要求控制在±3%以內(nèi),否則也容易出各種奇怪問(wèn)題。
VCCIO:
VCCIO是給FPGA各個(gè)BANK的IO供電的,Cyclone IV E的VCCIO支持1.2V、1.5V、1.8V、2.5V、3.0V、3.3V幾種電壓。在看FPGA的手冊(cè)時(shí)我們會(huì)看到BANK幾BANK幾這樣的描述,這個(gè)BANK到底什么意思呢?FPGA跟我們常接觸到的MCU、MPU、CPU不同,它是數(shù)字電路可編程芯片,為了滿足數(shù)字電路可編程,要應(yīng)付很多數(shù)字電路方案,不同方案的外設(shè)IO電平可能不同。所以設(shè)計(jì)了IO支持多種電壓,然后再分成多個(gè)組,不同組之間可以電壓不一樣,每個(gè)組叫一個(gè)BANK,這樣的話就可以實(shí)現(xiàn)一顆芯片支持多種IO電平,芯片不會(huì)因?yàn)橥庠O(shè)IO電壓不匹配再去搞一堆電平轉(zhuǎn)換。
電源供電電路設(shè)計(jì):
上面我們分析了EP4CE6E22C8N的電源軌,對(duì)于芯片的正常工作我們知道,至少要有1.0V/1.2V給VCCINT、VCCD_PLL供電,2.5V給VCCA供電,至于VCCIO,需要看我們外設(shè)電平情況,因?yàn)檫@里是最小系統(tǒng),就不考慮實(shí)際外設(shè)情況,直接把所有IO都設(shè)計(jì)為3.3V電平。FPGA跟我們常規(guī)接觸的MCU不同,規(guī)格書里沒(méi)有功耗信息給我們?nèi)ピu(píng)估每個(gè)電源軌的供電電流情況,通常需要FPGA工程師提前把RTL工程做好,進(jìn)行電路綜合后給出每個(gè)電源軌的功耗信息,然后我們?cè)僭谶@個(gè)信息上留適合的裕量來(lái)選擇供電方案。對(duì)于EP4CE6E22C8N來(lái)說(shuō),最糟糕的情況下,VCCIN的峰值電流在2A左右,VCCD_PLL和VCCA一般都在400mA以內(nèi),VCCIO比較小,每個(gè)BANK的IO電流最大一般也都是100mA左右。這樣總結(jié)下來(lái)這里選擇TI的TPS65261,它集成了3組BUCK方案的控制單元,3個(gè)通道支持連續(xù)輸出電流分別是3A、2A、2A,跟我們需求非常貼近,參考規(guī)格書的紋波信息,輸出在滿載情況下紋波也非常小,符合FPGA的電源要求,如下。

圖5.?TPS65261通道1滿載時(shí)的紋波信息
參考TPS65261規(guī)格書信息設(shè)計(jì)的最終電路上面圖1所示,通道1輸出1V給VCCINT和VCCD_PLL供電,通道2輸出2.5V給VCCA供電,通道3輸出3.3V給VCCIO供電,總電源5V通過(guò)Micro-USB口輸入。完成供電電源設(shè)計(jì)后,剩下就是處理接到FPGA的電源引腳上,1V電壓接到VCCINT和VCCD_PLL上,對(duì)于VCCINT,每個(gè)電源IO放置一個(gè)0.1uF去耦電容,最后再在電源VCCINT的電源軌上放置10uF+1uF的組合即可。而對(duì)于VCCD_PLL,參考上面的描述,是需要放置一個(gè)磁珠跟VCCINT隔離的,這里選擇100Ω/100M,額定電流900mA的磁珠進(jìn)行隔離,對(duì)于去耦使用4.7uF+1uF+0.1uF的組合即可,而VCCA的2.5V直接接入,同樣放置4.7uF+1uF+0.1uF的去耦組合即可,如下圖所示。

圖6.?FPGA的VCCINT、VCCD_PLL、VCCA連接和去耦
對(duì)于VCCIO,上面說(shuō)了電流不會(huì)很大,所以每個(gè)BANK放置一個(gè)0.1uF去耦即可,在我給出的參考設(shè)計(jì)中,VCCIO5和VCCIO6這兩個(gè)BANK的VCCIO供電,我用了0Ω電阻設(shè)置3.3V和2.5V可選,目的是使電路支持使用LVDS信號(hào),對(duì)于為什么要用這2個(gè)BANK,而不是其他BANK,我留在后續(xù)的文章中解釋。剩下的其他BANK使用3.3V供電,如下。

圖7.?FPGA的VCCIO供電和去耦
2.?配置和燒錄
FPGA也跟MCU或者其他處理器一樣,也需要設(shè)置對(duì)應(yīng)的啟動(dòng)方式,也需要對(duì)應(yīng)的燒錄接口。對(duì)于燒錄方式,設(shè)計(jì)使用JTAG燒錄,對(duì)于JTAG信號(hào)處理,設(shè)計(jì)一一對(duì)應(yīng)連上即可。JTAG的TMS、TDI兩個(gè)信號(hào)需要上拉,上拉的電壓注意下是2.5V,TCK需要下拉,這里我預(yù)留一個(gè)排針接口燒錄如下。

圖8. 通過(guò)排針使用JTAG燒錄
FPGA不像市面上的很多MCU帶有內(nèi)置Flash,所以電路配置文件存儲(chǔ)在外部的Flash中,對(duì)于外部配置文件的加載,有多種加載方式,一般選用AS方式加載。對(duì)于AS的加載配置方式,在官方手冊(cè)上說(shuō)明電路設(shè)置如下圖所示,需要把nSTATUS、CONF_DONE、nCONFIG三個(gè)信號(hào)上拉至對(duì)應(yīng)BANK的電壓,nCE為片選信號(hào)需要下拉至GND。

圖9.?AS配置方式
參考AS的配置參考電路處理設(shè)計(jì)電路如下,F(xiàn)lash選用W25Q32JVSSIQ,信號(hào)參考圖9一一對(duì)應(yīng)連接即可。因?yàn)閚STATUS、CONF_DONE、nCONFIG三個(gè)信號(hào)都在BANK1上,前面設(shè)計(jì)BANK1供電電壓為3.3V,所以均上拉至3.3V。

圖10.?AS配置方式的實(shí)際電路
選擇FPGA的加載配置方式為AS方式后,除了上面的電路,還需要設(shè)置FPGA的MSEL引腳,選擇適合的POR Delay和電壓,否則FPGA也不能正常配置啟動(dòng)。在FPGA的器件手冊(cè)中描述了Cyclone IV E在AS模式時(shí),MSEL的不同組合對(duì)應(yīng)的不同設(shè)置如下圖11所示。POR Delay可設(shè)置為Fast、Standard兩種模式,這里設(shè)置為Standard模式,參考圖10的AS電路電壓為3.3V,所以需要把MSEL1信號(hào)拉高至對(duì)應(yīng)的BANK電平,MSEL2和MSEL0接地,我們使用的型號(hào)沒(méi)有MSEL3,可以不管。

圖11.?MSEL設(shè)置表

圖12.?設(shè)置POR?Delay為Standard模式,電壓3.3V
3. 時(shí)鐘和復(fù)位
同樣FPGA也需要時(shí)鐘和復(fù)位,時(shí)鐘跟MCU或者其他處理器的設(shè)計(jì)方式有點(diǎn)不一樣,對(duì)于MCU或其他處理器,可以使用無(wú)源晶振作為時(shí)鐘源,但FPGA不能,F(xiàn)PGA必須使用有源時(shí)鐘作為參考時(shí)鐘源,對(duì)于時(shí)鐘頻率沒(méi)有要求,看具體的RTL工程需求,如果RTL工程沒(méi)有特別需求,那就放置一個(gè)25MHz的有源時(shí)鐘最佳,因?yàn)?5MHz容易倍頻和分頻得到很多常用的外設(shè)時(shí)鐘頻率。EP4CE6E22C8N有多個(gè)IO口可作為參考時(shí)鐘輸入,這里選擇PIN_24作為參考時(shí)鐘輸入。對(duì)于復(fù)位信號(hào),這里使用簡(jiǎn)單的RC復(fù)位方式,預(yù)留按鍵可手動(dòng)復(fù)位,復(fù)位信號(hào)通常選擇通過(guò)任意的DIFFCLK_XN引腳接入,當(dāng)然使用其他IO也可以,完整的時(shí)鐘和復(fù)位電路參考設(shè)計(jì)如下。

圖13. 時(shí)鐘和復(fù)位參考電路
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。