單片機的FPGA設(shè)計與實現(xiàn)畢業(yè)論文_第1頁
單片機的FPGA設(shè)計與實現(xiàn)畢業(yè)論文_第2頁
單片機的FPGA設(shè)計與實現(xiàn)畢業(yè)論文_第3頁
單片機的FPGA設(shè)計與實現(xiàn)畢業(yè)論文_第4頁
單片機的FPGA設(shè)計與實現(xiàn)畢業(yè)論文_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、8051單片機的FPGA設(shè)計與實現(xiàn)第一章前 言20世紀末在計算機技術(shù)逐漸發(fā)展的情況寫,電子技術(shù)得到了飛速的發(fā)展,現(xiàn)代電子產(chǎn)品已經(jīng)滲透到了社會的各個領(lǐng)域,有力的推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高,同時也使現(xiàn)代電子產(chǎn)品的性能進一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。電子技術(shù)發(fā)展的根基是微電子技術(shù)的進步,它表現(xiàn)在大規(guī)模集成電路加工技術(shù),即半導(dǎo)體工藝技術(shù)的發(fā)展上,表征半導(dǎo)體工藝水平的線寬已經(jīng)達到60nm以下,并還在不斷縮?。辉诠杵瑔挝幻娣e上集成了更多的晶體管,集成電路設(shè)計在不斷地向超大規(guī)模,極低功耗和超高速的方向發(fā)展;專用集成電路ASIC(Application Specific Integ

2、rated Circuit)的設(shè)計成本不斷降低,在功能上,現(xiàn)代的集成電路已能夠?qū)崿F(xiàn)單片電子系統(tǒng)SOC(System on a chip)的功能。另外集成電路(IC)技術(shù)在微電子領(lǐng)域中占有重要的地位。且伴隨著IC技術(shù)的發(fā)展,電子設(shè)計自動(Electronic Design Automation,EDA)已經(jīng)逐漸成為重要的設(shè)計手段,其廣泛應(yīng)用于模擬與數(shù)字電路系統(tǒng)等許多領(lǐng)域。單片機是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/

3、D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的微型計算機系統(tǒng),在工業(yè)控制領(lǐng)域的廣泛應(yīng)用。從上世紀80年代,由當時的4位、8位單片機,發(fā)展到現(xiàn)在的32位300M的高速單片機。單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優(yōu)點,廣泛應(yīng)用于儀器儀表中,結(jié)合不同類型的傳感器,可實現(xiàn)諸如電壓、電流、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電子或數(shù)字電路更加強大。FPGA是英文FieldProgrammable Gate Array的縮寫,即現(xiàn)場可編程門陣列,它是在PAL

4、、GAL、EPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個新概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個部分。CPLD與FPGA的內(nèi)部結(jié)構(gòu)稍有不同,但用法一樣,所以多數(shù)情況下,不加以區(qū)分。FPGA/CPLD芯片都是特殊的ASIC芯片,它們除了具有ASI

5、C的特點之外,還具有以下幾個優(yōu)點:隨著VLSI(Very Large Scale IC,超大規(guī)模集成電路)工藝的不斷提高單一芯片內(nèi)部可以容納上百萬個晶體管, FPGA/CPLD芯片的規(guī)模也越來越大,其單片邏輯門數(shù)已達到上百萬門,它所能實現(xiàn)的功能也越來越強,同時也可以實現(xiàn)系統(tǒng)集成。FPGA/CPLD的資金投入小,節(jié)省了許多潛在的花費。用戶可以反復(fù)地編程、擦除、使用或者在外圍電路不動的情況下用不同軟件就可實現(xiàn)不同的功能。所以,用FPGA/PLD 試制樣片,能以最快的速度占領(lǐng)市場。 FPGA/CPLD軟件包中有各種輸入工具和仿真工具,及版圖設(shè)計工具和編程器等全線產(chǎn)品,電路設(shè)計人員在很短的時間內(nèi)就可完

6、成電路的輸入、編譯、優(yōu)化、仿真,直至最后芯片的制作。 當電路有少量改動時,更能顯示出FPGA/CPLD的優(yōu)勢?,F(xiàn)有的電子系統(tǒng)設(shè)計多數(shù)采用微控制器為核心,輔以必要的外圍器件如ADC、DAC和存儲器等,這樣的系統(tǒng)做出來的線路板較大,且調(diào)試復(fù)雜;而且如果系統(tǒng)內(nèi)有高速器件,則微控制器的選擇將會是個困難;雖然可通過程序升級增加或改進功能,但硬件一旦設(shè)計完成,是無法更改的。FPGA(現(xiàn)場可編程門陣列)與 CPLD(復(fù)雜可編程邏輯器件)都是可編程邏輯器件,它們是在PAL,GAL等邏輯器件的基礎(chǔ)之上發(fā)展起來的。同以往的PAL、GAL等相比較,F(xiàn)PGA/CPLD的規(guī)模比較大,它可以替代幾十甚至幾千塊通用IC芯片

