1、单片机与FPG瞿辑接口设计单片机与FPGA/CPLD口逻辑设计姓名刘伟学号0903609029班级通信工程单片机与FPGA/CPLD接口逻辑设计一论文摘要:设计一种基于MCS51单片机与FPGA通信的接口逻辑电路,实现单片机与可编程逻辑器件数据与控制信息的可靠通信。使可编程逻辑器件与单片机相结合,优势互补,组成灵活的、软硬件都可现场编程的控制系统。设计采用的是VHDL语言的文本输入方式,设计比较灵活,按照接口的要求设计逻辑电路。接口主要有并行接口和总线接口,总线接口是由波特率发生器、接收器和发送器模块组成,通过各模块的功能设计接口逻辑。利用仿真软件QuartusII进行分析综合、功能仿真与时序仿真,生成分析报告以及内部逻辑电路,并得出仿真结果,验证接口的可行性。关键词:单片机,FPGA,接口逻辑,数据通信二2-1绪论设计思想:FPGA作为一种新型的可编程逻辑器件,可以取代现有的全部微机接口芯片,实现微机系统中的存储器、地址译码等多种功能,具有更高的密度、更快的工作速度和更大的编程灵活性,被广泛的应用于各种电子类产品中。在功能上,单片机具有性价比高、功能灵活、易于人机对话、强大的数据处理
2、能力等特点。但受其内部资源的限制,在很多应用中,单片机需要在片外扩展相关资源,如程序存储器、数据存储器、I/O口以及中断源等;而FPGA具有高速、高可靠性以及开发便捷、规范等优点,使其有机结合,缩短开发周期,适应市场需要。FPGA/CPLD具有高速、高可靠以及开发便捷、规范等优点,在功能上与单片机有很强的互补性。因此两类器件相组合的电路结构将在许多高性能仪器仪表和电子产品中被广泛应用。基于这种需求,本文设计了单片机与FPGA的总线接口逻辑电路,实现了单片机与FPGA数据与控制信息的可靠通信,是FPGA与单片机优势互补,组成灵活的、软硬都可现场编程的控制系统,广泛应用在各个领域2-1-2FPGA技术发展概况国内外发展状况自1985年Xilinx公司推出第一片现场可编程逻辑器件(FPGA)至今,FPGA已经历了十几年的发展历史。在这十几年的发展过程中,以FPGA为代表的数字系统现场集成技术取得了惊人的发展:现场可编程逻辑器件从最初的1200个可利用门,发展到90年代的25万个可利用门,乃至当新世纪来临之即,国际上现场可编程逻辑器件的著名厂商Altera公司、Xilinx公司又陆续推出了数百
3、万门的单片FPGA芯片,将现场可编程器件的集成度提高到一个新的水平。目前,FPGA技术凭借它的独特优势,已经跃之为电子应用(包括通讯技术、计算机应用、自动控制、仪器仪表、ASIC设计)领域广受欢迎的实用化技术,成为数字系统的科研实验、样机试制、小批量产品的即时实现的最佳途径。同时,FPGA器件的新功能、新构思正在不断出现,向更高密度、更大容量、更低功耗和集成更多IP的方向发展,国际各大公司都在积极扩充其IP库,以优化的资源越好来满足用户的需求,不断扩大市场,特别是引人注目的FPGAT动态可重构技术的开拓,将推动数字系统设计的巨大变革目前FPGA/CPLD供货商全部来自美国公司,主要是Xilinx、Altera、Lattice、Actel、Atmel等。其中以Xilinx和Altera的市场占有率最大,是最大的可编程集成电路供货商。国内的FPGA技术发展也非常迅速,很多公司通过和国际上的大公司保持长期的合作,提高专业的技术指导和培训,培养更多的FPGA人才,凭借国内巨大的市场需求、丰富的人力资源,以及稳定的经济发展和优越的政府扶持等众多优势条件,近几年,可编程逻辑器件产业取得了飞速发展,
4、不断研制出性能更好的产品,价格也不断降低,很大程度上降低了设计者的开发成本FPGA技术的应用及发展趋势(1)深亚微米技术的发展正在推动了片上系统(SOPC)的发展。(2)芯片朝着高密度、低压、低功耗的方向挺进。(3)IP库的发展及其作用。(4)速度不断提高,性能不断提升。(5)FPGA动态可重构技术意义深远2-2总线接口逻辑设计方案由于单片机以总线方式与FPGA/CPLD进行数据与控制信息通信有许多优点,因此在设计中,单片机与FPGA/CPLD接口采用总线方式。2-2-1设计原理对MCS51单片机与FPGA/CPLD以总线方式通信的逻辑接口设计,应该详细了解MCS51单片机的总线读/写时序,并根据时序图来设计逻辑结构。MCS51单片机总线读/写的时序如图3所示,其时序电平变化速度与单片机工作时钟频率有关。SIS2S3S4S5S651S2S3341s5156ALEPEN klXWR外地遗馋:许|ro/WRr指令地址ALIAS数据地址A15AS印XRIAAEXAAA*X8oooO-A7Tl0指令A7AO数据A7-A0低*位指令地址低K位数据地址低X位数搦地址图3MCS51单片机总线读/写时
5、序CLK为单片机时钟信号,ALE为地址锁存使能信号。在读/写周期开始后,CPU把低8位地址送到P0口总线上,把高8位地址送到P2口总线上,利用ALE下降沿可将低8位地址锁存于地址锁存器中,而高8位地址信息一直锁存在P2口锁存器中;同时单片机利用读指令允许信号PSEN的低电平从ROM中将指令从P0口读入,其指令读入的时机是在PSEN的上升沿之前。接下来,由P2口和P0口分别输出高8位和低8位数据地址,并由ALE的下降沿将P0口的低8位地址锁存于地址锁存器。然后根据读/写信号的状态读写外部数据,把数据送到P0口总线上;数据读/写的时机是在读/写信号的上升沿之前,将数据读入单片机或写入被寻址的地址单元。当读/写信号变为无效电平后,P0口总线变为悬浮状态,为下次总线读/写做好准备。通过对MCS51单片机总线读/写时序的分析,可以在FPGA/CPLD中设计一个总线接口模块,实现单片机三总线信号的编码。由于在总线应用时,MCS51单片机的P0口是作为地址/数据总线分时复用的,因此应在总线接口模块中设计一个三态缓冲器,实现P0口的三态接口;又因为MCS51单片机在访问外部空间时,它的地址为16位,因
6、此借助地址锁存使能信号ALE在FPGA/CPLD中实现高8位与低8位地址的编码,组合成16位地址,然后再根据MCS51单片机的读/写信号,实现对FPGA/CPLD的读写操作。2-3总线接口设计过程论述通过对MCS51单片机总线读/写时序的分析,设计了图4所示的接口电路。在FPGA/CPLD中,设计了两个模块:一个是总线接口模块,负责单片机与FPGA/CPLD的总线接口逻辑;另一个是寄存器单元及外部接口模块,运用总线接口模块来操作此模块。图4MCS51单片机与FPGA/CPLD总线接口框图图中整个总线接口逻辑模块将MCS51单片机的三总线信号编码成5个信号输出:16位地址信号addr16、读使能信号RD_EN、写使能信号WR_EN、数据输出信号Din及数据输入信号Dout。在总线接口模块中,又分为3个小模块:三态缓冲模块、锁存器模块及编码模块。三态缓冲模块实现与单片机P0口接口;锁存器模块利用ALE信号锁存单片机输出的低8位地址。利用其下降沿将低8位地址锁存于FPGA/CPLD中的地址锁存器(addresslatch)中;当ALE将低8位地址通过P0及三态缓冲器锁存的同时,高8位地址已稳
7、定建立于P2口;通过编码模块将高8位与低8位地址组合成16位地址addr16。同时根据单片机的读/写控制信号编码成RD_EN与WR_EN使能信号。若需从FPGA/CPLD中读出数据,单片机则通过指令“MOVXA,DPTR使RD信号为低电平,使能RD_EN信号,由P0口将图中地址addr16所指单元的数据读入累加器A;但若将累加器A的数据写进FPGA/CPLD中,单片机则需通过指令“MOVXDPTR,A”和写允许信号WR。这时,DPTR中的高8位和低8位数据作为高、低8位地址分别向P2和P0输出,然后经ALE信号下降沿锁存,产生16位地址addr16。再由WR的低电平使能WR_EN信号,将累加器A的数据经P0口及三态缓冲器写入图中16位地址addr16所对应的单元中。实现单片机对FPGA/CPLD的读/写操作。2-4结果分析通过QuartusR软件对总线接口的逻辑设计进行设计,建立相应的波形文件来进行仿真,检测是否可行,并对占有资源、时序分析等相关因素进行分析,反复调试并分析得出的仿真结果,生成逻辑设计的内部电路,证明单片机与FPGA总线接口逻辑可行,由于门电路及逻辑走线造成一定的延时,
8、实践证明都在ns级别,基本上可以忽略,但是因为造成的延时,时序仿真时会出现毛刺,有待进一步研究消除。三结论本文的研究目的主要是针对单片机与FPGA总线接口逻辑设计,运用EDA技术对逻辑设计进行仿真,生成内部逻辑电路图,以实现单片机与FPGA之间的数据和控制信号的通信。设计以Altera公司的Cyclone系列芯片为硬件平台,单片机芯片为核心,利用EDA技术的开发软件QuartusR对总线接口进行逻辑设计,按照接口的相关要求进行优化,生成分析报告,并显示逻辑设计占用FPGA芯片的逻辑单元和引脚数,完成内部逻辑设计,并对延时和存在的问题进行分析,以验证接口是否按要求可行,使得单片机与FPGA数据与控制信息的通信更加可靠、有效。单片机与FPG匐线接口的设计主要是按照单片机的读/写时序设计逻辑电路,利用单片机的接口和控制信号来完成并行数据的传输,并对逻辑设计进行了功能仿真和时序仿真及相关的分析,得出相应的结论,由仿真图显示证明该接口可行,可以用来扩展单片机的外部资源及其功能,结合两者的优势,很大程度地提高了数据处理能力和容量空间。设计中对接口逻辑进行了仿真分析,得出仿真结果以及各自占用FPGA
9、芯片的内部资源,同时生成编程文件及接口逻辑的内部详细电路,以便后期的下载验证。设计的不足之处:没有实现硬件仿真,与实际的延时会有一定的误差,对于信号在FPGA的内部走线和通过逻辑单元时造成的延时,组合逻辑输出时会产生毛刺,可能会导致数据的错误,目前已经有一些消除毛刺的方法,有待进一步研究和改善。四附录其源程序如下FPGA/CPLD内部寄存器地址定义libraryIEEE;useIEEE.STD_LOGIC_1164.all;PACKAGEInterfaceISCONSTANTADDR_REG1:STD_LOGIC_VECTOR(15DOWNTO0):=XFFF1;CONSTANTADDR_REG2:STD_LOGIC_VECTOR(15DOWNTO0):=XFFF2;CONSTANTADDR_REG3:STD_LOGIC_VECTOR(15DOWNTO0):=XFFF3;CONSTANTADDR_REG4:STD_LOGIC_VECTOR(15DOWNTO0):=XFFF4;ENDInterface;-FPGA/CPLD-读/写操作libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_arith.all;useIEEE.std_logic_unsigned.all;usework.Interface.all;entityMCS51_FPGAisport(P0:inoutSTD_LOGIC_VECTOR(7downto0);P2:inSTD_LOGIC_VECTOR(7downto0);ALE:inSTD_LOGIC;WR:inSTD_LOGIC;RD:inSTD_LOGIC;LED:outSTD_LOGIC_VECTOR(2downto0);endMCS51_FPGA;Archit
《单片机与FPGA逻辑接口设计》由会员夏**分享,可在线阅读,更多相关《单片机与FPGA逻辑接口设计》请在金锄头文库上搜索。