九.輸入/輸出保護(hù)為了支持多任務(wù),80386不僅要有效地實(shí)現(xiàn)任務(wù)隔離,而且還要有效地控制各任務(wù)的輸入/輸出,避免輸入/輸出沖突。本文將介紹輸入輸出保護(hù)。 這里下載本文源代碼。 <一>輸入/輸出保護(hù)80386采用I/O特權(quán)級(jí)IPOL和I/O許可位圖的方法來(lái)控制輸入/輸出,實(shí)現(xiàn)輸入/輸出保護(hù)。 1.I/O敏感指令輸入輸出特權(quán)級(jí)(I/O Privilege Level)規(guī)定了可以執(zhí)行所有與I/O相關(guān)的指令和訪問(wèn)I/O空間中所有地址的最外層特權(quán)級(jí)。IOPL的值在如下圖所示的標(biāo)志寄存器中。 標(biāo) 志寄存器 BIT31—BIT18 BIT17 BIT16 BIT15 BIT14 BIT13—BIT12 BIT11 BIT10 BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 00000000000000 VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF I/O許可位圖規(guī)定了I/O空間中的哪些地址可以由在任何特權(quán)級(jí)執(zhí)行的程序所訪問(wèn)。I/O許可位圖在任務(wù)狀態(tài)段TSS中。 I/O敏感指令 指令 功能 保護(hù)方式下的執(zhí)行條件 CLI 清除EFLAGS中的IF位 CPL<=IOPL STI 設(shè)置EFLAGS中的IF位 CPL<=IOPL IN 從I/O地址讀出數(shù)據(jù) CPL<=IOPL或I/O位圖許可 INS 從I/O地址讀出字符串 CPL<=IOPL或I/O位圖許可 OUT 向I/O地址寫(xiě)數(shù)據(jù) CPL<=IOPL或I/O位圖許可 OUTS 向I/O地址寫(xiě)字符串 CPL<=IOPL或I/O位圖許可 上表所列指令稱(chēng)為I/O敏感指令,由于這些指令與I/O有關(guān),并且只有在滿(mǎn)足所列條件時(shí)才可以執(zhí)行,所以把它們稱(chēng)為I/O敏感指令。從表中可見(jiàn),當(dāng)前特權(quán)級(jí)不在I/O特權(quán)級(jí)外層時(shí),可以正常執(zhí)行所列的全部I/O敏感指令;當(dāng)特權(quán)級(jí)在I/O特權(quán)級(jí)外層時(shí),執(zhí)行CLI和STI指令將引起通用保護(hù)異常,而其它四條指令是否能夠被執(zhí)行要根據(jù)訪問(wèn)的I/O地址及I/O許可位圖情況而定(在下面論述),如果條件不滿(mǎn)足而執(zhí)行,那么將引起出錯(cuò)碼為0的通用保護(hù)異常。 由于每個(gè)任務(wù)使用各自的EFLAGS值和擁有自己的TSS,所以每個(gè)任務(wù)可以有不同的IOPL,并且可以定義不同的I/O許可位圖。注意,這些I/O敏感指令在實(shí)模式下總是可執(zhí)行的。 2.I/O許可位圖如果只用IOPL限制I/O指令的執(zhí)行是很不方便的,不能滿(mǎn)足實(shí)際要求需要。因?yàn)檫@樣做會(huì)使得在特權(quán)級(jí)3執(zhí)行的應(yīng)用程序要么可訪問(wèn)所有I/O地址,要么不可訪問(wèn)所有I/O地址。實(shí)際需要與此剛好相反,只允許任務(wù)甲的應(yīng)用程序訪問(wèn)部分I/O地址,只允許任務(wù)乙的應(yīng)用程序訪問(wèn)另一部分I/O地址,以避免任務(wù)甲和任務(wù)乙在訪問(wèn)I/O地址時(shí)發(fā)生沖突,從而避免任務(wù)甲和任務(wù)乙使用使用獨(dú)享設(shè)備時(shí)發(fā)生沖突。 因此,在IOPL的基礎(chǔ)上又采用了I/O許可位圖。I/O許可位圖由二進(jìn)制位串組成。位串中的每一位依次對(duì)應(yīng)一個(gè)I/O地址,位串的第0位對(duì)應(yīng)I/O地址0,位串的第n位對(duì)應(yīng)I/O地址n。如果位串中的第位為0,那么對(duì)應(yīng)的I/O地址m可以由在任何特權(quán)級(jí)執(zhí)行的程序訪問(wèn);否則對(duì)應(yīng)的I/O地址m只能由在IOPL特權(quán)級(jí)或更內(nèi)層特權(quán)級(jí)執(zhí)行的程序訪問(wèn)。如果在I/O外層特權(quán)級(jí)執(zhí)行的程序訪問(wèn)位串中位值為1的位所對(duì)應(yīng)的I/O地址,那么將引起通用保護(hù)異常。 I/O地址空間按字節(jié)進(jìn)行編址。一條I/O指令最多可涉及四個(gè)I/O地址。在需要根據(jù)I/O位圖決定是否可訪問(wèn)I/O地址的情況下,當(dāng)一條I/O指令涉及多個(gè)I/O地址時(shí),只有這多個(gè)I/O地址所對(duì)應(yīng)的I/O許可位圖中的位都為0時(shí),該I/O指令才能被正常執(zhí)行,如果對(duì)應(yīng)位中任一位為1,就會(huì)引起通用保護(hù)異常。 80386支持的I/O地址空間大小是64K,所以構(gòu)成I/O許可位圖的二進(jìn)制位串最大長(zhǎng)度是64K個(gè)位,即位圖的有效部分最大為8K字節(jié)。一個(gè)任務(wù)實(shí)際需要使用的I/O許可位圖大小通常要遠(yuǎn)小于這個(gè)數(shù)目。 當(dāng)前任務(wù)使用的I/O許可位圖存儲(chǔ)在當(dāng)前任務(wù)TSS中低端的64K字節(jié)內(nèi)。I/O許可位圖總以字節(jié)為單位存儲(chǔ),所以位串所含的位數(shù)總被認(rèn)為是8的倍數(shù)。從前文中所述的TSS格式可見(jiàn),TSS內(nèi)偏移66H的字確定I/O許可位圖的開(kāi)始偏移。由于I/O許可位圖最長(zhǎng)可達(dá)8K字節(jié),所以開(kāi)始偏移應(yīng)小于56K,但必須大于等于104,因?yàn)門(mén)SS中前104字節(jié)為T(mén)SS的固定格式,用于保存任務(wù)的狀態(tài)。 1.I/O訪問(wèn)許可檢查細(xì)節(jié)保護(hù)模式下處理器在執(zhí)行I/O指令時(shí)進(jìn)行許可檢查的細(xì)節(jié)如下所示。 (1)若CPL<=IOPL,則直接轉(zhuǎn)步驟(8);(2)取得I/O位圖開(kāi)始偏移;(3)計(jì)算I/O地址對(duì)應(yīng)位所在字節(jié)在I/O許可位圖內(nèi)的偏移;(4)計(jì)算位偏移以形成屏蔽碼值,即計(jì)算I/O地址對(duì)應(yīng)位在字節(jié)中的第幾位;(5)把字節(jié)偏移加上位圖開(kāi)始偏移,再加1,所得值與TSS界限比較,若越界,則產(chǎn)生出錯(cuò)碼為0的通用保護(hù)故障;(6)若不越界,則從位圖中讀對(duì)應(yīng)字節(jié)及下一個(gè)字節(jié);(7)把讀出的兩個(gè)字節(jié)與屏蔽碼進(jìn)行與運(yùn)算,若結(jié)果不為0表示檢查未通過(guò),則產(chǎn)生出錯(cuò)碼為0的通用保護(hù)故障;(8)進(jìn)行I/O訪問(wèn)。設(shè)某一任務(wù)的TSS段如下: TSSSEG SEGMENT PARA USE16 TSS <> ;TSS低端固定格式部分 DB 8 DUP(0) ;對(duì)應(yīng)I/O端口00H—3FH DB 10000000B ;對(duì)應(yīng)I/O端口40H—47H DB 01100000B ;對(duì)用I/O端口48H—4FH DB 8182 DUP(0ffH) ;對(duì)應(yīng)I/O端口50H—0FFFFH DB 0FFH ;位圖結(jié)束字節(jié)TSSLen = $TSSSEG ENDS 再假設(shè)IOPL=1,CPL=3。那么如下I/O指令有些能正常執(zhí)行,有些會(huì)引起通用保護(hù)異常: in al,21h ;(1)正常執(zhí)行 in al,47h ;(2)引起異常 out 20h,al ;(3)正常實(shí)行 out 4eh,al ;(4)引起異常 in al,20h ;(5)正常執(zhí)行 out 20h,eax ;(6)正常執(zhí)行 out 4ch,ax ;(7)引起異常 in ax,46h ;(8)引起異常 in eax,42h ;(9)正常執(zhí)行 由上述I/O許可檢查的細(xì)節(jié)可見(jiàn),不論是否必要,當(dāng)進(jìn)行許可位檢查時(shí),80386總是從I/O許可位圖中讀取兩個(gè)字節(jié)。目的是為了盡快地執(zhí)行I/O許可檢查。一方面,常常要讀取I/O許可位圖的兩個(gè)字節(jié)。例如,上面的第(8)條指令要對(duì)I/O位圖中的兩個(gè)位進(jìn)行檢查,其低位是某個(gè)字節(jié)的最高位,高位是下一個(gè)字節(jié)的最低位。可見(jiàn)即使只要檢查兩個(gè)位,也可能需要讀取兩個(gè)字節(jié)。另一方面,最多檢查四個(gè)連續(xù)的位,即最多也只需讀取兩個(gè)字節(jié)。所以每次要讀取兩個(gè)字節(jié)。這也是在判別是否越界時(shí)再加1的原因。為此,為了避免在讀取I/O許可位圖的最高字節(jié)時(shí)產(chǎn)生越界,必須在I/O許可位圖的最后填加一個(gè)全1的字節(jié),即0FFH。此全1的字節(jié)應(yīng)填加在最后一個(gè)位圖字節(jié)之后,TSS界限范圍之前,即讓填加的全1字節(jié)在TSS界限之內(nèi)。 I/O許可位圖開(kāi)始偏移加8K所得的值與TSS界限值二者中較小的值決定I/O許可位圖的末端。當(dāng)TSS的界限大于I/O許可位圖開(kāi)始偏移加8K時(shí),I/O許可位圖的有效部分就有8K字節(jié),I/O許可檢查全部根據(jù)全部根據(jù)該位圖進(jìn)行。當(dāng)TSS的界限不大于I/O許可位圖開(kāi)始偏移加8K時(shí),I/O許可位圖有效部分就不到8K字節(jié),于是對(duì)較小I/O地址訪問(wèn)的許可檢查根據(jù)位圖進(jìn)行,而對(duì)較大I/O地址訪問(wèn)的許可檢查總被認(rèn)為不可訪問(wèn)而引起通用保護(hù)故障。因?yàn)檫@時(shí)會(huì)發(fā)生字節(jié)越界而引起通用保護(hù)異常,所以在這種情況下,可認(rèn)為不足的I/O許可位圖的高端部分全為1。利用這個(gè)特點(diǎn),可大大節(jié)約TSS中I/O許可位圖占用的存儲(chǔ)單元,也就大大減小了TSS段的長(zhǎng)度。 <二>重要標(biāo)志保護(hù)輸入輸出的保護(hù)與存儲(chǔ)在標(biāo)志寄存器EFLAGS中的IOPL密切相關(guān),顯然不能允許隨便地改變IOPL,否則就不能有效地實(shí)現(xiàn)輸入輸出保護(hù)。類(lèi)似地,對(duì)EFLAGS中的IF位也必須加以保護(hù),否則CLI和STI作為敏感指令對(duì)待是無(wú)意義的。此外,EFLAGS中的VM位決定著處理器是否按虛擬8086方式工作。 80386對(duì)EFLAGS中的這三個(gè)字段的處理比較特殊,只有在較高特權(quán)級(jí)執(zhí)行的程序才能執(zhí)行IRET、POPF、CLI和STI等指令改變它們。下表列出了不同特權(quán)級(jí)下對(duì)這三個(gè)字段的處理情況。 不同特權(quán)級(jí)對(duì)標(biāo)志寄存器特殊字段的處理 特權(quán)級(jí) VM標(biāo)志字段 IOPL標(biāo)志字段 IF標(biāo)志字段 CPL=0 可變(初POPF指令外) 可變 可變 0 不變 不變 可變 CPL>IOPL 不變 不變 不變 從表中可見(jiàn),只有在特權(quán)級(jí)0執(zhí)行的程序才可以修改IOPL位及VM位;只能由相對(duì)于IOPL同級(jí)或更內(nèi)層特權(quán)級(jí)執(zhí)行的程序才可以修改IF位。與CLI和STI指令不同,在特權(quán)級(jí)不滿(mǎn)足上述條件的情況下,當(dāng)執(zhí)行POPF指令和IRET指令時(shí),如果試圖修改這些字段中的任何一個(gè)字段,并不引起異常,但試圖要修改的字段也未被修改,也不給出任何特別的信息。此外,指令POPF總不能改變VM位,而PUSHF指令所壓入的標(biāo)志中的VM位總為0。 <三>演示輸入輸出保護(hù)的實(shí)例(實(shí)例九)下面給出一個(gè)用于演示輸入輸出保護(hù)的實(shí)例。演示內(nèi)容包括:I/O許可位圖的作用、I/O敏感指令引起的異常和特權(quán)指令引起的異常;使用段間調(diào)用指令CALL通過(guò)任務(wù)門(mén)調(diào)用任務(wù),實(shí)現(xiàn)任務(wù)嵌套。 1.演示步驟實(shí)例演示的內(nèi)容比較豐富,具體演示步驟如下:(1)在實(shí)模式下做必要準(zhǔn)備后,切換到保護(hù)模式;(2)進(jìn)入保護(hù)模式的臨時(shí)代碼段后,把演示任務(wù)的TSS段描述符裝入TR,并設(shè)置演示任務(wù)的堆棧;(3)進(jìn)入演示代碼段,演示代碼段的特權(quán)級(jí)是0;(4)通過(guò)任務(wù)門(mén)調(diào)用測(cè)試任務(wù)1。測(cè)試任務(wù)1能夠順利進(jìn)行;(5)通過(guò)任務(wù)門(mén)調(diào)用測(cè)試任務(wù)2。測(cè)試任務(wù)2演示由于違反I/O許可位圖規(guī)定而導(dǎo)致通用保護(hù)異常;(6)通過(guò)任務(wù)門(mén)調(diào)用測(cè)試任務(wù)3。測(cè)試任務(wù)3演示I/O敏感指令如何引起通用保護(hù)異常;(7)通過(guò)任務(wù)門(mén)調(diào)用測(cè)試任務(wù)4。測(cè)試任務(wù)4演示特權(quán)指令如何引起通用保護(hù)異常;(8)從演示代碼轉(zhuǎn)臨時(shí)代碼,準(zhǔn)備返回實(shí)模式;(9)返回實(shí)模式,并作結(jié)束處理。
上傳時(shí)間: 2013-12-11
上傳用戶(hù):nunnzhy
如同今天的許多通用單片機(jī)(MCU)已經(jīng)把USB、CAN和以太網(wǎng)作為標(biāo)準(zhǔn)外設(shè)集成在芯片內(nèi)部一樣,越來(lái)越多的無(wú)線(xiàn)網(wǎng)絡(luò)芯片和無(wú)線(xiàn)網(wǎng)絡(luò)解決方案也在向集成SoC 方向發(fā)展,比如第一代產(chǎn)品,Nordic公司nRF905,Chipcon公司cc1010 他們集成了8051兼容的單片機(jī).這些無(wú)線(xiàn)單片機(jī)適合一般的點(diǎn)對(duì)點(diǎn)和點(diǎn)對(duì)多點(diǎn)的私有網(wǎng)絡(luò)應(yīng)用,如單一產(chǎn)品的遙控器和抄表裝置等。無(wú)線(xiàn)通訊技術(shù)給智能裝置的互連互通提供了便捷的途徑,工業(yè)無(wú)線(xiàn)網(wǎng)絡(luò)作為面向工業(yè)和家庭自動(dòng)化的網(wǎng)絡(luò)技術(shù)也正在向著智能,標(biāo)準(zhǔn)和節(jié)能方向發(fā)展。 目前在工業(yè)控制和消費(fèi)電子領(lǐng)域使用的無(wú)線(xiàn)網(wǎng)絡(luò)技術(shù)有ZigBee、無(wú)線(xiàn)局域網(wǎng)(Wi-Fi)、藍(lán)牙(Blutooth)、GPRS通用分組無(wú)線(xiàn)業(yè)務(wù)、 ISM、IrDA等, 未來(lái)還能有3G、超寬頻(UWB)、無(wú)線(xiàn)USB、Wimax等。 當(dāng)然還有大量的私有和專(zhuān)用無(wú)線(xiàn)網(wǎng)絡(luò)在工業(yè)控制和消費(fèi)電子裝置中使用,其中ZigBee、GPRS是在目前在國(guó)內(nèi)工業(yè)控制中討論和使用比較多的兩種,藍(lán)牙和無(wú)線(xiàn)局域網(wǎng)是在消費(fèi)電子產(chǎn)品如手機(jī)、耳機(jī)、打印機(jī)、照相機(jī)和家庭中小企業(yè)網(wǎng)絡(luò)中廣泛使用的無(wú)線(xiàn)協(xié)議(個(gè)別工業(yè)產(chǎn)品也有應(yīng)用,如無(wú)線(xiàn)視頻監(jiān)控和汽車(chē)音響系統(tǒng)),當(dāng)然私有無(wú)線(xiàn)網(wǎng)絡(luò)技術(shù)和產(chǎn)品在工業(yè)也有很多的應(yīng)用。 ZigBee是一個(gè)低功耗、短距離和低速的無(wú)線(xiàn)網(wǎng)絡(luò)技術(shù),工作在2.4GHz國(guó)際免執(zhí)照的頻率,在IEEE標(biāo)準(zhǔn)上它和無(wú)線(xiàn)局域網(wǎng)、藍(lán)牙同屬802家族中的無(wú)線(xiàn)個(gè)人區(qū)域網(wǎng)絡(luò), ZigBee是有兩部分組成,物理和鏈路層符合IEEE802.15.4, 網(wǎng)絡(luò)和應(yīng)用層符合ZigBee聯(lián)盟的規(guī)范。ZigBee聯(lián)盟是在2002年成立的非盈利組織,有包括TI、霍尼威爾、華為在內(nèi)兩百多家成員, ZigBee聯(lián)盟致力推廣兼容802.15.4和ZigBee協(xié)議的平臺(tái), 制定網(wǎng)絡(luò)層和應(yīng)用架構(gòu)的公共規(guī)范,希望在樓宇自動(dòng)化、居家控制、家用電器、工業(yè)自動(dòng)控制和電腦外設(shè)等多方面普及ZigBee標(biāo)準(zhǔn)。 GPRS是在現(xiàn)有的GSM 網(wǎng)絡(luò)發(fā)展出來(lái)的分組數(shù)據(jù)承載業(yè)務(wù),它工作在標(biāo)準(zhǔn)的GSM頻率,由于是一個(gè)分組交換系統(tǒng),它適合工業(yè)上的突發(fā),少量的數(shù)據(jù)傳輸,還因?yàn)镚SM網(wǎng)絡(luò)覆蓋廣泛,永遠(yuǎn)在線(xiàn)的特點(diǎn),GPRS特點(diǎn)適合工業(yè)控制中的遠(yuǎn)程監(jiān)控和測(cè)量系統(tǒng)。在工業(yè)控制應(yīng)用中GPRS 芯片一般是以無(wú)線(xiàn)數(shù)傳模塊形式出現(xiàn)的,它通過(guò)RS232全雙工接口和單片機(jī)連接,軟件上這些模塊都內(nèi)置了GPRS,PPP和TCP/IP協(xié)議,單片機(jī)側(cè)通過(guò)AT指令集向模塊發(fā)出測(cè)試,連接和數(shù)據(jù)收發(fā)指令,GPRS模塊通過(guò)中國(guó)移動(dòng)cmnet進(jìn)入互聯(lián)網(wǎng)和其他終端或者服務(wù)器通訊。目前市場(chǎng)常見(jiàn)的模塊有西門(mén)子G24TC45、TC35i,飛思卡爾G24,索愛(ài)GR47/48, 還有Wavecom 的集成了ARM9核的GPRS SoC模塊WMP50/100。GPRS模塊有區(qū)分自帶TCP/IP協(xié)議和不帶協(xié)議兩種,一般來(lái)講,如果是單片機(jī)側(cè)有嵌入式操作系統(tǒng)和TCP/IP協(xié)議支持的話(huà)或者應(yīng)用的要求只是收發(fā)短信和語(yǔ)音功能的話(huà),可以選擇不帶協(xié)議的模塊。 先進(jìn)的SoC技術(shù)正在無(wú)線(xiàn)應(yīng)用領(lǐng)域發(fā)揮重要的作用。德州儀器收購(gòu)了Chipcon公司以后發(fā)布的CC2430 是市場(chǎng)上首款SoC的ZigBee單片機(jī), 見(jiàn)圖1,它把協(xié)議棧z-stack集成在芯片內(nèi)部的閃存里面, 具有穩(wěn)定可靠的CC2420收發(fā)器,增強(qiáng)性的8051內(nèi)核,8KRAM,外設(shè)有I/O 口,ADC,SPI,UART 和AES128 安全協(xié)處理器,三個(gè)版本分別是32/64/128K的閃存,以128K為例,扣除基本z-stack協(xié)議還有3/4的空間留給應(yīng)用代碼,即使完整的ZigBee協(xié)議,還有近1/2的空間留給應(yīng)用代碼,這樣的無(wú)線(xiàn)單片機(jī)除了處理通訊協(xié)議外,還可以完成一些監(jiān)控和顯示任務(wù)。這樣無(wú)線(xiàn)單片機(jī)都支持通過(guò)SPI或者UART與通用單片機(jī)或者嵌入式CPU結(jié)合。 2008年4月發(fā)表CC2480新一代單片ZibBee認(rèn)證處理器就展示出和TI MSP430 通用的低功耗單片機(jī)結(jié)合的例子。圖1 CC2430應(yīng)用電路 工業(yè)控制領(lǐng)域的另一個(gè)芯片巨頭——飛思卡爾的單片ZigBee處理器MC1321X的方案也非常類(lèi)似,集成了HC08單片機(jī)核心, 16/32/64K 閃存,外設(shè)有GPIO, I2C和ADC, 軟件是Beestack 協(xié)議,只是最多4K RAM 對(duì)于更多的任務(wù)顯得小了些。但是憑借32位單片機(jī)Coldfire和系統(tǒng)軟件方面經(jīng)驗(yàn)和優(yōu)勢(shì), 飛思卡爾在滿(mǎn)足用戶(hù)應(yīng)用的彈性需求方面作的更有特色,它率先能夠提供從低-中-高各個(gè)層面的解決方案,見(jiàn)圖2。
標(biāo)簽: 單片機(jī) 工業(yè)無(wú)線(xiàn)網(wǎng)絡(luò)
上傳時(shí)間: 2013-11-02
上傳用戶(hù):momofiona
微處理器及微型計(jì)算機(jī)的發(fā)展概況 第一代微處理器是以Intel公司1971年推出的4004,4040為代表的四位微處理機(jī)。 第二代微處理機(jī)(1973年~1977年),典型代表有:Intel 公司的8080、8085;Motorola公司的M6800以及Zlog公司的Z80。 第三代微處理機(jī) 第三代微機(jī)是以16位機(jī)為代表,基本上是在第二代微機(jī)的基礎(chǔ)上發(fā)展起來(lái)的。其中Intel公司的8088。8086是在8085的基礎(chǔ)發(fā)展起來(lái)的;M68000是Motorola公司在M6800 的基礎(chǔ)發(fā)展起來(lái)的; 第四代微處理機(jī) 以Intel公司1984年10月推出的80386CPU和1989年4月推出的80486CPU為代表, 第五代微處理機(jī)的發(fā)展更加迅猛,1993年3月被命名為PENTIUM的微處理機(jī)面世,98年P(guān)ENTIUM 2又被推向市場(chǎng)。 INTEL CPU 發(fā)展歷史Intel第一塊CPU 4004,4位主理器,主頻108kHz,運(yùn)算速度0.06MIPs(Million Instructions Per Second, 每秒百萬(wàn)條指令),集成晶體管2,300個(gè),10微米制造工藝,最大尋址內(nèi)存640 bytes,生產(chǎn)曰期1971年11月. 8085,8位主理器,主頻5M,運(yùn)算速度0.37MIPs,集成晶體管6,500個(gè),3微米制造工藝,最大尋址內(nèi)存64KB,生產(chǎn)曰期1976年 8086,16位主理器,主頻4.77/8/10MHZ,運(yùn)算速度0.75MIPs,集成晶體管29,000個(gè),3微米制造工藝,最大尋址內(nèi)存1MB,生產(chǎn)曰期1978年6月. 80486DX,DX2,DX4,32位主理器,主頻25/33/50/66/75/100MHZ,總線(xiàn)頻率33/50/66MHZ,運(yùn)算速度20~60MIPs,集成晶體管1.2M個(gè),1微米制造工藝,168針PGA,最大尋址內(nèi)存4GB,緩存8/16/32/64KB,生產(chǎn)曰期1989年4月 Celeron一代, 主頻266/300MHZ(266/300MHz w/o L2 cache, Covington芯心 (Klamath based),300A/333/366/400/433/466/500/533MHz w/128kB L2 cache, Mendocino核心 (Deschutes-based), 總線(xiàn)頻率66MHz,0.25微米制造工藝,生產(chǎn)曰期1998年4月) Pentium 4 (478針),至今分為三種核心:Willamette核心(主頻1.5G起,FSB400MHZ,0.18微米制造工藝),Northwood核心(主頻1.6G~3.0G,FSB533MHZ,0.13微米制造工藝, 二級(jí)緩存512K),Prescott核心(主頻2.8G起,FSB800MHZ,0.09微米制造工藝,1M二級(jí)緩存,13條全新指令集SSE3),生產(chǎn)曰期2001年7月. 更大的緩存、更高的頻率、 超級(jí)流水線(xiàn)、分支預(yù)測(cè)、亂序執(zhí)行超線(xiàn)程技術(shù) 微型計(jì)算機(jī)組成結(jié)構(gòu)單片機(jī)簡(jiǎn)介單片機(jī)即單片機(jī)微型計(jì)算機(jī),是將計(jì)算機(jī)主機(jī)(CPU、 內(nèi)存和I/O接口)集成在一小塊硅片上的微型機(jī)。 三、計(jì)算機(jī)編程語(yǔ)言的發(fā)展概況 機(jī)器語(yǔ)言 機(jī)器語(yǔ)言就是0,1碼語(yǔ)言,是計(jì)算機(jī)唯一能理解并直接執(zhí)行的語(yǔ)言。匯編語(yǔ)言 用一些助記符號(hào)代替用0,1碼描述的某種機(jī)器的指令系統(tǒng),匯編語(yǔ)言就是在此基礎(chǔ)上完善起來(lái)的。高級(jí)語(yǔ)言 BASIC,PASCAL,C語(yǔ)言等等。用高級(jí)語(yǔ)言編寫(xiě)的程序稱(chēng)源程序,它們必須通過(guò)編譯或解釋?zhuān)B接等步驟才能被計(jì)算機(jī)處理。 面向?qū)ο笳Z(yǔ)言 C++,Java等編程語(yǔ)言是面向?qū)ο蟮恼Z(yǔ)言。 1.3 微型計(jì)算機(jī)中信息的表示及運(yùn)算基礎(chǔ)(一) 十進(jìn)制ND有十個(gè)數(shù)碼:0~9,逢十進(jìn)一。 例 1234.5=1×103 +2×102 +3×101 +4×100 +5×10-1加權(quán)展開(kāi)式以10稱(chēng)為基數(shù),各位系數(shù)為0~9,10i為權(quán)。 一般表達(dá)式:ND= dn-1×10n-1+dn-2×10n-2 +…+d0×100 +d-1×10-1+… (二) 二進(jìn)制NB兩個(gè)數(shù)碼:0、1, 逢二進(jìn)一。 例 1101.101=1×23+1×22+0×21+1×20+1×2-1+1×2-3 加權(quán)展開(kāi)式以2為基數(shù),各位系數(shù)為0、1, 2i為權(quán)。 一般表達(dá)式: NB = bn-1×2n-1 + bn-2×2n-2 +…+b0×20 +b-1×2-1+… (三)十六進(jìn)制NH十六個(gè)數(shù)碼0~9、A~F,逢十六進(jìn)一。 例:DFC.8=13×162 +15×161 +12×160 +8×16-1 展開(kāi)式以十六為基數(shù),各位系數(shù)為0~9,A~F,16i為權(quán)。 一般表達(dá)式: NH= hn-1×16n-1+ hn-2×16n-2+…+ h0×160+ h-1×16-1+… 二、不同進(jìn)位計(jì)數(shù)制之間的轉(zhuǎn)換 (二)二進(jìn)制與十六進(jìn)制數(shù)之間的轉(zhuǎn)換 24=16 ,四位二進(jìn)制數(shù)對(duì)應(yīng)一位十六進(jìn)制數(shù)。舉例:(三)十進(jìn)制數(shù)轉(zhuǎn)換成二、十六進(jìn)制數(shù)整數(shù)、小數(shù)分別轉(zhuǎn)換 1.整數(shù)轉(zhuǎn)換法“除基取余”:十進(jìn)制整數(shù)不斷除以轉(zhuǎn)換進(jìn)制基數(shù),直至商為0。每除一次取一個(gè)余數(shù),從低位排向高位。舉例: 2. 小數(shù)轉(zhuǎn)換法“乘基取整”:用轉(zhuǎn)換進(jìn)制的基數(shù)乘以小數(shù)部分,直至小數(shù)為0或達(dá)到轉(zhuǎn)換精度要求的位數(shù)。每乘一次取一次整數(shù),從最高位排到最低位。舉例: 三、帶符號(hào)數(shù)的表示方法 機(jī)器數(shù):機(jī)器中數(shù)的表示形式。真值: 機(jī)器數(shù)所代表的實(shí)際數(shù)值。舉例:一個(gè)8位機(jī)器數(shù)與它的真值對(duì)應(yīng)關(guān)系如下: 真值: X1=+84=+1010100B X2=-84= -1010100B 機(jī)器數(shù):[X1]機(jī)= 01010100 [X2]機(jī)= 11010100(二)原碼、反碼、補(bǔ)碼最高位為符號(hào)位,0表示 “+”,1表示“-”。 數(shù)值位與真值數(shù)值位相同。 例 8位原碼機(jī)器數(shù): 真值: x1 = +1010100B x2 =- 1010100B 機(jī)器數(shù): [x1]原 = 01010100 [x2]原 = 11010100原碼表示簡(jiǎn)單直觀,但0的表示不唯一,加減運(yùn)算復(fù)雜。 正數(shù)的反碼與原碼表示相同。 負(fù)數(shù)反碼符號(hào)位為 1,數(shù)值位為原碼數(shù)值各位取反。 例 8位反碼機(jī)器數(shù): x= +4: [x]原= 00000100 [x]反= 00000100 x= -4: [x]原= 10000100 [x]反= 111110113、補(bǔ)碼(Two’s Complement)正數(shù)的補(bǔ)碼表示與原碼相同。 負(fù)數(shù)補(bǔ)碼等于2n-abs(x)8位機(jī)器數(shù)表示的真值四、 二進(jìn)制編碼例:求十進(jìn)制數(shù)876的BCD碼 876= 1000 0111 0110 BCD 876= 36CH = 1101101100B 2、字符編碼 美國(guó)標(biāo)準(zhǔn)信息交換碼ASCII碼,用于計(jì)算 機(jī)與計(jì)算機(jī)、計(jì)算機(jī)與外設(shè)之間傳遞信息。 3、漢字編碼 “國(guó)家標(biāo)準(zhǔn)信息交換用漢字編碼”(GB2312-80標(biāo)準(zhǔn)),簡(jiǎn)稱(chēng)國(guó)標(biāo)碼。 用兩個(gè)七位二進(jìn)制數(shù)編碼表示一個(gè)漢字 例如“巧”字的代碼是39H、41H漢字內(nèi)碼例如“巧”字的代碼是0B9H、0C1H1·4 運(yùn)算基礎(chǔ) 一、二進(jìn)制數(shù)的運(yùn)算加法規(guī)則:“逢2進(jìn)1” 減法規(guī)則:“借1當(dāng)2” 乘法規(guī)則:“逢0出0,全1出1”二、二—十進(jìn)制數(shù)的加、減運(yùn)算 BCD數(shù)的運(yùn)算規(guī)則 循十進(jìn)制數(shù)的運(yùn)算規(guī)則“逢10進(jìn)1”。但計(jì)算機(jī)在進(jìn)行這種運(yùn)算時(shí)會(huì)出現(xiàn)潛在的錯(cuò)誤。為了解決BCD數(shù)的運(yùn)算問(wèn)題,采取調(diào)整運(yùn)算結(jié)果的措施:即“加六修正”和“減六修正”例:10001000(BCD)+01101001(BCD) =000101010111(BCD) 1 0 0 0 1 0 0 0 + 0 1 1 0 1 0 0 1 1 1 1 1 0 0 0 1 + 0 1 1 0 0 1 1 0 ……調(diào)整 1 0 1 0 1 0 1 1 1 進(jìn)位 例: 10001000(BCD)- 01101001(BCD)= 00011001(BCD) 1 0 0 0 1 0 0 0 - 0 1 1 0 1 0 0 1 0 0 0 1 1 1 1 1 - 0 1 1 0 ……調(diào)整 0 0 0 1 1 0 0 1 三、 帶符號(hào)二進(jìn)制數(shù)的運(yùn)算 1.5 幾個(gè)重要的數(shù)字邏輯電路編碼器譯碼器計(jì)數(shù)器微機(jī)自動(dòng)工作的條件程序指令順序存放自動(dòng)跟蹤指令執(zhí)行1.6 微機(jī)基本結(jié)構(gòu)微機(jī)結(jié)構(gòu)各部分組成連接方式1、以CPU為中心的雙總線(xiàn)結(jié)構(gòu);2、以?xún)?nèi)存為中心的雙總線(xiàn)結(jié)構(gòu);3、單總線(xiàn)結(jié)構(gòu)CPU結(jié)構(gòu)管腳特點(diǎn) 1、多功能;2、分時(shí)復(fù)用內(nèi)部結(jié)構(gòu) 1、控制; 2、運(yùn)算; 3、寄存器; 4、地址程序計(jì)數(shù)器堆棧定義 1、定義;2、管理;3、堆棧形式
上傳時(shí)間: 2013-10-17
上傳用戶(hù):erkuizhang
51匯編程序?qū)嵗号e一例說(shuō)明:流水燈加數(shù)碼管 LOOP: ; 標(biāo)號(hào)CLR P2.6 ;選中p2.6 數(shù)碼管左邊的8字使能SETB P2.7 ;p2.7不使能。 右邊的數(shù)碼管消隱MOV P0,#28H ;把28h送p0口;數(shù)碼管顯示 0LCALL DELAY ;延時(shí)MOV P0,#0FFH ;0ffh 送p0口,數(shù)碼管清除CLR P1.0 ;點(diǎn)亮p1.0發(fā)光管MOV P0,#7EH ;把7eh送p0口;數(shù)碼管顯示 1LCALL DELAYMOV P0,#0FFHCLR P1.1 ;點(diǎn)亮p1.0發(fā)光管CLR P1.0 ;點(diǎn)亮p1.0發(fā)光管MOV P0,#0A2H ;數(shù)碼管顯示 2LCALL DELAYMOV P0,#0FFHCLR P1.2CLR P1.1CLR P1.0MOV P0,#62H ;數(shù)碼管顯示 3LCALL DELAYMOV P0,#0FFHCLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#74H ;數(shù)碼管顯示 4LCALL DELAYMOV P0,#0FFHCLR P1.4CLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#61H ;數(shù)碼管顯示 5;LCALL DELAYMOV P0,#0FFHCLR P1.5CLR P1.4CLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#21H ; 數(shù)碼管顯示 6LCALL DELAYMOV P0,#0FFHCLR P1.6CLR P1.5CLR P1.4CLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#7AH ; 數(shù)碼管顯示 7LCALL DELAYMOV P0,#0FFHCLR P1.7CLR P1.6CLR P1.5CLR P1.4CLR P1.3CLR P1.2CLR P1.1CLR P1.0MOV P0,#20H ; 數(shù)碼管顯示 8LCALL DELAYMOV P0,#0FFHLCALL DELAYMOV P0,#0FFHMOV P1,#0FFH;程序到此結(jié)果為左邊的數(shù)碼管顯示0,1,2,3,4,5,6,7,8;p1.0------------p1.7指示燈依次點(diǎn)亮SETB P2.6 ; 左邊的8消隱CLR P2.7 ;選中p2.7 數(shù)碼管右邊的8字使能 ,;MOV P0,#28HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.0MOV P0,#7EHLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.1MOV P0,#0A2HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.2MOV P0,#62HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.3MOV P0,#74HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.4MOV P0,#61HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.5MOV P0,#21HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.6MOV P0,#7AHLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHCLR P1.7MOV P0,#20HLCALL DELAYMOV P0,#0FFHMOV P1,#0FFHMOV P0,#0FFHMOV P1,#0FFH;這一段和上一段基本相同, 不同的是右邊的數(shù)碼管依次顯示012345678,左邊的不亮;;同時(shí)p1口的燈流動(dòng)顯示:AJMP LOOP; 注意: 程序運(yùn)行到此跳轉(zhuǎn)到開(kāi)始標(biāo)號(hào),重復(fù)執(zhí)行:DELAY: ;延時(shí)子程序;參考前面的教程:CLR P3.3 ;注意小喇叭在3.3口, 這里可以使小喇叭發(fā)出嗒,嗒聲MOV R7,#255NOPNOPD1:MOV R6,#255setb p3.3D2: DJNZ R6,D2clr p3.3DJNZ R7,D1SETB P3.3RETENDLOOP: ; 標(biāo)號(hào)CLR P2.6 ;選中p2.6 數(shù)碼管左邊的8字使能SETB P2.7 ;p2.7不使能。 右邊的數(shù)碼管消隱MOV P0,#28H ;把28h送p0口;數(shù)碼管顯示 0 ;28為1010000LCALL DELAY ; 延時(shí)程序MOV P0,#0FFH ;0ffh 送p0口,數(shù)碼管清除;P0口為11111111CLR P1.0 ;點(diǎn)亮p1.0發(fā)光管; P1。0為電平,P0口為11111110MOV P0,#7EH ;把7eh送p0口;數(shù)碼管顯示 1; P1。0為低電平,P0口為11111110LCALL DELAY ; 延時(shí)程序MOV P0,#0FFHMOV P0,#0FFH ;0ffh 送p0口,數(shù)碼管清除;P0口為11111111 清一次顯示這條是清顯示的
標(biāo)簽: 匯編 上傳時(shí)間: 2013-10-31
上傳用戶(hù):gundamwzc
文中基于帶通信號(hào)的低通等效原理,采用數(shù)字希爾伯特濾波器實(shí)現(xiàn)了數(shù)字包絡(luò)檢波器,并在CCS中實(shí)現(xiàn)了軟件調(diào)試。其中,通過(guò)使用LinkforCCS和DSP的函數(shù)庫(kù)DSPLIB縮短了程序的開(kāi)發(fā)時(shí)間,提高了算法的實(shí)現(xiàn)效率。
標(biāo)簽: DSP 數(shù)字 調(diào)幅解調(diào)器 算法
上傳時(shí)間: 2013-10-09
上傳用戶(hù):gaoqinwu
TMS320F28x 系列MCU 被廣泛用于電機(jī)驅(qū)動(dòng)控制,也同樣被用于汽車(chē)的各種電機(jī)驅(qū)動(dòng)控制。TPIC7312 內(nèi)部具有3 相N-MOSFET 橋的驅(qū)動(dòng),并內(nèi)部集成了用于電流檢測(cè)的運(yùn)算放大器,過(guò)流、過(guò)壓、欠壓、短路等保護(hù)功能,另外內(nèi)部集成了升壓電路。微處理器可通過(guò)SPI 接口實(shí)現(xiàn)對(duì)TPIC7312 的配置和控制。
上傳時(shí)間: 2013-11-08
上傳用戶(hù):xinyuzhiqiwuwu
介紹了一種基于FPGA的多軸控制器,控制器主要由ARM7(LPC2214)和FPGA(EP2C5T144C8)及其外圍電路組成,用于同時(shí)控制多路電機(jī)的運(yùn)動(dòng)。利用Verilog HDL 硬件描述語(yǔ)言在FPGA中實(shí)現(xiàn)了電機(jī)控制邏輯,主要包括脈沖控制信號(hào)產(chǎn)生、加減速控制、編碼器反饋信號(hào)的辨向和細(xì)分、絕對(duì)位移記錄、限位信號(hào)保護(hù)邏輯等。論文中給出了FPGA內(nèi)部一些核心邏輯單元的實(shí)現(xiàn),并利用Quartus Ⅱ、Modelsim SE軟件對(duì)關(guān)鍵邏輯及時(shí)序進(jìn)行了仿真。實(shí)際使用表明該控制器可以很好控制多軸電機(jī)的運(yùn)動(dòng),并且能夠?qū)崿F(xiàn)高精度地位置控制。
上傳時(shí)間: 2014-12-28
上傳用戶(hù):molo
描述了基于FPGA的FIR濾波器設(shè)計(jì)。根據(jù)FIR的原理及嚴(yán)格線(xiàn)性相位濾波器具有偶對(duì)稱(chēng)的性質(zhì)給出了FIR濾波器的4種結(jié)構(gòu),即直接乘加結(jié)構(gòu)、乘法器復(fù)用結(jié)構(gòu)、乘累加結(jié)構(gòu)、DA算法。在本文中給出上述幾種算法的結(jié)構(gòu)框圖,并通過(guò)FPGA編程實(shí)現(xiàn)上述幾種算法,并給出所用的資源來(lái)比較各種算法的優(yōu)劣。
標(biāo)簽: FPGA FIR 濾波器 對(duì)比
上傳時(shí)間: 2013-12-09
上傳用戶(hù):lvzhr
針對(duì)傳統(tǒng)集成電路(ASIC)功能固定、升級(jí)困難等缺點(diǎn),利用FPGA實(shí)現(xiàn)了擴(kuò)頻通信芯片STEL-2000A的核心功能。使用ISE提供的DDS IP核實(shí)現(xiàn)NCO模塊,在下變頻模塊調(diào)用了硬核乘法器并引入CIC濾波器進(jìn)行低通濾波,給出了DQPSK解調(diào)的原理和實(shí)現(xiàn)方法,推導(dǎo)出一種簡(jiǎn)便的引入?仔/4固定相移的實(shí)現(xiàn)方法。采用模塊化的設(shè)計(jì)方法使用VHDL語(yǔ)言編寫(xiě)出源程序,在Virtex-II Pro 開(kāi)發(fā)板上成功實(shí)現(xiàn)了整個(gè)系統(tǒng)。測(cè)試結(jié)果表明該系統(tǒng)正確實(shí)現(xiàn)了STEL-2000A的核心功能。 Abstract: To overcome drawbacks of ASIC such as fixed functionality and upgrade difficulty, FPGA was used to realize the core functions of STEL-2000A. This paper used the DDS IP core provided by ISE to realize the NCO module, called hard core multiplier and implemented CIC filter in the down converter, described the principle and implementation detail of the demodulation of DQPSK, and derived a simple method to introduce a fixed phase shift of ?仔/4. The VHDL source code was designed by modularity method , and the complete system was successfully implemented on Virtex-II Pro development board. Test results indicate that this system successfully realize the core function of the STEL-2000A.
標(biāo)簽: STEL 2000 FPGA 擴(kuò)頻通信
上傳時(shí)間: 2013-11-06
上傳用戶(hù):liu123
我采用XC4VSX35或XC4VLX25 FPGA來(lái)連接DDR2 SODIMM和元件。SODIMM內(nèi)存條選用MT16HTS51264HY-667(4GB),分立器件選用8片MT47H512M8。設(shè)計(jì)目標(biāo):當(dāng)客戶(hù)使用內(nèi)存條時(shí),8片分立器件不焊接;當(dāng)使用直接貼片分立內(nèi)存顆粒時(shí),SODIMM內(nèi)存條不安裝。請(qǐng)問(wèn)專(zhuān)家:1、在設(shè)計(jì)中,先用Xilinx MIG工具生成DDR2的Core后,管腳約束文件是否還可更改?若能更改,則必須要滿(mǎn)足什么條件下更改?生成的約束文件中,ADDR,data之間是否能調(diào)換? 2、對(duì)DDR2數(shù)據(jù)、地址和控制線(xiàn)路的匹配要注意些什么?通過(guò)兩只100歐的電阻分別連接到1.8V和GND進(jìn)行匹配 和 通過(guò)一只49.9歐的電阻連接到0.9V進(jìn)行匹配,哪種匹配方式更好? 3、V4中,PCB LayOut時(shí),DDR2線(xiàn)路阻抗單端為50歐,差分為100歐?Hyperlynx仿真時(shí),那些參數(shù)必須要達(dá)到那些指標(biāo)DDR2-667才能正常工作? 4、 若使用DDR2-667的SODIMM內(nèi)存條,能否降速使用?比如降速到DDR2-400或更低頻率使用? 5、板卡上有SODIMM的插座,又有8片內(nèi)存顆粒,則物理上兩部分是連在一起的,若實(shí)際使用時(shí),只安裝內(nèi)存條或只安裝8片內(nèi)存顆粒,是否會(huì)造成信號(hào)完成性的影響?若有影響,如何控制? 6、SODIMM內(nèi)存條(max:4GB)能否和8片分立器件(max:4GB)組合同時(shí)使用,構(gòu)成一個(gè)(max:8GB)的DDR2單元?若能,則布線(xiàn)阻抗和FPGA的DCI如何控制?地址和控制線(xiàn)的TOP圖應(yīng)該怎樣? 7、DDR2和FPGA(VREF pin)的參考電壓0.9V的實(shí)際工作電流有多大?工作時(shí)候,DDR2芯片是否很燙,一般如何考慮散熱? 8、由于多層板疊層的問(wèn)題,可能頂層和中間層的銅箔不一樣后,中間的夾層后度不一樣時(shí),也可能造成阻抗的不同。請(qǐng)教DDR2-667的SODIMM在8層板上的推進(jìn)疊層?
標(biāo)簽: FPGA DDR2 連接 問(wèn)題討論
上傳時(shí)間: 2013-10-12
上傳用戶(hù):han_zh
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1