找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3999|回復(fù): 7
收起左側(cè)

哈佛結(jié)構(gòu)和普林斯頓結(jié)構(gòu)

[復(fù)制鏈接]
ID:155499 發(fā)表于 2016-12-17 23:49 | 顯示全部樓層 |閱讀模式
有大神能詳細(xì)的說(shuō)下51單片機(jī)中的哈佛結(jié)構(gòu)和普林斯頓結(jié)構(gòu)嗎?拜托拜托!
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2016-12-18 10:05 | 顯示全部樓層
哈佛結(jié)構(gòu)是一種將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi)的存儲(chǔ)器結(jié)構(gòu)。中央處理器首先到程序指令存儲(chǔ)器中讀取程序指令內(nèi)容,解碼后得到數(shù)據(jù)地址,再到相應(yīng)的數(shù)據(jù)存儲(chǔ)器中讀取數(shù)據(jù),并進(jìn)行下一步的操作(通常是執(zhí)行)。程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi),可以使指令和數(shù)據(jù)有不同的數(shù)據(jù)寬度,如Microchip公司的PIC16芯片的程序指令是14位寬度,而數(shù)據(jù)是8位寬度。

目前使用哈佛結(jié)構(gòu)的中央處理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,還有摩托羅拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和安謀公司的ARM9、ARM10和ARM11,51單片機(jī)也屬于哈佛結(jié)構(gòu)

普林斯頓結(jié)構(gòu)也稱馮·諾伊曼結(jié)構(gòu),是一種將程序指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合并在一起的存儲(chǔ)器結(jié)構(gòu)。程序指令存儲(chǔ)地址和數(shù)據(jù)存儲(chǔ)地址指向同一個(gè)存儲(chǔ)器的不同物理位置,因此程序指令和數(shù)據(jù)的寬度相同,如英特爾公司的8086中央處理器的程序指令和數(shù)據(jù)都是16位寬。

目前使用馮·諾伊曼結(jié)構(gòu)的中央處理器和微控制器有很多。除了上面提到的英特爾公司的8086,英特爾公司的其他中央處理器、安謀公司的ARM7、MIPS公司的MIPS處理器也采用了馮·諾伊曼結(jié)構(gòu)。

評(píng)論:哈佛結(jié)構(gòu)和馮.諾依曼結(jié)構(gòu)都是一種存儲(chǔ)器結(jié)構(gòu)。哈佛結(jié)構(gòu)是將指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開(kāi)的一種存儲(chǔ)器結(jié)構(gòu);而馮.諾依曼結(jié)構(gòu)將指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合在一起的存儲(chǔ)器結(jié)構(gòu)。
回復(fù)

使用道具 舉報(bào)

ID:155499 發(fā)表于 2016-12-19 08:40 來(lái)自手機(jī) | 顯示全部樓層
謝謝一樓
回復(fù)

使用道具 舉報(bào)

ID:155499 發(fā)表于 2016-12-19 08:44 來(lái)自手機(jī) | 顯示全部樓層
我再問(wèn)一下,單片機(jī)內(nèi)部數(shù)據(jù)RAM128B和外擴(kuò)的128B數(shù)據(jù)RAM是哈佛結(jié)構(gòu)嗎
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2016-12-19 09:37 | 顯示全部樓層
是的,單片機(jī)內(nèi)部數(shù)據(jù)RAM128B和外擴(kuò)的128B數(shù)據(jù)RAM是哈佛結(jié)構(gòu)

關(guān)于51單片機(jī)內(nèi)存問(wèn)題,一直是個(gè)疑惑大家的問(wèn)題,因?yàn)?1單片機(jī)是個(gè)很另類(lèi)的單片機(jī)。
下面我給樓主講解一下:
51單片機(jī)之所以另類(lèi),是因?yàn),他尋址?nèi)存的空間,不是靠總線,是用指令的方式。
51單片機(jī)有以下幾個(gè)內(nèi)存模塊組成:
ROM或者Flash就不說(shuō)了。 訪問(wèn)code是專(zhuān)用指令,就是單獨(dú)的從0開(kāi)始編地址的。
RAM有------內(nèi)部RAM的低128位(00-7F)
          -------內(nèi)部RAM的高128位(80-FF)---【89C51單片機(jī)沒(méi)有這一段空間】
          -------特殊功能寄存器(SFR)(80-FF)
          ------外部RAM 64K(0000-FFFF)

樓主又疑惑了,好多地址是重復(fù)的,比如,我向80H地址寫(xiě)一個(gè)數(shù)值,單片機(jī)怎么知道讀的是內(nèi)部的高128位RAM?還是SFR?還是外部64K的RAM呢?

