天天看點

SOPC開發SOPC開發

SOPC開發

Altera的SOPC開發包括硬體開發和軟體開發,硬體即搭建包括CPU的電路結構,軟體即通過Nios寫CPU中運作的程式。這些内容有我從網上找到的,也有我自己寫的。學習SOPC,特别要感謝《NIOSII那些事兒》這本教程和它的作者,我從中學了好多。很感謝黑金動力社群的人,他們能夠無條件共享這本教程給大家,也會認真回答你的問題,真的要謝謝他們。

一),硬體開發

1.      建SOPC時基本的内容要添加CPU、存儲器SDRAM或FLASH等、JTAGUART、Avalon三态橋、System ID。

我們要建立一個Avalon三态橋,在NIOS系統中,要實作與FPGA片外存儲器通信,就必須在Avalon總線和連接配接外部存儲器的總線之間添加一個橋,這個橋就是Avalon三态橋。(連接配接cfi_flash)

System ID就是一種标示符,類似校驗和的這麼個東西,在你下載下傳程式之前或者重新開機之後,都會對它進行檢驗,以防止錯誤發生,大家知道這個東西就可以了,沒太大的用處,但需要有的。

JTAG UART是實作PC和NiosII系統間的串行通信接口,它用于字元的輸入輸出,在Nios II的開發調試過程中扮演了重要的角色。

2.      QuartusII中進行設定settings,如下:

SOPC開發SOPC開發
SOPC開發SOPC開發

3.      在原理圖中自動生成引腳,右擊子產品

SOPC開發SOPC開發

4.      利用Tcl配置設定引腳比較友善,先前先寫好TCL檔案,到時候建工程時根據TCL檔案命名相應的管腳名稱和TCL中一樣即可。

二),軟體開發

每次建立一個軟體工程時,要先轉換workspace,再建立工程。選擇.ptf檔案時要注意路徑,不要選錯了。

1.      系統庫的屬性:

SOPC開發SOPC開發

紅圈1處是标準輸入(stdin)、标準輸出(stdout)、标準錯誤 (stderr)的設定區,我們在軟核中建構了JTAG UART,在此出現效果了吧,如果我們沒有建構JTAG UART,那麼,這個地方就不會出現jtag_uart選項了。在所紅圈2處,這個地方也不需要修改,不過有一個地方需要注意,就是Support C++,這個庫相對Small C library要大,如果大家手中的闆子沒有FLASH,SDRAM這樣大容量儲存設備的話,選擇Small C library,用FPGA内部的SRAM,也可以跑些小程式。再說紅圈3處,這個是一些有關記憶體的選項,我們建構了SDRAM子產品,這個地方也用到了, 預設就可以,不用修改。該說紅圈4了,點選紅圈4後,出現下面界面,這個是對編譯器就行配置的界面,大家可以自己觀察一下,大部分都不需要修改,我們來看 一下比較重要的地方,點選紅圈處。

SOPC開發SOPC開發

點選後,我們看看是什麼樣子,這裡有兩個關鍵點,一個是紅圈1處,這個地方時配置編 譯器的優化級别,紅圈2的地方是調試級别。編譯器的優化級别會讓你的生成的代碼更小,當要求也很高,你的代碼如果不嚴謹,有可能優化以後不好用了,大家要 注意。調試級别是你在編譯過程中顯示編譯内容多少,級别越高顯示内容的越多,建議将調試級别調到最高。

SOPC開發SOPC開發

2.      寄存器操作方式與NIOS II IDE提供的API方式的比較

手冊中PIO Core寄存器映射:第一項是資料data,第二項是IO口方向,第三項是中斷控制位,第四項是邊沿控制位。他們每一項都有n位,這個n就是我們在軟核建構中的寬度(width)。

SOPC開發SOPC開發

寄存器操作方式:

下面定義了一個結構體,将其命名為PIO_STR,這個結構體的結構是有說法的,它是根據前面的晶片手冊來寫的。

SOPC開發SOPC開發

下面就是根據所定義的結構體的寄存器操作方式。

SOPC開發SOPC開發

下面是NIOS II IDE提供的API方式控制LED的PIO口。

SOPC開發SOPC開發

3.      注意有軟體工程(nios)的例子,不能改路徑或所在檔案名。如果改了,在Run As時會出現下面錯誤:

SOPC開發SOPC開發

注意下圖紅框中,可能是因為在建軟體工程時,已指定.ptf的位址并且在後面不能改變了。

SOPC開發SOPC開發

繼續閱讀