《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于ARM和FPGA的NoC資源網絡接口驅動設計與實現
基于ARM和FPGA的NoC資源網絡接口驅動設計與實現
來源:微型機與應用2013年第13期
許川佩,孫義軍,吳玉龍
(桂林電子科技大學 電子工程與自動化學院,廣西 桂林 541004)
摘要: 將ARM處理器作為NoC系統中的一個資源節點,設計了資源網路接口,基于Linux操作系統的基礎上,編寫了FPGA設備的驅動程序。在典型的3×3 2D Mesh結構的NoC系統中進行了測試,結果表明該設計實現了ARM處理器資源節點和NoC系統中其他IP核數據的高速、可靠傳輸。
Abstract:
Key words :

摘  要:ARM處理器作為NoC系統中的一個資源節點,設計了資源網路接口,基于Linux操作系統的基礎上,編寫了FPGA設備的驅動程序。在典型的3×3 2D Mesh結構的NoC系統中進行了測試,結果表明該設計實現了ARM處理器資源節點和NoC系統中其他IP核數據的高速、可靠傳輸。
關鍵詞: NoC;ARM;Linux;設備驅動;資源網絡接口

 在半導體工藝進入深亞微米時代后,由于SoC(System-on Chip)大多采用類似計算機系統的總線結構,使其存在著通信效率低下、全局同步時鐘設計困難等問題,這些問題使得SoC體系結構以及其相應的設計方法在多核的復雜系統中遇到了無法逾越的障礙。為了解決SoC面臨的上述問題,提出了全新的NoC(Network-on-chip)體系結構[1]。NoC技術的核心是將計算機網絡通信的思想移植到芯片設計中來,它采用路由和分組交換技術替代傳統的總線通信方式,從體系結構上徹底解決了片上系統的通信瓶頸和時鐘問題。
 目前各國的研究人員正積極從事NoC設計研究,但缺少成熟技術和產品。本設計在開展NoC設計技術研究的基礎上,將ARM處理器作為NoC的其中一個資源節點,利用ARM處理器功能強大等特點,拓展NoC的應用。
本文通過向ARM處理器中移植Linux操作系統,在此基礎上進行了資源網絡接口和FPGA的設備驅動設計,并對多核系統之間的大量數據高速傳輸通信進行了探索和驗證。
1 NoC系統模型及硬件平臺
 NoC是由通信節點網絡和資源節點組成,通信資源網絡包括路由節點和資源網絡接口RNI(Resource-Network-Interface),通信節點負責資源節點之間的數據通信,資源節點完成廣義上的計算任務,資源節點可以是嵌入式微處理器和DSP核、可重構器件、輸入輸出設備等,它通過資源網絡接口連接到片上網絡中。資源網絡接口是資源節點與路由節點之間進行通信的橋梁,主要由發送模塊和接收模塊組成。其功能是將資源節點的數據按照傳輸協議進行打包處理后發送到片上網絡中,并從將網絡中接收提取有用數據傳遞給資源節點。NoC系統模型如圖1所示。

 本硬件平臺選用Altera Cyclone IV系列的EP4CE115F29 FPGA芯片作為NoC系統的核心部件[2],在此FPGA中以規則的3×3 2D-Mesh拓撲結構[3],虛通道技術的蟲洞數據交換方式以及無鎖死的確定性XY維序路由算法作為理論模型,完成NoC通信框架的構建。本設計將ARM處理器作為NoC系統其中一個資源節點,通過資源網絡接口和FPGA設備驅動實現ARM與NoC系統其他資源節點之間數據的交互。
2 ARM處理器資源網絡接口設計
 資源網絡接口負責將ARM資源節點的輸出數據進行組包并發送至路由節點,完成接收處理片上網絡傳遞的數據包,并通過中斷方式通知ARM資源節點接收數據。因此設計分為資源網絡接口發送和接收兩個部分。
2.1 ARM資源節點和路由節點接口結構
 ARM資源節點和路由節點之間交換數據是異步時鐘域通信,因此涉及到數據接口的同步問題,對于隨機到達的數據,需要建立數據同步機制,通過RAM或者FIFO的緩存實現數據同步,可將前級模塊提供的時鐘作為寫時鐘,使用后級的基本時鐘產生讀信號,完成數據讀出。通過這種方式實現全局異步局部同步(GALS)的設計。
 本文在FPGA中構建異步FIFO來完成ARM資源節點和路由節點異步時鐘域之間的數據傳送。根據設計的NoC系統中通信節點整體架構,在RNI中構建兩個異步FIFO,FIFO的存儲深度設置為8,寬度設置為34位,ARM和路由節點通信時可以根據實際的數據位寬和FIFO進行連接。ARM資源節點和路由節點的連接如圖2所示。

