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

      SoC系統中實時總線模塊的設計理念與應用

      更新時間: 2014-11-12 14:50:19來源: 粵嵌教育瀏覽量:2621

      在芯片設計中,芯片內部總線的設計往往決定了芯片的性能、功耗與各模塊設計的復雜度。我們設計總線往往會依據兩方面的原則:一是芯片設計流程其內在的需求,二是所針對的應用對交換寬帶、延時、效率、靈活性的需求。

        針對芯片總線設計流程內在的需求,高效總線結構設計通常遵循的基本原則包括:同步設計、可綜合、無三態信號、低延時、單觸發延、支持多主控及總線仲裁(支持DMA及多CPU核)、高時鐘頻率獨立性、支持突發(高效率)和低門數。遵循這些基本原則可以幫助我們規避很多設計上的風險,提高總線效率與IP復用度。當然,實際上述有些原則如“三態總線”,可以而且應當在某些應用中使用,只是不建議芯片及設計工程師輕易地突破這些規范,增加風險。南山之橋微電子公司在高端芯片設計中使用了三態總線技術來解決超寬總線的布線聚集與時序匹配問題。

        應用的需求往往會決定總線的形式,如SoC芯片中往往會采用嵌入式CPU的總線結構。反過來說,我們選用哪一款CPU,除了成本、性能、功耗、快速精確的時序仿真模型、編譯環境和可用IP外,還有重要的一點就是其總線設計是否簡單、高效與有利于發揮其它設計模塊的效率。

        以現在較流行的arm處理器來說,采用AMBA總線標準,其中高速芯片通常采用的AHB總線有以下幾個特質:流水線式、非三態總線、支持多主控、總線仲裁與集中地址譯碼、應答響應機制(非實時)、支持突發。

        總之,AHB總線適宜于發揮CPU的效率,符合高效總線設計的原則,但是其本身也有總線位寬限制(主要是指令集位寬)與SPLIT(切分)選項支持的復雜度。在筆者參與的設計中有一半以上不支持SPLIT選項以降低設計與驗證開銷,限于篇幅在此不展開闡述。主要的問題是SoC中CPU總線一般采用應答機制,也就是非實時的,數據的處理采用中斷響應機制以發揮效率。處理特定實時數據并沒有固定的延時與穩定的吞吐率,那么就需要設計一個模塊來處理實時數據到非實時總線之間的平滑過度問題。筆者以此模塊設計為例,闡述非實時總線中實時數據切換的設計理念與幾個實用技術。例子中實時數據傳遞采用TDM總線形式(Time Division Multiplexed,時分復用),我們稱此模式為TDM模塊。

        TDM模塊設計

        TDM模塊一端的界面是多路音頻信號的輸入與輸出,另一端是AHB總線,音頻數據的輸入/輸出,通常采用幀結構TDM形式(見圖1)。其中,sp_io_xclk代表音頻數據采樣時鐘,sp_io_xfs代表幀同步頭,下面兩行分別是輸出與輸入數據。可見,這是一個含幀格式的多通道時分實時數據傳輸格式。關于AMBA總線,有大量介紹資料,此處不贅述。

        在這個模塊的設計中,我們考慮了以下幾個原則:平滑匹配數據傳輸速度、低延時與低資源占用(邏輯與存儲資源)、高效使用AHB總線寬帶、提高CPU處理效率、可靠性與錯誤處理、可控性與可觀性。基本的思路是:采用FIFO(先入先出)技術暨隊列來緩沖數據傳輸,同時要盡量少緩存數據在隊列中,以滿足低延時與低資源的占用;同時采用AHB burst模式提高總線利用帶寬;,還要提供寄存器讀寫來控制傳輸參數與狀態存儲,采用AHB從控模式(Slave)。初步的設計結構如圖2。

        DMA技術的使用時機

        在這個初步設計中,緩存隊列的長度計算主要取決于AHB burst的速度與頻率。要少緩存數據,就要頻繁進行AHB傳遞,也就是頻繁中斷CPU,這降低了CPU的處理效率。

        這看起來是無解的矛盾,我們可以采用DMA(Direct Memory Access,直接存儲讀寫)技術解決。一般SoC芯片都有外接DDR/SDRAM作為終的數據與程序緩存,TDM模塊可以直接向DRAM傳輸實時數據,而不用頻繁地中斷CPU,實質上是把片內緩存的需求轉移到了片外(假設總線帶寬足夠),既降低了隊列長度又降低了中斷CPU的頻率,從而解決了這一對矛盾。

        DMA技術實質上也是模塊主動掌握總線主動權,要求采用AHB總線主控模式,終框架結構會變成圖3所示。

        延時與DMA應用的矛盾

        細心的讀者會發現DMA的采用增加了處理延時,這不是與我們的原則矛盾嗎?這里牽涉到對嵌入式CPU中音頻處理算法的理解,大多數是音頻壓縮算法,一般都要求有一定的音頻片斷長度以保障壓縮率與減少CPU中RTOS的調度開銷。另外一些音頻處理程序如回響消減DSP算法,經常采用64拍有限濾波器處理大于16ms的回響拖尾。另一些高度壓縮算法(如以有限激勵參數模型為基礎的算法)要求對更長的音頻片斷做處理。所以從算法的角度,SoC系統的音頻處理延時理論下限為多算法處理單元的值。我們只要保證DMA的傳輸數據延時小于這個下限就可以了,這樣就充分利用了SoC系統的小延時,進而計算DMA片斷的長度也有了依據。

        回到隊列長度的計算上,我們現在只需要考慮TDM模塊得到AHB總線使用權之間的間隙與TDM數據輸入的速度差的壞值就可以了。

        隊列深度=長AHB總線獲得間隔×TDM輸入速率

        AHB總線輪詢(poll)間隙取決于總線上有幾個主控模式模塊與仲裁的優先級策略。一般建議實時模塊享有較高優先級,當然隨之而來的要求是總線申請的頻度不能太高。平衡這一對矛盾的解決辦法超越本文論述的范疇,讀者可以從“固定權重加優先級競爭”的仲裁機制入手來設計AHB總線仲裁器。

        動態切換時機與影子寄存器的使用

        在實際應用中,我們常常發現幀格式中很多時分信道并沒有音頻數據,這時就要采用時分掩碼來屏蔽這些信道以阻止無效數據占用帶寬。問題是時分信通中是否有數據是動態變化的,動態變化的數據要求時分掩碼參數也要動態分配。但是怎么切換呢?這里采用“影子寄存器”技術,原理是兩套寄存器,一套參數應用于當前幀,另一套應用于下一幀。利用幀同步頭的一個時鐘周期實時切換。而SoC中的CPU只看到一套寄存器地址,同時配置行為本身放寬了實時要求的限制,實時切換由TDM模塊完成,具體圖形見圖4。

        錯誤的處理--一根救命稻草

        如大家深知,芯片設計是沒有下一次機會的,那么錯誤的處理就成為了“救命的稻草”。假設TDM模塊很久沒有得到總線的控制,出現underrun(速率過低)與overrun(速率過高)情況。要采用隊列中“high-watermark(高水線)”與“low-watermark(低水線)”技術,在隊列接近滿與空狀態發生前提前預警。預警通常反映了芯片系統中的一些設計問題與當時電壓波動、干擾、局部高溫等瞬間問題,這時預警信號通常用/次高優先級中斷發生。arm CPU本身支持高優先級中斷,而我們的隊列長度計算現在要重新計算,加上高優先級處理這一段時間,具體的響應時鐘周期,讀者請查閱相應CPU手冊,這也是評價嵌入式CPU與實時操作系統(RTOS)的一項指標。

        隊列深度=長AHB總線獲得間隔×TDM輸入速率+arm長中斷響應時間×TDM輸入速率

        本文小結

        我們在TDM模塊簡要設計中,闡述了結合各種基本技術,如從緩存隊列到DMA到影子寄存器到動態分配到watermark與利用DSP算法特性,AHB總線特性、幀同步特性以及RTOS特性解決非實時與實時交換、CPU效率與資源占用、延時與DMA配置與動態切換的矛盾,追求解決方案的過程與設計思路。

        本文并沒有給出初方案的隊列計算公式,是因為要考慮的因素過多,從另一個側面反映了它不是方案。好的設計應該是把復雜的需求簡單化、模塊化,當然實際設計中比這種簡化設計要復雜,例如還要解決實時數據傳輸中雙方時鐘不同步等問題。但讀者只要掌握了基本思路與技術,理解應用特性、CPU特性及RTOS特性與算法,就可舉一反三,做出的設計。

      免費預約試聽課

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

      
      

      1. 午夜福利波多野结衣黑人网站 | 一级加勒比视频在线观看 | 亚洲国产中字幕在线尤物视频 | 日日摸日日碰夜夜爽免费中文字幕 | 中文字幕少妇偷乱视频在线 | 欧美日韩另类国产一区二区三区 |