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

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 基于IP核的PSTN短消息終端SoC軟硬件協(xié)同設(shè)計(jì)

          基于IP核的PSTN短消息終端SoC軟硬件協(xié)同設(shè)計(jì)

          作者: 時(shí)間:2010-11-25 來(lái)源:網(wǎng)絡(luò) 收藏

            SoC中的FSK/DTMF調(diào)制解調(diào)器、、、擴(kuò)展頁(yè)面尋址以及線路狀態(tài)控制等,都作為片內(nèi)外設(shè)連接在DW8051_core所特有的SFR內(nèi)部總線上。8 KB的片上RAM和片外512 KB的Flash存儲(chǔ)器AM29LV040都連接在DW8051_core的MEM總線上,如圖1所示。

          按此在新窗口瀏覽圖片
          圖1 經(jīng)過(guò)擴(kuò)展的DW8051_core SFR總線以及SoC系統(tǒng)結(jié)構(gòu)

          3.2 外設(shè)在SFR總線上的地址映射

            DW8051_core通過(guò)SFR地址總線sfr_addr[0:7],SFR讀信號(hào)sfr_rd,SFR寫信號(hào)sfr_wr,SFR數(shù)據(jù)輸出總線sfr_data_out[0:7],數(shù)據(jù)輸入總線sfr_data_in[0:7]來(lái)訪問(wèn)映射到SFR總線上的片上外設(shè)。每一個(gè)外設(shè)都通過(guò)SFR地址映射成SFR總線上的一個(gè)寄存器,如圖2所示。

            對(duì)這些擴(kuò)展SFR寄存器的訪問(wèn)和對(duì)普通寄存器的訪問(wèn)在形式上并沒(méi)有區(qū)別。當(dāng)應(yīng)用程序使用Keil的C51編譯器時(shí),修改reg51.h文件可以讓編譯器確認(rèn)用戶所擴(kuò)展的SFR寄存器。對(duì)擴(kuò)展SFR外設(shè)地址的分配可以根據(jù)設(shè)計(jì)需要而不同,但是只能使用DW8051_core沒(méi)有保留和占用的地址,否則會(huì)發(fā)生沖突。在reg51.h文件中添加以下語(yǔ)句讓編譯器確認(rèn)擴(kuò)展的寄存器:

            sfr SEND_MODEM_DATA = 0xf1;/* 擴(kuò)展,發(fā)送Modem數(shù)據(jù),只寫 */
          sfr READ_FSK_DECODE = 0xf1;/* 擴(kuò)展,讀FSK解調(diào)數(shù)據(jù),只讀 */
          sfr READ_DTMF_DECODE = 0xf2;/* 擴(kuò)展,讀DTMF解調(diào)數(shù)據(jù),只讀 */
          sfr MODEM_STATUS = 0xf3;/* 擴(kuò)展,Modem狀態(tài),只讀 */
          sfr MODEM_CTRL = 0xf2;/* 擴(kuò)展,Modem控制,只寫 */
          sfr KEYPAD_VALUE = 0xf4;/* 擴(kuò)展,讀鍵盤值,只讀 */
          sfr FLASH_PAGE = 0xf5; /* 擴(kuò)展,頁(yè)面尋址,只寫 */
          sfr _DATA = 0xf6; /* 擴(kuò)展,數(shù)據(jù),讀寫 */
          sfr LCD_CTRL = 0xf7; /* 擴(kuò)展,LCD控制,只寫 */
          sfr CIRCUIT_STATUS = 0xff; /* 擴(kuò)展,線路狀態(tài),只讀 */
          sfr CIRCUIT_CTRL = 0xff; /* 擴(kuò)展,線路控制,只寫 */

            為了節(jié)約SFR總線地址資源,一些擴(kuò)展的SFR寄存器在硬件上設(shè)計(jì)為只能寫、不可讀,另外一些被設(shè)計(jì)為只能讀、不可寫。這樣,二者可以復(fù)用同一個(gè)SFR總線地址,比如MODEM_CTRL和READ_DTMF_DECODE寄存器;但是這樣在需要先將那些“只寫”寄存器的內(nèi)容讀出,運(yùn)算后再進(jìn)行寫回操作的時(shí)候就很不方便。這里采用了鏡像變量的方法,為每一個(gè)“只寫”寄存器建立一個(gè)全局變量,每次寫寄存器操作后,都對(duì)這個(gè)全局變量進(jìn)行同樣的寫操作,時(shí)刻保持變量值和寄存器的內(nèi)容一致,在需要讀出的時(shí)候就使用此全局變量。MODEM_CTRL寄存器的bit0控制Modem是DTMF還是FSK模式。下面以對(duì)這一位的操作為例說(shuō)明。

            建立它的鏡像全局變量:

            unsigned char xdata modem_ctrl_mirror;

            定義控制位:

            #define MODEM_B0_MODE0x01// 1-DTMF, 0-FSK

          按此在新窗口瀏覽圖片
          圖2 片上外設(shè)在SFR總線上的物理連接



          評(píng)論


          相關(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); })();