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