2.2 資源網絡接口發送模塊設計
 ARM資源節點發出的數據在片上網絡中傳輸需要經過RNI對數據進行相應的打包處理,然后將數據送到路由節點中,經過路由傳輸后送達目的路由,由目的路由RNI對數據解包后發送給目的資源節點。為了能使數據包正確到達目的節點,一個完整的數據包在經過RNI后被分為若干個微片(flit),flit分為3種類型,即頭微片、數據微片和尾微片。頭flit攜帶數據包源地址、目的地址、數據包長度等信息,尾微片代表著數據包的終結,數據微片表示傳遞的有效數據。路由節點根據數據攜帶的地址信息將資源節點發送的數據進行轉發。發送模塊主要由三個部分組成:輸入緩存器(FIFO A)、組包器和控制器。
 ARM資源節點在向路由發送數據之前首先檢測PORT_AV是否有效(高電平有效),若有效則將數據緩存到FIFO A中,在S1狀態控制器檢測到該FIFO中有數據就會向路由的本地方向發送數據傳輸的請求信號req_to_local,并且進入S2狀態。S2狀態判斷本地方向是否給出應答信號grant_from_local,若沒有則返回S1同時清除請求信號。如果有應答信號則進入S3狀態。S3狀態將輸入緩存器中的數據送到本地方向,完成了數據從ARM資源節點到片上網絡的傳遞。模塊運行的狀態轉移圖如圖3所示。

2.3 資源網絡接口接收模塊設計
 ARM處理器的資源網絡接口接收模塊對接收數據進行解包處理,提取有用的數據發給資源節點。接收模塊主要由輸出緩存器和應答器組成,異步FIFO B是輸出緩存器,用它來存放從路由本地方向發送過來的數據,應答器是根據FIFO B存儲狀態對路由的請求給予對應的響應。接收過程具體的狀態轉移圖如圖4所示。
在S0狀態中,數據傳輸到路由本地方會向RNI發送數據傳送請求信號req_from_local,在S1狀態應答器根據輸出緩沖器FIFO B的存儲情況給出應答信號grant_to_local。路由器在收到應答信號后將數據寫到RNI的FIFO B中。在S2狀態中應答器檢測到FIFO B中存在有效數據時就會向ARM資源節點發送讀數據請求信號receive_req。這個信號是直接連接到ARM的硬件中斷上,ARM資源節點捕獲這個中斷信號會在S3狀態給RNI模塊提供讀數據時鐘rclk和輸出緩沖器的讀使能信號read_en_in,進而完成ARM資源節點接收片上網絡傳來的數據。

3 FPGA設備的Linux驅動程序設計
 ARM處理器資源節點選用的是SamSung公司的S3C24XX系列處理器[4],并向其中移植了嵌入式Linux操作系統。其內核功能強大,性能高效穩定且源代碼開放,這使得設計者可以根據實際的需要對操作系統進行裁減以降低整個系統資源的開銷和功耗。
 為了使FPGA能夠在Linux操作系統中工作,為其設計了相應的設備驅動程序。設備驅動程序是應用程序和實際設備之間的軟件層。它為應用程序屏蔽了設備硬件工作的細節,在應用程序中只需要通過一組標準化調用完成對硬件設備的操作[5]。
 本文ARM資源節點通過設備驅動實現和FPGA之間數據的通信。FPGA設備驅動程序實現的主要功能是:(1)初始化FPGA模塊,注冊FPGA設備,申請中斷號等。(2)通過ioremap()將資源網絡接口中輸入輸出緩沖器的物理地址映射到內核虛擬空間。(3)捕獲資源網絡接口發出的中斷信號,并對中斷事件進行處理。(4)根據應用系統要求完成讀寫操作程序的設計。
3.1 驅動硬件接口
 FPGA采用存儲總線的方式直接連接在S3C2440的AHB總線上,將其作為ARM處理器的一個外部存儲器進行讀寫操作,硬件連接如圖2所示,其主要連接有16位寬的數據線,地址線以及讀、寫、中斷和片選信號線參照S3C2440存儲控制器的地址空間分布圖,將FPGA設置到bank5的地址空間中,對應的片選信號線為nGCS5,在FPGA內部構造了兩個異步FIFO (FIFO A、B)作為資源網絡接口的輸入、輸出緩沖器,ARM通過訪問異步FIFO完成和FPGA的數據通信。
