<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于MIPS內(nèi)核的HDTV-SoC平臺(tái)總線(xiàn)接口模塊

          基于MIPS內(nèi)核的HDTV-SoC平臺(tái)總線(xiàn)接口模塊

          作者:上海交通大學(xué)芯片與系統(tǒng)研究中心 周波 孫軍 時(shí)間:2008-05-29 來(lái)源:計(jì)算機(jī)工程 收藏

                  在系統(tǒng)級(jí)芯片()的設(shè)計(jì)當(dāng)中,的RISC處理器是一種應(yīng)用非常廣泛的,它具有高性能、低功耗的特點(diǎn),可以很方便地集成到一個(gè)完整的片上系統(tǒng)之中,使開(kāi)發(fā)者能夠?qū)W⒂谟脩?hù)IP模塊的設(shè)計(jì)。架構(gòu)的處理器占據(jù)了數(shù)字機(jī)頂盒微處理器和解碼器用CPU架構(gòu)市場(chǎng)領(lǐng)域的領(lǐng)先地位。在家族的產(chǎn)品當(dāng)中,32位的4KcTM處理器是具有代表性的一款,它采用了MIPS32的CPU架構(gòu),支持MIPS IITM指令集。在本文介紹的系統(tǒng)設(shè)計(jì)中,就采用了MIPS32TM4KcTM處理器作為芯片的CPU內(nèi)核。

          本文引用地址:http://www.ex-cimer.com/article/83289.htm

            在當(dāng)前的數(shù)字消費(fèi)電子市場(chǎng)領(lǐng)域,基于平臺(tái)的HDTV芯片是所有數(shù)字電視接收及播放設(shè)備的核心器件。SoC芯片具體到HDTV解碼系統(tǒng),就是把MPEG-2解復(fù)用(DeMux)、音視頻解碼(AVD)、視頻格式轉(zhuǎn)換(VTP)、畫(huà)面后處理(OSD)以及接口I/O控制等功能模塊都集成在一塊芯片上。而要把眾多功能復(fù)雜的系統(tǒng)控制模塊和用戶(hù)IP模塊集成到一個(gè)芯片上并使其能夠協(xié)調(diào)工作,就必須設(shè)計(jì)好各個(gè)模塊之間的接口。本文針對(duì)高清數(shù)字電視SoC平臺(tái)的項(xiàng)目,提出了系統(tǒng)(Host Bus Inter Face,HIF)的設(shè)計(jì)方案,并進(jìn)行了仿真實(shí)驗(yàn)。

            HIF模塊在系統(tǒng)中的主要功能

            HDTV-SoC平臺(tái)是一個(gè)功能強(qiáng)大、結(jié)構(gòu)復(fù)雜的系統(tǒng),本文重點(diǎn)介紹了SoC架構(gòu)中片上總線(xiàn)控制器的設(shè)計(jì)。片上總線(xiàn)能夠提供針對(duì)特定應(yīng)用的靈活多樣的集成方法,它需要結(jié)構(gòu)簡(jiǎn)單,速度快捷,在單芯片中實(shí)現(xiàn)多資源互聯(lián)。HDTV-SoC系統(tǒng)的總線(xiàn)結(jié)構(gòu)如圖1所示。它分為3個(gè)層次,即與MIPS處理器接口的Ec總線(xiàn)(EcInterface)、系統(tǒng)總線(xiàn)和外圍總線(xiàn)。由圖1可見(jiàn),HIF模塊在系統(tǒng)中所處的位置是十分關(guān)鍵的,它是系統(tǒng)總線(xiàn)(Host Bus)和各個(gè)IP模塊以及周邊I/O模塊之間的接口單元,即系統(tǒng)總線(xiàn)和外圍總線(xiàn)之間的橋梁,在系統(tǒng)中起著“承前啟后”的作用,是CPU和外部模塊之間數(shù)據(jù)交換的重要通道。具體而言,HIF模塊主要完成3大功能,分別為外部模塊W/R寄存器的設(shè)置和狀態(tài)寄存器的讀取、外部模塊雙口RAM的讀寫(xiě)控制、外部模塊中斷的控制和管理。

            圖1  HDTV-SoC系統(tǒng)框圖

            電路功能模塊設(shè)計(jì)

            由上文所述可知,HIF電路設(shè)計(jì)主要分為3個(gè)模塊:寄存器讀寫(xiě)模塊,雙口RAM讀寫(xiě)模塊和中斷處理模塊。

            寄存器讀寫(xiě)模塊

            CPU和外部模塊之間進(jìn)行數(shù)據(jù)交互的一個(gè)重要方式就是通過(guò)寄存器的讀寫(xiě),實(shí)現(xiàn)對(duì)外部模塊功能的控制和初始化。系統(tǒng)總線(xiàn)按照規(guī)定的時(shí)序讀寫(xiě)HIF模塊內(nèi)部的寄存器資源,這些寄存器的每個(gè)比特位以連線(xiàn)的方式直接與外部模塊互連。HIF模塊在接收到系統(tǒng)總線(xiàn)過(guò)來(lái)的地址和數(shù)據(jù)之后,首先進(jìn)行地址譯碼,選擇相應(yīng)的寄存器,再將數(shù)據(jù)寫(xiě)入。圖2為該模塊的邏輯框圖。

           

            圖2  寄存器讀寫(xiě)模塊框圖

            MIPS的4Kc處理器支持猝發(fā)(burst)操作,所謂猝發(fā)操作是指在給出首地址之后,可以連續(xù)進(jìn)行多個(gè)讀寫(xiě)操作,而無(wú)須再給出每次操作的相應(yīng)地址。在總線(xiàn)上,一個(gè)猝發(fā)指令與單個(gè)操作指令一樣,只占用一個(gè)時(shí)鐘周期。HIF模塊在處理猝發(fā)操作時(shí),將一個(gè)猝發(fā)指令轉(zhuǎn)換為4個(gè)單周期指令,在轉(zhuǎn)換之后,要保證從總線(xiàn)上過(guò)來(lái)的寫(xiě)數(shù)據(jù)與其相應(yīng)的指令同步。這樣在猝發(fā)操作時(shí),從寄存器組的角度看到的寫(xiě)數(shù)據(jù)與指令是同時(shí)發(fā)生的,盡管實(shí)際情況并不是這樣。而要實(shí)現(xiàn)這種猝發(fā)操作,就必須引入一種FIFO機(jī)制。FIFO的深度為4,這與4Kc處理器所支持的猝發(fā)長(zhǎng)度是一致的。在系統(tǒng)復(fù)位之后FIFO清空,可以隨時(shí)接收總線(xiàn)上的猝發(fā)數(shù)據(jù)。在系統(tǒng)正常工作時(shí),F(xiàn)IFO模塊分別通過(guò)“in”和“out”指針來(lái)指示輸入和輸出的數(shù)據(jù),以跟蹤FIFO的使用情況。FIFO還需要用到一個(gè)“bypass”信號(hào)來(lái)確定是否旁路該模塊,這發(fā)生在單個(gè)指令操作的情況下(bypass=‘1’),這時(shí)數(shù)據(jù)是繞過(guò)FIFO而直接通向寄存器的。FIFO機(jī)制的邏輯框圖見(jiàn)圖3。

            圖3  FIFO機(jī)制邏輯框圖

            雙口RAM讀寫(xiě)模塊

            在與系統(tǒng)總線(xiàn)的接口邏輯方面,RAM讀寫(xiě)模塊與寄存器讀寫(xiě)模塊是類(lèi)似的,這里不再贅述。不同之處在于與外部模塊的接口邏輯,寄存器讀寫(xiě)模塊是采用直接連線(xiàn)的方式,而RAM讀寫(xiě)模塊則必須滿(mǎn)足相應(yīng)的雙口RAM的接口時(shí)序。在本設(shè)計(jì)中,選用了SMIC的0.18µm庫(kù)的雙口RAM單元作為模型。該模型的接口時(shí)序如圖4所示,包括了讀時(shí)序和寫(xiě)時(shí)序兩種情況。

            圖4  雙口RAM接口時(shí)序圖

           


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();