18051单片机在FPGA上的实现报告人:张杰2报告的主要内容相关背景知识设计的分析与实现几点体会3相关背景知识MCS-51简介VHDL硬件描述语言FPGA器件4MCS-51简介MCS-48:Intel公司1976年生产的一个8位单片机系列;MCS-51:1980年推出的换代产品,包括8051、8031、8751、80C51BH、80C31BH等具体型号。5MCS-51产品系列引脚完全兼容片内存储器型号程序存储器数据存储器定时器中断8031AHNONE128x8RAM2x16-Bit58051AH4Kx8ROM128x8RAM2x16–Bit58051AHP4Kx8ROM128x8RAM2x16–Bit58751H4Kx8EPROM128x8RAM2x16–Bit58751H-84Kx8EPROM128x8RAM2x16–Bit58751BH4Kx8EPROM128x8RAM2x16–Bit58032AHNONE256x8RAM3x16-Bit68052AH8Kx8ROM256x8RAM3x16–Bit68752BH8Kx8EPROM256x8RAM3x16–Bit66MCS-51引脚说明P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0/PSENALE/EA/RSTAD7AD6AD5AD4AD3AD2AD1AD0A15A14A13A12A11A10A9A8RDWRT1T0INT1INT0TXDRXD地址总线(低8位)数据总线双向I/o端口地址总线(高8位)双向I/O端口双向I/o端口双向I/o端口78051结构框图振荡器及时序CPUROM/EPROMRAM2X16位定时器/计数器可编程全双工串行控制器64KB总线扩展控制控制并行口数据/地址总线串行通信计数器外部时钟源可编程接口外部中断内部中断8存储空间分配哈佛结构:程序与数据分开独立存储程序存储器(只读)数据存储器(读/写)/EA=0片外/EA=1片内片外片外/PSEN/RD/WR0000FFFFFFFF00FF0FFF4KB=4096B216片内片内9程序存储器0000h-0002H是引导程序的存放单元,上电复位后8051总是从0000H单元开始执行程序0003H-002AH被均匀地分为5段,用作5个中断服务程序的入口。中断使CPU自动跳转到这里,以进入各自相应的中断服务程序。例如:外部中断0的服务程序入口地址=0003h低4Kbytes程序存储器可以使用片内或片外ROM(通过/EA引脚设置)/PSEN信号只用于对外置ROM的存取10片内程序存储器00000003000B0013001B0023002B8BYTE中断服务程序入口地址RESET片内程序存储器:低4KB地址空间0FFF程序空间较长的中断服务程序放在002B以后的程序存储空间,利用跳转指令对其进行访问。如果中断服务程序非常短(8字节以内),则可以将其放在此处11使用外部程序存储器的例子读出地址为0421h单元中字节(87h)8051EPROMP3P2P1P0/EAALELATCHAddr/OE/PSEN高8位地址:04h低8位地址:21h读回数据87hEA:接高电平使用片内程序存储器EA:接低电平使用片外扩展程序存储器P0:兼做数据、地址总线P2:地址总线12片内数据存储器00FF807F高128低128特殊功能寄存器SFRSpecialFunctionRegisters138051使用外部扩展数据存储器8051RAMP3P2P1P0ALELATCHAddr(0~64KB)WR/OERDWR/CE216=64KB译码148051指令系统指令分类指令格式寻址方式151.数据传送指令2.算术运算指令3.逻辑运算指令4.布尔操作(位操作)指令5.控制转移指令8051指令按功能划分为5组16指令格式无操作数的单字节指令:NOP含一个操作地址的单字节指令:CLRC含两个操作地址的单字节指令:MOVA,Rn含一个操作地址的双字节指令:SJMPrel含两个操作地址的三字节指令:LJMPaddr16操作数域1操作数域2操作码17指令的寻址方式1.立即数寻址2.直接寻址3.寄存器寻址4.变址寻址5.寄存器间接寻址6.相对寻址7.位寻址18VHDL硬件描述语言概述基本语法19美国国防部在80年代初提出了VHSIC(VeryHighSpeedIntegratedCircuit)计划VHDL已成为国际的硬件描述语言标准VHDL简介20VHDL的特点适用于复杂的、多层次的设计与硬件独立有丰富的软件支持其设计便于向ASIC过渡可读性好21VHDL数据对象(DataObjects)常量变量信号文件(93版新增)22--eqcomp4isafourbitequalitycomparatorLibraryIEEE;useIEEE.std_logic_1164.all;entityeqcomp4isport(a,b:instd_logic_vector(3downto0);equal:outstd_logic);endeqcomp4;architecturedataflowofeqcomp4isbeginequal=‘1’whena=belse‘0’;Enddataflow;VHDL程序代码的例eqcomp4.vhd包实体构造体文件名和实体名一致每行以;结尾关键字begin关键字end后跟实体名关键字end后跟构造体名库23实体(Entity)描述设计功能的输入输出端口在层次化设计时,端口为模块之间的接口在芯片级,端口代表具体芯片的管脚24Entityeqcomp4isport(a,b:instd_logic_vector(3downto0);equal:outstd_logic);endeqcomp4;A[3..0]B[3..0]equal25结构体(Architecture)描述实体的行为结构体有三种描述方式–行为描述(behavioral)–数据流描述(dataflow)–结构化描述(structural)26结构体--行为描述Architecturebehavioralofeqcomp4isbegincomp:process(a,b)beginifa=bthenequal=‘1’;elseequal=‘0’;endif;endprocesscomp;endbehavioral;高层次的功能描述,不必考虑在电路中到底是怎样实现的。27结构体--数据流描述Architecturedataflow1ofeqcomp4isbeginequal=‘1’whena=belse‘0’;enddataflow1;Architecturedataflow2ofeqcomp4isbeginequal=not(a(0)xorb(0))andnot(a(1)xorb(1))andnot(a(2)xorb(2))andnot(a(3)xorb(3));enddataflow2;描述输入信号经过怎样的变换得到输出信号。当a和b的宽度发生变化时,需要修改设计,当宽度过大时,设计非常繁琐28结构体--结构化描述architecturestructofeqcomp4isbeginU0:xnor2portmap(a(0),b(0),x(0));U1:xnor2portmap(a(1),b(1),x(1));U2:xnor2portmap(a(2),b(2),x(2));U3:xnor2portmap(a(3),b(3),x(3));U4:and4portmap(x(0),x(1),x(2),x(3),equal);endstruct;类似于电路的网络表,将各器件通过语言的形式进行连接,与电路有一一对应的关系。一般用于大规模电路的层次化设计时。29三种描述方式的比较描述方式优点缺点适用场合结构化描述连接关系清晰,电路模块化清晰电路不易理解、繁琐、复杂电路层次化设计数据流描述布尔函数定义明白不易描述复杂电路,修改不易小门数设计行为描述电路特性清楚明了进行综合效率相对较低大型复杂的电路模块设计30VHDL与计算机语言的区别运行的基础–计算机语言是在CPU+RAM构建的平台上运行–VHDL设计的结果是由具体的逻辑、触发器组成的数字电路执行方式–计算机语言基本上以串行的方式执行–VHDL在总体上是以并行方式工作验证方式–计算机语言主要关注于变量值的变化–VHDL要实现严格的时序逻辑关系31FPGA器件FPGA现场可编程门阵列FieldProgrammableGateArray主要生产厂商XilinxAltera32FPGA开发板33开发板主要部件FPGAXilinx®Spartan-IIEXC2S200E-6FT256CSPROMXilinxXC18V02VQ44C50MHzoscillator34器件标识358051的设计与实现设计流程难点分析设计验证36设计流程确定指标架构规划时序规划模块实现设计验证378051设计的主要指标8位CPU128B的片内数据RAM最多4KB的片内程序ROM4个8位双向I/O端口指令集的部分实现38设计难点模块的划分控制器的实现39模块划分原则划分后最底层的逻辑块应适合用逻辑语言进行表达相似的功能应设计成共享的基本模块接口信号尽可能少同层次的模块之间在资源和I/O分配上尽可能平衡40ALU串行控制器RAM定时/计数器控制器串行控制器定时/计数器ROMRAM核心模块顶层模块clkresetall_t0_iall_t1_iall_rxd_iint0_iint1_ip0_ip1_ip2_ip3_iall_rxdwr_oall_txd_oall_rxd_op0_op1_op2_op3_o8051模块示意图41顶层(TOP)模块划分8051核心模块内部RAM模块内部ROM模块外部RAM模块428051核心模块划分ALU模块串行控制器模块定时/计数器模块控制器模块438051顶层内部RAM8051核心内部ROM外部RAM定时/计时器ALU串行控制器控制器加、减法运算乘法运算有限状态机存储控制多路选通8051模块分层结构44各模块占用资源的统计数据模块名称组合逻辑(slice)时序逻辑(触发器)I/O端口bit最高时钟频率MHZ综合时间秒占用率%mc8051_top167114176539.415371mc8051_core99636411435.95642mc8051_alu13785233.385mc8051_control96635115840.15441mc8051_ram881103226155.76237mc8051_rom3981510145控制单元的功能指令译码时序控制存储器控制46以MOVA,direct指令为例:控制信号功能S_data_mux数据暂存器选通S_adr_mux数据地址暂存器选通S_pc_inc_en程序计数器增加使能S_regs_wr_en寄存器写使能S_nextstate下一状态47CLKS_data_muxs_adr_muxs_pc_inc_ens_regs_wr_enRom_dataRam_dataRam_adrFETCHEXEC1EXEC248验证程序MOVP1,00HMOVP2,FFHs1:JNBP2.1,s1s2:JBP2.1,s2:MOVP0,FFHMOVA,P0MOVP1,P0MOVP2,FFHs3:JNBP2.1,s3s4:JBP2.1,s4:MOVP1,P0MOVP2,FFHs5:JNBP2.1,s5s6:JBP2.1,s6MOVP0,FFHADDA,P0MOVP1,ASJMPs1:49加法程序演示操作过程:1.系统复位2.设置被加数09H3.设置加数11H4.得到执行结果1AH50几点体会对电路必须有较好的掌握必须熟练掌握硬件描述语言熟悉开发工具的使用对所设计的系统有透彻的的理解