7、。這樣的FPGA/CPLD實際上就是一個系統(tǒng)部件。由于其應(yīng)用的靈活性,這種芯片受到世界范圍內(nèi)電子工程設(shè)計人員的廣泛關(guān)注和普遍歡迎。第二章 FPGA系統(tǒng)的簡介在數(shù)字化、信息化的時代,數(shù)字集成電路應(yīng)用得非常廣泛。隨著微電子技術(shù)與工藝的發(fā)展,數(shù)字集成電路從電子管、晶體管、中小規(guī)模集成電路、超大規(guī)模集成電路(VLSI)逐步發(fā)展到今天的專用集成電路(ASIC)。ASIC的出現(xiàn)降低了產(chǎn)品的生產(chǎn)成本,提高了系統(tǒng)的可靠性,減小了產(chǎn)品的物理尺寸,推動了社會的數(shù)字化進程。但是ASIC因其設(shè)計周期長,改版投資大,靈活性差等缺陷制約著它的應(yīng)用范圍??删幊踢壿嬈骷S著微電子制造工藝的發(fā)展取得了長足的進步。從早期的只能存

8、儲少量數(shù)據(jù),完成簡單邏輯功能的可編程只讀存儲器(PROM)、紫外線可擦除只讀存儲器(EPROM)i1oJ和電可擦除只讀存儲器(EEROM),發(fā)展到能完成中大規(guī)模的數(shù)字邏輯功能的可編程陣列邏輯(PAL)和通用陣列邏輯(GAL)11ii,今天已經(jīng)發(fā)展成為可以完成超大規(guī)模的復(fù)雜組合邏輯與時序邏輯的現(xiàn)場可編程邏輯器件(FPGA)和復(fù)雜可編程邏輯器件(CPLD)。第一節(jié) FPGA的特點FPGA既繼承了ASIC的大規(guī)模、高集成度、高可靠性的優(yōu)點,又克服了普通ASIC設(shè)計周期長、投資大、靈活性差的缺點,逐步成為復(fù)雜數(shù)字硬件電路設(shè)計的理想首選。當代FPGA有以下特點:1. 規(guī)模越來越大。2. 開發(fā)過程投資小。

9、3. FPGA一般可以反復(fù)地編程、擦除。4. 保密性能好。5. FPGA開發(fā)工具智能化,功能強大。6. 新型FPGA內(nèi)嵌CPU或DSP內(nèi)核,支持軟硬件協(xié)同設(shè)計,可以作為片上可編程系統(tǒng)(SOPC)的硬件平臺。第二節(jié)FPGA的設(shè)計流程一個完整的FPGA設(shè)計流程包括電路設(shè)計與輸入、功能仿真、綜合、綜合后仿真、實現(xiàn)、布線后仿真和下板調(diào)試等主要步驟。常用的設(shè)計輸入方法有硬件描述語言(HDL)和原理圖設(shè)計輸入方法。原理圖設(shè)計輸入法早期應(yīng)用得比較廣泛,它根據(jù)設(shè)計要求,選用器件、繪制原理圖、完成輸入過程。這種方法的優(yōu)點是直觀、便于理解、元件庫資源豐富。但是在大型設(shè)計中,這種方法的可維護性較差,不利于模塊建設(shè)與

10、重用。更重要的缺點是:當所選用芯片升級換代后,所有原理圖都要作相應(yīng)的改動。目前進行大型工程設(shè)計時,最常用的設(shè)計方法是HDL設(shè)計輸入法。其中影響最為廣泛的HDL語言是VHDL和Verilog HDL。它們的共同特點是利于自頂向下設(shè)計,利于模塊的劃分與復(fù)用,可移植性好,通用性好,設(shè)計不因芯片的工藝與結(jié)構(gòu)的變化而變化,更利于向ASIC的移植。電路設(shè)計完成后,要用專用的仿真工具對設(shè)計進行功能仿真,驗證電路功能是否符合設(shè)計要求。功能仿真有時也被稱為前仿真。通過仿真能及時發(fā)現(xiàn)設(shè)計中的錯誤,加快設(shè)計進度,提高設(shè)計的可靠性。綜合優(yōu)化(Synthesize)是指將HDL語言、原理圖等設(shè)計輸入翻譯成由與、或、非門

11、,RAM,寄存器等基本邏輯單元組成的邏輯連接(網(wǎng)表),并根據(jù)目標與要求(約束條件)優(yōu)化所生成的邏輯連接,輸出edf和edn等文件,供FPGA 廠家的布局御線器進行實現(xiàn)。綜合完成后需要檢查綜合結(jié)果是否與原設(shè)計一致,需要做綜合后仿真。在仿真時,把綜合生成的延時文件反標到綜合仿真模型中去,可估計門的延時帶來的影響。綜合后仿真雖然比功能仿真精確一些,但是只能估計門的延時,而不能估計線的延時,仿真結(jié)果與布線后的實際情況還有一定的差距,并不十分準確。這種仿真的主要目的在于檢查綜合器的綜合結(jié)果是否與設(shè)計輸入一致。綜合結(jié)果的本質(zhì)是一些由與、或、非門,觸發(fā)器,RAM等基本邏輯單元組成的邏輯網(wǎng)表,它與芯片實際的配

12、置情況還有較大差距。此時應(yīng)該使用FPGA廠商提供的工具軟件,根據(jù)所選芯片的型號,將綜合輸出的邏輯網(wǎng)表,適配到具體FPGA器件上,這個過程就叫做實現(xiàn)(Implementation)過程。Xilinx的實現(xiàn)過程分為:翻譯(Translate)、映射(Map)、布局布線(Place & Route)等3個步驟。布局布線之后應(yīng)該做時序仿真,時序仿真中應(yīng)該將布局布線的時延文件反標到設(shè)計中,使仿真既包含門的延時,又包含線的延時信息。與前面各種仿真相比,這種后仿真包含的延時信息最為全面、準確,能較好地反映芯片的實際工作情況。設(shè)計開發(fā)的最后步驟就是在線調(diào)試或者將生成的配置文件寫入芯片中進行測試。在ISE中對應(yīng)

