




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
8051單片機(jī)的FPGA設(shè)計(jì)與實(shí)現(xiàn)第一章前言20世紀(jì)末在計(jì)算機(jī)技術(shù)逐漸發(fā)展的情況寫,電子技術(shù)得到了飛速的發(fā)展,現(xiàn)代電子產(chǎn)品已經(jīng)滲透到了社會(huì)的各個(gè)領(lǐng)域,有力的推動(dòng)了社會(huì)生產(chǎn)力的發(fā)展和社會(huì)信息化程度的提高,同時(shí)也使現(xiàn)代電子產(chǎn)品的性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快.電子技術(shù)發(fā)展的根基是微電子技術(shù)的進(jìn)步,它表現(xiàn)在大規(guī)模集成電路加工技術(shù),即半導(dǎo)體工藝技術(shù)的發(fā)展上,表征半導(dǎo)體工藝水平的線寬已經(jīng)達(dá)到60nm以下,并還在不斷縮小;在硅片單位面積上集成了更多的晶體管,集成電路設(shè)計(jì)在不斷地向超大規(guī)模,極低功耗和超高速的方向發(fā)展;專用集成電路ASIC(ApplicationSpecificIntegratedCircuit)的設(shè)計(jì)成本不斷降低,在功能上,現(xiàn)代的集成電路已能夠?qū)崿F(xiàn)單片電子系統(tǒng)SOC(Systemonachip)的功能?另外集成電路(IC)技術(shù)在微電子領(lǐng)域中占有重要的地位?且伴隨著IC技術(shù)的發(fā)展,電子設(shè)計(jì)自動(dòng)(ElectronicDesignAutomation,EDA)已經(jīng)逐漸成為重要的設(shè)計(jì)手段,其廣泛應(yīng)用于模擬與數(shù)字電路系統(tǒng)等許多領(lǐng)域。單片機(jī)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的微型計(jì)算機(jī)系統(tǒng),在工業(yè)控制領(lǐng)域的廣泛應(yīng)用。從上世紀(jì)80年代,由當(dāng)時(shí)的4位、8位單片機(jī),發(fā)展到現(xiàn)在的32位300M的高速單片機(jī)。單片機(jī)具有體積小、功耗低、控制功能強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn),廣泛應(yīng)用于儀器儀表中,結(jié)合不同類型的傳感器,可實(shí)現(xiàn)諸如電壓、電流、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測(cè)量。采用單片機(jī)控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電子或數(shù)字電路更加強(qiáng)大。FPGA是英文Field—ProgrammableGateArray的縮寫,即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物.它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn).FPGA采用了邏輯單元陣列LCA(LogicCellArray)這樣一個(gè)新概念,內(nèi)部包括可配置邏輯模塊CLB(ConfigurableLogicBlock)、輸出輸入模塊I0B(InputOutputBlock)和內(nèi)部連線(Interconnect)三個(gè)部分.CPLD與FPGA的內(nèi)部結(jié)構(gòu)稍有不同,但用法一樣,所以多數(shù)情況下,不加以區(qū)分。FPGA/CPLD芯片都是特殊的ASIC芯片,它們除了具有ASIC的特點(diǎn)之外,還具有以下幾個(gè)優(yōu)點(diǎn):隨著VLSI(VeryLargeScaleIC,超大規(guī)模集成電路)工藝的不斷提高單一芯片內(nèi)部可以容納上百萬個(gè)晶體管,F(xiàn)PGA/CPLD芯片的規(guī)模也越來越大,其單片邏輯門數(shù)已達(dá)到上百萬門,它所能實(shí)現(xiàn)的功能也越來越強(qiáng),同時(shí)也可以實(shí)現(xiàn)系統(tǒng)集成.FPGA/CPLD的資金投入小,節(jié)省了許多潛在的花費(fèi)。用戶可以反復(fù)地編程、擦除、使用或者在外圍電路不動(dòng)的情況下用不同軟件就可實(shí)現(xiàn)不同的功能。所以,用FPGA/PLD試制樣片,能以最快的速度占領(lǐng)市場(chǎng)。FPGA/CPLD軟件包中有各種輸入工具和仿真工具,及版圖設(shè)計(jì)工具和編程器等全線產(chǎn)品,電路設(shè)計(jì)人員在很短的時(shí)間內(nèi)就可完成電路的輸入、編譯、優(yōu)化、仿真,直至最后芯片的制作。當(dāng)電路有少量改動(dòng)時(shí),更能顯示出FPGA/CPLD的優(yōu)勢(shì)。現(xiàn)有的電子系統(tǒng)設(shè)計(jì)多數(shù)采用微控制器為核心,輔以必要的外圍器件如ADC、DAC和存儲(chǔ)器等,這樣的系統(tǒng)做出來的線路板較大,且調(diào)試復(fù)雜;而且如果系統(tǒng)內(nèi)有高速器件,則微控制器的選擇將會(huì)是個(gè)困難;雖然可通過程序升級(jí)增加或改進(jìn)功能,但硬件一旦設(shè)計(jì)完成,是無法更改的.FPGA(現(xiàn)場(chǎng)可編程門陣列)與CPLD(復(fù)雜可編程邏輯器件)都是可編程邏輯器件,它們是在PAL,GAL等邏輯器件的基礎(chǔ)之上發(fā)展起來的。同以往的PAL、GAL等相比較,FPGA/CPLD的規(guī)模比較大,它可以替代幾十甚至幾千塊通用IC芯片。這樣的FPGA/CPLD實(shí)際上就是一個(gè)系統(tǒng)部件。由于其應(yīng)用的靈活性,這種芯片受到世界范圍內(nèi)電子工程設(shè)計(jì)人員的廣泛關(guān)注和普遍歡迎。第二章FPGA系統(tǒng)的簡(jiǎn)介在數(shù)字化、信息化的時(shí)代,數(shù)字集成電路應(yīng)用得非常廣泛。隨著微電子技術(shù)與工藝的發(fā)展,數(shù)字集成電路從電子管、晶體管、中小規(guī)模集成電路、超大規(guī)模集成電路(VLSI)逐步發(fā)展到今天的專用集成電路(ASIC).ASIC的出現(xiàn)降低了產(chǎn)品的生產(chǎn)成本,提高了系統(tǒng)的可靠性,減小了產(chǎn)品的物理尺寸,推動(dòng)了社會(huì)的數(shù)字化進(jìn)程。但是ASIC因其設(shè)計(jì)周期長,改版投資大,靈活性差等缺陷制約著它的應(yīng)用范圍。可編程邏輯器件隨著微電子制造工藝的發(fā)展取得了長足的進(jìn)步.從早期的只能存儲(chǔ)少量數(shù)據(jù),完成簡(jiǎn)單邏輯功能的可編程只讀存儲(chǔ)器(PROM)、紫外線可擦除只讀存儲(chǔ)器(EPROM)iloj和電可擦除只讀存儲(chǔ)器(EEROM),發(fā)展到能完成中大規(guī)模的數(shù)字邏輯功能的可編程陣列邏輯(PAL)和通用陣列邏輯(GAL)llii,今天已經(jīng)發(fā)展成為可以完成超大規(guī)模的復(fù)雜組合邏輯與時(shí)序邏輯的現(xiàn)場(chǎng)可編程邏輯器件(FPGA)和復(fù)雜可編程邏輯器件(CPLD)。第一節(jié)FPGA的特點(diǎn)FPGA既繼承了ASIC的大規(guī)模、高集成度、高可靠性的優(yōu)點(diǎn),又克服了普通ASIC設(shè)計(jì)周期長、投資大、靈活性差的缺點(diǎn),逐步成為復(fù)雜數(shù)字硬件電路設(shè)計(jì)的理想首選?當(dāng)代FPGA有以下特點(diǎn):規(guī)模越來越大。開發(fā)過程投資小。FPGA一般可以反復(fù)地編程、擦除。保密性能好.FPGA開發(fā)工具智能化,功能強(qiáng)大.新型FPGA內(nèi)嵌CPU或DSP內(nèi)核,支持軟硬件協(xié)同設(shè)計(jì),可以作為片上可編程系統(tǒng)(SOPC)的硬件平臺(tái).第二節(jié)FPGA的設(shè)計(jì)流程一個(gè)完整的FPGA設(shè)計(jì)流程包括電路設(shè)計(jì)與輸入、功能仿真、綜合、綜合后仿真、實(shí)現(xiàn)、布線后仿真和下板調(diào)試等主要步驟。常用的設(shè)計(jì)輸入方法有硬件描述語言(HDL)和原理圖設(shè)計(jì)輸入方法。原理圖設(shè)計(jì)輸入法早期應(yīng)用得比較廣泛,它根據(jù)設(shè)計(jì)要求,選用器件、繪制原理圖、完成輸入過程。這種方法的優(yōu)點(diǎn)是直觀、便于理解、元件庫資源豐富。但是在大型設(shè)計(jì)中,這種方法的可維護(hù)性較差,不利于模塊建設(shè)與重用.更重要的缺點(diǎn)是:當(dāng)所選用芯片升級(jí)換代后,所有原理圖都要作相應(yīng)的改動(dòng)。目前進(jìn)行大型工程設(shè)計(jì)時(shí),最常用的設(shè)計(jì)方法是HDL設(shè)計(jì)輸入法?其中影響最為廣泛的HDL語言是VHDL和VerilogHDL。它們的共同特點(diǎn)是利于自頂向下設(shè)計(jì),利于模塊的劃分與復(fù)用,可移植性好,通用性好,設(shè)計(jì)不因芯片的工藝與結(jié)構(gòu)的變化而變化,更利于向ASIC的移植。電路設(shè)計(jì)完成后,要用專用的仿真工具對(duì)設(shè)計(jì)進(jìn)行功能仿真,驗(yàn)證電路功能是否符合設(shè)計(jì)要求。功能仿真有時(shí)也被稱為前仿真。通過仿真能及時(shí)發(fā)現(xiàn)設(shè)計(jì)中的錯(cuò)誤,加快設(shè)計(jì)進(jìn)度,提高設(shè)計(jì)的可靠性。綜合優(yōu)化(Synthesize)是指將HDL語言、原理圖等設(shè)計(jì)輸入翻譯成由與、或、非門,RAM,寄存器等基本邏輯單元組成的邏輯連接(網(wǎng)表),并根據(jù)目標(biāo)與要求(約束條件)優(yōu)化所生成的邏輯連接,輸出edf和edn等文件,供FPGA廠家的布局御線器進(jìn)行實(shí)現(xiàn).綜合完成后需要檢查綜合結(jié)果是否與原設(shè)計(jì)一致,需要做綜合后仿真。在仿真時(shí),把綜合生成的延時(shí)文件反標(biāo)到綜合仿真模型中去,可估計(jì)門的延時(shí)帶來的影響。綜合后仿真雖然比功能仿真精確一些,但是只能估計(jì)門的延時(shí),而不能估計(jì)線的延時(shí),仿真結(jié)果與布線后的實(shí)際情況還有一定的差距,并不十分準(zhǔn)確。這種仿真的主要目的在于檢查綜合器的綜合結(jié)果是否與設(shè)計(jì)輸入一致。綜合結(jié)果的本質(zhì)是一些由與、或、非門,觸發(fā)器,RAM等基本邏輯單元組成的邏輯網(wǎng)表,它與芯片實(shí)際的配置情況還有較大差距。此時(shí)應(yīng)該使用FPGA廠商提供的工具軟件,根據(jù)所選芯片的型號(hào),將綜合輸出的邏輯網(wǎng)表,適配到具體FPGA器件上,這個(gè)過程就叫做實(shí)現(xiàn)(Implementation)過程。Xilinx的實(shí)現(xiàn)過程分為:翻譯(Translate)、映射(Map)、布局布線(Place&Route)等3個(gè)步驟。布局布線之后應(yīng)該做時(shí)序仿真,時(shí)序仿真中應(yīng)該將布局布線的時(shí)延文件反標(biāo)到設(shè)計(jì)中,使仿真既包含門的延時(shí),又包含線的延時(shí)信息.與前面各種仿真相比,這種后仿真包含的延時(shí)信息最為全面、準(zhǔn)確,能較好地反映芯片的實(shí)際工作情況.設(shè)計(jì)開發(fā)的最后步驟就是在線調(diào)試或者將生成的配置文件寫入芯片中進(jìn)行測(cè)試.在ISE中對(duì)應(yīng)的工具是iMPACT。第三節(jié)FPGA的開發(fā)工具FPGA的開發(fā)工具有很多,各個(gè)公司都有自己專用工具。本次畢業(yè)設(shè)計(jì)我所采用的開發(fā)工具為ALTERA:QUARTUS。一、ALTERA: QUARTUSQuartus?IIdesign是最高級(jí)和復(fù)雜的,用于system—on一a一programmable—chip(SOPC)的設(shè)計(jì)環(huán)境。Quartuslldesign提供完善的timingclosure和LogicLock?基于塊的設(shè)計(jì)流程.QuartusIIdesign是唯一一個(gè)包括以timingclosure和基于塊的設(shè)計(jì)流為基本特征的programmablelogicdevice(PLD)的軟件。QuartusII設(shè)計(jì)軟件改進(jìn)了性能、提升了功能性、解決了潛在的設(shè)計(jì)延遲等,在工業(yè)領(lǐng)域率先提供FPGA與mask—programmeddevices開發(fā)的統(tǒng)一工作流程.AlteraQuartusII作為一種可編程邏輯的設(shè)計(jì)環(huán)境,由于其強(qiáng)大的設(shè)計(jì)能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎.AlteraQuartusII設(shè)計(jì)軟件是業(yè)界唯一提供FPGA和固定功能HardCopy器件統(tǒng)一設(shè)計(jì)流程的設(shè)計(jì)工具.工程師使用同樣的低價(jià)位工具對(duì)StratixFPGA進(jìn)行功能驗(yàn)證和原型設(shè)計(jì),又可以設(shè)計(jì)HardCopyStratix器件用于批量成品。系統(tǒng)設(shè)計(jì)者現(xiàn)在能夠用QuartusII評(píng)估HardCopyStratix器件的性能和功耗,相應(yīng)地進(jìn)行最大吞吐量設(shè)計(jì).Altera的QuartusII可編程邏輯軟件屬于第四代PLD開發(fā)平臺(tái)。該平臺(tái)支持一個(gè)工作組環(huán)境下的設(shè)計(jì)要求,其中包括支持基于Internet的協(xié)作設(shè)計(jì)。Quartus平臺(tái)與Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供應(yīng)商的開發(fā)工具相兼容.改進(jìn)了軟件的LogicLock模塊設(shè)計(jì)功能,增添了FastFit編譯選項(xiàng),推進(jìn)了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。二、QuartusII的特點(diǎn)1、 支持MAX7000/MAX3000等乘積項(xiàng)器件2、 軟件體積縮小,運(yùn)行速度加快3、 LogicLock設(shè)計(jì)流程把性能提升15%4、 采用快速適配選項(xiàng)縮短編譯時(shí)間5、 新的功能減小了系統(tǒng)級(jí)驗(yàn)證第二章8051單片機(jī)的FPGA設(shè)計(jì)與實(shí)現(xiàn)單片微型計(jì)算機(jī)簡(jiǎn)稱為單片機(jī),又稱為微型控制器,是微型計(jì)算機(jī)的一個(gè)重要分支。單片機(jī)是70年代中期發(fā)展起來的一種大規(guī)模集成電路芯片,是CPU、RAM、ROM、I/O接口和中斷系統(tǒng)于同一硅片的器件。80年代以來,單片機(jī)發(fā)展迅速,各類新產(chǎn)品不斷涌現(xiàn),出現(xiàn)了許多高性能新型機(jī)種,現(xiàn)已逐漸成為工廠自動(dòng)化和各控制領(lǐng)域的支柱產(chǎn)業(yè)之一。8051單片機(jī)是早最典型的產(chǎn)品,該系列具它單片機(jī)都是在8051的基礎(chǔ)上進(jìn)行功能的增、減、改變而來的,所以人們習(xí)慣于用8051來稱呼MCS51系列單片機(jī)。8051單片機(jī)是早最典型的產(chǎn)品,該系列具它單片機(jī)都是在8051的基礎(chǔ)上進(jìn)行功能的增、減、改變而來的,所以人們習(xí)慣于用8051來稱呼MCS51系列單片機(jī).第一節(jié)51單片機(jī)的引腳功能MCS—51是標(biāo)準(zhǔn)的40引腳雙列直插式集成電路芯片,引腳分布請(qǐng)參照?qǐng)DP1口匸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網(wǎng).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腳):接地端。時(shí)鐘電路引腳又面和叉麗XTAL2(18腳):接外部晶體和微調(diào)電容的一端。在8051單片機(jī)內(nèi)它是振蕩電路反相放大器的輸出端,振蕩電路的頻率就是晶體固有頻率。若需采用外部時(shí)鐘電路時(shí),該引腳輸入外部時(shí)鐘脈沖信號(hào).XTAL1(19腳):接外部晶體和微凋電容的另一端。在片內(nèi)它是振蕩電路反相放大器的輸入端。在采用外部時(shí)鐘時(shí),該引腳必須接地.3。 控制信號(hào)引腳RST、ALE、麗和豆iRST/V(9腳):RST是復(fù)位信號(hào)輸入端,咼電平有效。當(dāng)此輸入端保持兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘振蕩周期)的咼電平時(shí),就可以完成復(fù)位操作°RST引腳的第二功能是VpD,即備用電源的輸入端.當(dāng)主電源Vcc發(fā)生故障,降低到低電平規(guī)定值時(shí),將+5V電壓自動(dòng)接入RST端,為RAM提供備用電源,以保證存儲(chǔ)在RAM中的信息不丟失,以使復(fù)電后能繼續(xù)正常運(yùn)行。ALE/PROG(ADDRESSLATCHENABLE/PRoGRAMMING,30腳):地址鎖存允許信號(hào)端。當(dāng)8051上電正常工作后,ALE引腳不斷向外輸出正脈沖信號(hào),此頻率為振蕩器頻率而sc的1/6。CPU訪問片外存儲(chǔ)器時(shí),ALE輸出信號(hào)作為鎖存低8位地址的控制信號(hào)。該引腳的第二功能PROG是對(duì)片內(nèi)帶有4KEPR0M的8751編程寫入(固化程序)時(shí),作為編程脈沖輸入端。PSEN(PROGRAMSTOREENABLE,29腳):程序存儲(chǔ)允許輸出信號(hào)端。在訪問片外程序存儲(chǔ)器時(shí),此端口定時(shí)輸出負(fù)脈沖,作為片外存儲(chǔ)器讀的選通信號(hào)。EA/Vpp(ENABLEADDREss/voulAGEPULSEOFPR0GRAMMING31腳):外部程序存儲(chǔ)器地址允許輸入端/固化編程電壓輸入端.當(dāng)酉引腳連接咼電平時(shí),CPU只訪問片內(nèi)EPROM/ROM并執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令,但在PC(程序計(jì)數(shù)器)的值超過OFFFFH(對(duì)8051為4K)時(shí),將自動(dòng)轉(zhuǎn)向執(zhí)行片外程序存儲(chǔ)器內(nèi)的程序。當(dāng)輸入信號(hào)EA連接低電平(接地)時(shí),CPU只訪問外部EPROM/ROM并執(zhí)行外部程序存儲(chǔ)器中的指令,而不管是否有片內(nèi)程序存儲(chǔ)器。此引腳的第二功能VPP,是對(duì)8751片內(nèi)EPROM固化編程時(shí),作為施加較高編程電壓(一般21伏)輸入端。I/O(輸入/輸出)端口P0、Pl、P2和P3P0口(PO°0~PO.7,39~32腳):PO口是一個(gè)漏極開路[261的8位準(zhǔn)雙向I/O端口。作為漏極開路的輸出端口,每位能驅(qū)動(dòng)8個(gè)LS型TTL[273負(fù)載。當(dāng)P0口作為輸入口使用時(shí),應(yīng)先向P0口鎖存器(地址80H)寫入全1,此時(shí)POEl的全部引腳懸空,可作為高阻抗輸入。作為輸入口使用時(shí)要先寫1,這就是標(biāo)準(zhǔn)雙向的含義.在CPU訪問片外存儲(chǔ)器時(shí),P0口是分時(shí)提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。在此期間,PO口內(nèi)部上拉電阻有效。P1口(PI.0?P1.7,1?8腳):P1口是一個(gè)帶內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O端口。P1口的每一位能驅(qū)動(dòng)(吸收或輸出電流)4個(gè)Ls型TTL負(fù)載?在P1口作為輸入口使用時(shí),應(yīng)先向P1口鎖存器(地址90H)寫入全1,此時(shí)P1口的引腳輸入由內(nèi)部上拉電阻拉成高電平。卩2口(P2.0?P2.7,21?28腳):P2口是一個(gè)帶內(nèi)部上拉電阻的8位準(zhǔn)雙向1/0端口。P1口的每一位能驅(qū)動(dòng)(吸收/輸出電流)4個(gè)Ls型TTL負(fù)載?訪問片外EPR0M/RAM時(shí),它輸出高8位地址。P3口有兩個(gè)功能,除了作為I/O使用外(其內(nèi)部有上拉電阻),還有一些特殊功能,由特殊寄存器來設(shè)置.有內(nèi)部EPROM的單片機(jī)芯片即:編程脈沖:30腳(ALE/PROG)編程電壓(25V):31腳(EA/VPP)第二節(jié)51系列單片機(jī)的結(jié)構(gòu)和原理一、51系列單片機(jī)的結(jié)構(gòu)圖2所示為MCS-51系列單片機(jī)中的8051單片機(jī)的基本功能結(jié)構(gòu)方框圖。J^tu2BGBRAM/SI'R:可編捏DO口64KB擴(kuò)展卷制器2XLGF.<‘主時(shí)器/計(jì)數(shù)器:J^tu2BGBRAM/SI'R:可編捏DO口64KB擴(kuò)展卷制器2XLGF.<‘主時(shí)器/計(jì)數(shù)器:程序存儲(chǔ)器'4KEXRDMJ叫騙程全歐丄帛髡口eoeiCPiJ躍證時(shí)序井衍口靈外部事件計(jì)數(shù)*u外吋將鯨”出行通訊:外取斷;圖28051單片機(jī)功能方框圖在一塊芯片上,集成了一個(gè)微型計(jì)算機(jī)的各個(gè)組成部分,每一片單片機(jī)包括一個(gè)8位的微處理器CPU。2。片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM(128B/256B),用以存放可以讀/寫的數(shù)據(jù),如運(yùn)算3?片內(nèi)程序存儲(chǔ)器ROM/EPROM(4KB/8KB),用以存放程序、一些原是數(shù)據(jù)和表格.四個(gè)8位并行1/0(輸入/輸出)接口P0~P3,每個(gè)口可以用作輸入,也可以用作輸出。5。 兩個(gè)或三個(gè)定時(shí)/計(jì)數(shù)器,每個(gè)定時(shí)/計(jì)數(shù)器都可以設(shè)置成計(jì)數(shù)方式,用以對(duì)外部事件進(jìn)行計(jì)數(shù),也可以設(shè)置成定時(shí)方式,并可以根據(jù)計(jì)數(shù)或定時(shí)的結(jié)果實(shí)現(xiàn)計(jì)算機(jī)控制。6。五個(gè)中斷源的中斷控制系統(tǒng).—個(gè)雙全工UART(通用異步接收發(fā)送器)的串行I/O口,可實(shí)現(xiàn)單片機(jī)與單片機(jī)或其它微機(jī)之間串行通信.8。 片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接,最高允許振蕩頻率為12MHz。以上各部分通過內(nèi)部數(shù)據(jù)總線相連接.
二、51單片機(jī)內(nèi)部結(jié)構(gòu)8051單片機(jī)內(nèi)部結(jié)構(gòu)如圖3所示定時(shí)控制指令寄存器端口3鎖存器12端口3驅(qū)動(dòng)器端口1鎖存器端口驅(qū)動(dòng)器PCONTH0SCONTTA1MODTH1TCONTT1TY IE定時(shí)控制指令寄存器端口3鎖存器12端口3驅(qū)動(dòng)器端口1鎖存器端口驅(qū)動(dòng)器PCONTH0SCONTTA1MODTH1TCONTT1TY IEJED中斷\申行口、定吋方塊堆棧指針程序計(jì)數(shù)器一VVP1.OVVP1.O——P1.7VVP3.0——P3.7圖3圖38051單片機(jī)內(nèi)部結(jié)構(gòu)圖完整的計(jì)算機(jī)應(yīng)該由運(yùn)算器、控制器、存儲(chǔ)器(ROM及RAM)和I/O接口組成。一般微處理器(如Z80)只包括運(yùn)算器和控制器兩部分。和一般微處理器相比,8051增加了四個(gè)8位I/O接口、一個(gè)串行口、4KBROM、128BRAM和很多工作寄存器及特殊功能寄存器(SFR).其各部分的功能簡(jiǎn)述如下:1.運(yùn)算器包括一個(gè)可進(jìn)行8位算術(shù)運(yùn)算和邏輯運(yùn)算的ALU單元,8位的暫存器1、暫存器2、8位的累加器ACC,寄存器B和程序狀態(tài)字寄存器PSWI.231等。ALU:可對(duì)4位(半字節(jié))、8位(一字節(jié))和16位(雙字節(jié))數(shù)據(jù)進(jìn)行操作?如可進(jìn)行加、減、乘、除、加1、減1、BCD數(shù)十進(jìn)制調(diào)整及比較等算術(shù)運(yùn)算和邏輯與、或、異或、取反和循環(huán)移位等邏輯操作。ACC:累加器ACC,經(jīng)常作為一個(gè)運(yùn)算數(shù)經(jīng)暫存器2進(jìn)入ALU的一個(gè)輸入端,與另一個(gè)進(jìn)入暫存器1的運(yùn)算數(shù)進(jìn)行運(yùn)算,運(yùn)算結(jié)果又送回ACC。除此之外,ACC在8051內(nèi)部經(jīng)常作為數(shù)據(jù)傳送的中轉(zhuǎn)站,同一般微處理器一樣,它是最繁忙的一個(gè)寄存器。PSW:程序狀態(tài)字寄存器,8位,用于標(biāo)志指令執(zhí)行后的信息狀態(tài),相當(dāng)于般微處理器的標(biāo)志寄存器.PSW中各位狀態(tài)供程序查詢和判別用.寄存器B:8位寄存器,在乘、除運(yùn)算時(shí),B寄存器用來存放一個(gè)操作數(shù):也用來存放運(yùn)算后的一部分結(jié)果;若不進(jìn)行乘、除運(yùn)算時(shí),則可作為通用寄存器使用。另外,8051片內(nèi)還有一個(gè)布爾處理器,它以PSW中的進(jìn)位標(biāo)志位C為其累加器,專門用于處理位操作:可以執(zhí)行置位、位清零、位取反、位等于1轉(zhuǎn)移、位等于0轉(zhuǎn)移、位等于1轉(zhuǎn)移并清零以及進(jìn)位標(biāo)志位C與其它可以位尋址的空間之間進(jìn)行信息傳送等位操作,也能使C與其他可尋找位之間進(jìn)行邏輯與、或操作,結(jié)果存放在進(jìn)位標(biāo)志位C中。2。 控制器控制器包括程序計(jì)數(shù)器PC、指令寄存器IR、指令譯碼器ID、振蕩器及定時(shí)電路等。程序計(jì)數(shù)器PC:它由兩個(gè)8位的計(jì)數(shù)器PCH及PCL組成,共16位。PC實(shí)際上是程的字節(jié)地址計(jì)數(shù)器,PC中的內(nèi)容是將要執(zhí)行的下一條指令的地址。改變PC中的內(nèi)就可以改變程序執(zhí)行的流向。PC可對(duì)64K的ROM(程序存儲(chǔ)器)直接尋址,也可對(duì)8051片外RAM(數(shù)據(jù)存儲(chǔ)器)尋址。指令寄存器IR及指令譯碼器ID:由PC中的內(nèi)容指定ROM地址,取出來的指令經(jīng)指令寄存器IR送至指令譯碼器ID,由ID對(duì)指令譯碼并送PLA產(chǎn)生一定序列的控制信號(hào),以執(zhí)行指令所規(guī)定的操作。振蕩器及定時(shí)電路:8051單片機(jī)片內(nèi)有振蕩電路,只需外接石英晶體和頻率微調(diào)電容(2個(gè)30PF左右),其頻率范圍為1.2?12MHz,該脈沖信號(hào)就作為8051工作的最基本節(jié)拍,即時(shí)間的最小單位.存儲(chǔ)器8051片內(nèi)有ROM(程序存儲(chǔ)器,只能讀)和RAM(數(shù)據(jù)存儲(chǔ)器,可讀、可寫)兩類,它們有各自獨(dú)立的存儲(chǔ)地址空間,與一般微機(jī)的存儲(chǔ)器配置方式很不相同。(1) 程序存儲(chǔ)器(ROM)8051的片內(nèi)程序存儲(chǔ)器容量為4K字節(jié),地址從0000H開始,用于存放程序和表格常數(shù).(2) 數(shù)據(jù)存儲(chǔ)器(RAM)8051片內(nèi)數(shù)據(jù)存儲(chǔ)器為128字節(jié),地址為00H?7FH,用于存放運(yùn)算的中問結(jié)果、數(shù)據(jù)暫存以及數(shù)據(jù)緩沖等?在這128字節(jié)的RAM中,有32個(gè)字節(jié)單元可指定為工作寄存器,這同一般微處理器不同。8051的片內(nèi)RAM和工作寄存器排在一個(gè)隊(duì)列里統(tǒng)一編址.由圖3可見,8051單片機(jī)內(nèi)部還有SP、DPTR、PCON、IE、IP等特殊功能寄存器,它們也同128字節(jié)RAM在一個(gè)隊(duì)列里編址,地址為80H~FFH.在這128字節(jié)RAM單元中有21個(gè)特殊功能寄存器(SFR),這些特殊功能寄存器還包括PO~P3口鎖存器。4.1/O接口8051有四個(gè)8位并行接口即P0?P3,它們都是雙向端口,每個(gè)端口各有8條I/O線,均可輸入/輸出。P0?P313四個(gè)鎖存器同RAM統(tǒng)一編址,可以把U/O口當(dāng)作一般特殊功能寄存器來尋址.第三節(jié)51單片機(jī)存儲(chǔ)器配置51系列單片機(jī)與一般微機(jī)的存儲(chǔ)器配置方式很不相同。一般微機(jī)通常只有一個(gè)地址空間,ROM和RAM可以隨意安排在這一地址范圍內(nèi)不同的空問,即ROM和RAM的地址同在一個(gè)隊(duì)列里分配不同的空間。CPU訪問存儲(chǔ)器時(shí),一個(gè)地址對(duì)應(yīng)唯一的存儲(chǔ)器單元,可以是ROM也可以是RAM,并用同類訪問指令。此種存儲(chǔ)器結(jié)構(gòu)稱普林斯頓結(jié)構(gòu)。8051的存儲(chǔ)器在物理結(jié)構(gòu)上分程序存儲(chǔ)器空間和數(shù)據(jù)存儲(chǔ)器空問,有四個(gè)存儲(chǔ)空間:片內(nèi)程序存儲(chǔ)器和片外程序存儲(chǔ)器空間以及片內(nèi)數(shù)據(jù)存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器空間,這種程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開的結(jié)構(gòu)形式,稱為哈佛結(jié)構(gòu)。從用戶使用的角度,8051存儲(chǔ)器地址空間分為三類:1?片內(nèi)、片外空間地址統(tǒng)一編址0000H~FFFFH的64K字節(jié)的程序存儲(chǔ)器地址空問(用16位地址);2.64K字節(jié)片外數(shù)據(jù)存儲(chǔ)器地址空間,地址也從0000H?FFFFH(用16位地址).3.256字節(jié)數(shù)據(jù)存儲(chǔ)器地址空間(用8位地址)。上述三個(gè)存儲(chǔ)空間地址是重疊的,為了區(qū)分三個(gè)不同的邏輯空間,8051的指令系統(tǒng)設(shè)計(jì)了不同的數(shù)據(jù)傳送指令符號(hào);CPU訪問片內(nèi)、片外ROM指令用MOVC,訪問片外RAM指令用MOVX,訪問片內(nèi)RAM指令用MOV。4.程序存儲(chǔ)器地址空間8051存儲(chǔ)器地址空間分程序存儲(chǔ)器(64KBROM)和數(shù)據(jù)存儲(chǔ)器(64KBRAM)。程序存儲(chǔ)器用于存放編好的程序和表格常數(shù)。程序存儲(chǔ)器通過16位程序計(jì)數(shù)器(PC)尋址,尋址能力為64KB字節(jié)。這使得能在64KB地址空問內(nèi)任意尋址,但沒有指令使程序能控制從程序存儲(chǔ)器空間轉(zhuǎn)移到數(shù)據(jù)存儲(chǔ)器空間。數(shù)據(jù)存儲(chǔ)器地址空間數(shù)據(jù)存儲(chǔ)器RAM用于存放運(yùn)算的中間結(jié)果、數(shù)據(jù)暫存和緩沖、標(biāo)志位等?數(shù)據(jù)存儲(chǔ)器空間也分為片內(nèi)和片外兩大部分,片內(nèi)RAM和片外RAM.8051片外數(shù)據(jù)存儲(chǔ)器空間為64K,從0000H?FFFFH:片內(nèi)存儲(chǔ)器空間為256字節(jié),地址從0000H~00FFH。(一) 片外RAM片外數(shù)據(jù)存儲(chǔ)器與片內(nèi)數(shù)據(jù)存儲(chǔ)器空間低地址0000H~FFFFH是重疊的,805l有MOV和M0VX兩種指令,用以區(qū)分片內(nèi)、片外RAM空間.片內(nèi)RAM使用MOV指令,片外64KRAM空間專門為MOVX指令所用。(二) 片內(nèi)RAM片內(nèi)數(shù)據(jù)存儲(chǔ)器最大可尋址256個(gè)單元,它們又分為兩個(gè)部分,低128字二肯(00H~7FH)是真正的RAM區(qū),高128字節(jié)(80H~FFH)為特殊功能寄存器(SFR)區(qū)。低128字節(jié)RAM8051的32個(gè)工作寄存器與RAM安排在同一個(gè)隊(duì)列空間里,統(tǒng)一編址并使用同樣的尋址方式(直接尋址和間接尋址)。00H~IFH地址安排為四組工作寄存器區(qū),每組有8個(gè)工作寄存器(ROAR7),共占32個(gè)單元(見表1)。通過對(duì)程序狀態(tài)字PSW中RS1、RS0的設(shè)置,每組寄存器均可選作CPU的當(dāng)前工作寄存器組。若程序中并不需要四組,那么其余可用作一般RAM單元。CPU復(fù)位后,選中第0組工作寄存器。組RS1RS0R0R1R2R3R4R5R6R700000H01H02H03H04H05H06H07H10108090AH0BH0CH0DH0EH0FH21010H11H12H13H14H15H16H17H31118H19H1AH1BH1CH1DH1EH1FH表1:作寄存器地址表低128字節(jié)RAM單元地址范圍也是00H?7FH,8051采用不同尋址方式來加以區(qū)分,即訪問128個(gè)位地址,使用位尋址方式,訪問低128字節(jié)單元用直接尋址和間接尋址,這樣就可以區(qū)分開00H?7FH是位地址還是字節(jié)地址。1. 高128字節(jié)RAM~特殊功能寄存器(SFR)8051片內(nèi)高128字節(jié)RAM中,除程序計(jì)數(shù)器PC外,有21個(gè)專用寄存器(SFR),也稱特殊功能寄存器,它們離散地分布在80H?FFH的RAM間中。訪問特殊功能僅允許使用直接尋址方式(詳情見表2)。(1)累加器ACC累加器ACC是8051最常用、最繁忙的8位特殊功能寄存器,許多指令的操作數(shù)取自于ACC,并許多運(yùn)算結(jié)果也存放于ACC中?在指令系統(tǒng)中采用A作為累加器ACC的助記符。OV(PSW2)溢出標(biāo)志位。當(dāng)進(jìn)行補(bǔ)碼運(yùn)算時(shí),如有溢出,即當(dāng)運(yùn)算結(jié)果超出一128~+127的范圍時(shí),OV位由硬件自動(dòng)置OV=1;無溢出時(shí),OV=0。PSWo1為保留位,8051未用。P(PSW.O)奇偶檢驗(yàn)標(biāo)志位。每條指令執(zhí)行完后,該位始終跟蹤指示累加器A中1的個(gè)數(shù)。如結(jié)果A中有奇數(shù)個(gè)“1”,則置P=1,否則P=0。常用于校驗(yàn)串行通訊中的數(shù)據(jù)傳送是否出錯(cuò).(2)寄存器B(FOH)在乘除指令中,用到了8位B寄存器。乘法指令的兩個(gè)操作數(shù)分別取自A和B,乘積存于B、A兩個(gè)8位寄存器中。除法指令中,A中存放被除數(shù),B中存放除數(shù),商存放于A中,B中存放余數(shù)。在其它指令中,B可作為一般通用寄存器或一個(gè)RAM單元使用。程序狀態(tài)寄存器PSW(DOH)PSW是一個(gè)8位特殊功能寄存器,它的各位包含了程序執(zhí)行后的狀態(tài)信息,供程序查詢或判別之用。各位的含義及其格式如下:CYACFORS1RSOOV—PCY(PSW.7)進(jìn)位標(biāo)志位。在執(zhí)行加法(或減法)運(yùn)算指令時(shí),如果運(yùn)算結(jié)果最高位(位7)向前有進(jìn)位(或借位),CY位由硬件自動(dòng)置“1”:如運(yùn)算結(jié)果最高位(位7)無進(jìn)位(或借位),則CY清O°CY也是8051在進(jìn)行位操作(布爾操作)時(shí)的位累加器.AC(Psw6)半進(jìn)位標(biāo)志位,也稱輔助進(jìn)位標(biāo)志。當(dāng)執(zhí)行加法(或減法)操作時(shí),其運(yùn)算結(jié)果(和或差)產(chǎn)生由低半個(gè)字節(jié)(位3)向高半個(gè)字節(jié)有半進(jìn)位(或借位)時(shí),AC位將被硬件自動(dòng)置“1”,否則AC被自動(dòng)清“0”.F0(PSW.5)用戶標(biāo)志位。用戶可以根據(jù)自己的需要對(duì)FO位賦予?定的含義.由用戶執(zhí)行置位、復(fù)位操作,作為軟件標(biāo)志.RS0和RS1(PSW.4和PSW.5)工作寄存器組選擇控制位.這兩位的值決定選擇哪一組工作寄存器為當(dāng)前工作寄存器組。由用戶用軟件改變RS1和RS0值的組合,以切換當(dāng)前選用的工作寄存器組,其組合關(guān)系詳見表2。8051上電復(fù)位后,(RS1)=(RS0)=0,CPU自然選擇第0作為當(dāng)前工作寄存器組。根據(jù)需要,可利用傳送指令對(duì)PSW整字節(jié)操作,或使用位操作指令改變RS1和RS0的狀態(tài),以切換當(dāng)前工作寄存器組.RS1RS0寄存器組片內(nèi)RAM地址00第0組00H?07H01第1組08H?0FH10第2組10H?17H11第3組18H-1FH表3RS0、RS1的組合關(guān)系⑷棧指針SP(81H)堆棧指針SP為8位特殊功能寄存器,SP的內(nèi)容即堆棧指針,可指向8051片內(nèi)00H?7FH的RAM的任何單元。系統(tǒng)復(fù)位后,SP初始化為07H,即指向07H的RAM單元。8051的堆棧指針SP是一個(gè)雙向計(jì)數(shù)器.在壓棧時(shí)SP內(nèi)容自動(dòng)增值,出棧時(shí)自動(dòng)減值,存取信息必需按著“先進(jìn)后出"或“后進(jìn)先出”的原則。(5)數(shù)據(jù)指針DPTR(83H,82H)DPTR是一個(gè)16位的特殊功能寄存器,其高位字節(jié)寄存器用DPH表示(地址83H),低位字節(jié)寄存器用DPL表示(82H)°DPRT既可以作為一個(gè)16位寄存器來處理,也可以作為二個(gè)獨(dú)立的8位寄存器DPH和DPL使用.DPTR主要用以存放16位地址,以便對(duì)64K片外RAM作間接尋址。
(6)1/0端口P0?P3(80H,90H,AOH,BOH)P0~P3為四個(gè)8位特殊功能寄存器,分別是四個(gè)并行I/O端的鎖存器。它們都有字節(jié)地址,每一個(gè)口鎖存器還有位地址,所以每一條I/O線獨(dú)立地用作輸入或輸出時(shí),數(shù)據(jù)可以鎖存;作輸入時(shí),數(shù)據(jù)可以緩沖。當(dāng)I/O端口某一位用于輸入信號(hào)時(shí),對(duì)應(yīng)的鎖存器位須先置“1”.符號(hào)名稱地址ACC累加器E0HBB寄存器F0HPSW程序狀態(tài)字D0HSP棧指針81HDPH數(shù)據(jù)指針高位83HDPL數(shù)據(jù)指針地位82HP0P0鎖存寄存器80HP1P1鎖存寄存器90HP2P2鎖存寄存器A0HP3P3鎖存寄存器B0HIP中斷優(yōu)先級(jí)控制寄存器B8HIE中斷允許控制寄存器A8HTMOD定時(shí)/計(jì)數(shù)器工作方式、狀態(tài)寄存器89HTCON定時(shí)/計(jì)數(shù)器控制寄存器88HTH0定時(shí)/計(jì)數(shù)器0(咼字節(jié))8CHTL0定時(shí)/計(jì)數(shù)器0(低字節(jié))8AHTH1定時(shí)/計(jì)數(shù)器1(咼字節(jié))8DHTL1定時(shí)/計(jì)數(shù)器1(低字節(jié))8BHSCON串行口控制寄存器98HSBUF串行數(shù)據(jù)緩沖器99HPCON電源控制寄存器97H表251系列單片機(jī)的特殊功能寄存器表第四節(jié) 8051單片機(jī)的FPGA設(shè)計(jì)與實(shí)現(xiàn)本設(shè)計(jì)采用現(xiàn)在流行的模塊化設(shè)計(jì)方式,將8051單片機(jī)按照其內(nèi)部的結(jié)構(gòu)設(shè)計(jì)成為3個(gè)大的模塊,即運(yùn)算器、存儲(chǔ)器和控制器模塊。一、運(yùn)算器模塊的設(shè)計(jì)運(yùn)算器模塊包括一個(gè)可進(jìn)行8位算術(shù)運(yùn)算和邏輯運(yùn)算的ALU單元,8位的暫存器1、暫存器2、8位的累加器ACC,寄存器B和程序狀態(tài)寄存器PSW。(1)ALU(算術(shù)邏輯運(yùn)算單元)模塊的信號(hào)該模塊的信號(hào)如圖4所示,負(fù)責(zé)進(jìn)行算術(shù)邏輯運(yùn)算,它能完成加、減、乘、除算術(shù)運(yùn)算以及與、或、非等邏輯運(yùn)算。其中:rst為復(fù)位標(biāo)志,高有效.op—code是4位代碼,用來定義ALU所要進(jìn)行的操作,它的內(nèi)容已經(jīng)在80511沁文件中定義完畢。例如,要進(jìn)行加法操作,則opcode為0001。src—1為送入ALU的第一源操作數(shù),8位輸入,當(dāng)做加法運(yùn)算時(shí)它是被加數(shù),做減法運(yùn)算時(shí)它是被減數(shù),做除法運(yùn)算時(shí)它是被除數(shù)。src_2為送入的第二源操作數(shù),8位輸入,當(dāng)做減法運(yùn)算時(shí),它是減數(shù);做除法運(yùn)算時(shí),它是除數(shù)。src_3為送入ALU的第三源操作數(shù),8位輸入。src_cy為第一源操作數(shù)的第7位。src_ac為第一源操作數(shù)的第4位。des_1為第一目標(biāo)操作數(shù),8位輸出,用來存放ALU計(jì)算后的數(shù)據(jù)。des_2為第二目標(biāo)操作數(shù),8位輸出,用來存放ALU計(jì)算后的剩余數(shù)據(jù),如除法沒有整除的小數(shù)等.des_cy為ALU運(yùn)算完數(shù)據(jù)的第7位.des_ac為ALU運(yùn)算完數(shù)據(jù)的第4位.des_ov位溢出標(biāo)志位。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模塊信號(hào)圖二、ALU(算術(shù)邏輯運(yùn)算單元)模塊的層次化設(shè)計(jì)(詳見圖5)圖5ALU(算術(shù)邏輯運(yùn)算單元)模塊的層次化設(shè)計(jì)三、ALU模塊的VHDL語言描述ALU模塊中實(shí)現(xiàn)乘法操作的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為被乘數(shù),8位輸入信號(hào),b為乘數(shù),8位輸人信號(hào),r為a、b相乘后的結(jié)果,16位輸出信號(hào),OV為溢出標(biāo)志,當(dāng)計(jì)算所得的結(jié)果的高8位的值不等于0時(shí),ov=1,表示計(jì)算結(jié)果溢出.ALU模塊中實(shí)現(xiàn)BCD碼調(diào)整操作的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;其中,當(dāng)輸入的信號(hào)低4位大于9(1001B)操作;當(dāng)輸入信號(hào)最高位為1時(shí),進(jìn)行加96(0③其中,當(dāng)輸入的信號(hào)低4位大于9(1001B)操作;當(dāng)輸入信號(hào)最高位為1時(shí),進(jìn)行加96(0③ALU模塊的主程序的部分如下:beginprocesscrac)s(rst,op_code,scr_1variablev16:variablev8:variab1evcunsignedB)時(shí),110000B)scr2.進(jìn)行加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;當(dāng)RST=1時(shí),ALU復(fù)位;,當(dāng)RST二0時(shí),ALU根據(jù)OP-CODE的值進(jìn)行相應(yīng)的操作。四、ALU模塊功能仿真運(yùn)算代碼代碼內(nèi)容對(duì)應(yīng)操作ALUOPCNONE0000--ALUOPCADD0001加法ALUOPCSUB0010減法ALUOPCMUL0011乘法ALUOPCDIV0100除法ALUOPCDA0101BCD碼調(diào)整表4運(yùn)算代碼所對(duì)應(yīng)的操作表4表示的是各個(gè)預(yù)算代碼的對(duì)應(yīng)的操作。本次設(shè)計(jì)我主要解決算術(shù)運(yùn)算不嘗試邏輯運(yùn)算。假設(shè)scr_l=10(00O01O1OB),scr_2=5(00000101B),由仿真圖形可以看出,當(dāng)opcode=0001時(shí),即做加法運(yùn)算,得des1=15(00001111B):當(dāng)opcode=0010時(shí),即做減法運(yùn)算,得des_l=5(00000101B);當(dāng)op-code=0011時(shí),即做乘法運(yùn)算,得des_l=50(00110010B);當(dāng)op_code=0100時(shí),即做除法運(yùn)算,得des_l=2(00000010B)。圖6加法及減法的仿真波形圖8減法及除法運(yùn)算的仿真波形五、存儲(chǔ)器模塊設(shè)計(jì)本設(shè)計(jì)共為8051單片機(jī)設(shè)計(jì)了3種存儲(chǔ)器,片內(nèi)ROM、RAM和片外XRM。本設(shè)計(jì)中的片內(nèi)ROM用來存儲(chǔ)已經(jīng)編寫好的程序控制代碼,只能讀出數(shù)據(jù)不能寫入數(shù)據(jù)。①片內(nèi)ROM片內(nèi)ROM的信號(hào)一片內(nèi)ROM的信號(hào)如圖9所示.其中:RST:復(fù)位標(biāo)志,低有效,輸入信號(hào);CLK:時(shí)鐘信號(hào),輸入信號(hào);ADDRo~ADDRII:地址總線,11位,輸入信號(hào);RD:讀控制位,高有效,輸入信號(hào);Do-D7:數(shù)據(jù)總線,8位,輸入/輸出信號(hào).RSTCLKADDR0ADDR11RSTCLKADDR0ADDR11RD少片內(nèi)ROMA/IDO?D7圖9片內(nèi)ROM的信號(hào)圖片內(nèi)ROM主要VHDL語言描述:beginif(rst二…1)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 碌曲縣2025年數(shù)學(xué)五年級(jí)第二學(xué)期期末經(jīng)典試題含答案
- 長春建筑學(xué)院《形體訓(xùn)練1》2023-2024學(xué)年第二學(xué)期期末試卷
- 襄陽科技職業(yè)學(xué)院《中西醫(yī)結(jié)合耳鼻咽喉科學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 伊吾縣2025屆數(shù)學(xué)五年級(jí)第二學(xué)期期末學(xué)業(yè)水平測(cè)試試題含答案
- 浙江省杭州市富陽區(qū)2025屆初三調(diào)研測(cè)試(二)物理試題文試題含解析
- 骨科機(jī)器人手術(shù)個(gè)案護(hù)理
- 銷售新人培訓(xùn)方案
- 煤礦安全規(guī)程培訓(xùn)課件
- 淘寶售后規(guī)則培訓(xùn)
- 物流訂單管理培訓(xùn)課件
- 《三角形的外角》優(yōu)秀課件
- 如何進(jìn)行社會(huì)調(diào)查研究課件
- 鵪鶉蛋脫殼機(jī)的設(shè)計(jì)
- 項(xiàng)目管理進(jìn)度表模板(全流程)
- 行為安全觀察behaviorbasedsafety研究復(fù)習(xí)過程
- 鍋爐專業(yè)術(shù)語解釋及英文翻譯對(duì)照
- 《小石潭記》作業(yè)設(shè)計(jì)
- 體育測(cè)量與評(píng)價(jià)PPT課件-第五章身體素質(zhì)的測(cè)量與評(píng)價(jià)
- 過程分層審核檢查表
- 氣井地面排采技術(shù)方案
- 旅行社等級(jí)評(píng)定申報(bào)材料完整版
評(píng)論
0/150
提交評(píng)論