<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

μPSD中存儲器系統的配置

——
作者:空軍雷達學(xué)院科研部(430019) 孫樹(shù)印 時(shí)間:2006-11-17 來(lái)源:今日電子 收藏
介紹μPSD的系統內部結構和配置方法,討論了相關(guān)PSDSOFT軟件的使用方法。

背景

如果對ST公司的μPSD器件有一定了解,熟悉MCS-51系列單片機的內部結構及原理,使用過(guò)PSDSOFT EXPRESS和KEIL開(kāi)發(fā)設計,將對理解本文有很大的幫助。

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

μPSD的存儲器系統結構

μPSD由標準8032核和ST公司的PSD(可編程系統器件)構成,存儲器系統包含兩個(gè)主要部分,一是8032的內部存儲器資源:256B內部RAM和128B內部特殊功能寄存器SFR;二是PSD中的存儲器模塊:主/次FLASH存儲器,擴展的SRAM及控制PSD的CSIOP(Chip-Select I/O Port,類(lèi)似于8051的SFR)。μPSD的主/次FLASH是完全相同的存儲介質(zhì)(早期的PSD813F1中的次存儲器是EEPROM結構的),是兩個(gè)獨立的存儲器。主FLASH通常分4~8塊,每塊16~32kb;次FLASH通常分2~4塊,一般每塊為8kb。使用譯碼可編程譯碼邏輯陣列(DPLD),頁(yè)寄存器PAGE,存儲器控制寄存器VM,聯(lián)合實(shí)現對存儲器系統的配置。

關(guān)于IAP和分頁(yè)技術(shù)

為什么要有兩個(gè)FLASH?簡(jiǎn)單地說(shuō),這是為了實(shí)現IAP而設計的。IAP就是 “在應用中編程或升級代碼”,其原理是:?jiǎn)纹瑱C中裝有一套用戶(hù)程序和一套代碼更新程序。正常情況下,單片機運行的是用戶(hù)程序;在需要程序升級時(shí),系統會(huì )切換到代碼更新程序,通過(guò)串口或其他通信口下載新的用戶(hù)程序代碼,并寫(xiě)入到原來(lái)的用戶(hù)程序存儲器中,更新完成后,再切換回至用戶(hù)程序?;贛CS-51系統結構特點(diǎn),在同一個(gè)存儲器中運行主程序和改寫(xiě)程序是不可能實(shí)現的。所有用MCS-51來(lái)實(shí)現IAP功能的系統都必須有兩個(gè)獨立的存儲器。實(shí)現IAP的難點(diǎn)在于存儲器的切換控制,體現在主要就是如何使用VM寄存器以及如何對存儲器的片選控制。

此外,隨著(zhù)應用要求越來(lái)越高,代碼長(cháng)度不斷增加,64K的限制已經(jīng)成為設計中的瓶頸。許多軟/硬件供應商都竭力推出自己的方案以實(shí)現MCS-51對大于64K的支持,分頁(yè)技術(shù)應運而生。

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

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

μPSD存儲器的空間配置

μPSD中存儲器系統配置主要是對程序空間的設置,相對而言數據空間的配置稍微簡(jiǎn)單一點(diǎn)。μPSD中主/次FLASH可設置為程序或數據空間,這是由VM寄存器決定的,VM寄存器的作用如表1所示。VM的內容可在運行時(shí)由MCU進(jìn)行修改,這是實(shí)現IAP的關(guān)鍵。在PSDSOFT軟件流程中可設置主/次FLASH為程序、數據存儲器或程序/數據混合存儲器,實(shí)際上就是對VM寄存器上電時(shí)的默認值進(jìn)行設置,換句話(huà)說(shuō),就是確定上電時(shí)主/次FLASH分別位于什么空間。

                           表1  VM寄存器各位作用

表中,“#RD可以/不能訪(fǎng)問(wèn)”是指此存儲器是否位于數據空間,“#PSEN可以/不能訪(fǎng)問(wèn)”是指此存儲器是否位于數據空間,因為在MCS-51系統中對外部數據/程序空間的訪(fǎng)問(wèn)就是通過(guò)#RD和#PSEN進(jìn)行區分的。舉例說(shuō)明:

VM=0CH,表示主FLASH位于程序空間,次FLASH位于數據空間;

VM=16H,表示主FLASH位于數據和程序空間,次FLASH位于程序間。

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

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

如圖1所示,VM位0~4與#RD、#PSEN聯(lián)合實(shí)現對主/次FLASH及SRAM的選擇。這里是通過(guò)輸出允許#OE信號進(jìn)行控制的,也就是說(shuō)即使存儲器的地址有效(CS有效),如果#OE無(wú)效,也不能訪(fǎng)問(wèn)到此存儲器的內容。主/次FLASH的#OE有兩個(gè)有效輸入項,由VM位3/4控制#RD是否起作用,VM的1/2位來(lái)控制#PSEN是否起作用。在VM的各位確定后,可依圖1畫(huà)出簡(jiǎn)化的配置結構。這里的#OE信號是對主/次FLASH的每一塊同時(shí)有效的。