13、的工具是iMPACT。第三節(jié) FPGA的開發(fā)工具FPGA的開發(fā)工具有很多,各個公司都有自己專用工具。本次畢業(yè)設(shè)計我所采用的開發(fā)工具為ALTERA:QUARTUS。一、 ALTERA : QUARTUSQuartus II design 是最高級和復(fù)雜的,用于system-on-a-programmable-chip (SOPC)的設(shè)計環(huán)境。 QuartusII design 提供完善的 timing closure 和 LogicLock 基于塊的設(shè)計流程。QuartusII design是唯一一個包括以timing closure 和 基于塊的設(shè)計流為基本特征的programmable lo

14、gic device (PLD)的軟件。 Quartus II 設(shè)計軟件改進了性能、提升了功能性、解決了潛在的設(shè)計延遲等,在工業(yè)領(lǐng)域率先提供FPGA與mask-programmed devices開發(fā)的統(tǒng)一工作流程。Altera Quartus II 作為一種可編程邏輯的設(shè)計環(huán)境, 由于其強大的設(shè)計能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計者的歡迎。Altera Quartus II設(shè)計軟件是業(yè)界唯一提供FPGA和固定功能HardCopy器件統(tǒng)一設(shè)計流程的設(shè)計工具。工程師使用同樣的低價位工具對 Stratix FPGA進行功能驗證和原型設(shè)計,又可以設(shè)計HardCopy Stratix器件用于

15、批量成品。系統(tǒng)設(shè)計者現(xiàn)在能夠用Quartus II評估HardCopy Stratix器件的性能和功耗,相應(yīng)地進行最大吞吐量設(shè)計。Altera的Quartus II可編程邏輯軟件屬于第四代PLD開發(fā)平臺。該平臺支持一個工作組環(huán)境下的設(shè)計要求,其中包括支持基于Internet的協(xié)作設(shè)計。Quartus平臺與Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供應(yīng)商的開發(fā)工具相兼容。改進了軟件的LogicLock模塊設(shè)計功能,增添 了FastFit編譯選項,推進了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。二、 Quartus II的特點

16、1、支持MAX7000/MAX3000等乘積項器件2、軟件體積縮小,運行速度加快3、LogicLock設(shè)計流程把性能提升15%4、采用快速適配選項縮短編譯時間5、新的功能減小了系統(tǒng)級驗證 第二章8051單片機的FPGA設(shè)計與實現(xiàn)單片微型計算機簡稱為單片機,又稱為微型控制器,是微型計算機的一個重要分支。單片機是70年代中期發(fā)展起來的一種大規(guī)模集成電路芯片,是CPU、RAM、ROM、I/O接口和中斷系統(tǒng)于同一硅片的器件。80年代以來,單片機發(fā)展迅速,各類新產(chǎn)品不斷涌現(xiàn),出現(xiàn)了許多高性能新型機種,現(xiàn)已逐漸成為工廠自動化和各控制領(lǐng)域的支柱產(chǎn)業(yè)之一。8051單片機是早最典型的產(chǎn)品,該系列具它單片機都是在

17、8051的基礎(chǔ)上進行功能的增、減、改變而來的,所以人們習(xí)慣于用8051來稱呼MCS51系列單片機。8051單片機是早最典型的產(chǎn)品,該系列具它單片機都是在8051的基礎(chǔ)上進行功能的增、減、改變而來的,所以人們習(xí)慣于用8051來稱呼MCS51系列單片機。第一節(jié) 51單片機的引腳功能MCS-51是標準的40引腳雙列直插式集成電路芯片,引腳分布請參照圖 1:圖1、8051芯片管腳圖1電源引腳 Vee和 VssVcc(40腳):電源端,+5伏。Vss(20腳):接地端。 2時鐘電路引腳又面和叉麗XTAL2(1 8腳):接外部晶體和微調(diào)電容的一端。在805l單片機內(nèi)它是振蕩電路反相放大器的輸出端,振蕩電路

18、的頻率就是晶體固有頻率。若需采用外部時鐘電路時,該引腳輸入外部時鐘脈沖信號。XTALl(19腳):接外部晶體和微凋電容的另一端。在片內(nèi)它是振蕩電路反相放大器的輸入端。在采用外部時鐘時,該引腳必須接地。3控制信號引腳RST、ALE、麗和豆iRST/V(9腳):RST是復(fù)位信號輸入端,高電平有效。當此輸入端保持兩個機器周期(24個時鐘振蕩周期)的高電平時,就可以完成復(fù)位操作。RST引腳的第二功能是VpD,即備用電源的輸入端。當主電源Vcc發(fā)生故障,降低到低電平規(guī)定值時,將+5V電壓自動接入RST端,為RAM提供備用電源,以保證存儲在RAM中的信息不丟失,以使復(fù)電后能繼續(xù)正常運行。 ALE/PROG

