avalon IP嵌入及ROM使用

經過幾天的學習,終於把avalon總線接口IP模塊的編寫及嵌入搞定,現在總結如下:

首先需要說明的是總線接口,每一個avalon slave模塊包含的信號有兩類:一種是與avalon master模塊進行通信的內部接口信號,另外一種是用於控制外設的外部接口,外設可以是片上的外設或者片外的外設。可以由用戶決定。關於avalon總線的介紹,可以參考ALTERA公司的avalon bus spec.pdf文檔,在文檔中有關於avalon 總線的詳細說明,沒有必要細看,只需要作爲手冊查詢即可,用到時再去翻看。

在定義好IP模塊的接口後,剩餘部分的編寫與一般的控制邏輯就沒有區別了,不必詳述。

在此以自己編寫的DDS模塊爲例介紹IP模塊的設計過程。

DDS模塊的組成包括控制寄存器,相位累加器,地址生成邏輯,和數據存儲器;

控制寄存器包括當前的頻率控制字,相位初始值,控制字寄存器;

相位累加器生成當前的相位;

地址生成邏輯根據相位累加器的結果形成對數據存儲器的尋址地址;

數據存儲器由megaWizard Plug-in Manager生成;其中包含所要產生的波形數據;

 

1,  Rom生成過程

選擇MegaWizard Plug-In Manager…,彈出下面的對話框。

 

默認新建一個定製的megafunction

器件欄選擇對應的器件系列,這裏選擇Cyclone,會列出改器件系列中可以使用的Megafunctions,此處選擇 ROM1-PORT,在名稱欄中選擇要存放的目錄及文件名稱,這裏選擇爲sprom,單擊下一步。

How many 8-bit words of memory?欄中選擇要建的ROM的大小,以字節計算。第四步默認即可選擇下一步,到第五步。

 

在初始化數據欄中,需要注意此處可以先填入要使用的初始化文件,可以有兩種格式,hex或者mif文件,這兩種文件均可以通過Quartus II的新建文件中的other files生成。在需要仿真時需要將該初始化文件放到仿真根錄下,在編譯工程時,也需要將改初始化文件放到工程文件的根目錄中,否則無法正常初始化。

我曾嘗試修改sprom.v文件使其指向對應目錄下的文件,不成功,因爲在編譯後,sprom.v被修改。

Altera_mf爲仿真sprom需要的對應的庫文件,在MOdelsim仿真時,需要對該文件進行編譯,否則報錯。該文件在Quartus安裝目錄中,可以查看help信息,得到具體位置。

選擇要生成的文件,其中sprom.v爲必須的。--inst爲實例化模板

2,  IP嵌入到系統中

新建系統後,選擇 Create New Component選項

彈出對話框,顯示要生成的文件的信息,結構組成

選擇Add HDL File…,添加設計完成的verilog文件,上圖顯示爲正在分析編譯綜合,綜合完成後,若沒有錯誤,會彈出如下對話框,但有時會出現此處分析正確,但在系統綜合時出錯的情況。

AVALON_dds.v分析完畢

所有文件分析完畢後,在Top Level Module中選擇頂層模塊,此處顯示錯誤,可以不用理會,在後面的步驟中將會消除該錯誤。

將輸出端口,映射到s1接口上,export爲外部接口之意,另外和系統的接口需要選擇對應的高電平或者低電平有效信號,若選擇錯誤,可能導致系統不能正常工作。

修改後的界面

Slave地址對齊方式,一般情況下,選擇寄存器模式,只有在外接存儲器時,才部分選擇Memory,兩者的區別在於系統生成時,是否會將數據進行動態對齊。詳見總線協議。

在此處單擊move non_signal Interfaces去掉沒有信號的接口,此後,將前面提到的錯誤將自動消失。

添加軟件文件,用於軟件對其進行訪問。

根據自己的需要修改對應的信息,並單擊Finish,彈出下面的對話框。

 

單擊Yes,將生成對應的模塊。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章