最近,我在做一個項目,該項目要求我這個MCU迷,轉向FPGA開發(fā)。在這個系列博客中,我將介紹如何將現(xiàn)有的MCU知識和經驗運用到FPGA的開發(fā)中。在第一部分中,我介紹了FPGA的優(yōu)缺點,以及Terasic DE10 nano開發(fā)套件,并且探討了影響FPGA設計的關鍵因素?,F(xiàn)在,在第2部分,我將分析示例代碼并發(fā)現(xiàn)更多的有用的資源。
MCU和FPGA之間的區(qū)別類似于摩托車和汽車之間的差異:盡管兩者都可以讓你從A點到達B點,但是機制卻有著根本的不同。我認為這個類比在描述MCU和FPGA的引腳模式、引腳類型以及串并行處理時非常貼切,在這些方面,兩者是完全不同的。
最初,我從Terasic的設置和指導實踐開始,但是一直處于困境中。每次編譯過程都會以錯誤結束。為了堅持下去,我會再喝一杯咖啡,并開始查閱英特爾開發(fā)人員專區(qū)網站。這個網站提供了更簡單的例子,我驚訝于復雜度的降低,在這里,示例很容易理解,這些示例甚至已經被編譯和運行了。一旦理解了基礎知識,完成Terasic的示例就會相當簡單,我認為開始覺得困難的一部分原因是由于編譯器的建立,另一部分原因是現(xiàn)在我對它們更加熟悉了。
硬核處理器系統(tǒng)
Terasic DE10-Nano將MCU--即硬核處理器系統(tǒng)(HPS)與FPGA相結合,因此我決定從熟悉的領域即MCU開始研究。ARM(“我的第一個HPS”)的開發(fā)熟悉而簡單,在Eclipse IDE中運行沒有任何阻礙,并且英特爾SoC開發(fā)工具使編程系統(tǒng)變得更簡單。我改進了“Hello World”這個范例,多加了一行,除了測試編譯器的功能外,不會改變其他的功能。幸運的是,我編譯成功了。IDE非常棒,非常像我過去處理過的大多數(shù)HPS IDE。
FPGA
最終,我不得不轉到FPGA部分,在這一部分,我可以同時(并行)做很多事情,這與MCU的串行方式不同。這個概念可能一時難以接受,但是,考慮到這個概念較為新穎,理解起來其實也不是很困難。由于預先的配置和安裝指導,Intel Developer Zone無疑是最好的一套學習指南。
Intel Developer Zone安裝文件提供了基礎知識,然后Terasic建立在這些新技能的基礎上,增加了更多的功能并提供了完整的流程,所以這套指南教給我們的并不是尋找,復制和粘貼的學習方法。英特爾推出了我的應用程序所需的知識庫,包括構建模塊圖,時序配置文件和I / O編程。在復雜的程序開發(fā)中,方框圖能夠提供清晰的視覺流程,時序配置文件則可以處理串并行協(xié)議和總線時序協(xié)議等問題。
每一個引腳都可以完成任意功能,這可能是FPGA最著名的特點了。(引腳編程是一個旅行!)引腳分配管理器非常炫酷,但查找表的工作量也是相當艱巨的。值得慶幸的是,在Quartus的最新版本中,Terasic使用詳盡的命名模式,為所有端口和引腳提供了完整的映射。這使得編碼部分更加簡單。
遇到的挑戰(zhàn)
在新的開發(fā)環(huán)境中工作很不舒服。新的處理過程和快捷鍵都需要調整。當然,新IDE的創(chuàng)建也會出現(xiàn)一些常規(guī)的設置問題。但是,文檔很清晰,圖像也有很大的幫助。因特爾已經拓展其性能以創(chuàng)建Linux系統(tǒng)和Windows系統(tǒng),并為編程提供了Linux仿真,這些都極大的簡化了原始的處理過程。但是,在設置Linux時我仍然遇到了問題,并且不再嘗試自己編譯的Linux IDE。后來,我找到了一個120頁的指南才得以正確的設置它。下面就讓我們搞清楚具體是怎么操作的吧!
Takeaways
我很喜歡這個練習,并且對此充滿信心。但是,下載、配置并且弄清楚下一步要做什么是相當繁雜的。我對下一階段的任務感到興奮,我計劃引入不同的硬件,使用示例代碼來開發(fā)自己的軟件,并利用HPS和FPGA技術。我的計劃是利用HPS(使用外部硬件)來運行OpenCV軟件,同時利用FPGA來加速視頻處理過程。