新聞中心

        EEPW首頁 > 元件/連接器 > 設計應用 > μPSD中存儲器系統的配置(圖)

        μPSD中存儲器系統的配置(圖)

        ——
        作者:空軍雷達學院科研部(430019) 孫樹印 時間:2007-02-06 來源: 收藏

          介紹μpsd的系統內部結構和配置方法,討論了相關psdsoft軟件的使用方法。

        背景

          如果對st公司的μpsd器件有一定了解,熟悉mcs-51系列單片機的內部結構及原理,使用過psdsoft express和keil開發設計,將對理解本文有很大的幫助。

          mcs-51單片機采用哈佛結構的系統結構,即數據空間與程序空間互相獨立。它有16根地址總線,最大尋址能力為64k,這決定程序或數據空間不能超過64k。以上兩點是本文所有討論的前提基礎。

        μpsd的存儲器系統結構
          μpsd由標準8032核和st公司的psd(可編程系統器件)構成,存儲器系統包含兩個主要部分,一是8032的內部存儲器資源:256b內部ram和128b內部特殊功能寄存器sfr;二是psd中的存儲器模塊:主/次flash存儲器,擴展的sram及控制psd的csiop(chip-select i/o port,類似于8051的sfr)。μpsd的主/次flash是完全相同的存儲介質(早期的psd813f1中的次存儲器是eeprom結構的),是兩個獨立的存儲器。主flash通常分4~8塊,每塊16~32kb;次flash通常分2~4塊,一般每塊為8kb。μpsd中使用譯碼可編程譯碼邏輯陣列(dpld),頁寄存器page,存儲器控制寄存器vm,聯合實現對存儲器系統的配置。

        關于iap和分頁技術
          為什么μpsd中要有兩個flash?簡單地說,這是為了實現iap而設計的。iap就是 “在應用中編程或升級代碼”,其原理是:單片機中裝有一套用戶程序和一套代碼更新程序。正常情況下,單片機運行的是用戶程序;在需要程序升級時,系統會切換到代碼更新程序,通過串口或其他通信口下載新的用戶程序代碼,并寫入到原來的用戶程序存儲器中,更新完成后,再切換回至用戶程序。基于mcs-51系統結構特點,在同一個存儲器中運行主程序和改寫程序是不可能實現的。所有用mcs-51來實現iap功能的系統都必須有兩個獨立的存儲器。實現iap的難點在于存儲器的切換控制,體現在μpsd中主要就是如何使用vm寄存器以及如何對存儲器的片選控制。

          此外,隨著應用要求越來越高,代碼長度不斷增加,64k的限制已經成為設計中的瓶頸。許多軟/硬件供應商都竭力推出自己的方案以實現mcs-51對大于64k的支持,分頁技術應運而生。

          分頁設計中最重要的就是公共區和分頁區的設置,所謂公共區就是在所有的頁面中均為有效的一塊存儲器區。在程序空間中,64k范圍(1頁)內的程序是連續的,一旦超過此范圍,只保留低16位,最高位將被丟棄,程序會跳回開始處運行。保證程序在頁面切換時不會“跑飛”就是通過公共區實現的。分頁技術的實現方法是:當程序在調用位于分頁區的程序時,首先保存返回地址,然后轉跳到公共區執行,再修改頁寄存器到新的頁號實現頁面的切換,調用程序,返回到公共區,恢復原來頁號,最后從保存的返回地址返回。

          公共區的大小由用戶自行設定,在μpsd中通常使用主/次flash中的一塊或多塊作為公共區,如使用1塊次flash即8kb,2塊次flsah即16kb,1塊主flash則是32kb,若只想使用主flash中的20kb作公共區也是可行的,只要將主flash的地址范圍只定義為20k的范圍就可以了。當然,公共區的大小不能超過64k。公共區必須設在64k范圍的低端,這是因為mcs-51中斷入口地址的原因。公共區中保存所有的公用子程序,中斷服務程序,全局常數表以及系統的初始化部分及頁面切換程序。

        μpsd存儲器的空間配置
          μpsd中存儲器系統配置主要是對程序空間的設置,相對而言數據空間的配置稍微簡單一點。μpsd中主/次flash可設置為程序或數據空間,這是由vm寄存器決定的,vm寄存器的作用如表1所示。vm的內容可在運行時由mcu進行修改,這是實現iap的關鍵。在psdsoft軟件流程中可設置主/次flash為程序、數據存儲器或程序/數據混合存儲器,實際上就是對vm寄存器上電時的默認值進行設置,換句話說,就是確定上電時主/次flash分別位于什么空間。

                                   表1  vm寄存器各位作用

          表中,“#rd可以/不能訪問”是指此存儲器是否位于數據空間,“#psen可以/不能訪問”是指此存儲器是否位于數據空間,因為在mcs-51系統中對外部數據/程序空間的訪問就是通過#rd和#psen進行區分的。舉例說明:

          vm=0ch,表示主flash位于程序空間,次flash位于數據空間;

          vm=16h,表示主flash位于數據和程序空間,次flash位于程序間。

          位0用來指定sram是否位于程序空間,因為sram只在數據空間有效。位7用來指示外設io模式的允許與禁止,具體將在后面介紹。圖1可幫助對vm寄存器作用的理解。

        圖1 μpsd中存儲器系統結構

          如圖1所示,vm位0~4與#rd、#psen聯合實現對主/次flash及sram的選擇。這里是通過輸出允許#oe信號進行控制的,也就是說即使存儲器的地址有效(cs有效),如果#oe無效,也不能訪問到此存儲器的內容。主/次flash的#oe有兩個有效輸入項,由vm位3/4控制#rd是否起作用,vm的1/2位來控制#psen是否起作用。在vm的各位確定后,可依圖1畫出簡化的配置結構。這里的#oe信號是對主/次flash的每一塊同時有效的。

          在實現iap時,通過vm來實現對主/次flash的空間進行換,例如,主flash作用戶程序,次flash用作升級程序;正常工作時,主flash作程序空間,運行用戶代碼,在進行程序升級時,將次flash切換作程序空間,并運行次flash中的升級程序,再把主flash換到數據空間,對主flash中的用戶代碼進行更新。

        μpsd存儲器的地址配置
          μpsd中對存儲器地址分配需遵守以下規則:
          規則1.主/次flash塊fs0~fs7,csboot0~csboot3的地址范圍不能大于其物理尺寸;

          規則2.主flash塊fs0~fs7之間地址不能重疊;

          規則3.次flash塊csboot0~csboot3之間地址不能重疊;

          規則4.sram、i/o、外設i/o地址不能重疊;

          規則5.主flash,次flash和sram,i/o,外設i/o,若地址重疊,存儲器有效優先級為sram、i/o、外設i/o最高,次flash次之,主flash最低。

          在psdsoft設計中,若違反規則2、3、4會出現錯誤,必須修改才能進行下一步;而違反規則1只會發出警告,如果忽略一定要小心。規則5屬于解釋型規則,不會提出任何提示,注意地址重疊情況下優先級低的存儲器不能被訪問。

          μpsd中通過dpld對每個存儲器的地址進行分配,dpld的結構如圖2所示。

        圖2 dpld的結構

          dpld包括“與”陣列和“或”陣列,“與”陣中有輸入項共57項,“或”陣中有輸出項共16項。輸入項表示可參于地址譯碼的信號,輸出項即每個存儲器的cs信號。

          dpld的輸入項中最常用的是a0~a15,頁寄存器pgr0~pgr7,#rd、#psen、#wr、ale。pdn是在功率管理時使用,如果在地址中加入pdn,表示只有在電源有效時地址譯碼才有效,通常這項是自動加入的,使用者可不用管。

          dpld的輸入項和輸出項不是必須全部配置的。在對μpsd的存儲器進行地址配置時,一個最重要的原則是“不超過64kb就不要分頁,沒有使用到的塊就不必配置”。對于小的項目中沒有使用到所有存儲器,不用去配置,這樣既簡單,減少出錯,又方便調試和檢查。除csiop是必須配置的外,其他項均可根據需要進行配置。

          psel由外設i/o模式控制,在pio模式下,pa口的所有i/o被設置為三態、雙向mcu數據緩沖器方式,與mcu的p0口有些類似。dpld中必須聲明psel0和/或psel1的有效地址范圍,在訪問此地址時,pa口進入pio方式。前面所述的vm寄存器中第7位是pio模式允許/禁止控制,pio模式的內部控制結構如圖3所示。為避免psel0和psel1所指定的范圍在程序/數據空間都有效,應在psel0和psel1中加入“!#psen”信號,以保證pio模式僅在訪問數據空間時有效。

        圖3 pio模式內部控制結構

        使用psdsoft對μpsd進行配置和編程
          μpsd中page是一個8位寄存器,最多可實現256個頁面,page寄存器與地址范圍的配置是同時起作用的。如果你的系統中不論是程序還是數據存儲器的設計超出了64k,必須要分頁。   μpsd的page寄存器的8位可以獨立使用,在psdsoft中可定義為兩種方式,即paging和logic。paging就是作為分頁使用,logic是作為一般邏輯輸入功能,類似于pld中的節點node,或者cpld中的宏macro。作為paging時,必須從最低位開始,使用n位作為paging,可實現2n個頁面的分配,即存儲器的地址配置中有2n個頁面可選擇。使用作為logig時必須從高位開始使用,可以為之定義一個名字,可用作dpld的輸入項。mcu在運行時可以對page的進行讀/寫操作,但是不能按位操作,也就是說必須先屏蔽再修改。

          在程序和數據均不超過64k時,不必分頁,pgr0~pgr7不參加譯碼。現在的psdsoft軟件中不要求用戶再寫地址方程式,只需要填寫地址范圍可以了。不使用分頁時,片選的pgae number就不能填任何值,如果填“0”則表示位于頁0。在psdsoft中對公共區的設置方法很簡單,只要不填作為公共區的存儲器的片選中的“page numbe”就可以了。

        μpsd存儲器配置實例
           作為本文的結束,舉一個典型的 μpsd應用實例,讀者可參考其存儲器的配置方案。

           使用μpsd3234a-40u6器件,將fs0~fs7用作程序/數據存儲器,地址在8000h~0ffffh,分別位于頁0至頁7;csboot0~csboot3作為程序存儲器,作為公共區,地址是0000h~7ffffh。擴展sram位于0000h~1fffh,csiop位于7f00h~7fffh,用戶i/o空間定義為7e00h~7effh。

          這樣的存儲器配置能夠滿足大多數分頁項目的設計要求,使用了μpsd的所有存儲器,不僅最大化了程序空間和數據空間,也能實現iap功能。此方案中程序空間可達256k+32k,數據空間是256k(flash)+8k(sram)。用戶可根據實際應用項目對配置進行簡單修改,去掉沒有使用的存儲器配置。

          如果用戶項目中要求實現iap或者對主flash數據存儲器進行擦除/修改,請一定要注意,升級代碼或對flash進行擦除/修改操作的程序必須放于公共區,即次flash中。

        參考文獻
        1 st 公司. data sheet of upsd3234a—
         flash programmable system devices with 8032
         microcontroller core and 64 kbit sram,2004
        2 st公司. an1816—configuring the keil
         compiler and psdsoft to handle multi-paged
         memory in μpsd application software,2004
        3 st公司.  um0050——psdsoft express
         design software tool for psd and upsd
         families,2004



        關鍵詞: 存儲器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 长葛市| 昂仁县| 固镇县| 西乌| 黔西| 丽江市| 县级市| 涟源市| 西宁市| 林甸县| 巨野县| 普兰店市| 咸宁市| 安阳市| 郑州市| 延寿县| 永春县| 山东| 龙陵县| 汝南县| 西乌珠穆沁旗| 余姚市| 邢台市| 桑植县| 多伦县| 昆明市| 磐安县| 留坝县| 繁昌县| 雷波县| 互助| 南昌市| 靖边县| 隆化县| 驻马店市| 石屏县| 定边县| 改则县| 蒲城县| 会理县| 格尔木市|