《8051单片机的FPGA设计与实现--毕业论文DOC.docx》由会员分享,可在线阅读,更多相关《8051单片机的FPGA设计与实现--毕业论文DOC.docx(26页珍藏版)》请在三一办公上搜索。
1、8051单片机的FPGA设计与实现第一章前言20世纪末在计算机技术逐渐发展的情况写,电子技术得到了飞速的发展, 现代电子产品已经渗透到了社会的各个领域,有力的推动了社会生产力的发展和 社会信息化程度的提高,同时也使现代电子产品的性能进一步提高,产品更新换 代的节奏也越来越快。电子技术发展的根基是微电子技术的进步,它表现在大规模集成电路加工技 术,即半导体工艺技术的发展上,表征半导体工艺水平的线宽已经达到60nm以 下,并还在不断缩小;在硅片单位面积上集成了更多的晶体管,集成电路设计在 不断地向超大规模,极低功 耗和超高速的方向发展;专用集成电路 ASIC (Application Specif
2、ic Integrated Circuit)的设计成本不断降低,在功能上, 现代的集成电路已能够实现单片电子系统SOC(System on a chip)的功能。另 外集成电路(IC)技术在微电子领域中占有重要的地位。且伴随着IC技术的发 展,电子设计自动(Electronic Design Automation, EDA)已经逐渐成为重要 的设计手段,其广泛应用于模拟与数字电路系统等许多领域。单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理 能力中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O 口和中断系 统、定时器/计时器等功能(可能还包括显示驱动电路、脉
3、宽调制电路、模拟多 路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计 算机系统,在工业控制领域的广泛应用。从上世纪80年代,由当时的4位、8 位单片机,发展到现在的32位300M的高速单片机。单片机具有体积小、功耗低、 控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结 合不同类型的传感器,可实现诸如电压、电流、功率、频率、湿度、温度、流量、 速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制 使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强 大。FPGA是英文Field Programmable Gate
4、Array的缩写,即现场可编程门阵 列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作 为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路 的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元 阵列LCA (Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB (Configurable Logic Block)、输出输入模块 IOB (Input Output Block)和内 部连线(Interconnect)三个部分。CPLD与FPGA的内部结构稍有不同,但用法一样,所以多数情况下,不加以
5、区分。FPGA/CPLD芯片都是特殊的ASIC芯片,它们除了具有ASIC的特点之外, 还具有以下几个优点:随着VLSI(Very Large Scale IC,超大规模集成电路)工 艺的不断提高单一芯片内部可以容纳上百万个晶体管,FPGA/CPLD芯片的规模 也越来越大,其单片逻辑门数已达到上百万门,它所能实现的功能也越来越强, 同时也可以实现系统集成。FPGA/CPLD的资金投入小,节省了许多潜在的花费。用户可以反复地编程、 擦除、使用或者在外围电路不动的情况下用不同软件就可实现不同的功能。所以, 用FPGA/PLD试制样片,能以最快的速度占领市场。FPGA/CPLD软件包中有各种 输入工具
6、和仿真工具,及版图设计工具和编程器等全线产品,电路设计人员在很 短的时间内就可完成电路的输入、编译、优化、仿真,直至最后芯片的制作。当 电路有少量改动时,更能显示出FPGA/CPLD的优势。现有的电子系统设计多数采用微控制器为核心,辅以必要的外围器件如 ADC、DAC和存储器等,这样的系统做出来的线路板较大,且调试复杂;而且如 果系统内有高速器件,则微控制器的选择将会是个困难;虽然可通过程序升级增 加或改进功能,但硬件一旦设计完成,是无法更改的。FPGA(现场可编程门阵列)与CPLD(复杂可编程逻辑器件)都是可编程逻辑器 件,它们是在PAL,GAL等逻辑器件的基础之上发展起来的。同以往的PAL
7、、GAL 等相比较,FPGA/CPLD的规模比较大,它可以替代几十甚至几千块通用IC芯片。 这样的FPGA/CPLD实际上就是一个系统部件。由于其应用的灵活性,这种芯片受到世界范围内电子工程设计人员的广泛关注和普遍欢迎。第二章FPGA系统的简介在数字化、信息化的时代,数字集成电路应用得非常广泛。随着微电子技术 与工艺的发展,数字集成电路从电子管、晶体管、中小规模集成电路、超大规模 集成电路(VLSI)逐步发展到今天的专用集成电路(ASIC)。ASIC的出现降低了产 品的生产成本,提高了系统的可靠性,减小了产品的物理尺寸,推动了社会的数 字化进程。但是ASIC因其设计周期长,改版投资大,灵活性差
8、等缺陷制约着它 的应用范围。可编程逻辑器件随着微电子制造工艺的发展取得了长足的进步。从早期的只 能存储少量数据,完成简单逻辑功能的可编程只读存储器(PROM)、紫外线可擦除 只读存储器(EPROM)iloJ和电可擦除只读存储器(EEROM),发展到能完成中大规 模的数字逻辑功能的可编程阵列逻辑(PAL)和通用阵列逻辑(GAL)11ii,今天已经 发展成为可以完成超大规模的复杂组合逻辑与时序逻辑的现场可编程逻辑器件 (FPGA)和复杂可编程逻辑器件(CPLD)。第一节FPGA的特点FPGA既继承了 ASIC的大规模、高集成度、高可靠性的优点,又克服了普通 ASIC设计周期长、投资大、灵活性差的缺
9、点,逐步成为复杂数字硬件电路设计 的理想首选。当代FPGA有以下特点:1. 规模越来越大。2. 开发过程投资小。3. FPGA 一般可以反复地编程、擦除。4. 保密性能好。5. FPGA开发工具智能化,功能强大。6. 新型FPGA内嵌CPU或DSP内核,支持软硬件协同设计,可以作为片上可 编程系统(SOPC)的硬件平台。第二节FPGA的设计流程一个完整的FPGA设计流程包括电路设计与输入、功能仿真、综合、综合后 仿真、实现、布线后仿真和下板调试等主要步骤。常用的设计输入方法有硬件描述语言(HDL)和原理图设计输入方法。原理图 设计输入法早期应用得比较广泛,它根据设计要求,选用器件、绘制原理图、
10、完 成输入过程。这种方法的优点是直观、便于理解、元件库资源丰富。但是在大型 设计中,这种方法的可维护性较差,不利于模块建设与重用。更重要的缺点是: 当所选用芯片升级换代后,所有原理图都要作相应的改动。目前进行大型工程设 计时,最常用的设计方法是HDL设计输入法。其中影响最为广泛的HDL语言是 VHDL和Verilog HDL。它们的共同特点是利于自顶向下设计,利于模块的划分与 复用,可移植性好,通用性好,设计不因芯片的工艺与结构的变化而变化,更利 于向ASIC的移植。电路设计完成后,要用专用的仿真工具对设计进行功能仿真,验证电路功能 是否符合设计要求。功能仿真有时也被称为前仿真。通过仿真能及时
11、发现设计中 的错误,加快设计进度,提高设计的可靠性。综合优化(Synthesize)是指将HDL语言、原理图等设计输入翻译成由与、或、 非门,RAM,寄存器等基本逻辑单元组成的逻辑连接(网表),并根据目标与要求 (约束条件)优化所生成的逻辑连接,输出edf和edn等文件,供FPGA厂家的布 局御线器进行实现。综合完成后需要检查综合结果是否与原设计一致,需要做综合后仿真。在仿 真时,把综合生成的延时文件反标到综合仿真模型中去,可估计门的延时带来的 影响。综合后仿真虽然比功能仿真精确一些,但是只能估计门的延时,而不能估 计线的延时,仿真结果与布线后的实际情况还有一定的差距,并不十分准确。这 种仿真
12、的主要目的在于检查综合器的综合结果是否与设计输入一致。综合结果的本质是一些由与、或、非门,触发器,RAM等基本逻辑单元组 成的逻辑网表,它与芯片实际的配置情况还有较大差距。此时应该使用FPGA厂 商提供的工具软件,根据所选芯片的型号,将综合输出的逻辑网表,适配到具体 FPGA器件上,这个过程就叫做实现(Implementation)过程。Xilinx的实现过程分 为:翻译(Translate)映射(Map)、布局布线(Place & Route)等3个步骤。布局布线之后应该做时序仿真,时序仿真中应该将布局布线的时延文件反标 到设计中,使仿真既包含门的延时,又包含线的延时信息。与前面各种仿真相比
13、, 这种后仿真包含的延时信息最为全面、准确,能较好地反映芯片的实际工作情况。设计开发的最后步骤就是在线调试或者将生成的配置文件写入芯片中进行 测试。在ISE中对应的工具是iMPACT。第三节FPGA的开发工具FPGA的开发工具有很多,各个公司都有自己专用工具。本次毕业设计我所采用的开发 工具为 ALTERA:QUARTUS。一、 ALTERA : QUARTUSQuartus II design 是最高级和复杂的,用于 system-on-a-programmable-chip (SOPC)的设计环境。QuartusII design 提供 完善的 timing closure 和 Logic
14、Lock 基于块的设计流程。QuartusII design 是唯一一个包括以timing closure和基于块的设计流为基本特征的 programmable logic device (PLD)的软件。Quartus II 设计软件改进了性能、 提升了功能性、解决了潜在的设计延迟等,在工业领域率先提供FPGA与mask-programmed devices开发的统一工作流程。Altera Quartus II作为一种可编程逻辑的设计环境,由于其强大的设计能 力和直观易用的接口,越来越受到数字系统设计者的欢迎。Altera Quartus II设计软件是业界唯一提供FPGA和固定功能Hard
15、Copy器 件统一设计流程的设计工具。工程师使用同样的低价位工具对Stratix FPGA进 行功能验证和原型设计,又可以设计HardCopy Stratix器件用于批量成品。系 统设计者现在能够用Quartus II评估HardCopy Stratix器件的性能和功耗,相 应地进行最大吞吐量设计。Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支 持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。 Quartus 平台与 Cadence、ExemplarLogic、 MentorGraphics、Synopsys 和 Synplicit
16、y等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设 计功能,增添了 FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。二、Quartus II 的特点1、支持MAX7000/MAX3000等乘积项器件2、软件体积缩小,运行速度加快3、LogicLock设计流程把性能提升15%4、采用快速适配选项缩短编译时间5、新的功能减小了系统级验证第二章8051单片机的FPGA设计与实现单片微型计算机简称为单片机,又称为微型控制器,是微型计算机的一个重 要分支。单片机是70年代中期发展起来的一种大规模集成电路芯片,是CPU、 RAM、ROM、I/O接口和中断系统于同一硅片的
17、器件。80年代以来,单片机发展迅 速,各类新产品不断涌现,出现了许多高性能新型机种,现已逐渐成为工厂自动 化和各控制领域的支柱产业之一。8051单片机是早最典型的产品,该系列具它 单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于 用8051来称呼MCS51系列单片机。8051单片机是早最典型的产品,该系列具它 单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于 用8051来称呼MCS51系列单片机。第一节51单片机的引脚功能MC S-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照图1:P1.0C VCC140P1.1 C23971 P0
18、.0 (ADOIP1.SL338J PO.l (AD1)P1.3C437.J PD.2 IAD2)P1.4 匚538J P0.3 (AD31P1.6 匚e36PQ.4 lAD4)P1.6C?34 P0.5 (ADS)P1.7C日33L P0.6 ADCRSTC32Z1 PQ.7 lAD7i(RXOJP3.0IZ1031Zl EAA/PP(TXDJPII 匚1130J ALE/fTOG(INTO P3.2C1229 PSENi.INT13.3 匚132B P2.7 IA15F1427J P2.6 AFE网S匚15辨DP 於MEPG.6L1625 PZ4 (AE2;(RD) P3.7 匚1724
19、F2.3 (A11iXTALE 匚1823:1 P2.2 (AlQ|XTAL1 匚1922 PS.t l峋GNDC2D21 P2.0 IA)图1、8051芯片管脚图1. 电源引脚Vee和VssVcc(40脚):电源端,+5伏。Vss(20脚):接地端。2. 时钟电路引脚又面和叉丽XTAL2(18脚):接外部晶体和微调电容的一端。 在8051单片机内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固 有频率。若需采用外部时钟电路时,该引脚输入外部时钟脉冲信号。XTAL1(19 脚):接外部晶体和微凋电容的另一端。在片内它是振荡电路反相放大器的输入 端。在采用外部时钟时,该引脚必须接地。3.
20、 控制信号引脚RST、ALE、丽和豆iRST/V(9脚):RST是复位信号输入端, 高电平有效。当此输入端保持两个机器周期(24个时钟振荡周期)的高电平时,就 可以完成复位操作。RST引脚的第二功能是VpD,即备用电源的输入端。当主电源 Vcc发生故障,降低到低电平规定值时,将+5V电压自动接入RST端,为RAM提供备 用电源,以保证存储在RAM中的信息不丢失,以使复电后能继续正常运行。ALE/PROG(ADDRESS LATCH ENABLE/PRoGRAMMING,30脚):地址锁存允许信号 端。当8051上电正常工作后,ALE引脚不断向外输出正脉冲信号,此频率为振荡 器频率而sc的1/6
21、。CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控 制信号。该引脚的第二功能PROG是对片内带有4KEPROM的8751编程写入(固化程序) 时,作为编程脉冲输入端。PSEN(PROGRAM STORE ENABLE,29脚):程序存储允许输出信号端。在访问片 外程序存储器时,此端口定时输出负脉冲,作为片外存储器读的选通信号。EA/Vpp(ENABLE ADDREss/voulAGE PULSE OF PROGRAMMING3 脚):外部程序 存储器地址允许输入端/固化编程电压输入端。当酉引脚连接高电平时,CPU只访 问片内EPROM/ROM并执行内部程序存储器中的指令,但在PC(
22、程序计数器)的值超 过OFFFFH(对8051为4K )时,将自动转向执行片外程序存储器内的程序。当输入信号EA连接低电平(接地)时,CPU只访问外部EPROM/ROM并执行外部程 序存储器中的指令,而不管是否有片内程序存储器。此引脚的第二功能VPP,是 对8751片内EPROM固化编程时,作为施加较高编程电压(一般2l伏)输入端。4. I/O(输入/输出)端口P0、P1、P2和P3PO口(PO. OPO. 7, 3932脚):P0口是一个漏极开路261的8位准双向【/。 端口。作为漏极开路的输出端口,每位能驱动8个LS型TTL273负载。当P0口作为 输入口使用时,应先向P0口锁存器(地址8
23、0H)写入全1,此时P0 El的全部引脚悬 空,可作为高阻抗输入。作为输入口使用时要先写1,这就是标准双向的含义。在CPU访问片外存储器时,PO口是分时提供低8位地址和8位数据的复用总线。 在此期间,PO口内部上拉电阻有效。P1 口(PI. OP1. 7,18脚):P1 口是一个带内部上拉电阻的8位准双向1/0 端口。P1 口的每一位能驱动(吸收或输出电流)4个Ls型TTL负载。在P1 口作为输入 口使用时,应先向P1 口锁存器(地址90H)写入全1,此时P1 口的引脚输入由内部上 拉电阻拉成高电平。P2口(P2. 0P2. 7,2128脚):P2口是一个带内部上拉电阻的8位准双向 I/O 端
24、口。Pl 口的每一位能驱动(吸收/输出电流)4个Ls型TTL负载。访问片外EPROM/RAM 时,它输出高8位地址。P3 口有两个功能,除了作为I/O使用外(其内部有上拉电阻),还有一些 特殊功能,由特殊寄存器来设置。有内部EPROM的单片机芯片艮即编程脉冲:30脚(ALE/PROG)编程电压(25V): 31 脚(EA/VPP)第二节51系列单片机的结构和原理一、51系列单片机的结构图2所示为MCS-51系列单片机中的8051单片机的基本功能结构方框图。是外部事件计数X程序存储器 4KB X ROM2 X 16R 定时器?计数器在一块芯片上,集成了一个微型计算机的各个组成部分,每一片单片机包
25、括:数据布储器2湖KAM/SFH可编程全双工1. 一个8位的微处理器CPU。2. 片内数据存储器RAM(128B/256B),用以存放可以读/写的数据,如运算3. 片内程序存储器ROM/EPROM(4KB/8KB),用以存放程序、一些原是数据和 表格。4. 四个8位并行1/0(输入/输出)接口P0P3,每个口可以用作输入,也可以 用作输出。5. 两个或三个定时/计数器,每个定时/计数器都可以设置成计数方式,用 以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果 实现计算机控制。6. 五个中断源的中断控制系统。7. 一个双全工UART(通用异步接收发送器)的串行I/O口,可实
26、现单片机与单 片机或其它微机之间串行通信。8. 片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接,最高允 许振荡频率为12MHz。以上各部分通过内部数据总线相连接。二、51单片机内部结构8051单片机内部结构如图3所示端口噢存器LZ哭口 3驱动器P3.0P3.78051单片机内部结构图zzRAM 128 * 8端口 0锁存器端口 2锁存器ROM 4K * 8程序地址寄存器P2.0P2.7Lik端口 2驱动器TCONTUASCON ti nTMODTUITCOirTI 1TYIEJED中断、串行口、定时方块完整的计算机应该由运算器、控制器、存储器(ROM及RAM )和I/O接口组成。一般微
27、处理器(如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,经常作为一个运
28、算数经暂存器2进入ALU的一个输入端,与 另一个进入暂存器1的运算数进行运算,运算结果又送回ACC。除此之外,ACC在 8051内部经常作为数据传送的中转站,同一般微处理器一样,它是最繁忙的一个 寄存器。PSW:程序状态字寄存器,8位,用于标志指令执行后的信息状态,相当于一 般微处理器的标志寄存器。PSW中各位状态供程序查询和判别用。寄存器B: 8位寄存器,在乘、除运算时,B寄存器用来存放一个操作数:也 用来存放运算后的一部分结果;若不进行乘、除运算时,则可作为通用寄存器使 用。另外,8051片内还有一个布尔处理器,它以PSW中的进位标志位C为其累加器, 专门用于处理位操作:可以执行置位、位清
29、零、位取反、位等于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:
30、由PC中的内容指定ROM地址,取出来的指令 经指令寄存器IR送至指令译码器ID,由ID对指令译码并送PLA产生一定序列的控 制信号,以执行指令所规定的操作。振荡器及定时电路:8051单片机片内有振荡电路,只需外接石英晶体和频率 微调电容(2个30pF左右),其频率范围为1. 212MHz,该脉冲信号就作为8051 工作的最基本节拍,即时间的最小单位。3. 存储器8051片内有ROM(程序存储器,只能读)和RAM(数据存储器,可读、可写)两类, 它们有各自独立的存储地址空间,与一般微机的存储器配置方式很不相同。(1)程序存储器(ROM)8051的片内程序存储器容量为4K字节,地址从0000H开始
31、,用于存放程序和 表格常数。(2)数据存储器(RAM)8051片内数据存储器为128字节,地址为00H7FH,用于存放运算的中问结 果、数据暂存以及数据缓冲等。在这128字节的RAM中,有32个字节单元可指定为 工作寄存器,这同一般微处理器不同。8051的片内RAM和工作寄存器排在一个队 列里统一编址。由图3可见,8051单片机内部还有SP、DPTR、PCON、IE、IP等特殊功能寄存 器,它们也同128字节RAM在一个队列里编址,地址为80HFFH。在这128字节RAM 单元中有21个特殊功能寄存器(SFR),这些特殊功能寄存器还包括POP3 口锁存 器。4. I/O接口8051有四个8位并
32、行接口即P0P3,它们都是双向端口,每个端口各有8条I/O 线,均可输入/输出。P0P3 13四个锁存器同RAM统一编址,可以把U/O口当作一 般特殊功能寄存器来寻址。第三节 51单片机存储器配置51系列单片机与一般微机的存储器配置方式很不相同。一般微机通常只有一 个地址空间,ROM和RAM可以随意安排在这一地址范围内不同的空问,艮PROM和RAM 的地址同在一个队列里分配不同的空间。CPU访问存储器时,一个地址对应唯一 的存储器单元,可以是ROM也可以是RAM,并用同类访问指令。此种存储器结构称 普林斯顿结构。8051的存储器在物理结构上分程序存储器空间和数据存储器空问,有四个存 储空间:片
33、内程序存储器和片外程序存储器空间以及片内数据存储器和片外数据 存储器空间,这种程序存储器和数据存储器分开的结构形式,称为哈佛结构。 从用户使用的角度,8051存储器地址空间分为三类:1. 片内、片外空间地址统一编址0000HFFFFH的64K字节的程序存储器地址 空问(用16位地址);2. 64K字节片外数据存储器地址空间,地址也从0000HFFFFH(用16位地址)。3. 256字节数据存储器地址空间(用8位地址)。上述三个存储空间地址是重叠的,为了区分三个不同的逻辑空间,8051的指 令系统设计了不同的数据传送指令符号;CPU访问片内、片外ROM指令用MOVC,访 问片外RAM指令用MOV
34、X,访问片内RAM指令用MOV。4. 程序存储器地址空间8051存储器地址空间分程序存储器(64KB ROM)和数据存储器(64KBRAM)。程 序存储器用于存放编好的程序和表格常数。程序存储器通过16位程序计数器(PC) 寻址,寻址能力为64KB字节。这使得能在64KB地址空问内任意寻址,但没有指令 使程序能控制从程序存储器空间转移到数据存储器空间。5. 数据存储器地址空间数据存储器RAM用于存放运算的中间结果、数据暂存和缓冲、标志位等。数 据存储器空间也分为片内和片外两大部分,片内RAM和片外RAM。8051片外数据存储器空间为64K,从0000HFFFFH :片内存储器空间为256 字节
35、,地址从0000H00FFH。(一) 片外RAM片外数据存储器与片内数据存储器空间低地址0000HFFFFH是重叠的,805 l有MOV和MOVX两种指令,用以区分片内、片外RAM空间。片内RAM使用MOV指令, 片外64K RAM空间专门为MOVX指令所用。(二) 片内RAM片内数据存储器最大可寻址256个单元,它们又分为两个部分,低128字二肯 (00H7FH)是真正的RAM区,高128字节(80HFFH)为特殊功能寄存器(SFR)区。6. 低128字节RAM8051的32个工作寄存器与RAM安排在同一个队列空间里,统一编址并使用同 样的寻址方式(直接寻址和间接寻址)。00HlFH地址安排
36、为四组工作寄存器区,每组有8个工作寄存器(ROAR7),共 占32个单元(见表1)。通过对程序状态字PSW中RS1、RS0的设置,每组寄存器均可 选作CPU的当前工作寄存器组。若程序中并不需要四组,那么其余可用作一般RAM 单元。CPU复位后,选中第0组工作寄存器。组RS1RS0R0R1R2R3R4R5R6R700000H01H02H03H04H05H06H07H10108090AH0BH0CH0DH0EH0FH21010H11H12H13H14H15H16H17H31118H19H1AH1BH1CH1DH1EH1FH表1 :作寄存器地址表低128字节RAM单元地址范围也是00H7FH, 80
37、51采用不同寻址方式来加 以区分,即访问128个位地址,使用位寻址方式,访问低128字节单元用直接寻 址和间接寻址,这样就可以区分开00H7FH是位地址还是字节地址。1. 高128字节RAM特殊功能寄存器(SFR)8051片内高128字节RAM中,除程序计数器PC外,有21个专用寄存器(SFR), 也称特殊功能寄存器,它们离散地分布在80HFFH的RAM间中。访问特殊功能 仅允许使用直接寻址方式(详情见表2)。(1) 累加器ACC累加器ACC是8051最常用、最繁忙的8位特殊功能寄存器,许多指令的操作数 取自于ACC,并许多运算结果也存放于ACC中。在指令系统中采用A作为累加器ACC 的助记符
38、。OV(PSW2)溢出标志位。当进行补码运算时,如有溢出,即当运算结果 超出-128+127的范围时,OV位由硬件自动置OV=1 ;无溢出时,OV=0。PSW. 1为保留位,8051未用。P(PSW.O)奇偶检验标志位。每条指令执行完后,该位始终跟踪指示累加器A 中1的个数。如结果A中有奇数个“1”,则置P=1,否则P=0。常用于校验串行通 讯中的数据传送是否出错。(2) 寄存器B(FOH)在乘除指令中,用到了 8位B寄存器。乘法指令的两个操作数分别取自入和 B,乘积存于B、A两个8位寄存器中。除法指令中,A中存放被除数,B中存放除数, 商存放于A中,B中存放余数。在其它指令中,B可作为一般通
39、用寄存器或一个RAM 单元使用。(3) 程序状态寄存器PSW(DOH)PSW是一个8位特殊功能寄存器,它的各位包含了程序执行后的状态信息,供 程序查询或判别之用。各位的含义及其格式如下:CYACFORS1RSOOV-PCY(PSW. 7)进位标志位。在执行加法(或减法)运算指令时,如果运算结果最 高位(位7)向前有进位(或借位),CY位由硬件自动置“1”:如运算结果最高位(位 7)无进位(或借位),则CY清0CY也是8051在进行位操作(布尔操作)时的位累加 器。AC(Psw6)半进位标志位,也称辅助进位标志。当执行加法(或减法)操作时, 其运算结果(和或差)产生由低半个字节(位3)向高半个字
40、节有半进位(或借位) 时,AC位将被硬件自动置“1”,否则AC被自动清“0”。F0(PSW.5)用户标志位。用户可以根据自己的需要对FO位赋予定的含义.由 用户执行置位、复位操作,作为软件标志。RS0和RS 1(PSW. 4和PSW. 5)工作寄存器组选择控制位。这两位的值决定选 择哪一组工作寄存器为当前工作寄存器组。由用户用软件改变RS1和RS 0值的组 合,以切换当前选用的工作寄存器组,其组合关系详见表2。8051上电复位后,(RS1) = (RS0)=O, CPU自然选择第0作为当前工作寄存器组。 根据需要,可利用传送指令对PSW整字节操作,或使用位操作指令改变RS1和RS0 的状态,以
41、切换当前工作寄存器组。RS1RS0寄存器组片内RAM地址00第0组00H-07H01第1组08H-0FH10第2组10H-17H11第3组18H-1FH表3 RS0、RS1的组合关系(4) 栈指针 SP(81H)堆栈指针SP为8位特殊功能寄存器,SP的内容即堆栈指针,可指向8051片内 00H7FH的RAM的任何单元。系统复位后,SP初始化为07H,即指向07H的RAM单元。8051的堆栈指针SP是一个双向计数器。在压栈时SP内容自动增值,出栈时自 动减值,存取信息必需按着“先进后出”或“后进先出”的原则。(5) 数据指针DPTR(83H,82H)DPTR是一个16位的特殊功能寄存器,其高位字
42、节寄存器用DPH表示(地址 83H),低位字节寄存器用DPL表示(82H) DPRT既可以作为一个16位寄存器来处理, 也可以作为二个独立的8位寄存器DPH和DPL使用。DPTR主要用以存放16位地址,以便对64K片外RAM作间接寻址。(6) I/O端口P0P3(80H,90H,AOH,BOH)P0P3为四个8位特殊功能寄存器,分别是四个并行I/O端的锁存器。它们都 有字节地址,每一个口锁存器还有位地址,所以每一条I/O线独立地用作输入或 输出时,数据可以锁存;作输入时,数据可以缓冲。当I/O端口某一位用于输入信号时,对应的锁存器位须先置“ 1”。符号名称地址ACC累加器E0HBB寄存器F0H
43、PSW程序状态字D0HSP栈指针81HDPH数据指针高位83HDPL数据指针地位82HP0P0锁存寄存器80HP1P1锁存寄存器90HP2P2锁存寄存器A0HP3P3锁存寄存器B0HIP中断优先级控制寄存器B8HIE中断允许控制寄存器A8HTMOD定时/计数器工作方式、状态寄存器89HTCON定时/计数器控制寄存器88HTH0定时/计数器0 (高字节)8CHTL0定时/计数器0 (低字节)8AHTH1定时/计数器1(高字节)8DHTL1定时/计数器1(低字节)8BHSCON串行口控制寄存器98HSBUF串行数据缓冲器99HPCON电源控制寄存器97H表2 51系列单片机的特殊功能寄存器表第四节
44、 8051单片机的FPGA设计与实现本设计采用现在流行的模块化设计方式,将8051单片机按照其内部的结构设 计成为3个大的模块,即运算器、存储器和控制器模块。一、运算器模块的设计运算器模块包括一个可进行8位算术运算和逻辑运算的ALU单元,8位的暂存 器1、暂存器2、8位的累加器ACC,寄存器B和程序状态寄存器PSW。(1)ALU(算术逻辑运算单元)模块的信号该模块的信号如图4所示,负责进行算术逻辑运算,它能完成加、减、乘、 除算术运算以及与、或、非等逻辑运算。其中:rst为复位标志,高有效。op-code是4位代码,用来定义ALU所要进行的操作,它的内容已经在8051 1沁文件中定义完毕。例如
45、,要进行加法操作,则op code为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为
46、ALU运算完数据的第4位。des_ ov位溢出标志位。op_codedes_1scr_1des_2scr_2scr_3des_acrstdes_cvsrc_acsrc_cydes_ov图4 ALU模块信号图二、ALU(算术逻辑运算单元)模块的层次化设计(详见图5)三、ALU模块的VHDL语言描述 ALU模块中实现乘法操作的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 variablev1:unsigned(15 down to 0);beginv1:=a*b;r:=v1;if(v1(15 down to 8)/=C0_8)thenov:=1