19、(ADDRESS LATCH ENABLE/PRoGRAMMING,30腳):地址鎖存允許信號端。當8051上電正常工作后,ALE引腳不斷向外輸出正脈沖信號,此頻率為振蕩器頻率而sc的1/6。CPU訪問片外存儲器時,ALE輸出信號作為鎖存低8位地址的控制信號。該引腳的第二功能PROG是對片內(nèi)帶有4KEPROM的8751編程寫入(固化程序)時,作為編程脈沖輸入端。PSEN(PROGRAM STORE ENABLE,29腳):程序存儲允許輸出信號端。在訪問片外程序存儲器時,此端口定時輸出負脈沖,作為片外存儲器讀的選通信號。EA/Vpp(ENABLE ADDREss/voulAGE PULSE OF

20、 PROGRAMMING3 1腳):外部程序存儲器地址允許輸入端/固化編程電壓輸入端。當酉引腳連接高電平時,CPU只訪問片內(nèi)EPROM/ROM并執(zhí)行內(nèi)部程序存儲器中的指令,但在PC(程序計數(shù)器)的值超過OFFFFH(對8051為4K)時,將自動轉(zhuǎn)向執(zhí)行片外程序存儲器內(nèi)的程序。當輸入信號EA連接低電平(接地)時,CPU只訪問外部EPROM/ROM并執(zhí)行外部程序存儲器中的指令,而不管是否有片內(nèi)程序存儲器。此引腳的第二功能VPP,是對8751片內(nèi)EPROM固化編程時,作為施加較高編程電壓(一般2l伏)輸入端。4I/O(輸入/輸出)端口P0、P1、P2和P3PO口(POOPO7,3932腳):P0口是

21、一個漏極開路261的8位準雙向I/O端口。作為漏極開路的輸出端口,每位能驅(qū)動8個LS型TTL273負載。當P0口作為輸入口使用時,應(yīng)先向P0口鎖存器(地址80H)寫入全1,此時P0 El的全部引腳懸空,可作為高阻抗輸入。作為輸入口使用時要先寫l,這就是標準雙向的含義。在CPU訪問片外存儲器時,PO口是分時提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。在此期間,PO口內(nèi)部上拉電阻有效。P1口(PIOP17,18腳):P1口是一個帶內(nèi)部上拉電阻的8位準雙向I/O端口。P1口的每一位能驅(qū)動(吸收或輸出電流)4個Ls型TTL負載。在P1口作為輸入口使用時,應(yīng)先向P1口鎖存器(地址90H)寫入全1,此時P1口的引

22、腳輸入由內(nèi)部上拉電阻拉成高電平。P2口(P2OP27,2128腳):P2口是一個帶內(nèi)部上拉電阻的8位準雙向I/O端口。Pl口的每一位能驅(qū)動(吸收/輸出電流)4個Ls型TTL負載。訪問片外EPROM/RAM時,它輸出高8位地址。P3口有兩個功能,除了作為I/O使用外(其內(nèi)部有上拉電阻),還有一些特殊功能,由特殊寄存器來設(shè)置。有內(nèi)部EPROM的單片機芯片即:編程脈沖:30腳(ALE/PROG)編程電壓(25V):31腳(EA/VPP)第二節(jié) 51系列單片機的結(jié)構(gòu)和原理一、 51系列單片機的結(jié)構(gòu) 圖2所示為MCS-51系列單片機中的8051單片機的基本功能結(jié)構(gòu)方框圖。圖2 8051單片機功能方框圖在

23、一塊芯片上,集成了一個微型計算機的各個組成部分,每一片單片機包括:1一個8位的微處理器CPU。2片內(nèi)數(shù)據(jù)存儲器RAM(128B/256B),用以存放可以讀/寫的數(shù)據(jù),如運算3片內(nèi)程序存儲器ROM/EPROM(4KB/8KB),用以存放程序、一些原是數(shù)據(jù)和表格。4四個8位并行I/O(輸入/輸出)接口P0P3,每個口可以用作輸入,也可以用作輸出。5兩個或三個定時/計數(shù)器,每個定時/計數(shù)器都可以設(shè)置成計數(shù)方式,用以對外部事件進行計數(shù),也可以設(shè)置成定時方式,并可以根據(jù)計數(shù)或定時的結(jié)果實現(xiàn)計算機控制。6五個中斷源的中斷控制系統(tǒng)。7一個雙全工UART(通用異步接收發(fā)送器)的串行I/O口,可實現(xiàn)單片機與單片

24、機或其它微機之間串行通信。8片內(nèi)振蕩器和時鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接,最高允許振蕩頻率為12MHz。以上各部分通過內(nèi)部數(shù)據(jù)總線相連接。二、 51單片機內(nèi)部結(jié)構(gòu)8051單片機內(nèi)部結(jié)構(gòu)如圖3所示 圖3 8051單片機內(nèi)部結(jié)構(gòu)圖完整的計算機應(yīng)該由運算器、控制器、存儲器(ROM及RAM)和I/O接口組成。一般微處理器(如Z80)只包括運算器和控制器兩部分。和一般微處理器相比,8051增加了四個8位I/O接口、一個串行口、4KBROM、128BRAM和很多工作寄存器及特殊功能寄存器(SFR)。其各部分的功能簡述如下:1運算器包括一個可進行8位算術(shù)運算和邏輯運算的ALU單元,8位的暫存器1、

