<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ò) 收藏

            設(shè)置Modem為FSK模式:

          void Modem_SetMode_FSK() {
          MODEM_CTRL = modem_ctrl_mirror (~MODEM_B0_MODE);
          modem_ctrl_mirror = modem_ctrl_mirror (~MODEM_B0_MODE);
          }

            在初始化程序中對(duì)這些“只寫(xiě)”寄存器及其鏡像全局變量進(jìn)行賦值。

          void DevicesInit() {
          MODEM_CTRL = MODEM_CTRL_INI;
          modem_ctrl_mirror = MODEM_CTRL_INI;
          }

          3.3 存儲(chǔ)空間的劃分和映射

            在物理上,把8KB的片內(nèi)RAM分為兩部分,0000H~1BFFH(共7 KB)映射到數(shù)據(jù)空間,1C00H~1FFFH(共1 KB)映射到程序空間,并覆蓋Flash中程序空間的1C00H~1FFFH區(qū)域;把512 KB的Flash存儲(chǔ)器也分成兩部分,00000H~0FFFFH(共64 KB)映射到程序空間,剩下的10000H~7FFFFH(共448 KB)都映射到數(shù)據(jù)空間。

            對(duì)微控制器核來(lái)說(shuō),可以尋址64 KB的程序空間和64 KB的數(shù)據(jù)存儲(chǔ)空間。對(duì)整個(gè)SoC而言,因?yàn)镕lash中的程序空間有1 KB被RAM程序空間覆蓋掉,所以邏輯上它的程序空間依然是64 KB,但數(shù)據(jù)空間變?yōu)? KB+448 KB,共455 KB。微控制器核通過(guò)擴(kuò)展的SFR寄存器FLASH_PAGE按32 KB×16頁(yè)的頁(yè)面方式訪問(wèn)Flash存儲(chǔ)器,其中包括程序空間和數(shù)據(jù)空間,如圖3所示。

          按此在新窗口瀏覽圖片
          圖3 程序空間和數(shù)據(jù)空間的劃分和映射

            在對(duì)Flash存儲(chǔ)器件進(jìn)行寫(xiě)操作后的某一段時(shí)間內(nèi)(從幾十μs~幾百μs),對(duì)它進(jìn)行讀操作是不能讀出一個(gè)確切值的,這是Flash存儲(chǔ)器件的一個(gè)特性。本設(shè)計(jì)中程序和數(shù)據(jù)存放在同一個(gè)AM29LV040 Flash存儲(chǔ)器中。在對(duì)Flash存儲(chǔ)器進(jìn)行寫(xiě)操作時(shí),要不斷地從其中讀出進(jìn)行寫(xiě)操作的程序指令,然后對(duì)它本身進(jìn)行寫(xiě)操作。微控制器核在20 MHz的時(shí)鐘頻率下,指令周期大約是200 ns,即每隔200 ns左右,SoC就要從Flash存儲(chǔ)器中讀取一條指令。這顯然和上述的Flash存儲(chǔ)器特性發(fā)生了沖突。

            通過(guò)對(duì)編譯環(huán)境的設(shè)定,可以把進(jìn)行寫(xiě)Flash操作的函數(shù)unsigned char WriteData_FLASH (unsigned char * dest, unsigned char *scr, unsigned int len) 和Flash扇區(qū)擦除函數(shù)unsigned char EraseSector_FLASH (unsigned char sector_index)定位到程序空間的1C00H~1FFFH,并備份到數(shù)據(jù)空間的0EC00H~0EFFFH。在應(yīng)用程序的設(shè)備初始化函數(shù)void DevicesInit()中,調(diào)用加載函數(shù)void LoadFLASHOpToRAM(),把對(duì)Flash進(jìn)行寫(xiě)或者擦除操作的這1KB的程序代碼從Flash加載到RAM的程序空間。以后凡是涉及到對(duì)Flash的寫(xiě)或者擦除操作,都由硬件邏輯切換總線到RAM去執(zhí)行這一段程序代碼。這樣,以不大的RAM開(kāi)銷(xiāo),解決了不能同時(shí)對(duì)Flash進(jìn)行讀和寫(xiě)操作的矛盾。函數(shù)void LoadFLASHOpToRAM()的代碼如下:

          #define PROG_RAM_DATA0xEC00
          #define PROG_RAM_DATA_PAGE9
          static unsigned char xdata RAM_prog[1024] _at_ 0x1C00;
          void LoadFLASHOpToRAM(){
          unsigned char xdata * p;
          FLASH_PAGE = PROG_RAM_DATA_PAGE;
          p = (unsigned char xdata *)PROG_RAM_DATA;
          memcpy(RAM_prog,p,1024);
          }

          4 總結(jié)

            本文詳細(xì)講述了在基于微控制器IP核PSTN短消息終端SoC設(shè)計(jì)中軟硬件協(xié)同設(shè)計(jì)的方法。在合理劃分硬件和軟件任務(wù)的基礎(chǔ)上,使設(shè)計(jì)更好地達(dá)到了系統(tǒng)性能的要求。現(xiàn)在SoC已經(jīng)在Xilinx VirtexII 2v1000 驗(yàn)證平臺(tái)上順利運(yùn)行,并成功進(jìn)行了和服務(wù)器的互聯(lián)互通測(cè)試。


          上一頁(yè) 1 2 3 下一頁(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); })();