基于NIOS II的SOPC存儲器型外設接口的設計
0 引言
隨著(zhù)微電子設計技術(shù)與工藝的發(fā)展,數字集成電路由最初的電子管、晶體管逐步發(fā)展成專(zhuān)用集成電路(ASIC,Application Specific IntegratedCircuit),同時(shí)可編程邏輯器件也取得了長(cháng)足進(jìn)步。
如今,可完成超大規模的復雜組合邏輯與時(shí)序邏輯的FPGA器件不斷推陳出新,從而為實(shí)現片上可編程系統(SOPC)提供了強大的硬件支持。SOPC是Ahera公司提出的一種靈活、高效的片上系統(SOC)解決方案,它將處理器、存儲器、I/O口等系統設計所需要的功能模塊集成到一個(gè)可編程器件上,從而構成一個(gè)可編程的片上系統。
同時(shí),Altera公司也提供了完整的開(kāi)發(fā)套件(QuaItus II、SOPC Builder、Nios II IDE)和仿真工具等軟件,并將其無(wú)縫地集成在一起。
利用Quartus II的SOPC Builder能夠方便的構建一個(gè)基于FPGA的SOPC系統,SOPC Builder的系統庫中包含了一些常用的Nios II外圍設備,可以自動(dòng)生成Avalon總線(xiàn),以用于連接各個(gè)模塊,從而形成SOPC系統。但系統庫中沒(méi)有提供的器件,而需要用戶(hù)根據器件的具體情況設計Avalon接口。另外,對于一些沒(méi)有邏輯功能的接口可以直接與總線(xiàn)相連,但需要根據Avalon總線(xiàn)規范和外設的控制時(shí)序來(lái)定制接口。
在實(shí)際工程中,通??梢允褂玫?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/存儲器">存儲器有片上存儲器和片外存儲器,其中前者指的是FPGA內嵌的存儲器,如片上RAM、FIFO、緊耦合存儲器等;后者為FPGA片外存儲器,如SRAM、SDRAM等。本文介紹了將片內存儲器FIFO、緊耦合存儲器及16位的SRAM集成在SOPC系統中,并在FPGA開(kāi)發(fā)板上實(shí)現的方法,其內容包括外設的接入方法,以及緊耦合存儲器如何通過(guò)緊耦合從端口直接與處理器的緊耦合數據/指令主端口相連等。
1 SOPC中的Avalon總線(xiàn)
Avalon交換式總線(xiàn)是由Altera公司開(kāi)發(fā)的一種專(zhuān)用的內部連線(xiàn)技術(shù)。Avalon交換式總線(xiàn)由SOPCBuilder自動(dòng)生成,是一種理想的、用于系統處理器和外設之間的內部連線(xiàn)。SOPC Builder可利用最少的FPGA資源,產(chǎn)生最佳的Avalon交換結構。在SOPC Builder中,每當一個(gè)新的組件被添加到系統中或是某個(gè)外設接人優(yōu)先權被改變時(shí),就會(huì )有一個(gè)新的、最佳的Avalon交換式總線(xiàn)被生成。Avalon交換式總線(xiàn)的整個(gè)生成過(guò)程都由SOPCBuilder自動(dòng)完成。SOPC Builder自動(dòng)生成的Avalon交換式總線(xiàn)可使用最少的邏輯資源來(lái)支持數據總線(xiàn)的服用、地址譯碼、等待周期的產(chǎn)生、外設的地址對齊(包括支持靜態(tài)和動(dòng)態(tài)地址對齊)、中斷優(yōu)先級的指定以及高級的交換式總線(xiàn)傳輸。Avalon交換式總線(xiàn)所定義的內聯(lián)線(xiàn)策略使得任何一個(gè)Avalon總線(xiàn)上的主外設都可以與任何一個(gè)從外設進(jìn)行通信。
Avalon總線(xiàn)結構構成的基本原則是:所有外設的接口與Avalon總線(xiàn)的時(shí)鐘同步,并與Avalon總線(xiàn)的握手/應答信號一致;同時(shí)所有信號均為高電平或低電平,并由多路選擇器完成選擇功能,它沒(méi)有三態(tài)信號,地址、數據和控制信號使用分離的專(zhuān)用端口,外設無(wú)需識別總線(xiàn)地址周期和數據總線(xiàn)周期。
1.1 Avalon從端口
Avalon接口定義了一組信號類(lèi)型(如片選、讀使能、寫(xiě)使能、地址、數據等),可用于描述主/從外設上基于地址的讀/寫(xiě)接口。Avalon端口就是一組Avalon信號,這些信號用作一個(gè)單一的接口。Avalon端口分為主端口和從端口。主端口為發(fā)起傳輸的Avalon信號類(lèi)型的集合。從端口為響應傳輸請求的Avalon信號類(lèi)型的集合。從端口的基本信號有address、readdata、writedata、read、write、chipselect等。從端口的讀傳輸可使用等待周期、建立時(shí)間等傳輸屬性,但Avalon從端口讀傳輸不使用保持時(shí)間屬性。對于有些外設,在read信號有效之前,其address和chipselect信號需要一定周期才能達到穩定,因此具有建立時(shí)間的Avalon傳輸應滿(mǎn)足上述建立時(shí)間要求。具有建立時(shí)間的讀傳輸使用的信號與基本讀傳輸的信號相同,不同之處只在于信號的時(shí)序。從端口的寫(xiě)傳輸除了具有與讀傳輸同樣的傳輸屬性外,還具有保持時(shí)間,其建立保持時(shí)間通常用于需要addtess、byteenable、writedata和chipselect信號在write脈沖之前和/或之后的幾個(gè)周期內保持穩定的片外外設。
1.2 地址對齊方式
當系統中存在數據寬度不匹配的主-從端口對時(shí),需要考慮地址對齊問(wèn)題。若系統中所有主端口和從端口都具有同樣的數據寬度,則從端口數據的所有單元與主端口地址空間的靜態(tài)地址邊界對齊。對于存儲器外設,一般應使用動(dòng)態(tài)地址對齊。若Avalon從端口是一個(gè)對寄存器文件的接口,則應使用靜態(tài)地址對齊。寄存器文件提供有對內部外設邏輯的訪(fǎng)問(wèn)功能。
一般情況下,動(dòng)態(tài)地址對齊方式可以自動(dòng)適應和Avalon master端口寬度不同的器件,而同時(shí)保持地址增長(cháng)的方式是以字節為單位增長(cháng)的方式。匹配不同端口寬度的mater和slave時(shí),可使用動(dòng)態(tài)地址對齊方式來(lái)得到一個(gè)連續的存儲器空間。而采用動(dòng)態(tài)地址對齊方式需要連接字節使能信號。
靜態(tài)地址對齊的地址增長(cháng)單位是Avalon master的端口寬度,每次讀寫(xiě)都只對應一次操作,但在匹配不同端口寬度的mater和slave時(shí),地址不能自動(dòng)調整。某些地址可能沒(méi)有相應的物理實(shí)體和它對應。
2 Nios II系統中的緊耦合存儲器
Nios II系統中的緊耦合存儲器是旁路緩存的片上存儲器,該存儲器具有最好的存儲器訪(fǎng)問(wèn)性能,能采用與其它存儲器一樣的方法為之分配代碼和數據。圖1是包括緊耦合存儲器和其他外設的Nios II系統圖。
SOPC Builder中的片上存儲器是唯一能夠與Nios II內核上的緊耦合主端口相連接的存儲器,而且,該片上存儲器必須配置為RAM,同時(shí)處理器上的緊耦合主端口也必須只與一個(gè)片上存儲器從端口相連接。每個(gè)緊耦合主端口都可以通過(guò)緊耦合接口與緊耦合從端口進(jìn)行連接,因此,需要雙端口存儲器與緊耦合指令主端口進(jìn)行連接。由于緊耦合指令主端口只能訪(fǎng)問(wèn)可執行代碼,因此,雙端口存儲器的第二個(gè)存儲器端口應當與處理器的數據端口相連,這樣便于對數據的讀/寫(xiě)操作。
在構建SOPC系統時(shí),Nios II處理器需要選中Include tightly coupled instruction master pods以及Include tightly coupled data master pods,這樣就可以添加處理器的緊耦合指令/數據主端口。片上存儲器可選擇SOPC Builder提供的onchip_memory,并在緊耦合指令存儲器中設置其為雙端口。當系統中的元件添加完成后,SOPC Builder會(huì )自動(dòng)連接緊耦合指令/數據存儲器的從端口和其他主端口,但是,這時(shí)候需要手動(dòng)修改連接關(guān)系。tightly_coupled_instruction_memory的s1端口僅與處理器的緊耦合指令主端口相連接,而s2端口則可以作為一個(gè)Avalon從端口僅與處理器的Avalon數據主端口相連接,而tightly_coupled_data_memory的sl端口僅連接到處理器的緊耦合數據主端口。Nios II處理器中緊耦合存儲器的配置如圖2所示。
評論