工程師深談ARM+FPGA的設(shè)計(jì)架構(gòu)
最近學(xué)習(xí)了ARM+FPGA的設(shè)計(jì)架構(gòu),ARM和FPGA結(jié)構(gòu)的通信大致可以分為兩種:
本文引用地址:http://www.biyoush.com/article/201710/366885.htm一種是數(shù)據(jù)量小、通信速率要求不高的情況,可以考慮采用SPI、IIC等差UN星通信方式。ARM都帶有相關(guān)的SPI通信控制器等,在ARM端直接對(duì)相關(guān)的SPI通信控制器操作就可以了。而FPGA這一端可作為SPI從,按照SPI協(xié)議的時(shí)序?qū)懞脧脑O(shè)備接口,這個(gè)工作量沒(méi)有多大,所以相對(duì)都比較容易。
另一種是數(shù)據(jù)量大、通信速率要求較高的情況,就要采用并行總線的方式了。這時(shí)把FPGA當(dāng)做ARM的一個(gè)片外的SRAM訪問(wèn)就可以,可以在FPGA內(nèi)部生成一個(gè)雙口RAM,輸出的數(shù)據(jù)總線管腿直接連接到ARM的并行總線的數(shù)據(jù)總線上,雙口RAM一端的地址總線也一樣直接連接到ARM的并行總線中的地址總線。這樣就可以實(shí)現(xiàn)FPGA從DPRAM一端讀寫,ARM從DPRAM的另一端讀寫的功能了,當(dāng)然還需要其他一些使能或片選的控制信號(hào)。這里FPGA一側(cè)較好實(shí)現(xiàn),而ARM一側(cè)需要開發(fā)SRAM(FPGA)驅(qū)動(dòng),這個(gè)還沒(méi)有實(shí)際做過(guò),所以沒(méi)有把握。
NXP的ARM即LPC系列的并行總線稱之為外擴(kuò)地址與數(shù)據(jù)總線,由EMC(外部存儲(chǔ)器控制器)控制,通過(guò)對(duì)EMC寄存器的控制就可以實(shí)現(xiàn)在外擴(kuò)地址和數(shù)據(jù)總線上的數(shù)據(jù)收發(fā)。若是采用LPC系列ARM加一片F(xiàn)PGA,實(shí)現(xiàn)他們通信的關(guān)鍵應(yīng)該在于這個(gè)EMC寄存器的控制,不知道按照一定的順序操作這個(gè)寄存器組寫出來(lái)的數(shù)據(jù)收發(fā)程序是不是就可以稱之為所謂的驅(qū)動(dòng),求大神解釋。
TI的ARM或DSP都有一個(gè)GPMC(通用內(nèi)存控制器),它類似于LPC的EMC,是TI的芯片中用于與外部存儲(chǔ)設(shè)備如NORFLASH、NANDFLASH、SRAM等通信的一個(gè)借口。對(duì)于這個(gè)同樣也有上邊的那個(gè)疑問(wèn)。
三星的S5PV210則是有一組并行總線接口,稱之為SROM,同樣也有一個(gè)SROM控制器,支持外擴(kuò)的NORFALSH、NANDFLASH、SRAM 等,應(yīng)該也類似于LPC系列的EMC。我通過(guò)對(duì)這個(gè)控制寄存器的操作就可以實(shí)現(xiàn)對(duì)外部SRAM(FPGA)的讀寫,不知道這樣理解對(duì)不對(duì)。
還有一個(gè)疑問(wèn)就是,如果有操作系統(tǒng),再要實(shí)現(xiàn)ARM和FPGA的通信是不是就沒(méi)有這樣簡(jiǎn)單了?在沒(méi)有操作系統(tǒng)時(shí),我僅僅對(duì)某個(gè)相關(guān)的控制寄存器操作就可以實(shí)現(xiàn),這時(shí)就不可行了?這些都是以后要弄明白的。調(diào)研了這么長(zhǎng)時(shí)間,始終沒(méi)有著手找找現(xiàn)有的資源,寫寫程序做一下這個(gè)通信,感覺(jué)還是沒(méi)有理解到位。果真是什么東西都要實(shí)踐一下才能理解深刻。手頭有一塊LPC2478($11.0980)的ARM加FPGA的板子,但沒(méi)有操作系統(tǒng)或者只有UC/OSII,不知道跟ARM有操作系統(tǒng)如Linux時(shí),有什么區(qū)別。先上手做一做吧。
評(píng)論