25、暫存器2、8位的累加器ACC,寄存器B和程序狀態(tài)字寄存器PSWI231等。ALU:可對4位(半字節(jié))、8位(一字節(jié))和16位(雙字節(jié))數(shù)據(jù)進行操作。如可進行加、減、乘、除、加1、減1、BCD數(shù)十進制調(diào)整及比較等算術(shù)運算和邏輯與、或、異或、取反和循環(huán)移位等邏輯操作。ACC:累加器ACC,經(jīng)常作為一個運算數(shù)經(jīng)暫存器2進入ALU的一個輸入端,與另一個進入暫存器1的運算數(shù)進行運算,運算結(jié)果又送回ACC。除此之外,ACC在8051內(nèi)部經(jīng)常作為數(shù)據(jù)傳送的中轉(zhuǎn)站,同一般微處理器一樣,它是最繁忙的一個寄存器。PSW:程序狀態(tài)字寄存器,8位,用于標志指令執(zhí)行后的信息狀態(tài),相當于一般微處理器的標志寄存器。PSW中

26、各位狀態(tài)供程序查詢和判別用。寄存器B:8位寄存器,在乘、除運算時,B寄存器用來存放一個操作數(shù):也用來存放運算后的一部分結(jié)果;若不進行乘、除運算時,則可作為通用寄存器使用。另外,8051片內(nèi)還有一個布爾處理器,它以PSW中的進位標志位C為其累加器,專門用于處理位操作:可以執(zhí)行置位、位清零、位取反、位等于1轉(zhuǎn)移、位等于0轉(zhuǎn)移、位等于1轉(zhuǎn)移并清零以及進位標志位C與其它可以位尋址的空間之間進行信息傳送等位操作,也能使C與其他可尋找位之間進行邏輯與、或操作,結(jié)果存放在進位標志位C中。2控制器控制器包括程序計數(shù)器PC、指令寄存器IR、指令譯碼器ID、振蕩器及定時電路等。程序計數(shù)器PC:它由兩個8位的計數(shù)器

27、PCH及PCL組成,共16位。PC實際上是程的字節(jié)地址計數(shù)器,PC中的內(nèi)容是將要執(zhí)行的下一條指令的地址。改變PC中的內(nèi)就可以改變程序執(zhí)行的流向。PC可對64K的ROM(程序存儲器)直接尋址,也可對8051片外RAM(數(shù)據(jù)存儲器)尋址。指令寄存器IR及指令譯碼器ID:由PC中的內(nèi)容指定ROM地址,取出來的指令經(jīng)指令寄存器IR送至指令譯碼器ID,由ID對指令譯碼并送PLA產(chǎn)生一定序列的控制信號,以執(zhí)行指令所規(guī)定的操作。振蕩器及定時電路:8051單片機片內(nèi)有振蕩電路,只需外接石英晶體和頻率微調(diào)電容(2個30pF左右),其頻率范圍為1212MHz,該脈沖信號就作為8051工作的最基本節(jié)拍,即時間的最小

28、單位。3存儲器8051片內(nèi)有ROM(程序存儲器,只能讀)和RAM(數(shù)據(jù)存儲器,可讀、可寫)兩類,它們有各自獨立的存儲地址空間,與一般微機的存儲器配置方式很不相同。(1)程序存儲器(ROM)8051的片內(nèi)程序存儲器容量為4K字節(jié),地址從0000H開始,用于存放程序和表格常數(shù)。(2)數(shù)據(jù)存儲器(RAM)805l片內(nèi)數(shù)據(jù)存儲器為128字節(jié),地址為00H7FH,用于存放運算的中問結(jié)果、數(shù)據(jù)暫存以及數(shù)據(jù)緩沖等。在這128字節(jié)的RAM中,有32個字節(jié)單元可指定為工作寄存器,這同一般微處理器不同。8051的片內(nèi)RAM和工作寄存器排在一個隊列里統(tǒng)一編址。由圖3可見,8051單片機內(nèi)部還有SP、DPTR、PCO

29、N、IE、IP等特殊功能寄存器,它們也同128字節(jié)RAM在一個隊列里編址,地址為80HFFH。在這128字節(jié)RAM單元中有21個特殊功能寄存器(SFR),這些特殊功能寄存器還包括POP3口鎖存器。4I/O接口8051有四個8位并行接口即P0P3,它們都是雙向端口,每個端口各有8條I/O線,均可輸入/輸出。P0P3 13四個鎖存器同RAM統(tǒng)一編址,可以把U/O口當作一般特殊功能寄存器來尋址。第三節(jié) 51單片機存儲器配置51系列單片機與一般微機的存儲器配置方式很不相同。一般微機通常只有一個地址空間,ROM和RAM可以隨意安排在這一地址范圍內(nèi)不同的空問,即ROM和RAM的地址同在一個隊列里分配不同的

30、空間。CPU訪問存儲器時,一個地址對應(yīng)唯一的存儲器單元,可以是ROM也可以是RAM,并用同類訪問指令。此種存儲器結(jié)構(gòu)稱普林斯頓結(jié)構(gòu)。8051的存儲器在物理結(jié)構(gòu)上分程序存儲器空間和數(shù)據(jù)存儲器空問,有四個存儲空間:片內(nèi)程序存儲器和片外程序存儲器空間以及片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器空間,這種程序存儲器和數(shù)據(jù)存儲器分開的結(jié)構(gòu)形式,稱為哈佛結(jié)構(gòu)。從用戶使用的角度,8051存儲器地址空間分為三類:1片內(nèi)、片外空間地址統(tǒng)一編址0000HFFFFH的64K字節(jié)的程序存儲器地址空問(用16位地址);264K字節(jié)片外數(shù)據(jù)存儲器地址空間,地址也從0000HFFFFH(用16位地址)。3256字節(jié)數(shù)據(jù)存儲器地址空間

