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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > M8051 IP軟核的改進性設(shè)計及其在視頻字符疊加器中的重應(yīng)用

          M8051 IP軟核的改進性設(shè)計及其在視頻字符疊加器中的重應(yīng)用

          ——
          作者: 時間:2006-07-03 來源: 收藏
          摘要:介紹了系統(tǒng)芯片SOC的概念和M8051 IP軟核的原理,給出了視頻字符疊加器VAD——SOC中M8051 IP軟核的作用,詳細介紹了I2C主控制器模塊的設(shè)計,給出了功能信真波形,最后對M8051 IP軟核在視頻字符疊加器中的重應(yīng)用進行了深入研究。

              關(guān)鍵詞:系統(tǒng)芯片 微控制器 M8051 IP軟核 視頻字符疊加器

          隨著集成電路制造技術(shù)的快速發(fā)展,集成電路的規(guī)模不斷擴大。這使得將復(fù)雜系統(tǒng)集成在單個芯片上成為可能,于是便出現(xiàn)了系統(tǒng)芯片SOC(System on a Chip)。傳統(tǒng)芯片設(shè)計方法關(guān)注的是如何創(chuàng)建一個全新的設(shè)計并進行有效的驗證;如今在SOC設(shè)計中,基于IP模塊的功能組裝正在逐漸替代傳統(tǒng)的功能設(shè)計而成為主流設(shè)計方法?;贗P模塊的SOC設(shè)計方法的基本思路是通過系統(tǒng)設(shè)計的應(yīng)用層次,利用現(xiàn)有的IP資源,根據(jù)系統(tǒng)需求選用適當?shù)腎P模塊,進行系統(tǒng)集成設(shè)計;基于IP模塊的SOC設(shè)計方法是采用IP模塊而不是采用基本邏輯或電路單元作為基礎(chǔ)單元,即以功能組裝代替功能設(shè)計。這就提高了設(shè)計者的設(shè)計能力。能夠較快地完成設(shè)計,保證設(shè)計成功,以極低的價格滿足市場需求。

              M8051 IP軟核是高性能的8位微控制器(MCU),它的每個機器周期只需要兩個時鐘周期而不是標準8051[1]軟核的十二個周期,但是它的功能卻與標準的8051軟核兼容。這就使得M8051 IP軟核在同樣功耗的情況下運行速度比標準的8051軟核提高六倍,也就是說,若在同樣的運行速度下,M8051 IP軟核的功耗僅僅是標準8051軟核的六分之一。這對于現(xiàn)在的便攜式數(shù)字產(chǎn)品或低功耗產(chǎn)品或低功耗產(chǎn)品來說是相當有競爭力的。

          視頻字符疊加器是一種在視頻信號中疊加入字符或簡單的圖文信息,從而在屏幕的特定位置上與圖像信號同時進行顯示的設(shè)備[2]。視頻字符疊加器VAD——SOC的結(jié)構(gòu)如圖1所示,具體包括以下幾個IP模塊:M8051 IP軟核、I2C主控制器模塊、存儲器核和全彩色字符疊加處理器(FCA IP)等。其實現(xiàn)的功能是將片外或內(nèi)置的疊加字符ROM(如E/E2PROM、雙口RAM或Flash)中儲存的字符信息轉(zhuǎn)變?yōu)榭莎B加在視頻信號上的信息,同時通過內(nèi)部時序控制功能單元,調(diào)節(jié)疊加字符在監(jiān)視器上的疊加位置、大小及其背景色和前景色等。

          本文主要介紹M8051 IP軟核的改進設(shè)計,對其進行有效的仿真和驗證;并對M8051 IP軟核在視頻字符疊加器VAD_SOC中的重應(yīng)用進行深入的研究。

          圖2

          1 M8051 IP軟核結(jié)構(gòu)及其改進性設(shè)計

          1.1 M8051 IP軟核的結(jié)構(gòu)

          M8051 IP軟核的功能結(jié)構(gòu)框圖如圖2所示,主要由五部分組成。

          (1)算術(shù)邏輯單元(ALU)部分:位算術(shù)邏輯單元、帶進位的算術(shù)邏輯單元、8位的算術(shù)邏輯單元,操作數(shù)的選擇、乘法/除法單元。

          (2)數(shù)據(jù)存儲與交換部分:內(nèi)部數(shù)據(jù)存儲器、內(nèi)部專用寄存器及其復(fù)用、專用功能寄存器的復(fù)用、核級專用功能寄存器。

          (3)狀態(tài)機與程序存儲部分:主狀態(tài)機、程序計數(shù)器、程序計數(shù)器的運算單元。

          (4)指令譯碼部分:部分指令、指令譯碼。

          (5)外圍設(shè)備部分:(I/O)端口寄存器、中斷、定時器、計數(shù)器、通用串行口。

              從圖2可以看出,M8051 IP軟核與傳統(tǒng)8051單片機在組成部分及指令系統(tǒng)部分是兼容的,但功能上有些不同,所以,若要將M8051 IP軟核集成視頻字符疊加器VAD_SOC中,則需要進行一些簡單的功能擴展和可復(fù)用設(shè)計。

          1.2 I2C主控制器的RTL級實現(xiàn)

          I2C總線是Philips公司提出的一種串行數(shù)據(jù)傳輸技術(shù),通過數(shù)據(jù)線(SDA)和時鐘線(SCL)兩個總線即可完成全雙工同步數(shù)據(jù)的發(fā)送和接收,在需要與外圍器件進行低速通信時,I2C總線是個不錯的選擇。目前8051 IP軟核是片上系統(tǒng)中用得比較多的微控制器核之一,但是其沒有集成I2C總線,應(yīng)用起來很不靈活。所以在設(shè)計片上系統(tǒng)時常常需要將I2C系統(tǒng)集成到8051 IP核中,以方便其與MCU的外圍接口連接,擴展8051 IP核的功能。由于篇幅的限制,本文只對I2C主控制器模塊進行簡單研究。I2C主控制器模塊是根據(jù)Philips公司的8xc552的I2C接口原理設(shè)計的。由于通常情況下單片機系統(tǒng)都作為主系統(tǒng)使用,一些功能是不需要的,所以圖3只是本設(shè)計用到的I2C原始的功能結(jié)構(gòu)簡化框圖。

              1.2.1 I2C主控制器的端口源代碼模式[3]

          I2C主控制器端口源代碼模式下:

          module i2c_top (slsfrdi,si,sda,scl,regresult,source_addr,

          destine_addr, sfr_write, rmw, internal_reset, pclk_en, pclk);

          output[7:0] slsfrdi;

          output scl,si;

          inout sda;

          input[7:0] regresult;

          input[7:0]source_addr;

          input[7:0]destine_addr;

          input sfrwe,rmw,internal_reset;

          input pclk,pclk_en;

          ……

          endmodule

          圖5

              1.2.2 I2C主控制器與M8051 IP軟核的接口

          I2C主控制器的數(shù)據(jù)端口(SDA)是雙向端口,利用串行數(shù)據(jù)線SDA傳輸數(shù)據(jù),所以不使用總線時必須關(guān)閉三態(tài)門的輸出控制端,即sda_oen為“0”;另一方面,數(shù)據(jù)可以通過引腳直接進入模塊內(nèi)部,但必須設(shè)置輸出控制端為“1”,即sda_oen為“1”。I2C主控制器與M8051 IP軟核的接口如圖4所示。

          1.2.3 I2C主控制器的軟件仿真與結(jié)果

          在I2C主控制器設(shè)計過程中,主要用Modelsim SE PLUS5.6、QUARTUS2.0等軟件作為前端的仿真工具并針對I2C主控制器的主接收和主發(fā)送兩個狀態(tài)機的不同激勵條件,編寫測試代碼進行測試。電路仿真時序波形圖如圖5和圖6所示。

          2 M8051 IP軟核在視頻字符疊加器VAD_SOC中的重應(yīng)用

          M8051 IP軟核在視頻字符疊加器VAD_SOC中的重應(yīng)用的結(jié)構(gòu)如圖1所示。它的主要任務(wù)是從程序存儲器中讀出指令代碼,經(jīng)編譯執(zhí)行后,向周圍的相應(yīng)模塊提供操作命令和地址、數(shù)據(jù)總線值,完成一個復(fù)雜的狀態(tài)機及對其它模塊的部分控制功能,協(xié)同其它模塊共同工作,實現(xiàn)將字庫中的字符取出放到全彩色字符疊加處理器上進行顯示。工作流程如下:

          (1)將要顯示的字符從PC機的鍵盤輸入,經(jīng)串行口RS-232的接口寫入到字庫中。

          (2)從程序存儲器中讀出指令代碼,經(jīng)編譯執(zhí)行后,向周圍的相應(yīng)模塊提供操作命令和地址、數(shù)據(jù)總線值。

          (3)繼續(xù)執(zhí)行代碼,從字庫中讀入要顯示的字節(jié)數(shù)據(jù),并將它存放在SFR(專用寄存器)中。

          (4)繼續(xù)執(zhí)行代碼,將專用寄存器中的數(shù)據(jù)傳送到雙口RAM中進行緩存。

          (5)通過對控制模塊的控制,實現(xiàn)數(shù)據(jù)讀取、地址生成,并按時空拓撲劃分的形式進行行、列地址及數(shù)據(jù)信號的選擇。

          圖6

              (6)最后,將選擇出的信號通過三通接口加到視頻信號中進行顯示。

          基于以上考慮,本系統(tǒng)中M8051 IP核具有一定的專用性,是針對具體的VAD_SOC系統(tǒng)而設(shè)計的,因此不需完全拘泥于標準的MCU的所有特點,只需設(shè)計出滿足VAD_SOC系統(tǒng)要求的嵌入式M8051 IP核即可。

          2.1 視頻字符疊加器VAD_SOC的設(shè)計及功能仿真

          2.1.1 設(shè)計流程

          第一步:生成VAD_SOC頂層初始網(wǎng)表。在四個模塊開發(fā)之后,只需開發(fā)用于集成的網(wǎng)表,即可用于模塊之間的連接。

          第二步:處理VAD_SOC頂層中四個模塊的時序預(yù)算,此時每個模塊建立一個“黑盒”時序模型。

          第三步:改進VAD_SOC頂層布線,在模塊實現(xiàn)的同時解決頂層的信號完整性問題。此外,還要考慮前兩步中不需涉及的電源問題,其中包括模擬模塊和I/O模塊問題。同時模塊層的實現(xiàn)也在此步進行,通過采用物理綜合方法來確保模塊層的時序收斂。VAD_SOC頂層設(shè)計和四個模塊實現(xiàn)之間是同步進行的。

          圖7

              第四步:用模塊的實際尺寸修改VAD_SOC頂層描述,這一步需用Aristo的IC Wizard處理,大約需要2~3小時。

          2.1.2 視頻字符疊加器VAD_SOC的仿真波形

          視頻字符疊加器VAD_SOC的功能仿真是在NC_Verilog下進行的,圖7顯示了兩個場同步周期的字符疊加信號的仿真波形圖。

          建立在IP模塊功能組裝基礎(chǔ)上的片上系統(tǒng)設(shè)計,使設(shè)計方法從電路設(shè)計轉(zhuǎn)向系統(tǒng)設(shè)計,設(shè)計重心從邏輯綜合、門級布局布線、后模擬轉(zhuǎn)向系統(tǒng)級模擬、軟硬件聯(lián)合仿真、以及若干個IP模塊組合在一起的物理設(shè)計。為了對各模塊特別是IP模塊進行有效的測試,還必須在模塊中加入可測性設(shè)計;同時,在驗證方法上要采用數(shù)字電路和模擬電路在一起的混合信號驗證、軟硬件協(xié)同驗證以及并行驗證等多種方法。經(jīng)過試驗可知,M8051 IP核在視頻字符疊加器VAD_SOC中實現(xiàn)了所需的基本功能,并且仿真主頻率可以達到33MHz。




          關(guān)鍵詞: 消費電子 消費電子

          評論


          相關(guān)推薦

          技術(shù)專區(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); })();