1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      USB2.0設備控制器IP核的AHB接口技術

      更新時間: 2007-11-19 08:59:55來源: 粵嵌教育瀏覽量:818

      摘要 介紹了USB2.0設備控制器IP核的AHB接口的設計。解決了雙時鐘域問題;實現了多事務DMA控制,減少了塊傳輸的中斷次數;緩存采用乒乓機制,并對外隱蔽了雙緩沖區。用Verilog完成RTL代碼,并通過充分驗證,證明接口符合AHB協議,且完成既定所有功能。

      關鍵詞 AHB接口 USB2.0 IP核 SoC

      引言

        通用串行總線USB 2.0接口是目前PC機的主流接口,可提供480 Mb/s(60 MB/s)的高速數據傳輸,具有即插即用、熱插拔、接口體積小巧、節省系統資源、傳輸可靠、提供電源、良好的兼容性、共享式通信、低成本等優點。由于USB接口的優點和流行,當今嵌入式設計要與PC連接,USB接口。

        ARM 公司提出的AMBA總線,由于其本身的高性能和ARM 處理器的廣泛應用,已經成為SoC 設計中廣泛使用的總線標準。AMBA rev20中的AHB,采用地址/數據分離格式,支持固定長/不定長猝發(burst) 交易、分裂(split) 交易特性和多個主設備的總線管理,具有高帶寬、高性能特性,適合于嵌入式處理器與高性能外圍設備、片內存儲器及接口功能單元的連接。

        根據兩種總線的特點和廣泛支持,為了給嵌入式SoC系統提供USB接口,需要設計USB和AHB間的橋接IP核(Intellectual Property Core)。本文介紹USB 2.0設備控制器IP中的AHB接口部分設計。

      1 設計概述

      1.1 協議概述

        設計前首先需要了解USB和AHB數據傳輸的特點。

        USB上的數據組織為事務進行串行傳輸,小數據單位是字節。USB傳輸始終是由主機方發起的,設備方只負責響應。USB的數據傳輸分為塊、同步、控制、中斷四種傳輸,本IP支持前三種。對于塊傳輸,默認上層協議為BULK ONLY協議[1]。

        AHB總線采用單時鐘域同步設計。數據、地址線寬32位,采用2級流水線結構,地址、控制信號比數據信號早一個時鐘周期。可用猝發(burst)傳輸來傳數據。只需一個時鐘周期就可完成總線交權。由于是嵌入式的SoC片上總線,故強調的是面積、工作頻率和功耗等。詳細情況參見USB[13]和AMBA協議[4]。

      1.2 設計規格

        本IP核的AHB接口,主要的任務是控制數據在緩存和AHB總線間正確傳輸,使接口時序滿足AHB協議,并協助AHB上的MCU(默認為ARM)控制數據傳輸;同時要處理與USB控制部分的連接問題,控制USB端的中斷申請和寄存器輸出。

        為了適用于大數據量的傳輸,本IP要求的控制傳輸是用非DMA方式,塊、同步用DMA方式,且已知外部有DMA控制器(默認為ARM雙Master的DMA控制器[5])。

        在總體設計中有如下關鍵問題,決定了IP中AHB接口設計的細節。

        ① 雙時鐘域問題。USB時鐘是60 MHz,設計的AHB時鐘頻率是30~133 MHz。跨時鐘域的控制信號需要用同步器同步。
        ② 數據的緩沖問題。IP中使用32位數據位寬的流過式DPRAM(雙口SRAM)作為USB和AHB間的數據緩沖。每個端點有固定的緩沖區,使各端點間透明;使用乒乓機制,每個端點兩個緩沖區,減小USB和AHB總線速率的相關性,使數據傳輸更流暢;同時DPRAM的兩個口分屬不同時鐘域,起到隔離數據的雙時鐘域問題的作用。

        ③ 是否需要AHB Master的問題。IP在USB端是從設備,在AHB端是主設備。也就是AHB上傳輸的都是由本IP發起的。本來設計中有一個AHB Master,當作DMA控制器。現在由于已經有外部DMA控制器,因此IP只需要AHB Slave,用中斷告知ARM信息,由ARM配置外部DMA控制器來進行DMA傳輸。所以為了減小面積和功耗,去掉AHB Master。

        ④ 要實現多事務DMA才發一次中斷,減少中斷次數。由于塊傳輸通過上層BULK ONLY協議已經知道多個事務數據長度,所以前面的事務DMA可以用硬件處理,一次事務完成后才報中斷。

        ⑤ AHB地址劃分。每個端點在AHB上只有一個固定地址,看作一個I/O接口,隱蔽雙緩沖區和緩沖區內部的相對地址,而IP中每個內部寄存器有一個單獨的AHB地址。

      2 AHB接口設計實現

      2.1 模塊劃分

        如圖1所示,根據功能可把AHB接口分為如下6個模塊:

        ① CTRL,產生對外部DMA控制器的DMA申請信號,并接收回應信號;負責控制多個通道的多事務長度的DMA結束中斷;改變REG模塊中的DMA配置信息[56]。

        ② SLV,負責接收AHB上的讀寫請求,控制AHB Slave的時序。

        ③ DEC,地址譯碼模塊,根據AHB地址譯碼產生寄存器選中信號或緩沖寫信號。

        ④ MUX,DPRAM和寄存器輸出的多選一模塊,包括USB端寄存器輸出。

        ⑤ INT,總中斷產生模塊。綜合USB端的中斷申請,產生總中斷信號和總中斷向量。

        ⑥ REG,ARM配置的寄存器組模塊。


      圖1 AHB接口模塊框圖

      2.2 SLV模塊設計

        SLV模塊處理AHB時序,主要功能是根據AHB地址和控制信號,產生對緩存的讀寫、地址信號;支持猝發傳輸的提前結束和插入BUSY周期。SLV模塊不需要使用RETRY/SPLTT功能來干預AHB仲裁器的仲裁。這是因為IP中有用于緩存的DPRAM,并且處于USB設備端,在AHB總線看來,IP在接受AHB IN/OUT操作前都已經做好準備,不存在不能接收AHB操作的情況。

        Slave狀態轉換如圖2所示。Slave狀態機是AHB Slave設計的關鍵。hready_in和hsel同時為高時,SLV才能采樣地址和控制信號。


      圖2 Slave狀態轉換圖

        對于寫操作,當收到NONSEQ時,先存儲地址信息,在下一周期收到hwdata后同時發對緩沖的寫信號、寫地址、寫數據。遇到BUSY周期進入HS_WRBUSY狀態,等待下次寫操作。

        對于讀操作,當收到NONSEQ時,先采樣地址信息,判斷是否正確,再發讀信號和讀地址,這需要一個周期。一個周期后從緩沖收到讀數據,還要通過一級寄存器后才能發到AHB總線上。所以SLV處理AHB讀操作需要3個周期預讀取數據,加入HS_RDSTART1、HS_RDSTART2、HS_RDSTART3狀態,拉低hready_out,等待讀數據。因為每個端點只有1個AHB地址,如果SLV一直對同一個端點進行傳輸,則可以使用預讀取數據,保持流水,提高數據傳輸效率。遇到BUSY周期進入HS_RDBUSY狀態,有專門寄存器存儲預讀數據,等待后面讀操作中使用。

        SLV只支持WORD(32位)傳輸,但是USB是以字節為單位的。解決的辦法是寄存器組REG中對每個端點都有一個DMA長度寄存器,ARM寫入多事務數據的長度,精確到字節, IP知道數據的字節數,而AHB上只以WORD為單位傳輸。這樣做還有個目的是簡化外部DMA控制的操作,一次連貫的DMA只需ARM配置一次。否則,傳輸非WORD的數據可能要ARM特殊處理。

        SLV有檢錯機制,當讀寫地址操作端點緩沖邊界或進行非WORD傳輸時,SLV認為出錯,先后進入HS_ERR1、HS_ERR2狀態,進行2周期的AHB錯誤回應。

        AHB中的1 KB地址邊界檢查是由AHB Master保證的,Slave不作檢查。

      2.3 其他模塊設計

        DPRAM控制部分對每個端點有一個busy信號和hbuf信號。當busy為0時,表示端點控制權在AHB端;否則,在USB端。hbuf信號為0表示端點使用緩沖區0,否則使用緩沖區1。對于OUT端點,busy為0表示緩沖中有USB OUT數據,需要DMA傳輸;對于IN端點,busy為0表示緩沖空閑,可以接收DMA IN數據。所以CTRL模塊接收這兩組信號,以hbuf指示的busy信號為0作為端點的對外部DMA控制器的申請,同時需要打開相關DMA使能。這還需要外部DMA控制器支持多個DMA申請。

        ARM往DMA長度寄存器寫入多事務數據的長度,當Slave傳輸了此長度的數據后,向ARM報DMA結束中斷。這樣可以不依賴外部DMA控制器,IP自己硬件減少塊DMA傳輸中斷數,否則一般會每次事務報一次中斷。

        其余模塊實現的功能都不復雜,都是簡單的邏輯控制。

      2.4 同步器設計[6]

        需要同步的信號分兩種,單周期高電平有效和多周期高電平有效,要不同處理。

        對單周期高電平有效信號,如果從快時鐘域到慢時鐘域,可能寄存器采不到信號,需要先延長源信號的高電平,等采到后再拉底;而目標時鐘域中通過兩級寄存器同步,使平均出錯頻率變為大約100年一次,再用上升沿檢測電路使其只保持一個慢周期高電平。具體電路如圖3所示。


      圖3 單周期有效信號的同步模塊

        對于多周期高電平有效,只需要通過兩級寄存器即可。這樣設計簡單,出錯概率極小。

      3 IP驗證驗證

        工作主要是驗證平臺的搭建和testcase編寫。要求驗證集完備,能充分驗證正常和非正常的工作情況。

        驗證使用的軟件是VCS,在驗證環境中使用synopsys的UTMI和AHB VIP(驗證IP)對USB部分和AHB接口一起驗證。使用VIP能提高驗證平臺自身的可靠性。

        針對AHB接口的testcase有非DMA傳輸,多DMA一起傳輸,塊端點和同步端點一起傳輸和AHB錯誤狀態檢查等。所有testcase都已通過,達到驗證的目標。圖4是外部DMA控制器的Master寫IP Slave的波形圖。


      圖4 外部DMA控制器寫Slave的波形





      結語

        經過充分的驗證,證明AHB接口設計符合AHB協議,并完成既定功能。設計中應用同步器解決了雙時鐘域問題;用總長度寄存器,實現了多事務DMA控制,減少了塊傳輸的中斷次數;采用外部不可見的乒乓機制的緩存,減小了USB和AHB的數據相關性,提高了IP效率。

        在DC下綜合后速度能達到150 MHz,給后端設計留下充分余地。本IP按計劃已經投入實際使用;但也有需要改進的地方,DPRAM比較耗面積,占了IP總面積的70%。如果使用SPRAM(單口SRAM),緩存面積至少會減小一半。所以改用SPRAM,會降低成本和功耗,只是增加了USB和AHB的控制相關性以及等待時間。

      參考文獻

      [1] USB Implementers Forum,USB Mass Storage Class BulkOnly Transport Revision 1.0[S/OL].http://www.usb.org/developers/devclass_docs_usbmassbulk_10.pdf
      [2] 王成儒,李英偉. USB 2.0原理與工程開發[M]. 北京:國防工業出版社,2004.
      [3] Compaq, Intel,Microsoft,Philips,Universal Serial Bus Specification,Revison2.0,2000[S/OL].http://www.usb.org/developers/docs/usb_20_05122006.zip
      [4] ARM Limited. AMBA Specification(ARM IHI 0011A),Version2.0,1999[S/OL].http://www.arm.com/products/solutions/AMBA_Spec.htm1
      [5] ARM PrimeCell DMA Controller(PL080) [EB/OL].http://www.nalanda.nitc.ac.in/industry/appnotes/arm/soc/DDI0196C_DMA_PL080.pdf
      [6] 鄒楊,林平分,王普,等. 基于AMBA總線的DMA控制器IP核設計[J].電子產品世界,2006(14).
      [7] Clifford E. Cummings. Synthesis and Scripting Techniques for Designing Multi-Asynchronous Clock Designs,2001[EB/OL]. http://www.sunburst-design.com/papers/CummingsSNUG2001SJ_AsyncClk.pdf

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲一区国产美女在线速度快 | 中文字幕亚洲日本韩无线码 | 欧美国产伦久久久久 | 日韩中文无线码在线 | 伊香蕉大综综综合久久 | 日韩在线观看一区二 |