31、(用8位地址)。上述三個存儲空間地址是重疊的,為了區(qū)分三個不同的邏輯空間,805l的指令系統(tǒng)設(shè)計了不同的數(shù)據(jù)傳送指令符號;CPU訪問片內(nèi)、片外ROM指令用MOVC,訪問片外RAM指令用MOVX,訪問片內(nèi)RAM指令用MOV。4.程序存儲器地址空間8051存儲器地址空間分程序存儲器(64KB ROM)和數(shù)據(jù)存儲器(64KBRAM)。程序存儲器用于存放編好的程序和表格常數(shù)。程序存儲器通過16位程序計數(shù)器(PC)尋址,尋址能力為64KB字節(jié)。這使得能在64KB地址空問內(nèi)任意尋址,但沒有指令使程序能控制從程序存儲器空間轉(zhuǎn)移到數(shù)據(jù)存儲器空間。5.數(shù)據(jù)存儲器地址空間數(shù)據(jù)存儲器RAM用于存放運算的中間結(jié)果、數(shù)

32、據(jù)暫存和緩沖、標志位等。數(shù)據(jù)存儲器空間也分為片內(nèi)和片外兩大部分,片內(nèi)RAM和片外RAM。8051片外數(shù)據(jù)存儲器空間為64K,從0000HFFFFH:片內(nèi)存儲器空間為256字節(jié),地址從0000H00FFH。(一)片外RAM片外數(shù)據(jù)存儲器與片內(nèi)數(shù)據(jù)存儲器空間低地址0000HFFFFH是重疊的,805 l有MOV和MOVX兩種指令,用以區(qū)分片內(nèi)、片外RAM空間。片內(nèi)RAM使用MOV指令,片外64K RAM空間專門為MOVX指令所用。(二)片內(nèi)RAM片內(nèi)數(shù)據(jù)存儲器最大可尋址256個單元,它們又分為兩個部分,低128字二肯(00H7FH)是真正的RAM區(qū),高128字節(jié)(80HFFH)為特殊功能寄存器(S

33、FR)區(qū)。6低128字節(jié)RAM8051的32個工作寄存器與RAM安排在同一個隊列空間里,統(tǒng)一編址并使用同樣的尋址方式(直接尋址和間接尋址)。00HlFH地址安排為四組工作寄存器區(qū),每組有8個工作寄存器(ROAR7),共占32個單元(見表1)。通過對程序狀態(tài)字PSW中RS1、RS0的設(shè)置,每組寄存器均可選作CPU的當前工作寄存器組。若程序中并不需要四組,那么其余可用作一般RAM單元。CPU復(fù)位后,選中第0組工作寄存器。組RS1RS0R0R1R2R3R4R5R6R700000H01H02H03H04H05H06H07H10108090AH0BH0CH0DH0EH0FH21010H11H12H13H

34、14H15H16H17H31118H19H1AH1BH1CH1DH1EH1FH表 1 :作寄存器地址表低128字節(jié)RAM單元地址范圍也是00H7FH,8051采用不同尋址方式來加以區(qū)分,即訪問128個位地址,使用位尋址方式,訪問低128字節(jié)單元用直接尋址和間接尋址,這樣就可以區(qū)分開00H7FH是位地址還是字節(jié)地址。1 高128字節(jié)RAM特殊功能寄存器(SFR)8051片內(nèi)高128字節(jié)RAM中,除程序計數(shù)器PC外,有21個專用寄存器(SFR),也稱特殊功能寄存器,它們離散地分布在80HFFH的RAM間中。訪問特殊功能僅允許使用直接尋址方式(詳情見表2)。(1)累加器ACC累加器ACC是8051最

35、常用、最繁忙的8位特殊功能寄存器,許多指令的操作數(shù)取自于ACC,并許多運算結(jié)果也存放于ACC中。在指令系統(tǒng)中采用A作為累加器ACC的助記符。OV(PSW2)溢出標志位。當進行補碼運算時,如有溢出,即當運算結(jié)果超出-128+127的范圍時,OV位由硬件自動置OV=1;無溢出時,OV=0。PSW1為保留位,8051未用。P(PSW.O)奇偶檢驗標志位。每條指令執(zhí)行完后,該位始終跟蹤指示累加器A中1的個數(shù)。如結(jié)果A中有奇數(shù)個“1”,則置P=1,否則P=0。常用于校驗串行通訊中的數(shù)據(jù)傳送是否出錯。(2)寄存器B(FOH)在乘除指令中,用到了8位B寄存器。乘法指令的兩個操作數(shù)分別取自A和B,乘積存于B、

