自定義外設作為NiosII軟核處理器超強靈活性的體現(xiàn),其開發(fā)遵循一定的規(guī)律。一個用戶自定義外設必須進行硬件設計,也就是說,必須用硬件描述語言來描述出硬件的邏輯組成。一般來說,一個自定義外設主要由下列部分組成: ① 描述自定義外設邏輯的硬件描述文件部分(主要是HDL程序)。
② 軟件文件,一個用來定義外設寄存器的C語言頭文件,以及讓程序員控制這個元件的軟件驅(qū)動程序。
③ 元件的描述文件(class.ptf)。該文件定義了元件的架構,提供了SOPC。 Builder將該元件集成到一個系統(tǒng)的各種信息。該文件由元件編輯器根據(jù)用戶提供的硬件和軟件文件以及在圖形用戶界面中設置的各個選項和參數(shù)自動生成。圖1給出了帶Avalon從端口的自定義外設組成框圖。 一個典型的自定義外設主要由下列功能模塊組成:
① 任務邏輯。任務邏輯實現(xiàn)外設的基本功能,是必不可少的組成部分。
② 寄存器文件。寄存器文件部分提供任務邏輯和外界交換信息的橋梁。有了寄存器文件,用戶就可以通過Avalon接口采用“基地址+地址偏移量”的方法來訪問外設內(nèi)部的各個寄存器。
③ Avalon接口。Avalon接口為寄存器文件提供了一個標準的Avalon前端。該模塊使用Avalon規(guī)定的信號來訪問寄存器文件,并且支持任務邏輯的傳輸類型。
用戶自定義IP核按照對Avalon總線操作的不同可分為Avalon Master外設、Avalon Slaver外設及AvalonStreaming外設。用戶開發(fā)的外設大多為Avalon Slaver外設,Avalon Master和Avalon Streaming外設的開發(fā)比Avalon Slaver外設要復雜,但開發(fā)流程相同。一個典型的Avalon外設的開發(fā)步驟如下: (1)規(guī)劃元件的硬件功能。如果采用微控制器來控制該元件,則規(guī)劃訪問該硬件的應用程序接口(API); (2)在硬件和軟件要求的基礎上,定義一個恰當?shù)腁valon接口(一般為Avalon從端口); (3)使用硬件描述語言描述硬件邏輯。一個典型元件的硬件架構一般3部分組成:接口模塊(avalon inteRFace)作為頂層模塊,定義總線接口信號;寄存器文件模塊(register file)完成該元件與外部信號進行通信,提供訪問與控制元件的邏輯界面;行為模塊(task logic)實現(xiàn)元件的硬件功能。片上總線AvaIon從端口的信號都不是必須的。
(4)單獨驗證元件的硬件功能; (5)寫用于描述寄存器的C頭文件來為軟件定義硬件寄存器映像; (6)寫元件的驅(qū)動軟件; (7)把通過測試的源代碼使用元件編輯器封裝硬件HDL和軟件文件,完成元件定制。
|