答案是用指令,如果是直接尋址,那么訪問(wèn)的就是SFR,如果是R0或者R1間接尋址,就是內(nèi)部高128位RAM,如果是DPTR或者是R0,R1間接尋址,且配合的是MovX指令,那么就是訪問(wèn)外部64KRAM中的第80H個(gè)地址。

明白以上原理,樓主就明白了為什么地址只有8位,52卻號(hào)稱有512B,因?yàn)樗膬?nèi)部低128B RAM+內(nèi)部高128B RAM+外部64KB RAM中的前256B,所以有512B,另外還有個(gè)SFR,但是,SFR不算是內(nèi)存,這個(gè)樓主要搞清楚!
而51僅有內(nèi)部低128B,所以51遠(yuǎn)不如52高級(jí)。

那么,為什么說(shuō)外部可以擴(kuò)展到64K呢,因?yàn)镈PTR是16位的,2的16次方是65536 = 64 KB
但是通常單片機(jī)不會(huì)用那么多內(nèi)存的,所以基本外部就是256B--1024B之間,現(xiàn)在STC據(jù)說(shuō)準(zhǔn)備出一款4096B外部RAM的單片機(jī)。

以上所說(shuō)的只是針對(duì)51內(nèi)核的單片機(jī),其他內(nèi)核的,像ARM之類(lèi)的,不是這種結(jié)構(gòu)的。
回復(fù)

使用道具 舉報(bào)

ID:155499 發(fā)表于 2016-12-20 09:10 來(lái)自手機(jī) | 顯示全部樓層
angmall 發(fā)表于 2016-12-19 09:37
是的,單片機(jī)內(nèi)部數(shù)據(jù)RAM128B和外擴(kuò)的128B數(shù)據(jù)RAM是哈佛結(jié)構(gòu)

關(guān)于51單片機(jī)內(nèi)存問(wèn)題,一直是個(gè)疑惑大家的 ...

謝謝(*°°)=3
回復(fù)

使用道具 舉報(bào)

ID:155499 發(fā)表于 2016-12-20 11:23 來(lái)自手機(jī) | 顯示全部樓層
angmall 發(fā)表于 2016-12-19 09:37
是的,單片機(jī)內(nèi)部數(shù)據(jù)RAM128B和外擴(kuò)的128B數(shù)據(jù)RAM是哈佛結(jié)構(gòu)

關(guān)于51單片機(jī)內(nèi)存問(wèn)題,一直是個(gè)疑惑大家的 ...

那16位DPTR中的地址是怎么進(jìn)來(lái)的呢,我的意思是說(shuō)用于數(shù)據(jù)存儲(chǔ)器的接口只有8位,怎么把16位的片外地址送進(jìn)來(lái),是用其他方式嗎
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2016-12-20 18:54 | 顯示全部樓層
數(shù)據(jù)指針(DPTR)
是一個(gè)16位的特殊功能寄存器, 其高位字節(jié)寄存器用DPH表示,低位字節(jié)寄存器用DPL表示,DPTR既可以作為一個(gè)16位的寄存器來(lái)處理,也可以作為兩個(gè)獨(dú)立的8位寄存器來(lái)使用。主要功能是存放16位地址,作為片外RAM尋址用的地址寄存器(間接尋址),故稱數(shù)據(jù)指針,也可以將外部RAM中地址的內(nèi)容傳送到內(nèi)部RAM的地址所指向的內(nèi)容中。

DPH和DPL的地址分別為83H、82H。

8位單片機(jī),所有的寄存器硬件上都是8位模式訪問(wèn);“所謂的的16位,都是2個(gè)8為拼起來(lái)的”

DPTR如
Mov DPTR,#1000H

把16位的片外地址送進(jìn)來(lái),分兩次送進(jìn)DPL和DPH兩個(gè)8位寄存器

MOV DPL, #00H
MOV DPH, #0A0H


訪問(wèn)片外數(shù)據(jù)存儲(chǔ)器的指令:

MOVX A,@DPTR讀
MOVX @DPTR,A寫(xiě)

指令以16位DPTR為間址寄存器讀片外RAM,可以尋址整個(gè)64KB的片外空間。指令執(zhí)行時(shí),在DPH中的高八位地址由P2口輸出,在DPL中的低八位地址由P0口分時(shí)輸出,并由ALE信號(hào)鎖存在地址鎖存器中。

DPTR的另一個(gè)作用是變址尋址,訪問(wèn)程序存儲(chǔ)器,做查表指令:如:
以dptr為基址寄存器,將dptr的內(nèi)容與累加器a的內(nèi)容相加得到變址地址
movc a, @a+dptr ; (a)<-----((a)+(dptr))
jmp @A+DPTR;間接轉(zhuǎn)移指令,將DPTR中的16位數(shù)和累加器A中的8位數(shù)相加,并直接送入PC,實(shí)現(xiàn)散轉(zhuǎn)功能。對(duì)A、DPTR和標(biāo)志位無(wú)影響。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表