36、A兩個8位寄存器中。除法指令中,A中存放被除數(shù),B中存放除數(shù),商存放于A中,B中存放余數(shù)。在其它指令中,B可作為一般通用寄存器或一個RAM單元使用。(3)程序狀態(tài)寄存器PSW(DOH)PSW是一個8位特殊功能寄存器,它的各位包含了程序執(zhí)行后的狀態(tài)信息,供程序查詢或判別之用。各位的含義及其格式如下: CYACFORS1RSOOV-PCY(PSW7)進位標志位。在執(zhí)行加法(或減法)運算指令時,如果運算結(jié)果最高位(位7)向前有進位(或借位),CY位由硬件自動置“1”:如運算結(jié)果最高位(位7)無進位(或借位),則CY清0。CY也是8051在進行位操作(布爾操作)時的位累加器。AC(Psw6)半進位標志

37、位,也稱輔助進位標志。當執(zhí)行加法(或減法)操作時,其運算結(jié)果(和或差)產(chǎn)生由低半個字節(jié)(位3)向高半個字節(jié)有半進位(或借位)時,AC位將被硬件自動置“1”,否則AC被自動清“0”。F0(PSW5)用戶標志位。用戶可以根據(jù)自己的需要對FO位賦予定的含義由用戶執(zhí)行置位、復(fù)位操作,作為軟件標志。RS0和RS 1(PSW4和PSW5)工作寄存器組選擇控制位。這兩位的值決定選擇哪一組工作寄存器為當前工作寄存器組。由用戶用軟件改變RS1和RS 0值的組合,以切換當前選用的工作寄存器組,其組合關(guān)系詳見表2。8051上電復(fù)位后,(RS1)=(RS0)=O,CPU自然選擇第0作為當前工作寄存器組。根據(jù)需要,可利

38、用傳送指令對PSW整字節(jié)操作,或使用位操作指令改變RS1和RS0的狀態(tài),以切換當前工作寄存器組。RS1RS0寄存器組片內(nèi)RAM地址00第0組00H07H01第1組08H0FH10第2組10H17H11第3組18H1FH表 3 RS0、RS1的組合關(guān)系(4)棧指針SP(81H)堆棧指針SP為8位特殊功能寄存器,SP的內(nèi)容即堆棧指針,可指向8051片內(nèi)00H7FH的RAM的任何單元。系統(tǒng)復(fù)位后,SP初始化為07H,即指向07H的RAM單元。8051的堆棧指針SP是一個雙向計數(shù)器。在壓棧時SP內(nèi)容自動增值,出棧時自動減值,存取信息必需按著“先進后出”或“后進先出”的原則。(5)數(shù)據(jù)指針DPTR(83

39、H,82H)DPTR是一個16位的特殊功能寄存器,其高位字節(jié)寄存器用DPH表示(地址83H),低位字節(jié)寄存器用DPL表示(82H)。DPRT既可以作為一個16位寄存器來處理,也可以作為二個獨立的8位寄存器DPH和DPL使用。DPTR主要用以存放16位地址,以便對64K片外RAM作間接尋址。(6)I/O端口P0P3(80H,90H,AOH,BOH)P0P3為四個8位特殊功能寄存器,分別是四個并行I/O端的鎖存器。它們都有字節(jié)地址,每一個口鎖存器還有位地址,所以每一條I/O線獨立地用作輸入或輸出時,數(shù)據(jù)可以鎖存;作輸入時,數(shù)據(jù)可以緩沖。當I/O端口某一位用于輸入信號時,對應(yīng)的鎖存器位須先置“1”。

40、符號名稱地址ACC累加器E0HBB寄存器F0HPSW程序狀態(tài)字D0HSP棧指針81HDPH數(shù)據(jù)指針高位83HDPL數(shù)據(jù)指針地位82HP0P0鎖存寄存器80HP1P1鎖存寄存器90HP2P2鎖存寄存器A0HP3P3鎖存寄存器B0HIP中斷優(yōu)先級控制寄存器B8HIE中斷允許控制寄存器A8HTMOD定時/計數(shù)器工作方式、狀態(tài)寄存器89HTCON定時/計數(shù)器控制寄存器88HTH0定時/計數(shù)器0(高字節(jié))8CHTL0定時/計數(shù)器0(低字節(jié))8AHTH1定時/計數(shù)器1(高字節(jié))8DHTL1定時/計數(shù)器1(低字節(jié))8BHSCON串行口控制寄存器98HSBUF串行數(shù)據(jù)緩沖器99HPCON電源控制寄存器97H表

41、 2 51系列單片機的特殊功能寄存器表第四節(jié) 8051單片機的FPGA設(shè)計與實現(xiàn)本設(shè)計采用現(xiàn)在流行的模塊化設(shè)計方式,將8051單片機按照其內(nèi)部的結(jié)構(gòu)設(shè)計成為3個大的模塊,即運算器、存儲器和控制器模塊。一、運算器模塊的設(shè)計運算器模塊包括一個可進行8位算術(shù)運算和邏輯運算的ALU單元,8位的暫存器1、暫存器2、8位的累加器ACC,寄存器B和程序狀態(tài)寄存器PSW。(1)ALU(算術(shù)邏輯運算單元)模塊的信號該模塊的信號如圖4所示,負責(zé)進行算術(shù)邏輯運算,它能完成加、減、乘、除算術(shù)運算以及與、或、非等邏輯運算。其中:rst為復(fù)位標志,高有效。op-code是4位代碼,用來定義ALU所要進行的操作,它的內(nèi)容已

