了解了單片機內部的大致工作原理之后,我們或許對單片機如何讀取指令代碼和數據的過(guò)程存在一定的疑問(wèn),這就是總線(xiàn)系統。51單片機內部有三大塊總線(xiàn)系統AB,CB,DB即地址總線(xiàn),控制總線(xiàn)和數據總線(xiàn)。51系統式的存儲形式是采用普林斯頓結構(馮·諾依曼結構)的,即數據和代碼存放在重疊地址通過(guò)不同的控制總線(xiàn)控制不懂的物理存儲位置讀寫(xiě)。馮·諾依曼結構代碼和數據是公用數據和地址端口的所以在執行程序的時(shí)候必須先讀取指令,然后再讀取數據這相對于哈弗結構來(lái)說(shuō),在一定程度上限制了程序的執行速度。借助下圖可以適當說(shuō)明一下馮諾依曼結構程序和數據的存儲方式。外部ROM和RAM都是通過(guò)P2和P0作為地址輸出,P0作為數據或者代碼輸入。通過(guò)CB開(kāi)控制是讀取代碼,還是讀寫(xiě)RAM。由于很多資源是公用的所以在執行速度上會(huì )受到一定的限制。 
馮諾依曼結構圖
本文引用地址:http://dyxdggzs.com/article/201611/321409.htm 這里值得注意的是,上圖是馮諾依曼的結構圖,也是51單片機典型的外部存儲器(包括程序存儲器ROM和數據存儲器RAM)擴展電路。擴展程序存儲器和數據存儲器唯一不同點(diǎn)是通過(guò)CB(Control BUS控制總線(xiàn))控制時(shí)序的不同實(shí)現對不同存儲器的操作。P0口為了滿(mǎn)足地址/數據總線(xiàn)復用的功能,其內部具有和其他端口不同的結構。P0在作為地址輸出時(shí)是具有‘0’,‘1’輸出的,而且驅動(dòng)能力比較強,在作為數據讀入的時(shí)候是呈現高阻態(tài)的。
對于哈佛結構程序指令和數據指令分開(kāi)組織和存儲的,執行時(shí)可以預先讀取下一條指令。在最簡(jiǎn)單的只有一級流水線(xiàn)的執行條件下,程序在讀取本條指令的時(shí)候可以同時(shí)預取下調指令的數據,這樣在執行速度會(huì )有一定的提高。

哈佛結構圖
評論