




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
8051單片機的FPGA設計與實現第一章前言20世紀末在計算機技術逐漸發展的情況寫,電子技術得到了飛速的發展,現代電子產品已經滲透到了社會的各個領域,有力的推動了社會生產力的發展和社會信息化程度的提高,同時也使現代電子產品的性能進一步提高,產品更新換代的節奏也越來越快.電子技術發展的根基是微電子技術的進步,它表現在大規模集成電路加工技術,即半導體工藝技術的發展上,表征半導體工藝水平的線寬已經達到60nm以下,并還在不斷縮小;在硅片單位面積上集成了更多的晶體管,集成電路設計在不斷地向超大規模,極低功耗和超高速的方向發展;專用集成電路ASIC(ApplicationSpecificIntegratedCircuit)的設計成本不斷降低,在功能上,現代的集成電路已能夠實現單片電子系統SOC(Systemonachip)的功能?另外集成電路(IC)技術在微電子領域中占有重要的地位?且伴隨著IC技術的發展,電子設計自動(ElectronicDesignAutomation,EDA)已經逐漸成為重要的設計手段,其廣泛應用于模擬與數字電路系統等許多領域。單片機是一種集成電路芯片,是采用超大規模集成電路技術把具有數據處理能力中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的微型計算機系統,在工業控制領域的廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的32位300M的高速單片機。單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優點,廣泛應用于儀器儀表中,結合不同類型的傳感器,可實現諸如電壓、電流、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機控制使得儀器儀表數字化、智能化、微型化,且功能比起采用電子或數字電路更加強大。FPGA是英文Field—ProgrammableGateArray的縮寫,即現場可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎上進一步發展的產物.它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點.FPGA采用了邏輯單元陣列LCA(LogicCellArray)這樣一個新概念,內部包括可配置邏輯模塊CLB(ConfigurableLogicBlock)、輸出輸入模塊I0B(InputOutputBlock)和內部連線(Interconnect)三個部分.CPLD與FPGA的內部結構稍有不同,但用法一樣,所以多數情況下,不加以區分。FPGA/CPLD芯片都是特殊的ASIC芯片,它們除了具有ASIC的特點之外,還具有以下幾個優點:隨著VLSI(VeryLargeScaleIC,超大規模集成電路)工藝的不斷提高單一芯片內部可以容納上百萬個晶體管,FPGA/CPLD芯片的規模也越來越大,其單片邏輯門數已達到上百萬門,它所能實現的功能也越來越強,同時也可以實現系統集成.FPGA/CPLD的資金投入小,節省了許多潛在的花費。用戶可以反復地編程、擦除、使用或者在外圍電路不動的情況下用不同軟件就可實現不同的功能。所以,用FPGA/PLD試制樣片,能以最快的速度占領市場。FPGA/CPLD軟件包中有各種輸入工具和仿真工具,及版圖設計工具和編程器等全線產品,電路設計人員在很短的時間內就可完成電路的輸入、編譯、優化、仿真,直至最后芯片的制作。當電路有少量改動時,更能顯示出FPGA/CPLD的優勢。現有的電子系統設計多數采用微控制器為核心,輔以必要的外圍器件如ADC、DAC和存儲器等,這樣的系統做出來的線路板較大,且調試復雜;而且如果系統內有高速器件,則微控制器的選擇將會是個困難;雖然可通過程序升級增加或改進功能,但硬件一旦設計完成,是無法更改的.FPGA(現場可編程門陣列)與CPLD(復雜可編程邏輯器件)都是可編程邏輯器件,它們是在PAL,GAL等邏輯器件的基礎之上發展起來的。同以往的PAL、GAL等相比較,FPGA/CPLD的規模比較大,它可以替代幾十甚至幾千塊通用IC芯片。這樣的FPGA/CPLD實際上就是一個系統部件。由于其應用的靈活性,這種芯片受到世界范圍內電子工程設計人員的廣泛關注和普遍歡迎。第二章FPGA系統的簡介在數字化、信息化的時代,數字集成電路應用得非常廣泛。隨著微電子技術與工藝的發展,數字集成電路從電子管、晶體管、中小規模集成電路、超大規模集成電路(VLSI)逐步發展到今天的專用集成電路(ASIC).ASIC的出現降低了產品的生產成本,提高了系統的可靠性,減小了產品的物理尺寸,推動了社會的數字化進程。但是ASIC因其設計周期長,改版投資大,靈活性差等缺陷制約著它的應用范圍。可編程邏輯器件隨著微電子制造工藝的發展取得了長足的進步.從早期的只能存儲少量數據,完成簡單邏輯功能的可編程只讀存儲器(PROM)、紫外線可擦除只讀存儲器(EPROM)iloj和電可擦除只讀存儲器(EEROM),發展到能完成中大規模的數字邏輯功能的可編程陣列邏輯(PAL)和通用陣列邏輯(GAL)llii,今天已經發展成為可以完成超大規模的復雜組合邏輯與時序邏輯的現場可編程邏輯器件(FPGA)和復雜可編程邏輯器件(CPLD)。第一節FPGA的特點FPGA既繼承了ASIC的大規模、高集成度、高可靠性的優點,又克服了普通ASIC設計周期長、投資大、靈活性差的缺點,逐步成為復雜數字硬件電路設計的理想首選?當代FPGA有以下特點:規模越來越大。開發過程投資小。FPGA一般可以反復地編程、擦除。保密性能好.FPGA開發工具智能化,功能強大.新型FPGA內嵌CPU或DSP內核,支持軟硬件協同設計,可以作為片上可編程系統(SOPC)的硬件平臺.第二節FPGA的設計流程一個完整的FPGA設計流程包括電路設計與輸入、功能仿真、綜合、綜合后仿真、實現、布線后仿真和下板調試等主要步驟。常用的設計輸入方法有硬件描述語言(HDL)和原理圖設計輸入方法。原理圖設計輸入法早期應用得比較廣泛,它根據設計要求,選用器件、繪制原理圖、完成輸入過程。這種方法的優點是直觀、便于理解、元件庫資源豐富。但是在大型設計中,這種方法的可維護性較差,不利于模塊建設與重用.更重要的缺點是:當所選用芯片升級換代后,所有原理圖都要作相應的改動。目前進行大型工程設計時,最常用的設計方法是HDL設計輸入法?其中影響最為廣泛的HDL語言是VHDL和VerilogHDL。它們的共同特點是利于自頂向下設計,利于模塊的劃分與復用,可移植性好,通用性好,設計不因芯片的工藝與結構的變化而變化,更利于向ASIC的移植。電路設計完成后,要用專用的仿真工具對設計進行功能仿真,驗證電路功能是否符合設計要求。功能仿真有時也被稱為前仿真。通過仿真能及時發現設計中的錯誤,加快設計進度,提高設計的可靠性。綜合優化(Synthesize)是指將HDL語言、原理圖等設計輸入翻譯成由與、或、非門,RAM,寄存器等基本邏輯單元組成的邏輯連接(網表),并根據目標與要求(約束條件)優化所生成的邏輯連接,輸出edf和edn等文件,供FPGA廠家的布局御線器進行實現.綜合完成后需要檢查綜合結果是否與原設計一致,需要做綜合后仿真。在仿真時,把綜合生成的延時文件反標到綜合仿真模型中去,可估計門的延時帶來的影響。綜合后仿真雖然比功能仿真精確一些,但是只能估計門的延時,而不能估計線的延時,仿真結果與布線后的實際情況還有一定的差距,并不十分準確。這種仿真的主要目的在于檢查綜合器的綜合結果是否與設計輸入一致。綜合結果的本質是一些由與、或、非門,觸發器,RAM等基本邏輯單元組成的邏輯網表,它與芯片實際的配置情況還有較大差距。此時應該使用FPGA廠商提供的工具軟件,根據所選芯片的型號,將綜合輸出的邏輯網表,適配到具體FPGA器件上,這個過程就叫做實現(Implementation)過程。Xilinx的實現過程分為:翻譯(Translate)、映射(Map)、布局布線(Place&Route)等3個步驟。布局布線之后應該做時序仿真,時序仿真中應該將布局布線的時延文件反標到設計中,使仿真既包含門的延時,又包含線的延時信息.與前面各種仿真相比,這種后仿真包含的延時信息最為全面、準確,能較好地反映芯片的實際工作情況.設計開發的最后步驟就是在線調試或者將生成的配置文件寫入芯片中進行測試.在ISE中對應的工具是iMPACT。第三節FPGA的開發工具FPGA的開發工具有很多,各個公司都有自己專用工具。本次畢業設計我所采用的開發工具為ALTERA:QUARTUS。一、ALTERA: QUARTUSQuartus?IIdesign是最高級和復雜的,用于system—on一a一programmable—chip(SOPC)的設計環境。Quartuslldesign提供完善的timingclosure和LogicLock?基于塊的設計流程.QuartusIIdesign是唯一一個包括以timingclosure和基于塊的設計流為基本特征的programmablelogicdevice(PLD)的軟件。QuartusII設計軟件改進了性能、提升了功能性、解決了潛在的設計延遲等,在工業領域率先提供FPGA與mask—programmeddevices開發的統一工作流程.AlteraQuartusII作為一種可編程邏輯的設計環境,由于其強大的設計能力和直觀易用的接口,越來越受到數字系統設計者的歡迎.AlteraQuartusII設計軟件是業界唯一提供FPGA和固定功能HardCopy器件統一設計流程的設計工具.工程師使用同樣的低價位工具對StratixFPGA進行功能驗證和原型設計,又可以設計HardCopyStratix器件用于批量成品。系統設計者現在能夠用QuartusII評估HardCopyStratix器件的性能和功耗,相應地進行最大吞吐量設計.Altera的QuartusII可編程邏輯軟件屬于第四代PLD開發平臺。該平臺支持一個工作組環境下的設計要求,其中包括支持基于Internet的協作設計。Quartus平臺與Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供應商的開發工具相兼容.改進了軟件的LogicLock模塊設計功能,增添了FastFit編譯選項,推進了網絡編輯性能,而且提升了調試能力。二、QuartusII的特點1、 支持MAX7000/MAX3000等乘積項器件2、 軟件體積縮小,運行速度加快3、 LogicLock設計流程把性能提升15%4、 采用快速適配選項縮短編譯時間5、 新的功能減小了系統級驗證第二章8051單片機的FPGA設計與實現單片微型計算機簡稱為單片機,又稱為微型控制器,是微型計算機的一個重要分支。單片機是70年代中期發展起來的一種大規模集成電路芯片,是CPU、RAM、ROM、I/O接口和中斷系統于同一硅片的器件。80年代以來,單片機發展迅速,各類新產品不斷涌現,出現了許多高性能新型機種,現已逐漸成為工廠自動化和各控制領域的支柱產業之一。8051單片機是早最典型的產品,該系列具它單片機都是在8051的基礎上進行功能的增、減、改變而來的,所以人們習慣于用8051來稱呼MCS51系列單片機。8051單片機是早最典型的產品,該系列具它單片機都是在8051的基礎上進行功能的增、減、改變而來的,所以人們習慣于用8051來稱呼MCS51系列單片機.第一節51單片機的引腳功能MCS—51是標準的40引腳雙列直插式集成電路芯片,引腳分布請參照圖P1口匸P1口匸2□UCC140P1.1C23971PO.Ql.ADCJ)P1.JL彳漏-IPp.t(AQI)?1.3匚4372JP&.2|ADS)P1.4匚538□P0.3(AD31PI:6L6-35HP0.4lACM)F1血匚T了;」P0.51AD5)PlF匚g盼□尸0石[AM]R前匚32□PCi.7(AD71-1-031□EM/PPECO網.1匚113&J口田柚G[IN而)P3.2匚29□PSEN匚:13|PZ.7IA15;(TCIF3.4C1427□Pi.GiAUI(T1)^3.5匚力□P2呂S伺iWtP3.6i_1625LPZ.d(AI?|(AD)P3.7匚1724□PZ.3(A11:XTA.LE匚IB23□PZ.E(A1^XTA.L1C詁址H叱岸卿匚21□P2.0IAS1圖1、8051芯片管腳圖電源引腳Vee和VssVcc(40腳):電源端,+5伏。Vss(20腳):接地端。時鐘電路引腳又面和叉麗XTAL2(18腳):接外部晶體和微調電容的一端。在8051單片機內它是振蕩電路反相放大器的輸出端,振蕩電路的頻率就是晶體固有頻率。若需采用外部時鐘電路時,該引腳輸入外部時鐘脈沖信號.XTAL1(19腳):接外部晶體和微凋電容的另一端。在片內它是振蕩電路反相放大器的輸入端。在采用外部時鐘時,該引腳必須接地.3。 控制信號引腳RST、ALE、麗和豆iRST/V(9腳):RST是復位信號輸入端,咼電平有效。當此輸入端保持兩個機器周期(24個時鐘振蕩周期)的咼電平時,就可以完成復位操作°RST引腳的第二功能是VpD,即備用電源的輸入端.當主電源Vcc發生故障,降低到低電平規定值時,將+5V電壓自動接入RST端,為RAM提供備用電源,以保證存儲在RAM中的信息不丟失,以使復電后能繼續正常運行。ALE/PROG(ADDRESSLATCHENABLE/PRoGRAMMING,30腳):地址鎖存允許信號端。當8051上電正常工作后,ALE引腳不斷向外輸出正脈沖信號,此頻率為振蕩器頻率而sc的1/6。CPU訪問片外存儲器時,ALE輸出信號作為鎖存低8位地址的控制信號。該引腳的第二功能PROG是對片內帶有4KEPR0M的8751編程寫入(固化程序)時,作為編程脈沖輸入端。PSEN(PROGRAMSTOREENABLE,29腳):程序存儲允許輸出信號端。在訪問片外程序存儲器時,此端口定時輸出負脈沖,作為片外存儲器讀的選通信號。EA/Vpp(ENABLEADDREss/voulAGEPULSEOFPR0GRAMMING31腳):外部程序存儲器地址允許輸入端/固化編程電壓輸入端.當酉引腳連接咼電平時,CPU只訪問片內EPROM/ROM并執行內部程序存儲器中的指令,但在PC(程序計數器)的值超過OFFFFH(對8051為4K)時,將自動轉向執行片外程序存儲器內的程序。當輸入信號EA連接低電平(接地)時,CPU只訪問外部EPROM/ROM并執行外部程序存儲器中的指令,而不管是否有片內程序存儲器。此引腳的第二功能VPP,是對8751片內EPROM固化編程時,作為施加較高編程電壓(一般21伏)輸入端。I/O(輸入/輸出)端口P0、Pl、P2和P3P0口(PO°0~PO.7,39~32腳):PO口是一個漏極開路[261的8位準雙向I/O端口。作為漏極開路的輸出端口,每位能驅動8個LS型TTL[273負載。當P0口作為輸入口使用時,應先向P0口鎖存器(地址80H)寫入全1,此時POEl的全部引腳懸空,可作為高阻抗輸入。作為輸入口使用時要先寫1,這就是標準雙向的含義.在CPU訪問片外存儲器時,P0口是分時提供低8位地址和8位數據的復用總線。在此期間,PO口內部上拉電阻有效。P1口(PI.0?P1.7,1?8腳):P1口是一個帶內部上拉電阻的8位準雙向I/O端口。P1口的每一位能驅動(吸收或輸出電流)4個Ls型TTL負載?在P1口作為輸入口使用時,應先向P1口鎖存器(地址90H)寫入全1,此時P1口的引腳輸入由內部上拉電阻拉成高電平。卩2口(P2.0?P2.7,21?28腳):P2口是一個帶內部上拉電阻的8位準雙向1/0端口。P1口的每一位能驅動(吸收/輸出電流)4個Ls型TTL負載?訪問片外EPR0M/RAM時,它輸出高8位地址。P3口有兩個功能,除了作為I/O使用外(其內部有上拉電阻),還有一些特殊功能,由特殊寄存器來設置.有內部EPROM的單片機芯片即:編程脈沖:30腳(ALE/PROG)編程電壓(25V):31腳(EA/VPP)第二節51系列單片機的結構和原理一、51系列單片機的結構圖2所示為MCS-51系列單片機中的8051單片機的基本功能結構方框圖。J^tu2BGBRAM/SI'R:可編捏DO口64KB擴展卷制器2XLGF.<‘主時器/計數器:J^tu2BGBRAM/SI'R:可編捏DO口64KB擴展卷制器2XLGF.<‘主時器/計數器:程序存儲器'4KEXRDMJ叫騙程全歐丄帛髡口eoeiCPiJ躍證時序井衍口靈外部事件計數*u外吋將鯨”出行通訊:外取斷;圖28051單片機功能方框圖在一塊芯片上,集成了一個微型計算機的各個組成部分,每一片單片機包括一個8位的微處理器CPU。2。片內數據存儲器RAM(128B/256B),用以存放可以讀/寫的數據,如運算3?片內程序存儲器ROM/EPROM(4KB/8KB),用以存放程序、一些原是數據和表格.四個8位并行1/0(輸入/輸出)接口P0~P3,每個口可以用作輸入,也可以用作輸出。5。 兩個或三個定時/計數器,每個定時/計數器都可以設置成計數方式,用以對外部事件進行計數,也可以設置成定時方式,并可以根據計數或定時的結果實現計算機控制。6。五個中斷源的中斷控制系統.—個雙全工UART(通用異步接收發送器)的串行I/O口,可實現單片機與單片機或其它微機之間串行通信.8。 片內振蕩器和時鐘產生電路,但石英晶體和微調電容需要外接,最高允許振蕩頻率為12MHz。以上各部分通過內部數據總線相連接.
二、51單片機內部結構8051單片機內部結構如圖3所示定時控制指令寄存器端口3鎖存器12端口3驅動器端口1鎖存器端口驅動器PCONTH0SCONTTA1MODTH1TCONTT1TY IE定時控制指令寄存器端口3鎖存器12端口3驅動器端口1鎖存器端口驅動器PCONTH0SCONTTA1MODTH1TCONTT1TY IEJED中斷\申行口、定吋方塊堆棧指針程序計數器一VVP1.OVVP1.O——P1.7VVP3.0——P3.7圖3圖38051單片機內部結構圖完整的計算機應該由運算器、控制器、存儲器(ROM及RAM)和I/O接口組成。一般微處理器(如Z80)只包括運算器和控制器兩部分。和一般微處理器相比,8051增加了四個8位I/O接口、一個串行口、4KBROM、128BRAM和很多工作寄存器及特殊功能寄存器(SFR).其各部分的功能簡述如下:1.運算器包括一個可進行8位算術運算和邏輯運算的ALU單元,8位的暫存器1、暫存器2、8位的累加器ACC,寄存器B和程序狀態字寄存器PSWI.231等。ALU:可對4位(半字節)、8位(一字節)和16位(雙字節)數據進行操作?如可進行加、減、乘、除、加1、減1、BCD數十進制調整及比較等算術運算和邏輯與、或、異或、取反和循環移位等邏輯操作。ACC:累加器ACC,經常作為一個運算數經暫存器2進入ALU的一個輸入端,與另一個進入暫存器1的運算數進行運算,運算結果又送回ACC。除此之外,ACC在8051內部經常作為數據傳送的中轉站,同一般微處理器一樣,它是最繁忙的一個寄存器。PSW:程序狀態字寄存器,8位,用于標志指令執行后的信息狀態,相當于般微處理器的標志寄存器.PSW中各位狀態供程序查詢和判別用.寄存器B:8位寄存器,在乘、除運算時,B寄存器用來存放一個操作數:也用來存放運算后的一部分結果;若不進行乘、除運算時,則可作為通用寄存器使用。另外,8051片內還有一個布爾處理器,它以PSW中的進位標志位C為其累加器,專門用于處理位操作:可以執行置位、位清零、位取反、位等于1轉移、位等于0轉移、位等于1轉移并清零以及進位標志位C與其它可以位尋址的空間之間進行信息傳送等位操作,也能使C與其他可尋找位之間進行邏輯與、或操作,結果存放在進位標志位C中。2。 控制器控制器包括程序計數器PC、指令寄存器IR、指令譯碼器ID、振蕩器及定時電路等。程序計數器PC:它由兩個8位的計數器PCH及PCL組成,共16位。PC實際上是程的字節地址計數器,PC中的內容是將要執行的下一條指令的地址。改變PC中的內就可以改變程序執行的流向。PC可對64K的ROM(程序存儲器)直接尋址,也可對8051片外RAM(數據存儲器)尋址。指令寄存器IR及指令譯碼器ID:由PC中的內容指定ROM地址,取出來的指令經指令寄存器IR送至指令譯碼器ID,由ID對指令譯碼并送PLA產生一定序列的控制信號,以執行指令所規定的操作。振蕩器及定時電路:8051單片機片內有振蕩電路,只需外接石英晶體和頻率微調電容(2個30PF左右),其頻率范圍為1.2?12MHz,該脈沖信號就作為8051工作的最基本節拍,即時間的最小單位.存儲器8051片內有ROM(程序存儲器,只能讀)和RAM(數據存儲器,可讀、可寫)兩類,它們有各自獨立的存儲地址空間,與一般微機的存儲器配置方式很不相同。(1) 程序存儲器(ROM)8051的片內程序存儲器容量為4K字節,地址從0000H開始,用于存放程序和表格常數.(2) 數據存儲器(RAM)8051片內數據存儲器為128字節,地址為00H?7FH,用于存放運算的中問結果、數據暫存以及數據緩沖等?在這128字節的RAM中,有32個字節單元可指定為工作寄存器,這同一般微處理器不同。8051的片內RAM和工作寄存器排在一個隊列里統一編址.由圖3可見,8051單片機內部還有SP、DPTR、PCON、IE、IP等特殊功能寄存器,它們也同128字節RAM在一個隊列里編址,地址為80H~FFH.在這128字節RAM單元中有21個特殊功能寄存器(SFR),這些特殊功能寄存器還包括PO~P3口鎖存器。4.1/O接口8051有四個8位并行接口即P0?P3,它們都是雙向端口,每個端口各有8條I/O線,均可輸入/輸出。P0?P313四個鎖存器同RAM統一編址,可以把U/O口當作一般特殊功能寄存器來尋址.第三節51單片機存儲器配置51系列單片機與一般微機的存儲器配置方式很不相同。一般微機通常只有一個地址空間,ROM和RAM可以隨意安排在這一地址范圍內不同的空問,即ROM和RAM的地址同在一個隊列里分配不同的空間。CPU訪問存儲器時,一個地址對應唯一的存儲器單元,可以是ROM也可以是RAM,并用同類訪問指令。此種存儲器結構稱普林斯頓結構。8051的存儲器在物理結構上分程序存儲器空間和數據存儲器空問,有四個存儲空間:片內程序存儲器和片外程序存儲器空間以及片內數據存儲器和片外數據存儲器空間,這種程序存儲器和數據存儲器分開的結構形式,稱為哈佛結構。從用戶使用的角度,8051存儲器地址空間分為三類:1?片內、片外空間地址統一編址0000H~FFFFH的64K字節的程序存儲器地址空問(用16位地址);2.64K字節片外數據存儲器地址空間,地址也從0000H?FFFFH(用16位地址).3.256字節數據存儲器地址空間(用8位地址)。上述三個存儲空間地址是重疊的,為了區分三個不同的邏輯空間,8051的指令系統設計了不同的數據傳送指令符號;CPU訪問片內、片外ROM指令用MOVC,訪問片外RAM指令用MOVX,訪問片內RAM指令用MOV。4.程序存儲器地址空間8051存儲器地址空間分程序存儲器(64KBROM)和數據存儲器(64KBRAM)。程序存儲器用于存放編好的程序和表格常數。程序存儲器通過16位程序計數器(PC)尋址,尋址能力為64KB字節。這使得能在64KB地址空問內任意尋址,但沒有指令使程序能控制從程序存儲器空間轉移到數據存儲器空間。數據存儲器地址空間數據存儲器RAM用于存放運算的中間結果、數據暫存和緩沖、標志位等?數據存儲器空間也分為片內和片外兩大部分,片內RAM和片外RAM.8051片外數據存儲器空間為64K,從0000H?FFFFH:片內存儲器空間為256字節,地址從0000H~00FFH。(一) 片外RAM片外數據存儲器與片內數據存儲器空間低地址0000H~FFFFH是重疊的,805l有MOV和M0VX兩種指令,用以區分片內、片外RAM空間.片內RAM使用MOV指令,片外64KRAM空間專門為MOVX指令所用。(二) 片內RAM片內數據存儲器最大可尋址256個單元,它們又分為兩個部分,低128字二肯(00H~7FH)是真正的RAM區,高128字節(80H~FFH)為特殊功能寄存器(SFR)區。低128字節RAM8051的32個工作寄存器與RAM安排在同一個隊列空間里,統一編址并使用同樣的尋址方式(直接尋址和間接尋址)。00H~IFH地址安排為四組工作寄存器區,每組有8個工作寄存器(ROAR7),共占32個單元(見表1)。通過對程序狀態字PSW中RS1、RS0的設置,每組寄存器均可選作CPU的當前工作寄存器組。若程序中并不需要四組,那么其余可用作一般RAM單元。CPU復位后,選中第0組工作寄存器。組RS1RS0R0R1R2R3R4R5R6R700000H01H02H03H04H05H06H07H10108090AH0BH0CH0DH0EH0FH21010H11H12H13H14H15H16H17H31118H19H1AH1BH1CH1DH1EH1FH表1:作寄存器地址表低128字節RAM單元地址范圍也是00H?7FH,8051采用不同尋址方式來加以區分,即訪問128個位地址,使用位尋址方式,訪問低128字節單元用直接尋址和間接尋址,這樣就可以區分開00H?7FH是位地址還是字節地址。1. 高128字節RAM~特殊功能寄存器(SFR)8051片內高128字節RAM中,除程序計數器PC外,有21個專用寄存器(SFR),也稱特殊功能寄存器,它們離散地分布在80H?FFH的RAM間中。訪問特殊功能僅允許使用直接尋址方式(詳情見表2)。(1)累加器ACC累加器ACC是8051最常用、最繁忙的8位特殊功能寄存器,許多指令的操作數取自于ACC,并許多運算結果也存放于ACC中?在指令系統中采用A作為累加器ACC的助記符。OV(PSW2)溢出標志位。當進行補碼運算時,如有溢出,即當運算結果超出一128~+127的范圍時,OV位由硬件自動置OV=1;無溢出時,OV=0。PSWo1為保留位,8051未用。P(PSW.O)奇偶檢驗標志位。每條指令執行完后,該位始終跟蹤指示累加器A中1的個數。如結果A中有奇數個“1”,則置P=1,否則P=0。常用于校驗串行通訊中的數據傳送是否出錯.(2)寄存器B(FOH)在乘除指令中,用到了8位B寄存器。乘法指令的兩個操作數分別取自A和B,乘積存于B、A兩個8位寄存器中。除法指令中,A中存放被除數,B中存放除數,商存放于A中,B中存放余數。在其它指令中,B可作為一般通用寄存器或一個RAM單元使用。程序狀態寄存器PSW(DOH)PSW是一個8位特殊功能寄存器,它的各位包含了程序執行后的狀態信息,供程序查詢或判別之用。各位的含義及其格式如下:CYACFORS1RSOOV—PCY(PSW.7)進位標志位。在執行加法(或減法)運算指令時,如果運算結果最高位(位7)向前有進位(或借位),CY位由硬件自動置“1”:如運算結果最高位(位7)無進位(或借位),則CY清O°CY也是8051在進行位操作(布爾操作)時的位累加器.AC(Psw6)半進位標志位,也稱輔助進位標志。當執行加法(或減法)操作時,其運算結果(和或差)產生由低半個字節(位3)向高半個字節有半進位(或借位)時,AC位將被硬件自動置“1”,否則AC被自動清“0”.F0(PSW.5)用戶標志位。用戶可以根據自己的需要對FO位賦予?定的含義.由用戶執行置位、復位操作,作為軟件標志.RS0和RS1(PSW.4和PSW.5)工作寄存器組選擇控制位.這兩位的值決定選擇哪一組工作寄存器為當前工作寄存器組。由用戶用軟件改變RS1和RS0值的組合,以切換當前選用的工作寄存器組,其組合關系詳見表2。8051上電復位后,(RS1)=(RS0)=0,CPU自然選擇第0作為當前工作寄存器組。根據需要,可利用傳送指令對PSW整字節操作,或使用位操作指令改變RS1和RS0的狀態,以切換當前工作寄存器組.RS1RS0寄存器組片內RAM地址00第0組00H?07H01第1組08H?0FH10第2組10H?17H11第3組18H-1FH表3RS0、RS1的組合關系⑷棧指針SP(81H)堆棧指針SP為8位特殊功能寄存器,SP的內容即堆棧指針,可指向8051片內00H?7FH的RAM的任何單元。系統復位后,SP初始化為07H,即指向07H的RAM單元。8051的堆棧指針SP是一個雙向計數器.在壓棧時SP內容自動增值,出棧時自動減值,存取信息必需按著“先進后出"或“后進先出”的原則。(5)數據指針DPTR(83H,82H)DPTR是一個16位的特殊功能寄存器,其高位字節寄存器用DPH表示(地址83H),低位字節寄存器用DPL表示(82H)°DPRT既可以作為一個16位寄存器來處理,也可以作為二個獨立的8位寄存器DPH和DPL使用.DPTR主要用以存放16位地址,以便對64K片外RAM作間接尋址。
(6)1/0端口P0?P3(80H,90H,AOH,BOH)P0~P3為四個8位特殊功能寄存器,分別是四個并行I/O端的鎖存器。它們都有字節地址,每一個口鎖存器還有位地址,所以每一條I/O線獨立地用作輸入或輸出時,數據可以鎖存;作輸入時,數據可以緩沖。當I/O端口某一位用于輸入信號時,對應的鎖存器位須先置“1”.符號名稱地址ACC累加器E0HBB寄存器F0HPSW程序狀態字D0HSP棧指針81HDPH數據指針高位83HDPL數據指針地位82HP0P0鎖存寄存器80HP1P1鎖存寄存器90HP2P2鎖存寄存器A0HP3P3鎖存寄存器B0HIP中斷優先級控制寄存器B8HIE中斷允許控制寄存器A8HTMOD定時/計數器工作方式、狀態寄存器89HTCON定時/計數器控制寄存器88HTH0定時/計數器0(咼字節)8CHTL0定時/計數器0(低字節)8AHTH1定時/計數器1(咼字節)8DHTL1定時/計數器1(低字節)8BHSCON串行口控制寄存器98HSBUF串行數據緩沖器99HPCON電源控制寄存器97H表251系列單片機的特殊功能寄存器表第四節 8051單片機的FPGA設計與實現本設計采用現在流行的模塊化設計方式,將8051單片機按照其內部的結構設計成為3個大的模塊,即運算器、存儲器和控制器模塊。一、運算器模塊的設計運算器模塊包括一個可進行8位算術運算和邏輯運算的ALU單元,8位的暫存器1、暫存器2、8位的累加器ACC,寄存器B和程序狀態寄存器PSW。(1)ALU(算術邏輯運算單元)模塊的信號該模塊的信號如圖4所示,負責進行算術邏輯運算,它能完成加、減、乘、除算術運算以及與、或、非等邏輯運算。其中:rst為復位標志,高有效.op—code是4位代碼,用來定義ALU所要進行的操作,它的內容已經在80511沁文件中定義完畢。例如,要進行加法操作,則opcode為0001。src—1為送入ALU的第一源操作數,8位輸入,當做加法運算時它是被加數,做減法運算時它是被減數,做除法運算時它是被除數。src_2為送入的第二源操作數,8位輸入,當做減法運算時,它是減數;做除法運算時,它是除數。src_3為送入ALU的第三源操作數,8位輸入。src_cy為第一源操作數的第7位。src_ac為第一源操作數的第4位。des_1為第一目標操作數,8位輸出,用來存放ALU計算后的數據。des_2為第二目標操作數,8位輸出,用來存放ALU計算后的剩余數據,如除法沒有整除的小數等.des_cy為ALU運算完數據的第7位.des_ac為ALU運算完數據的第4位.des_ov位溢出標志位。op_code<3:0>des_1<7:0>scr_1<7:0>des_2<7:0>scr_2<7:0>scr_3<7:0>des_acrstdes_cvsrc_acsrc_cydes_ov圖4ALU模塊信號圖二、ALU(算術邏輯運算單元)模塊的層次化設計(詳見圖5)圖5ALU(算術邏輯運算單元)模塊的層次化設計三、ALU模塊的VHDL語言描述ALU模塊中實現乘法操作的VHDL語言描述ProcedureDO_MUL(a:inunsigned(7downto0 );b:inunsigned(7downto0);
r:inunsigned( 15downto0);ov:outstd_logic)isvariablevl:unsigned(15downto0);beginv1:二r:=v1;f(v1(15downto8)/=C0_8)thenov:='1';elseov:='0';endif:endDO_MUL;其中,a為被乘數,8位輸入信號,b為乘數,8位輸人信號,r為a、b相乘后的結果,16位輸出信號,OV為溢出標志,當計算所得的結果的高8位的值不等于0時,ov=1,表示計算結果溢出.ALU模塊中實現BCD碼調整操作的VHDL語言描述procedureDO_DA(a:inunsigned(7downto0) ;c1:Instd_logic;c2:Instd_logic;r: outunsigned(7downto0);cy:outstd_logic)isvariablev:tmsigIl6d(8downtoU);beginv:="0”&a;fi((c2='1')or(v(3downto0)>C9_4))thenv:=v+“000000110”;endif;
v(8):二v(8)orcl;if(v(8)='1')thenv:=v+“001100000”;endif;r:v(7downto0);cy:=v(8);endDO_DA;其中,當輸入的信號低4位大于9(1001B)操作;當輸入信號最高位為1時,進行加96(0③其中,當輸入的信號低4位大于9(1001B)操作;當輸入信號最高位為1時,進行加96(0③ALU模塊的主程序的部分如下:beginprocesscrac)s(rst,op_code,scr_1variablev16:variablev8:variab1evcunsignedB)時,110000B)scr2.進行加6(110操作.scr_3scr_cy,15downto0);unsigned(7downv_ac,v_ov:to0);d_logic;beginicaseop_codeis
whenALUOPCDO_ADD(srcADDbeginicaseop_codeis
whenALUOPCDO_ADD(srcADDT,=〉rc_2,sc_cy,v8,v_cy,f(rst='1')thendes_1V=CD_8;des_2<=CD_8;des_cy<='-';des_ac<='—';des_ov<='-';elsev_ac,v_ov)des_1<=v8;s_2〈二CD_8;dedes_1<=v8;s_2〈二CD_8;dedes_cy〈二v_cy;des_ac〈=v_ac;des_ovV=v_ov;whenALUOPCSUBDO_SUB(src_T,src_2,=>src_cy,8,v_cy,v_ac,v_ov);des_1〈=v8;des_2V二CD_8;des_cy〈二v_cy;des_ac〈二v_dc;des_ovV二v_ov;當RST=1時,ALU復位;,當RST二0時,ALU根據OP-CODE的值進行相應的操作。四、ALU模塊功能仿真運算代碼代碼內容對應操作ALUOPCNONE0000--ALUOPCADD0001加法ALUOPCSUB0010減法ALUOPCMUL0011乘法ALUOPCDIV0100除法ALUOPCDA0101BCD碼調整表4運算代碼所對應的操作表4表示的是各個預算代碼的對應的操作。本次設計我主要解決算術運算不嘗試邏輯運算。假設scr_l=10(00O01O1OB),scr_2=5(00000101B),由仿真圖形可以看出,當opcode=0001時,即做加法運算,得des1=15(00001111B):當opcode=0010時,即做減法運算,得des_l=5(00000101B);當op-code=0011時,即做乘法運算,得des_l=50(00110010B);當op_code=0100時,即做除法運算,得des_l=2(00000010B)。圖6加法及減法的仿真波形圖8減法及除法運算的仿真波形五、存儲器模塊設計本設計共為8051單片機設計了3種存儲器,片內ROM、RAM和片外XRM。本設計中的片內ROM用來存儲已經編寫好的程序控制代碼,只能讀出數據不能寫入數據。①片內ROM片內ROM的信號一片內ROM的信號如圖9所示.其中:RST:復位標志,低有效,輸入信號;CLK:時鐘信號,輸入信號;ADDRo~ADDRII:地址總線,11位,輸入信號;RD:讀控制位,高有效,輸入信號;Do-D7:數據總線,8位,輸入/輸出信號.RSTCLKADDR0ADDR11RSTCLKADDR0ADDR11RD少片內ROMA/IDO?D7圖9片內ROM的信號圖片內ROM主要VHDL語言描述:beginif(rst二…1)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國單耳整體卡箍行業深度研究分析報告
- 變電所評估報告
- 2022-2027年中國專用水泥市場全景評估及投資規劃建議報告
- 2025年中國芝麻油(藥用輔料)行業全景評估及投資規劃建議報告
- 中國智能拔罐器行業市場前景預測及投資價值評估分析報告
- β型鋰輝石焙燒報告表 解釋說明以及概述
- 2024年中國殺鼠劑市場供需現狀調查報告
- 2025年安全隱患整改報告(四)
- 爆破作業設計、施工方案安全評估報告
- 鄭老師消防課件
- 2019-2020鞍山八年第二學期語文期末考試帶答案
- 心臟粘液瘤超聲診斷
- 國家開放大學電大2022年春季期末考試《商務英語閱讀》試題試卷代號4050
- 2023年音樂考試真題
- NB/T 10751-2021礦用往復式氣動注漿泵
- 裝卸搬運課件
- GB/T 18391.2-2009信息技術元數據注冊系統(MDR)第2部分:分類
- GB/T 16924-2008鋼件的淬火與回火
- 基礎護理學:肌內注射
- 藥品電子監管碼管理sop
- 2018年上海高考歷史試題及答案
評論
0/150
提交評論