42、經(jīng)在8051 1沁文件中定義完畢。例如,要進行加法操作,則op code為0001。src-1為送入ALU的第一源操作數(shù),8位輸入,當做加法運算時它是被加數(shù),做減法運算時它是被減數(shù),做除法運算時它是被除數(shù)。src_2為送入的第二源操作數(shù),8位輸入,當做減法運算時,它是減數(shù);做除法運算時,它是除數(shù)。src_3為送入ALU的第三源操作數(shù),8位輸入。src_cy為第一源操作數(shù)的第7位。src_ac為第一源操作數(shù)的第4位。des_1為第一目標操作數(shù),8位輸出,用來存放ALU計算后的數(shù)據(jù)。des_2為第二目標操作數(shù),8位輸出,用來存放ALU計算后的剩余數(shù)據(jù),如除法沒有整除的小數(shù)等。des_cy為ALU運

43、算完數(shù)據(jù)的第7位。des_ac為ALU運算完數(shù)據(jù)的第4位。des_ov位溢出標志位。圖4 ALU模塊信號圖二、ALU(算術(shù)邏輯運算單元)模塊的層次化設(shè)計(詳見圖5)圖5 ALU(算術(shù)邏輯運算單元)模塊的層次化設(shè)計三、ALU模塊的VHDL語言描述ALU模塊中實現(xiàn)乘法操作的VHDL語言描述Procedure DO_MUL (a: in unsigned( 7 down to 0 ); b: in unsigned( 7 down to 0 ); r: in unsigned( 15 down to 0 ); ov: out std_logic) is variable v1:unsigned(15

44、 down to 0);begin v1:=a*b; r:=v1; if(v1(15 down to 8)/=C0_8)then ov:=1; else ov:=0; end if:end DO_MUL;其中,a為被乘數(shù),8位輸入信號,b為乘數(shù),8位輸人信號,r為a、b相乘后的結(jié)果,16位輸出信號,OV為溢出標志,當計算所得的結(jié)果的高8位的值不等于0時,ov=1,表示計算結(jié)果溢出。ALU模塊中實現(xiàn)BCD碼調(diào)整操作的VHDL語言描述procedure DO_DA(a: in unsigned(7 down to 0) ; c1:In std_logic; c2:In std_logic; r:

45、out unsigned(7 down to 0);cy: out std_logic) isvariable v:tmsigIl6d(8 down to U);begin v:=”0”&a; fi(c2=1)or(v(3 down to 0)C9_4)thenv:=v+“O00000110”;end if;v(8):=v(8)or c1;if(v(8)=1)thenv:=v+“O01100000”;end if;r: v(7 down to0);cy:=v(8);end DO_DA;其中,當輸入的信號低4位大于9(1001B)時,進行加6(110B)操作;當輸入信號最高位為1時,進行加96(

46、00110000B)操作。ALU模塊的主程序的部分如下:begin process(rst,op_code,scr_1, scr_2, scr_3 scr_cy, scr_ac) variable v16: unsigned(15 down to 0); variable v8: unsigned(7 down to 0); variable v_cy, v_ac, v_ov: std_logic;begin if(rst=1)thendes_1=CD_8; des_2=CD_8; des_cy=-; des_ac=-; des_ov DO_ADD(src_T, src_2, src_cy,v

47、8,v_cy,v_ac,v_ov); des_1=v8;des_2=CD_8;des_cy=v_cy;des_ac=v_ac;des_ovDO_SUB(src_T, src_2, src_cy,v8,v_cy,v_ac,v_ov); des_1=v8;des_2=CD_8;des_cy=v_cy;des_ac=v_ac;des_ov=v_ov;當RST=1時,ALU復(fù)位;,當RST=0時,ALU根據(jù)OPCODE的值進行相應(yīng)的操作。四、ALU模塊功能仿真運算代碼代碼內(nèi)容對應(yīng)操作ALU_OPC_NONE0000ALU_OPC_ADD0001加法ALU_OPC_SUB0010減法ALU_OPC_MU

48、L0011乘法ALU_OPC_DIV0100除法ALU_OPC_DA0101BCD碼調(diào)整表 4 運算代碼所對應(yīng)的操作表4表示的是各個預(yù)算代碼的對應(yīng)的操作。本次設(shè)計我主要解決算術(shù)運算,不嘗試邏輯運算。假設(shè)scr_1=10(00001010B),scr_2=5(00000101B),由仿真圖形可以看出,當op code=0001時,即做加法運算,得des 1=15(00001111B):當op code=0010時,即做減法運算,得des_1=5(00000101B);當op-code=0011時,即做乘法運算,得des_l=50(00110010B);當op_code=0100時,即做除法運算,得des_l=2(00000010B)。圖 6 加法及減法的仿真波形圖 7乘法及除法的仿真波形圖8減法及除法運算的仿真波形五、存儲器模塊設(shè)計本設(shè)計共為8051單片機設(shè)計了3種存儲器,片內(nèi)ROM、RAM和片外XRM。本設(shè)計中的片內(nèi)ROM用來存儲已經(jīng)編寫好的程序控制代碼,只能讀出數(shù)據(jù)不能寫入數(shù)據(jù)。片內(nèi)ROM片內(nèi)ROM的信號一片內(nèi)ROM的信號如圖9所示。其中:RST:復(fù)位標志,低有效,輸入信號;CLK:時鐘信號,輸入信號;ADDRoADDRII:地址總

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論