基于SOPC的自定義外設FIFO
摘要:以Altera公司的FPGA芯片EP2C20Q208C8為例,詳細介紹了在QuartusII 7.2的環境下,用SOPC Builder構建Nios軟核時,自定義FIFO接口元件的方法。通過將采集到的電壓信號,在數碼管上顯示的實驗,實現FIFO寄存器與Nios CPU之間的通信。
關鍵詞:現場可編程門陣列FPGA;Nios;先進先出;可編程片上系統Builder
0 引言
隨著微電子技術和半導體工業的不斷發展,數字技術已進入片上系統時代。從而又發展了SOPC(可編程片上系統),SOPC是Altera 公司提供的片上可編程系統解決方案。Nios嵌入式處理器是Altera公司推出的軟核CPU,提供給用戶,并在Altera的FPGA上實現優化,用于 SOPC集成
并在FPGA上實現,提高了系統的靈活性和擴大范圍。
自定義外設是SOPC系統靈活性的重要體現,是SOPC系統中極其重要的一種設計方法。在大量的數據常需要處理時,利用自定義外設由具體的硬件來實現,可以極大程度地提高系統運行的速度,同時便于系統的模塊化與集成化,是SOPC系統設計的重中之重。定制的用戶外設能夠以“硬件加速器”的形式實現各種各樣用戶要求的功能。
1 定制Avalon總線型FIFO接口元件
由于選用的AD采樣速率非常高,并且只由時鐘控制端控制,因此設計時在AD采集模塊和Nios CPU之間加一個FIFO存儲器,從系統外部接口送來的數據先在FIFO中緩存,然后將數據讀入SDRAM,在片上進行數據處理。整個流程在FPGA平臺上采用SOPC方法實現。在SOPC Builder中只有廠商提供的片上FIFO接口控制器,沒有外部使用的FIFO接口控制器核,因此需要用戶自定義FIFO接口控制器,這樣才能滿足系統外圍電路的應用要求。文中采用創建元件配置向導定制FIFO接口元件的方法。
2 用戶自定義IP核的開發流程
自定義外設作為NiosII軟核處理器超強靈活性的體現,它的開發要遵循一定的規律。一個用戶自定義外設必須用硬件描述語言來描述硬件的邏輯。用戶自定義IP按照對Avalon總線操作的不同可分為Avalon Master、Avalon Slaver和Avalon Streaming外設。由于Avalon Master和Avalon Streaming外設的開發比Avalon Slave外設要復雜,所以用戶開發的外設大部分為Avalon Slave外設,但是開發流程是一樣的。典型的Avalon外設的開發步驟如下:
(1)規劃元件的硬件功能。若采用微控制器控制該元件,則規劃訪問該硬件的應用程序接口(API);
(2)在硬件和軟件要求的基礎上,定義一個恰當的接口(一般為Avalon Slave端口);
(3)使用硬件描述語言描述硬件邏輯。一個典型元件的硬件架構一般由接口模塊、寄存器文件模塊和行為模塊3部分組成。接口模塊作為頂層模塊,定義總線接口信號;寄存器文件模塊完成該元件與外部信號的通信,提供訪問與控制元件的邏輯界面;行為模塊實現元件的硬件功能。片上總線Avalon從端口的信號都不是必須的,一個典型的Avalon從端口所包含的信號如表1所示。
(4)單獨驗證元件的硬件功能;
(5)寫用于描述寄存器的C頭文件為軟件定義硬件寄存器映像;
(6)寫元件的驅動軟件;
(7)把通過測試的源代碼使用元件編輯器封裝硬件HDL和軟件文件,完成元件定制。
3 自定義FIFO接口的開發
3.1 硬件構建
3.1.1 接口模塊的設計
根據FIFO的功能需要,該模塊所需的Avalon總線輸入信號為clk、reset n、data、full、empty信號,而模塊輸出則為rdclk、rdreq、wrreq信號。該接口模塊定義了總線接口信號,作為頂層模塊。
Avalon總線接口設計文件的端口說明部分如下:
3.1.2 寄存器文件模塊
寄存器文件模塊實現與外部信號的通信,提供了訪問與控制元件界面。在寄存器文件中,Avalon總線的地址信號有兩位,00表示讀取數據寄存器,O1表示讀取狀態寄存器,10表示寫控制寄存器,address的11保留。在片選和讀信號的控制下,分別讀數據寄存器和狀態寄存器。在片選和寫信號的控制下,向控制寄存器寫入數據。
評論