- 勇敢的芯伴你玩轉Nios II(電子設計與嵌入式開發實踐叢書)
- 吳厚航編著
- 1274字
- 2021-04-02 22:08:05
1.3 基于Nios Ⅱ處理器的FPGA開發流程

圖1.4 SOPC系統開發流程
基于Nios Ⅱ處理器的開發流程如圖1.4所示。Qsys是Quartus Ⅱ中集成的一個工具,在Qsys中搭建Nios Ⅱ處理器系統,并添加和配置各種外設。隨后在Quartus Ⅱ和EDS開發工具中分別進行FPGA和嵌入式軟件設計。FPGA設計包括設計輸入(Verilog/VHDL代碼編寫等)、設計約束(引腳約束、時序約束等)、編譯(綜合、布局布線)和生成配置文件。嵌入式軟件開發則包括C源碼創建、編寫、編譯和最終的調試運行(前提是FPGA生成的配置文件已經預先燒錄到目標器件中)。
Qsys生成系統后,會自動產生所有外設相關的驅動,包括在system.h中定義系統各個外設的基址,自動編譯各種可供調用的函數。銜接軟硬件的這部分就是HAL,中文名叫硬件抽象層。在軟件應用開發人員看來,他們只要弄明白HAL提供的所有可用函數的用法就可以玩轉整個系統了。
按照筆者的理解,其實完全可以拋開圖1.4。對于通常相對簡單的Nios Ⅱ處理器開發項目而言,如圖1.5所示,用腦圖總結出來的一些基本步驟就足以代表在整個項目中所涉及的主要方面。
關于圖1.5本身就不過多進行分析了,這里只是羅列一些步驟供讀者參考。當然了,它要和前面的圖1.4相比就顯得有些“不規范”和“不官方”了,姑且可以稱之為“草根流程”。在很多場合下,其實也是沒有條件和辦法去完完全全“規范化”開發流程的,但這并不妨礙對流程的正確理解和有條件地執行。總之,設計者要記住一件事:所有規范和流程的制定,都是為了更好的服務于產品開發。

圖1.5 基于Nios Ⅱ處理器的FPGA項目開發步驟
另外,FPGA開發設計的迭代性特點決定了基于Nios Ⅱ處理器的軟硬件開發同樣存在著這個特點,也許這一點在圖1.4和圖1.5中都沒法很好地表現出來。所謂迭代性,就是重復性,當開發到某一個環節時如果出現問題了,很多時候問題不會僅僅停留在當前環節,設計者會考慮往流程的上游找問題,大多數時候問題是在前面的某一個環節中解決了,然后從那里重新開始繼續往下走。

圖1.6 設計迭代性示意圖
迭代性如圖1.6所示,假設一個流程中有4個主要的步驟,正常情況下從步驟1執行到步驟4,如果不出問題就結束了。但這么順利的過程在電子產品(特別是FPGA的開發流程)中是非常罕見的,有時甚至每個步驟都有出問題的可能。在日常生活中,人們做事的各個環節經常是互不相干的,哪個步驟要是出現問題就在哪個步驟解決,不會牽涉到別的步驟中,而FPGA的開發則大不相同,例如步驟1執行完進入步驟2,如果在步驟2出了問題,也許在步驟2本身解決不了,那么就得回到步驟1找問題,如果步驟1解決了問題,那么此時整個流程就從步驟1開始重新執行。同樣的,如圖1.6所示,當進入步驟4的時候,如果有了問題,解決問題可能需要回到前面3個步驟的任意一個步驟重新開始執行。試想想,一個開發過程通常不會只有4個步驟,有時要經歷幾十個甚至上百個大大小小的步驟,那么出了問題就麻煩了。這是FPGA設計獨有的特點,也是難點和重點。希望讀者能夠在實踐中好好感受這個折磨人的特點,也多總結出一些經驗和辦法來應對。當然,筆者所能夠想到和做到的就是在設計中認真認真再認真;然后多分模塊,分解這些大迭代為小迭代,盡可能地降低設計之間的相互依賴性,降低問題定位難度,從而減少工作量。
- 基于Proteus和Keil的C51程序設計項目教程(第2版):理論、仿真、實踐相融合
- 單片機原理及應用系統設計
- Mastering Manga Studio 5
- Learning Game Physics with Bullet Physics and OpenGL
- 微服務分布式架構基礎與實戰:基于Spring Boot + Spring Cloud
- 計算機組裝與維修技術
- Wireframing Essentials
- Java Deep Learning Cookbook
- Arduino項目案例:游戲開發
- USB應用開發寶典
- 微服務實戰
- 創客電子:Arduino和Raspberry Pi智能制作項目精選
- PIC系列單片機的流碼編程
- Learning Microsoft Cognitive Services
- Spring微服務實戰(第2版)