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