FPGA有多種配置/加載方式。粗略可以分為主動(dòng)和被動(dòng)兩種。主動(dòng)加載是指由FPGA控制配置流程,被動(dòng)加載是指FPGA僅僅被動(dòng)接收配置數(shù)據(jù)。
最常見(jiàn)的被動(dòng)配置模式就是JTAG下載bit文件。此模式下,主動(dòng)發(fā)起操作的設(shè)備是計(jì)算機(jī),數(shù)據(jù)通路是JTAG,F(xiàn)PGA會(huì)被動(dòng)接收數(shù)據(jù),根據(jù)需要的操作來(lái)進(jìn)行更新FPGA配置。而上位機(jī)如何獲取配置數(shù)據(jù)就非常靈活了,可能是本地運(yùn)行EDA工具生成的,也可以是網(wǎng)絡(luò)/USB存儲(chǔ)設(shè)備獲取的。
主動(dòng)配置就是FPGA在配置過(guò)程中處于主導(dǎo)地位,主動(dòng)發(fā)起對(duì)Flash的讀寫(xiě),獲取配置信息進(jìn)行配置。
下面利用間EDA工具自帶的燒錄Flash的操作為例,分析一下具體的燒錄過(guò)程。
通常情況下,完整的過(guò)程是:
1.上位機(jī)主動(dòng)發(fā)起配置,F(xiàn)PGA被動(dòng)接收數(shù)據(jù)進(jìn)行重配置,此時(shí)的配置模式是上文提到的基于JTAG的被動(dòng)配置。此操作的結(jié)果是將FPGA配置為一個(gè)Flash的讀寫(xiě)器。
2.配置完成后,上位機(jī)開(kāi)始發(fā)送/接收Flash的數(shù)據(jù),數(shù)據(jù)通道為JTAG。FPGA通過(guò)JTAG接收到數(shù)據(jù)之后,根據(jù)需求發(fā)起對(duì)Flash的讀寫(xiě)操作,將需要更新的數(shù)據(jù)寫(xiě)入Flash,完成更新。此過(guò)程是更新Flash的過(guò)程,燒錄過(guò)程中Flash只收到FPGA的控制。
3.Flash更新完畢后,在合適的時(shí)候讓FPGA進(jìn)行重新配置(例如重新上下電),F(xiàn)PGA會(huì)開(kāi)始主動(dòng)配置過(guò)程,從Flash中讀取配置數(shù)據(jù)完成加載。
Intel(Altera)的這種模式使用的文件后綴是jic,全稱是JTAG Indirect Configuration File。直接翻譯是JTAG間接配置文件。在Quartus的Programmer界面中,當(dāng)添加了Jic文件之后,可以看到有一個(gè)Factory default SFL image,就是將FPGA配置為Flash控制器的鏡像。
根據(jù)配置的不同,也可以分為主動(dòng)更新和被動(dòng)更新兩種。
如果是被動(dòng)更新,那么通常配置過(guò)程會(huì)有一個(gè)主動(dòng)發(fā)起的設(shè)備,常見(jiàn)有MCU。這樣配置過(guò)程相對(duì)容易,數(shù)據(jù)的傳輸、存儲(chǔ)和讀取都交給主設(shè)備操作。整個(gè)更新過(guò)程按要求更新即可,然后再合適的時(shí)間重新加載FPGA即可。FPGA本身幾乎和更新過(guò)程完全隔離,所以也很容易滿足需求。
主動(dòng)更新則相對(duì)麻煩。首先,F(xiàn)lash很可能只于FPGA有數(shù)據(jù)接口,表明Flash的讀寫(xiě)只能從FPGA來(lái)發(fā)起;其次,由于FPGA需要發(fā)起Flash的更新寫(xiě)入,所以FPGA如何獲取數(shù)據(jù)也是需要考慮的問(wèn)題??梢詤⒖忌衔?,主動(dòng)配置更新Flash完整過(guò)程的描述,可以看到FPGA需要一個(gè)數(shù)據(jù)通路(JTAG)接收配置數(shù)據(jù),并實(shí)現(xiàn)一個(gè)Flash的讀寫(xiě)控制器來(lái)讀寫(xiě)Flash。更新Flash完成之后,下一次配置被觸發(fā)(重新上下電)會(huì)主動(dòng)發(fā)起讀Flash的操作,加載配置數(shù)據(jù)完成配置。
-
FPGA
+關(guān)注
關(guān)注
1629文章
21736瀏覽量
603248
原文標(biāo)題:FPGA配置方式
文章出處:【微信號(hào):ALIFPGA,微信公眾號(hào):FPGA極客空間】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論