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