正文 第二章 64180的硬件配置(三)(2 / 3)

▲實例3

假定在上例中的MMU公共區基址寄存器CBR和轉體區基址寄存器BBR的設定不改變,仍為CBR=08H,BBR=04H,而設定MMU的公共區/轉體區寄存器CBAR為44H。此時邏輯存貯器結構左側所示,公共區覆蓋了轉體區。邏輯地址和物理地址的對應關係,TPSTDCPU板上的64180,比如,訪問邏輯地址2000單元。該單元位於公共區0,而轉體區被覆蓋了,所以基地址為0,0000H,對應物理單元地址也是0,2000H。若訪問邏輯地址A000H單元,該單元位於公共區1,基地址由CBR寄存器提供,所以對應物理地址是:

也就是說,當訪問邏輯地址區OOOOH3FFFH和8000HBFFFH時,對應物理單元地址都是0,OOOOH—0,3FFFH。

再往上,從邏輯單元地址4000H開始,至FFFFH這一區域,屬於公共區1,該區基地址曲CBR寄存器提供,對應物理單元地址為0,C000H至l,7FFFH。但對於STDBUSCPU板來講,由於A18、A17和A18不參與存貯器片選地址譯碼,所以實際上對應物理單元地址,應是0,C000H至0,FFFFH這區域和0,0000H至0,7FFF區域。邏輯上假定連續訪問4000H—FFFFH這48KB存貯器單元,而在實際上,是訪問兩個地址不連續的物理存貯器區域。在圖2-23中,可以看出,在這種設置下,物理單元地址0,8000H—0,BFFFH這1&JCB存貯器區域不能訪問。

▲實例4

假定在上例中的MMU公共區基址寄存器CBR和轉體區基址寄存器BBR的設定不改嗖,仍為CBR=08H,BBR=04H,而設定MMU的公共區/轉體區寄存器CBAR為00H。此時邏輯存貯器結構,公共區1覆蓋了公共區0和轉體區。邏輯地址和物理地址的對應關係。TPSTDCPU板上的CPU,當訪問OOOOH—7FFFH邏輯存貯器單元時,對應的存貯器單元物理地址是0,8000H—0,FFFFH,而邏輯地址8000H—FFFFH,對應的物理地址為0,0000H—0,7FFFH。物理地址0,0000H—0,FFFFH總共64KB的存貯器單元,都可以被CPU訪問。可以看出,整個64KB邏輯單元,從物理單元地址0,0000H開始,上移了32KB,被定位在物理單元地址0,8000H開始的64KB物理存貯器區域內。

▲實例5

在TPSTDCPU板上,第1個存貯器插座U,。是28腳的存貯器插座,它可以插入EPROM2764或27128。在512KB存貯器物理地址空間,它占有0,0000H—0,1FFFH和-2,0000H—2,1FFFH兩塊8KB存器空間。因為I。插座的第26腳,也就是EPROM27128的最高地址線接64180的地址總線A17,在出廠時,16KB的EPROM27128的前8KB有TPSTDCMT或TPSTDCMCK管理程序,而後8KB可以固化有EASM64編輯/C編程序。也可以作為固化用戶程序。設定MMU公共區/轉體區寄存器,公共區基址寄存器CBR=12H,轉體區基址寄存器BBR。

此時邏輯存貯器結構左側所示,邏輯地址區域和物理地址區域的對應關係右側所示。CPU訪問邏輯地址區域EOOOH—FFFFH的存貯器單元,對應的是2,OOOOH-2,1FFFH物理地址區域中的存貯器單元。也就是,對應U1。插座上EPROM27128中的後3KB存貯器單元。

2.7中斷

641S0的CPU有12種中斷源,其中4種是外部中斷源,另外8種是內部中斷源。這些中斷源有固定順序的中斷優先級別。

這節介紹與中斷處理有關的CPU寄存器、TRAP中斷、中斷響應方式和外部中斷等。在相應的有關介紹硬件的章節裏(例如,PRT、DMAC、ASCI和CSI/O),再詳細內部中斷(TRAP中斷除外)的產生。

2.7.1中斷控製寄存器和標誌

641180具有與中斷處理有關的三個寄存器和兩個標誌位。

▲中斷矢置寄存器

外部中斷源的INTO方式2、INT1,INT2中斷和所有內部中斷(TRAP中斷除外),均采用可編程的矢量技術,來決定中斷處理(相應的服務程序)的起始地址。也就是說,在中斷響應時,形成16位地址。按照這個地址去訪問在貯器中的矢量地址表,而獲得中斷服務程序的入口地址。

由I寄存器提供矢量地址表的高字節地址。根據對I內容的編程,矢量地址表可以以256字節為一塊(界線),在64KB邏輯地址空間浮動。

注意,I寄存器用LDA,I和LDI,A指令進行讀寫操作,相當於I/O(IN、OUT)指令。

在RESET期間,I寄存器被清0。

矢量地址表低字節地址的產生,方法是多種的。

IL寄存器決定了INT1、INT2和全部內部中斷(TRAP中斷除外)的中斷矢量地址表低字節地址的最高3位。對每個具體中斷源,低5位是固定不變的(見表2-8)。根據對IL的編程,矢量地址表可以以32字節為一塊浮動。

ITC寄存器用來處理TRAP中斷、禁止或允許響應外部屏蔽中斷INTO、TNT1和INT2等中斷請求輸入信號。

TRAP(陷阱)(位7)

當CPU在程序塊中,取出的操作碼是無定義的操作碼時,就將ITC寄存器的TRAP位置為1。使用對ITC寄存器寫入的指令,可以將TRAP位清0。但是,對ITC寄存器編程時,不能將TRAP位置1。在RESET期間,TRAP位被清0。

UFO—一取無定義目標碼(位6)

當發生TRAP中斷時,TRAP位=1,UFO位的內容用來決定無定義指令的起始地址。因為TRAP可能發生在第二個操作碼或者第H個操作碼,所以需要用UFO來調整進的PC值(響應TRAP時,程序計數器PC進找)。如果UFO=0,則無定義指令第一個操作典的地址等於進的PC—1;如果UF0=1,則第一個操作碼的地址等於進PC—2UFO位的狀態隻能讀出。

ITE2、1、0—中斷允許位2、1、0(位2—0)

▲IEF1、IEF2—中斷允許標誌位1、2

IEF1位用來對所有內部和外部屏蔽中斷(NMP和T1lAP中斷除外)的總允許。

若IEF1=0,則所有屏蔽中斷被禁止。可以使用DI(禁止中斷)指令將IEF1位清0,也可以用EI(允許中斷)指令將IEF1位置1。

IEF2位的作用是在發生NMP時,進行下列處理:在響應NMP時,先將發生中斷現場保護起來,IEF1狀態拷貝到IEF2,然後將IEF1清0,自動關閉屏蔽中斷。在NMI中斷屏蔽程序的末尾,由於執行RETN(從屏蔽中斷返回)指令,會自動恢複在響應NMI前的中斷狀態(將IEF2狀態拷貝到IEF1)。

執行LDA,I或LDA,Il指令,可以將IEF2的狀態,映象到CPU狀態標誌寄存器F的P/V位上。

在CPU的運行過程中,IEF1和IEF2的狀態。