本周我想進一步探究可編程邏輯(FPGA)與硬核處理器(HPS)之間互聯(lián)的結構。我發(fā)現(xiàn)了三種主要方式,它們是如何映射并處理通信的,哪些組件需要管控時序并且有訪問權限。
AXI Bridge
為了能夠實現(xiàn)HPS與FPGA之間的通信接口,衍生出了AXI bridge協(xié)議。AXI bridge協(xié)議能夠處理帶寬適應和時鐘控制,支持HPS與FPGA之間雙向的邏輯和數(shù)據(jù)交互。
圖1:FPGA結構可視化表示
HPS到FPGA
HPS到FPGA有兩種類型:高吞吐量和低吞吐量。高吞吐量的數(shù)據(jù)帶寬可以使32位、64位或128位,它是專門為高帶寬數(shù)據(jù)傳輸而設計的,HPS作為主,處在L3層。
輕量級(或低吞吐量)通道被限制為32位,然而它進行了優(yōu)化,延遲最低。它的主要功能是將控制和狀態(tài)寄存器傳遞給FPGA。此外它也對HPS到FPGA的通信通道進行了一定的分流,具體類比描述見圖1,從HPS到FPGA有兩條通道:第一個是32位數(shù)據(jù)通道具有更高的速度限制,另一個則設計了很多個通道,在同一時刻支持更高的帶寬和更多的數(shù)據(jù)傳輸。
FPGA到HPS
圖1的第三個通道是實現(xiàn)FPGA到HPS的數(shù)據(jù)傳輸,它設計的目的是訪問HP slave接口或在HPS程序端等待數(shù)據(jù)的輸入。它可以配置為32位、64位或者128位的數(shù)據(jù)帶寬,是由HPS L3主切換時鐘來控制。
為了將這些通信通道結合在一起,我開始翻閱Intel開發(fā)者社區(qū)的黃金硬件參考設計指南(GHRD),它提供了一些例子來說明如何在FPGA和HPS之間建立AXI bridge通道,正是借助它我真正體會到了“配置向導”的強大功能,只需要鼠標點擊六次我就完成了三個通信通道的配置,同時還可以配置內存分配。最后我了解到HPS bridge是映射到片上內存,實現(xiàn)盡可能少的延遲。而FPGA部分則映射到從內存地址,當有數(shù)據(jù)時將數(shù)據(jù)寫入內存。
將它們整合在一起
那么這意味著什么?通信通道和不同傳輸層對于我這種對小型低功耗的MCU經(jīng)驗豐富的人來說也不是有太多的機會應用它們。盡管如此,那些習慣ARM MCU編程的開發(fā)者來說可能會熟悉這些通信通道(Bridge)。實際上這些通信通道是一系列的控制寄存器和內存映射,會以非常高的速度被訪問,這對于多線程、多核系統(tǒng)非常的有用,因為這類系統(tǒng)需要高速、多用途的數(shù)據(jù)傳輸。當然這種內部互聯(lián)的想法對于MCU愛好者來說是非常普遍的。使用內部互聯(lián)通信通道來分擔任務是非常熟悉的,但是將它們當做內存或RAM來訪問則有些新奇了。簡單來說,L3層是實現(xiàn)從FPGA到HPS通信機制而設計的,支持不同處理器核之間的數(shù)據(jù)傳輸。它開放了FPGA資源執(zhí)行一些HPS所要完成的任務,否則HPS會有極大的阻礙,最終從整體上提升了系統(tǒng)性能。





