第4章 外部匯流排 第5章 中斷處理

2021-03-31 17:03:27 字數 2292 閱讀 2711

第4章.外部匯流排

外部匯流排提供外部裝置定址並且可以對51mx裝置進行**讀取,資料讀寫操作。外部匯流排使用相同的經典的80c51多路外部匯流排 ,並允許增加輸出位址為23位。

4.1 多路外部匯流排

51mx外部匯流排支援8位資料傳輸並且支援23位位址口線。需要通過設定mxcon暫存器的eam位來配置相應口線的有效數量。預設是16位位址匯流排,可以先後相容現有的80c51的socket。

軟體改變匯流排配置資訊通過設定 mxcon暫存器中eam位 = 1來達到。典型的不推薦在程式執行中改變口線位址配置。(如: 在程式執行把eam =1 改為 0將改變匯流排介面,晶元將不能訪問外部空間);

當p2口復用位址位23位(eam =1 )時,高位址(address16~address23)和低位址(address0~address7) 將通過鎖存器ale鎖定到固定外部空間中,當中間位址(address8~address15)到來後 ale降低不進行鎖存工作,3個位元組位址合成總位址。如果mxcon暫存器的eam位不為1,則和80c51一樣工作。

這裡有兩種特殊的p2口復用對外部空間定址方法(eam=1, mxcon), movx @ri和 movx  @dptr 這兩個指令並不提供23位位址所有資源,當使用程式儲存位址movc時,任何缺少的位址位是由pc填補的,對於movx所有缺失的位址位都強制填補0來達到23位,所以這些指令是獲取xdata的低部儲存空間,因此movx @ri位址由高8位全零,中間8位填補為零+低8位為ri內容組成乙個23位位址值。movx  @dptr: 位址則由全零的高8位+低16位的dptr的內容組成23位位址值。這個段落中敘述的movx的狀態都是在eam = 1的設定下有效。只有在這種方式下才會p2口復用位址23位為23位,反之則依然為80c51的16位定址方式。

如果使用者有特殊需要使用23位位址介面和片外**可以使用軟體設定 ,如果這種方式:執行部分**再進行配置修改eam = 1那麼指令必須是固定設定或者位址<00fbh的。因為在 配置向23位位址轉變的時候,需要防止外部匯流排提供乙個16位位址。如果此時pc計數器跳轉位址為0100當eam = 0時(外部硬體期望還是乙個23位位址)那麼提供給出的位址將會變成01:0100會出錯。所以標誌位設定要在中間位址為0的情況設定,這樣的話無論16位還是23位位址都是一樣的。

現在打算利用51mx的23位寬位址和80c51的介面一樣對同樣的空間記憶體對映的應用已經得到發展,我們必須遵守一些程式設計規則,51mx的外部記憶體訪問介面需要將eam標誌置1,

如果使用p2口和rw,rd控制線進行記憶體對映,那麼相比於51不需要任何改變,只使用當前23位位址匯流排上的低16位位址。

記憶體對映裝置使用下降沿觸發ale控制器來鎖存16位位址,movx @ri/dptr指令不能使用除了 emov @pri;ale下降沿時鎖存p0的低8位位址和p2口高8位位址,正確的期望記憶體對映裝置位址有效,當p2的address8~address15位址有效時在是下降沿執行wr/rd. movx @ri/dptr指令將導致高位變0,這樣會導致裝置訪問的問題,為了避免這個問題emov @pri被使用,用pr0: r3 = r2, pr1: r7 =r5 這樣的話 p2口輸出既是 ale下降沿又是在rd/wr下降沿。最終記憶體對映裝置將會找到正確的位址。

ale: 鎖存位址功能,這個訊號量直接鎖存位址埠。可能是資料或者**位址。

psen: 程式儲存輸出訊號端,能夠讀出eprom/rom中的指令碼範圍在 00:0000-7f:ffff,如果是通用記憶體對映中範圍相應位址範圍 80:0000-ff:ffff.

rd:外部資料讀訊號,連線 rd外設裝置

wr:寫外部資料訊號,連線wr外設裝置

外部資料匯流排位址範圍在 00:0000 ~7f:ffff匹配通用對映記憶體位址。如果片內位址被啟用,那麼外部位址將不能使用,所有data/idata都在片內。

第5章.中斷處理:

p87c551提供四種不同優先及中斷處理型別,這將有效對各種中斷資源進行源。p87c551提供11個中斷源。

每個對立的中斷源通過設定 int或者int1暫存器的某一位來開啟或者關閉,int0包含乙個全域性中斷控制位 ea:能夠控制所有的中斷是否有效。

每個中斷源可以通過ip0, ip0h, ip1, ip1h位來設定4個優先順序中的乙個。乙個高優先順序的中斷可以搶占當前低優先及的中斷,而同優先順序或低優先順序中斷不能搶占高優先順序中斷。其他優先順序的中斷不能強佔最好優先順序的中斷,如果不同優先順序中斷同時請求,則優先執行高優先順序中斷服務。

00是最低優先順序中斷屬性,11是最高優先順序屬性,例如: time0中斷優先屬性是由in0 和in0h位來控制, 如果in0h = 1, in0 = 0 則 time0優先屬性為10, 既為2。

如果2個相同優先順序的中斷同時請求,那麼依次選舉決定執行哪個服務,這成為優先仲裁,注意優先仲裁只發生在同優先順序中斷同時請求的情況下。

第4章 PCIe匯流排概述

隨著現代處理器技術的發展,在互連領域中,使用高速差分匯流排替代並行匯流排是大勢所趨。與單端並行訊號相比,高速差分訊號可以使用更高的時鐘頻率,從而使用更少的訊號線,完成之前需要許多單端並行資料訊號才能達到的匯流排頻寬。pci匯流排使用並行匯流排結構,在同一條匯流排上的所有外部裝置共享匯流排頻寬,而 p...

第4章 PCIe匯流排概述

隨著現代處理器技術的發展,在互連領域中,使用高速差分匯流排替代並行匯流排是大勢所趨。與單端並行訊號相比,高速差分訊號可以使用更高的時鐘頻率,從而使用更少的訊號線,完成之前需要許多單端並行資料訊號才能達到的匯流排頻寬。pci匯流排使用並行匯流排結構,在同一條匯流排上的所有外部裝置共享匯流排頻寬,而 p...

第6章 豐富中斷處理程式

前面的中斷處理程式 過於簡單了,只有一句iretd,而且這個時鐘中斷處理程式也只能發生一次,因為沒有通知8259a本次中斷處理程式已結束。就算處理程式能反覆執行,我們也不能看到結果,所以還要在中斷處理程式中新增一點顯示資訊來使我們知道中斷程式在執行,下面就來修改 hw int 00 push 0 c...