在實(shí)現IAP時(shí),通過(guò)VM來(lái)實(shí)現對主/次FLASH的空間進(jìn)行換,例如,主FLASH作用戶(hù)程序,次FLASH用作升級程序;正常工作時(shí),主FLASH作程序空間,運行用戶(hù)代碼,在進(jìn)行程序升級時(shí),將次FLASH切換作程序空間,并運行次FLASH中的升級程序,再把主FLASH換到數據空間,對主FLASH中的用戶(hù)代碼進(jìn)行更新。

μ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,若地址重疊,存儲器有效優(yōu)先級為SRAM、I/O、外設I/O最高,次FLASH次之,主FLASH最低。

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

μPSD中通過(guò)DPLD對每個(gè)存儲器的地址進(jìn)行分配,DPLD的結構如圖2所示。

圖2 DPLD的結構

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

DPLD的輸入項中最常用的是A0~A15,頁(yè)寄存器PGR0~PGR7,#RD、#PSEN、#WR、ALE。PDN是在功率管理時(shí)使用,如果在地址中加入PDN,表示只有在電源有效時(shí)地址譯碼才有效,通常這項是自動(dòng)加入的,使用者可不用管。

DPLD的輸入項和輸出項不是必須全部配置的。在對μPSD的存儲器進(jìn)行地址配置時(shí),一個(gè)最重要的原則是“不超過(guò)64KB就不要分頁(yè),沒(méi)有使用到的塊就不必配置”。對于小的項目中沒(méi)有使用到所有存儲器,不用去配置,這樣既簡(jiǎn)單,減少出錯,又方便調試和檢查。除CSIOP是必須配置的外,其他項均可根據需要進(jìn)行配置。

PSEL由外設I/O模式控制,在PIO模式下,PA口的所有I/O被設置為三態(tài)、雙向MCU數據緩沖器方式,與MCU的P0口有些類(lèi)似。DPLD中必須聲明PSEL0和/或PSEL1的有效地址范圍,在訪(fǎng)問(wèn)此地址時(shí),PA口進(jìn)入PIO方式。前面所述的VM寄存器中第7位是PIO模式允許/禁止控制,PIO模式的內部控制結構如圖3所示。為避免PSEL0和PSEL1所指定的范圍在程序/數據空間都有效,應在PSEL0和PSEL1中加入“!#PSEN”信號,以保證PIO模式僅在訪(fǎng)問(wèn)數據空間時(shí)有效。

圖3 PIO模式內部控制結構

使用PSDSOFT對μPSD進(jìn)行配置和編程

μPSD中PAGE是一個(gè)8位寄存器,最多可實(shí)現256個(gè)頁(yè)面,PAGE寄存器與地址范圍的配置是同時(shí)起作用的。如果你的系統中不論是程序還是數據存儲器的設計超出了64k,必須要分頁(yè)。   μPSD的PAGE寄存器的8位可以獨立使用,在PSDSOFT中可定義為兩種方式,即PAGING和LOGIC。PAGING就是作為分頁(yè)使用,LOGIC是作為一般邏輯輸入功能,類(lèi)似于PLD中的節點(diǎn)NODE,或者CPLD中的宏MACRO。作為PAGING時(shí),必須從最低位開(kāi)始,使用N位作為PAGING,可實(shí)現2N個(gè)頁(yè)面的分配,即存儲器的地址配置中有2N個(gè)頁(yè)面可選擇。使用作為L(cháng)OGIG時(shí)必須從高位開(kāi)始使用,可以為之定義一個(gè)名字,可用作DPLD的輸入項。MCU在運行時(shí)可以對PAGE的進(jìn)行讀/寫(xiě)操作,但是不能按位操作,也就是說(shuō)必須先屏蔽再修改。

在程序和數據均不超過(guò)64K時(shí),不必分頁(yè),PGR0~PGR7不參加譯碼?,F在的PSDSOFT軟件中不要求用戶(hù)再寫(xiě)地址方程式,只需要填寫(xiě)地址范圍可以了。不使用分頁(yè)時(shí),片選的PGAE NUMBER就不能填任何值,如果填“0”則表示位于頁(yè)0。在PSDSOFT中對公共區的設置方法很簡(jiǎn)單,只要不填作為公共區的存儲器的片選中的“PAGE NUMBE”就可以了。

μPSD存儲器配置實(shí)例

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

使用μPSD3234A-40U6器件,將FS0~FS7用作程序/數據存儲器,地址在8000H~0FFFFH,分別位于頁(yè)0至頁(yè)7;CSBOOT0~CSBOOT3作為程序存儲器,作為公共區,地址是0000H~7FFFFH。擴展SRAM位于0000H~1FFFH,CSIOP位于7F00H~7FFFH,用戶(hù)I/O空間定義為7E00H~7EFFH。

這樣的存儲器配置能夠滿(mǎn)足大多數分頁(yè)項目的設計要求,使用了μPSD的所有存儲器,不僅最大化了程序空間和數據空間,也能實(shí)現IAP功能。此方案中程序空間可達256K+32K,數據空間是256K(FLASH)+8K(SRAM)。用戶(hù)可根據實(shí)際應用項目對配置進(jìn)行簡(jiǎn)單修改,去掉沒(méi)有使用的存儲器配置。

如果用戶(hù)項目中要求實(shí)現IAP或者對主FLASH數據存儲器進(jìn)行擦除/修改,請一定要注意,升級代碼或對FLASH進(jìn)行擦除/修改操作的程序必須放于公共區,即次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



評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>