3.2 驅動的軟件設計

 


 FPGA設備驅動首先在初始化模塊中向Linux操作系統申請設備號,申請成功后,該設備獲得了系統分配的主設備號,并建立起與文件系統的關聯。關聯成功后,在應用層可以通過read()、write()、ioctl()等常規的文件操作對FPGA設備進行操作。
 驅動程序為資源網絡接口的輸入、輸出緩沖器分別分配物理地址,程序不能直接通過物理地址來訪問I/O內存資源,必須通過內核函數ioremap()將緩沖器占用的物理地址映射到內核虛擬空間中。在此基礎上結合系統讀寫網絡資源接口的策略完成驅動程序設計,讀寫資源網絡接口的程序流程圖如圖5(a)、(b)所示。

 為了提高系統的效率,避免當設備資源不可用時,用戶不停查詢浪費CPU資源,在驅動程序中設計了阻塞操作,使用等待隊列來實現阻塞進程的休眠和喚醒。應用程序進行read()函數的系統調用時,若RNI模塊中的輸入緩沖器中沒有數據,驅動程序則將該讀進程添加到等待隊列頭中,使該進程進入休眠狀態,CPU將資源讓給其他進程。當輸入緩沖器中的數據達到閾值時RNI就會向ARM資源節點發出讀數據請求信號,ARM資源節點通過中斷來捕獲這個通知,在驅動程序的中斷處理函數喚醒休眠的讀進程,將輸入緩沖器中的數據中讀取到內核中,然后通過copy_to_user()將數據傳遞到用戶空間進行相應的處理。類似的,應用程序中進行write()函數的系統調用時,ARM處理器通過copy_from_user()將數據發送到RNI中。
4 資源網絡接口和驅動功能驗證
 本設計在實驗室自行開發的NoC硬件平臺上進行了運行測試,對于運行結果使用Quartus II 11.0集成開發軟件下的Signal Tap II嵌入式邏輯分析器進行測試。在測試程序中可以利用它捕捉通信接口相應的時序。
 程序運行時,使用Signal Tap II觀測ARM資源節點發送數據到路由節點的時序如圖6所示。從圖中觀測可知數據data_to_local和datain_receive一致,說明數據傳輸正確性。

 ARM資源節點通過接收NoC系統中其他資源節點發送來的數據,驗證資源網絡接口以及驅動通信接收功能的正確性。在程序運行時ARM資源節點將接收到的數據在終端打印出來,經觀察終端顯示的數據和該資源節點發送的數據是一致的。實際測試結果表明所設計資源網絡接口和驅動功能的正確性。
 本文給出了ARM處理器資源節點與NoC系統的網絡資源接口設計,并且闡述在嵌入式Linux2.6.30內核下數據通信的驅動的設計和實現過程。系統在此設計的基礎上充分利用ARM及其豐富的外設資源,完成了ARM處理器資源節點對NoC系統的其他資源節點進行控制以及數據處理等功能。ARM處理器有豐富的外設接口,能夠穩定地運行移植到芯片中的Linux操作系統,以ARM處理器作為NoC片上多核系統的資源節點可以極大地拓展NoC系統應用空間。
參考文獻
[1] BENINI L, MICHELI G D. Network on chip:A new SoC paradigm[J]. IEEE Computer, 2002, 3(1):70-78.
[2] Altera Inc. Cyclone IV device handbook[Z] . http://www.altera.com, 2010.
[3] 高明倫,杜高明.NoC:下一代集成電路主流設計技術[J].微電子學,2006,36(4).
[4] Samsung. S3C2440 32-bit Microcontroller User′s manual[Z]. http://www.samsung.com,2004.
[5] CORBET J, RUBINI A, HARTMAN G K.Linux設備驅動程序(第3版)[M].魏永明,譯.北京:中國電力出版社,2006.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产精品2019 | 伊人成人在线观看 | 欧美日韩国产一区 | 亚洲欧美国产精品专区久久 | 狠狠色网 | 高清视频欧美性生活 | 日本好好热视频 | 天天干天天干天天干天天干天天干 | 久久网免费视频 | 日本天堂在线 | 精品免费国产一区二区女 | 久久亚洲综合色 | 永久在线毛片免费观看 | 免费观看黄色在线视频 | 久久小视频 | 日韩城人视频 | 久久综合噜噜激激的五月天 | 91久久夜色精品国产网站 | 国产成人免费在线 | 99亚洲自拍| 国产久| 久久这里是精品 | 精品视频福利 | 国产在线观看免费 | 77777亚洲午夜久久多人 | 精品中文字幕久久久久久 | 久久久久久亚洲精品 | 久视频在线观看久视频 | 欧美成人国产一区二区 | 婷婷开心激情 | www日韩中文字幕在线看 | 国产91精品一区二区麻豆网站 | 久久99精品视免费看 | 国产青草视频免费观看97 | 久久婷婷网 | 国产成人一区二区三区 | 久久精品国产只有精品下载 | 欧美女人b | 色综合色综合久久综合频道 | 成人久久18网站 | 青青伊人网 |