作者:JPaul Carpenter 之前的文章: 從MCU到FPGA:第1部分 從MCU到FPGA:第2部分 當我開始這個項目的時候,我已經了解到FPGA的好處在于它可以將多種功能集成到單一的芯片中,并可以通過重配置而修改芯片功能。但是這種靈活性也讓我想知道:我應該如何處理FPGA與外部組件的接口以及接口連線等問題呢?由于FPGA的平均設計周期為兩到三年,并且考慮到諸如USB 3.0到USB Type-C等通信技術的更新換代,我很難理解FPGA如何才能真正地帶來好處。 和處理大多數MCU項目時一樣,我打算從示例代碼開始,然后通過各種示例搭建自己的項目。但是對于每一個例子,我發現越來越不熟悉,并且結果也越來越混亂。在這里代碼被用來定義對象和調用函數,這在MCU里倒是很常見,但是有些定義是在高階函數里進行的,而其他的則是在另一個地方。像往常一樣,這些函數被用來執行一個功能或任務,但有一些函數要依賴于其他函數而另一些函數則是獨立的。正如我試圖對它們發表評論時所發現的那樣,那些沒有被直接調用的代碼仍然是代碼功能的關鍵。 我決定在YouTube上搜索“Intel FPGA Setup Cyclone V”來尋找示例和“Setup&Go”培訓。當我瀏覽這些內容時,我發現一個共同的主題(圖1): 看似不連貫的一組命令仍然有效,但似乎并不完整。 缺乏不支持FPGA的外部模塊或組件。 有了這些觀察,我回顧了更多設計樣本和代碼,并發現了英特爾Cyclone V和HPS FPGA架構顯著的優勢。圖1顯示了HDMI命令集,其中包括一系列未被調用的代碼。它們不是按順序運行的,而是并行運行的。它們的功能很像回調函數,在HPS中如果有來自較高級別控制器的數據調用時,這些回調函數就會被激活。然后編譯器就會提高向MCU傳遞信息的能力,反之亦然。在這兩者之間需要做的就是協調定義和時間安排。 ![]() 圖1:HDMI命令集,其中包括一系列未被調用的代碼。 項目流程如下所示: Linux HPS抓取圖像。 Linux將OpenCV處理過程移交給FPGA。 Linux調整圖像。 FPGA接收原始圖像信息,并將其編碼為HDMI接口。 這是使用HPS和FPGA的完美示例。FPGA能夠處理大量重復的運算并實現協議,而Linux和MCU則處理了程序的動態元素。這讓我看到了FPGA的優勢。 當我深入研究僅含有MCU的設計時,我發現了FPGA的其他優點:它需要很少的元件,而且可以使成本更低,性能更好的MCU獲得非常好的效果。例如,僅含MCU的設計將需要更高的A52等條件來進行圖像處理,此外還需要一個GPU來進行圖形加速處理和更多的RAM來完成整個設計。設計完成后,最終結果仍然是一個鎖定的,有限的可升級模塊。有了FPGA,這些組件便可以被引入同一個芯片,所以產品級PCB設計更為簡單,因為它需要較少的的組件接口,而且由此產生的模塊仍然可以升級或優化。 我頭頂上的燈泡在幾英里外都可能被看到。 將多功能集成到單個電路上,減少接口數量,或者根據線路修改功能等這些都是FPGA的優勢,但它的好處遠不止這些。FPGA改變了我為了高效完成任務而增加外部組件的方式:不是“按順序執行步驟1,步驟2,步驟3”,現在我正在考慮這樣完成任務:“執行步驟A,B,C,并且當執行完B之后,就執行D”。現在,為什么要花時間來研究MCU到FPGA開發轉換的原因也已變得越來越明晰了。 請繼續關注第4部分文章:從MCU到FPGA: 第4部分 原文鏈接:https://www.mouser.cn/blog/intro ... to-fpga-part-3-of-6 |