版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 邮局订阅号:82-946360元/年技术创新单片机开发与应用PLC 技术应用200例您的论文得到两院院士关注单片机与FPGA/CPLD 总线接口逻辑设计Logic Design for Bus Interface of MCS-51Microprocessor and FPGA/CPLD(1.西华大学;2.中国科学院光电技术研究所游志宇1董秀成1杜杨2张洪1YOU Zhi-yu DONG Xiu-cheng DU Yang ZHANG Hong摘要:设计一种基于MCS-51单片机与FPGA/CPLD 的总线接口逻辑,实现单片机与可编程逻辑器件数据与控制信息的可靠通信,使可编程逻辑器件与单片机
2、相结合,优势互补,组成灵活的、软硬件都可现场编程的控制系统。在设计中采用VHDL 语言,实现MCS-51单片机与FPGA/CPLD 的总线接口逻辑设计。试验表明,该总线接口逻辑工作稳定、可靠,使MCS-51单片机与FPGA/CPLD 能够完美结合。关键词:单片机;可编程逻辑器件;FPGA/CPLD;总线;接口;VHDL 中图分类号:TP368.1文献标识码:AAbstract:Design a type of Bus Interface logic based on MCS-51microprocessor and FPGA/CPLD ,to realize the reliable comm
3、unication between the microprocessor and the PLD ,and to combine the PLD and microprocessor,with the purpose of forming a controlling system in which software and hardware can be both programmed with fieldwork.In this way,they can make up each other's advantages.VHDL lan -guage is applied in thi
4、s design,to realize the Bus Interface logic design of MCS-51microprocessor and FPGA/CPLD.The experiments proved that this interface works stably and reliably,and can enable the MCS-51microprocessor and FPGA/CPLD to combine perfectly.Key words:Microprocessor;PLD;FPGA/CPLD;Bus;Interface;VHDL文章编号:1008-
5、0570(200810-2-0121-031引言长期以来,单片机以其性能价格比高、体积小、功能灵活、可靠性高,且易于人机对话和良好的数据处理能力等方面所具有的独特优点,被广泛的应用在各领域。但受其内部资源的限制,在很多应用中,单片机需要在片外扩展相关资源,如程序存储器,数据存储器,IO 口以及中断源等。随着可编程逻辑器件(PLD及EDA 技术的发展,在系统设计中经常会用到FPGA/CPLD 来扩展单片机的相关资源,使其有机结合,缩短开发周期,适应市场需要。FPGA/CPLD 具有高速、高可靠以及开发便捷、规范等优点,在功能上与单片机有很强的互补性。以此两类器件相结合的电路结构在许多高性能仪器仪
6、表和电子产品中被广泛应用。基于这种需求,我们设计了MCS-51单片机与FPGA/CPLD 的总线接口逻辑,实现单片机与FPGA/CPLD 数据与控制信息的可靠通信,使FPGA/CPLD 与单片机优势互补,组成灵活的、软硬件都可现场编程的控制系统。2单片机与FPGA/CPLD 的接口方式单片机与FPGA/CPLD 的接口方式一般有两种,即总线方式与独立方式。2.1总线方式MCS-51单片机具有很强的外部总线扩展能力,利用片外三总线结构,即数据总线、地址总线、控制总线很容易实现单片机与FPGA/CPLD 的总线接口。其基本原理框图如图1所示。单片机与FPGA/CPLD 以总线方式通信,重要的是要详
7、细了解单片机的总线读写时序,根据时序图来设计逻辑结构,其通信的时序必需遵循单片机内固定的总线方式读/写时序。FPGA/CPLD 的逻辑设计也相对比较复杂,在程序设计上必须与接口的单片机程序相结合,严格安排单片机能访问的IO 空间。但是,单片机以总线方式与FPGA/CPLD 进行数据与控制信息通信也有许多优点:(1速度快。其通信工作时序是纯硬件行为,对于MCS-51单片机,只需一条单字节指令就能完成所需的读/写时序,如:MOV DPTR,A ;MOV A,DPTR ;(2节省PLD 芯片的I/O 口线。仅通过19根IO 口线,就能在FPGA/CPLD 与单片机之间进行各种类型的数据与控制信息交换
8、。(3相对于非总线方式,单片机编程简捷,控制可靠。(4在CPLD/FPGA 中通过逻辑切换,使单片机易于与SRAM 或ROM 接口。这种方式有许多实用之处,如利用类似于微处理器系统的DMA 的工作方式,首先由FPGA/CPLD 与接口的高速器件进行高速数据采样,并将数据暂存于SRAM 中,采样结束后,通过切换,使单片机与SRAM 以总线方式进行数据通信,以便发挥单片机强大的数据处理能力。图1总线方式原理框图图2独立方式原理框图2.2独立方式与总线接口方式不同,几乎所有单片机都能以独立接口方式与FPGA/CPLD 进行通信,其通信的时序方式可由所设计的游志宇:硕士研究生121-技术创新中文核心期
9、刊微计算机信息(嵌入式与SOC 2008年第24卷第10-2期 360元/年邮局订阅号:82-946现场总线技术应用200例单片机开发与应用软件自由决定,形式灵活多样。其最大的优点是FPGA/CPLD 中的接口逻辑无需遵循单片机内固定总线方式的读/写时序。FPGA/CPLD 的逻辑设计与接口的单片机程序设计可以分先后相对独立地完成。事实上,目前许多流行的单片机已无总线工作方式,采用独立方式可以很好的使它们与FPGA/CPLD 结合。独立方式的接口设计方法比较简单,其基本原理框图如图2所示。直接将单片机的IO 端口线与FPGA/CPLD 的IO 相连即可。3总线接口逻辑设计由于单片机以总线方式与
10、FPGA/CPLD 进行数据与控制信息通信有许多优点,因此在设计中单片机与FPGA/CPLD 接口采用总线方式。3.1接口设计思想对MCS-51单片机与FPGA/CPLD 以总线方式通信的逻辑接口设计,应该详细了解MCS-51单片机的总线读/写时序,并根据时序图来设计逻辑结构。MCS-51单片机总线读/写的时序图如图3所示,其时序电平变化速度与单片机工作时钟频率有关。图中CLK 为单片机时钟信号;ALE 为地址锁存使能信号,在读写周期开始后,CPU 把低8位地址送到P0口总线上,把高8位地址送到P2口总线上,可利用ALE 下降沿将低8位地址锁存于地址锁存器中,而高8位地址信息一直锁存在P2口锁
11、存器中;同时单片机利用读指令允许信号PSEN 的低电平从ROM 中将指令从P0口读入,由时序图可见,其指令读入的时机是在PSEN 的上升沿之前。接下来,由P2口和P0口分别输出高8位和低8位数据地址,并由ALE 的下降沿将P0口的低8位地址锁存于地址锁存器。然后根据读/写信号的状态读写外部数据,把数据送到P0口总线上;从图中可以看到,数据读写的时机是在读/写信号的上升沿之前,将数据读入单片机或写入被寻址的地址单元。当读/写信号变为无效电平后,P0口总线变为悬浮状态,为下次总线读/写做好准备。图3MCS-51单片机总线读/写时序图4MCS-51单片机与FPGA/CPLD 总线接口框图通过对MCS
12、-51单片机总线读/写时序的分析,我们可以在FPGA/CPLD 中设计一个总线接口模块,实现单片机三总线信号的编码。由于在总线应用时,MCS-51单片机的P0口是作为地址/数据总线分时复用的,因此应在总线接口模块中设计一个三态缓冲器,实现P0口的三态接口;又因为MCS-51单片机在访问外部空间时,它的地址为16位的,因此我们借助地址锁存使能信号ALE 在FPGA/CPLD 中实现高8位与低8位地址的编码,组合成16位地址,然后在根据MCS-51单片机的读写信号,实现对FPGA/CPLD 的读写操作。3.2总线接口设计通过对MCS-51单片机总线读/写时序的分析,在此设计一个如图4所示的接口电路
13、,详细介绍MCS-51单片机与FPGA/CPLD 总线接口逻辑设计。在FPGA/CPLD 中,我们设计两个模块:一个总线接口模块,负责单片机与FPGA/CPLD 的总线接口逻辑。另一个寄存器单元及外部接口模块,运用总线接口模块来操作此模块。图中整个总线接口逻辑模块将MCS-51单片机的三总线信号编码成五个信号输出:16位地址信号addr16,读使能信号RD_EN ,写使能信号WR_EN ,数据输出信号Din 及数据输入信号Dout 。在总线接口模块中,又分为三个小模块:三态缓冲模块、锁存器模块及编码模块。三态缓冲模块实现与单片机P0口接口;锁存器模块利用ALE 信号锁存单片机输出的低8位地址。
14、利用其下降沿将低8位地址锁存于FPGA/CPLD 中的地址锁存器(Latch Address 中;当ALE 将低8位地址通过P0及三态缓冲器锁存的同时,高8位地址已稳定建立于P2口;通过编码模块将高8位与低8位地址组合成16位地址addr16。同时根据单片机的读/写控制信号编码成RD_EN 与WR_EN 使能信号。若需从FPGA/CPLD 中读出数据,单片机则通过指令"MOVX A ,DPTR"使RD 信号为低电平,使能RD_EN 信号,由P0口将图中地址addr16所指单元的数据读入累加器A ;但若欲将累加器A 的数据写进FPGA/CPLD 中,单片机则需通过指令&quo
15、t;MOVX DPTR ,A"和写允许信号WR 。这时,DPTR 中的高8位和低8位数据作为高、低8位地址分别向P2和P0口输出,然后经ALE 信号下降沿锁存,产生16位地址addr16。在由WR的低电平使能WR_EN 信号,将累加器A 的数据经P0口及三态缓冲器写入图中16位地址addr16所对应的单元中。实现单片机对FPGA/CPLD 的读写操着。3.3接口VHDL 实现及仿真在该总线接口设计中,我们采用VHDL 语言实现其接口逻辑。用VHDL 编写接口程序,往往会带来很多方便,但在编写时却要注意读完数据时,要把数据总线释放掉以免造成总线冲突。其源程序如下所示;该接口逻辑的仿真如
16、图5所示,图5(a为总线接口写仿真,图5(b为总线接口读仿真。library IEEE;use IEEE.STD_LOGIC_1164.all;PACKAGE Interface IS -FPGA/CPLD 内部寄存器地址定义CONSTANT ADDR_REG1:STD_LOGIC_VECTOR (15DOWNTO 0:=X"FFF1"CONSTANT ADDR_REG2:STD_LOGIC_VECTOR(15DOWNTO 0:=X"FFF2"CONSTANT ADDR_REG3:STD_LOGIC_VECTOR (15DOWNTO 0:=X"
17、FFF3"CONSTANT ADDR_REG4:STD_LOGIC_VECTOR(15DOWNTO 0:=X"FFF4"END Interface;122- 邮局订阅号:82-946360元/年技术创新单片机开发与应用PLC 技术应用200例您的论文得到两院院士关注library IEEE;use IEEE.std_logic_1164.all;use work.Interface.all;entity MCS51_FPGA is -FPGA/CPLD 读写操作port (P0:inout STD_LOGIC_VECTOR (7downto 0;P2:in STD
18、_LOGIC_VECTOR (7downto 0;ALE :in STD_LOGIC;WR,RD :in STD_LOGIC;LED :out STD_LOGIC_VECTOR (2downto 0;end MCS51_FPGA;Architecture C51_FPGA_BUS OF MCS51_FPGA IS signal C51_Addr16:STD_LOGIC_VECTOR(15downto 0;-16bit addresssignal Data :STD_LOGIC_VECTOR (31downto 0;-internal Registersignal WR_EN,RD_EN :ST
19、D_LOGIC;-WR/RDEnableBeginAddress_p:process(ALE-Address Latchbeginif ALE'event and ALE='0'and ALE'LAST_VALUE='1'thenC51_Addr16<=P2&P0;end if;end process;WR_EN<=(WR AND RDOR WR;-WR Enable RD_EN<=(WR AND RDOR RD;-RD Enable -Read FPGA internal Register-P0<=Data (7
20、downto 0when C51_Addr16=ADDR_REG1and RD_EN ='0'ELSEData (15downto 8when C51_Addr16=ADDR_REG2and RD_EN ='0'ELSEData (23downto 16when C51_Addr16=ADDR_REG3and RD_EN ='0'ELSEData (31downto 24when C51_Addr16=ADDR_REG4and RD_EN ='0'ELSE"ZZZZZZZZ"-在未读时释放总线,实现总线的三态C
21、51_Write_FPGA:process(WR_EN-Write FPGA interal RegisterbeginIF WR'EVENT and WR'LAST_VALUE ='1'and WR_EN ='0'THENCASE C51_Addr16ISwhen ADDR_REG1=>Data(7downto 0<=P0;when ADDR_REG2=>Data(15downto 8<=P0;when ADDR_REG3=>Data(23downto 16<=P0;when ADDR_REG4=>Da
22、ta(31downto 24<=P0;when OTHERS=>NULL;END CASE;END IF;END process;LED<=Data(2downto 0;-LED control END C51_FPGA_BUS;图5(a总线接口写仿真图5(b总线接口读仿真4结束语本文实现单片机与FPGA/CPLD 的总线接口逻辑设计,是设计的高速采样设备的一部分。经仿真验证以及实际应用证实,该接口原理应用完全正确、可行。在我们设计的多个系统中,也已经成功地进行了应用。该电路由于接口简单容易控制,因此,在涉及到FPGA 与单片机系统的接口电路中,可以灵活地进行应用。本文作者创新点:在于用VHDL 语言实现了MCS-51单片机与FPGA/CPLD 的总线接口通用逻辑设计,并通过仿真进行了验证。参考文献1张毅刚,彭喜元,董继成.单
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办公楼茶水间防滑合同(企业福利2025)
- XB企业应收账款管理存在的问题与对策
- 建筑防水概述
- 2025年物业设备设施试卷及答案
- 2025年德阳统考英语真题及答案
- 2025年大庆初中考试题目及答案
- 外墙保温补修合同范本
- 内江中考政治试卷及答案
- 陕西省榆林市七校联考2024-2025学年高二上学期11月期中考试化学试题+答案
- 中铁入职合同范本
- 谷物烘干机结构设计
- 钢轨探伤工劳动安全培训课件
- 新疆交通投资责任有限公司 笔试内容
- 检修安全培训内容课件
- 公路养护培训课件
- 2025年6月浙江省高考化学试卷真题(含答案及解析)
- 天车安全培训教学课件
- 2025年丹栀逍遥丸行业研究报告及未来行业发展趋势预测
- 医院清洁消毒培训
- 安全事故三要素培训总结课件
- 储能项目并网消防专篇
评论
0/150
提交评论