用CPLD实现单片机读写模块.doc

上传人:土8路 文档编号:10524849 上传时间:2021-05-21 格式:DOC 页数:9 大小:30KB
返回 下载 相关 举报
用CPLD实现单片机读写模块.doc_第1页
第1页 / 共9页
用CPLD实现单片机读写模块.doc_第2页
第2页 / 共9页
用CPLD实现单片机读写模块.doc_第3页
第3页 / 共9页
用CPLD实现单片机读写模块.doc_第4页
第4页 / 共9页
用CPLD实现单片机读写模块.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《用CPLD实现单片机读写模块.doc》由会员分享,可在线阅读,更多相关《用CPLD实现单片机读写模块.doc(9页珍藏版)》请在三一文库上搜索。

1、用CPLD实现单片机读写模块摘要:介绍实现单片机与Xilinx公司XC9500系列可编程逻辑器件的读写逻辑功能模块的接口设计,以及Xilinx公司的XC9500系列可编程逻辑器件的开发流程。 关键词:复杂可编程逻辑电路 微处理器 在系统编程 现场可编程门阵列1 概述 CPLD(复杂可编程逻辑电路)是一种具有丰富的可编程I/O引脚的可编程逻辑器件,具有在系统可编程、使用方便灵活的特点;不但可实现常规的逻辑器件功能,还可实现复杂的时序逻辑功能。把CPLD应用于嵌入式应用系统,同单片机结合起来,更能体现其在系统可编程、使用方便灵活的特点。CPLD同单片机接口,可以作为单片机的一个外设,实现单片机所要

2、求的功能。例如,实现常用的地址译码、锁存器、8255等功能;也可实现加密、解密及扩展串行口等单片机所要求的特殊功能。实现嵌入式应用系统的灵活性,也提高了嵌入式应用系统的性能。CPLD(复杂可编程逻辑电路)是一种具有丰富的可编程I/O引脚的可编程逻辑器件,具有在系统可编程、使用方便灵活的特点;不但可实现常规的逻辑器件功能,还可实现复杂的时序逻辑功能。把CPLD应用于嵌入式应用系统,同单片机结合起来,更能体现其在系统可编程、使用方便灵活的特点。CPLD同单片机接口,可以作为单片机的一个外设,实现单片机所要求的功能。例如,实现常用的地址译码、锁存器、8255等功能;也可实现加密、解密及扩展串行口等单

3、片机所要求的特殊功能。实现了嵌入式应用系统的灵活性,也提高了嵌入式应用系统的性能。2 Xilinx公司的可编程逻辑器件Xilinx公司的XC9500系列可编程逻辑器件是一款高性能、有特点的可编程逻辑器件。它的系统结构如图1所示。从结构上看,它包含三种单元:宏单元、可编程I/O单元和可编程的内部连线。它的主要特点是:高性能。在所有可编程引脚之间pin-pin延时5ns;系统的时钟速度可达到100MHz。容量范围大。Xilinx公司的XC9500系列可编程逻辑器件的容量范围为36288个宏单元;可用系统门为8006400个。5V在系统可编程。可以编程10000次。具有强大的强脚锁定能力。每个宏单元

4、都有可编程低功耗模式。没有用的引脚有编程接地能力。Xilinx的XC9500系列可编程逻辑器件的主要性能如表1所列。3 CPLD同单片机接口设计CPLD同单片机接口原理如图2所示。CPLD同单片机接口设计中,单片机采用Atmel公司的AT89C52,CPLD采用Xilinx公司的XC95216。该CPLD芯片结构及性能见图1和表1。AT89C52通过ALE、CS、RD、WE、P0口(数据地址复用)同XC95216芯片相连接。表1 Xilinx XC9500t系列器件项 目XC9536XC9572XC95108XC95144XC95216XC95288寄存器/个3672108144216288可

5、用门数/个80016002400320048006400宏单元数/个3672108144216288fPD/ns57.57.57.51010tSU/ns3.54.54.54.56.06.0tCO/ns4.04.54.54.56.06.0fCNT/MHz100125125125111.1111.1fSYSTEM/MHz10083.383.383.366.766.7注:fCNT=16位计数器最高工作频率;fSYSTEM=整个系统的最高工作效率。ALE:地址锁存信号。CS:片选信号。RD:读信号。WR:写信号。AD0AD7:数据地址复用信号。本例的设计思想是,在XC95216设置两个控制寄存器,通过

6、单片机对两个控制寄存器的读写来完成对其它过程的控制。XC95216设置的两个控制寄存器,可以作内部寄存器,也可以直接是映射为I/O口。图2 XC9516同单片机接口原理图4 CPLD同单片机接口设置结果本例中,使用Xilinx公司提供的Fundation ISE 4.2i+Modelsim 5.5f软件实现设计。实现设计的源文件模块如下:/*/MCU和XC95216接口程序/目的:MCU读写XC95216/*/module mcurw(MCU_DATA,ALE,CS,RD,WE,CONREG1,CONREG2);inout7:0MCU_DATA;/单片机的地址数据复用信号output7:0CO

7、NREG1,CONREG2;/内部控制寄存器input ALE; /单片机的地址锁存信号input CS; /单片机的片选信号input RD; /单片机的读信号input WE; /单片机的写信号reg7:0LAMCU_DATA; /内部控制寄存器reg7:0ADDRESSREG; /内部地址锁存寄存器reg7:0CONREG1; /内部控制寄存器reg7:0CONREG2; /内部控制寄存器assign MCU_DATA=RD?8bzzzzzzzz:LAMCU_DATA;initial /寄存器初始化beginLAMCU_DATA=0;ADDRESSREG=0;CONREG1=0;CONR

8、EG2=0;endalways(negedge ALE)beginADDRESSREG=MCU_DATA; /地址锁存Endalways(posedge WE)beginif(!CS &ADDRESSREG0= =0)) LAMCU_DATA=CONREG1; /从地址为0的CONREG1寄存器读数据else if(!CS&(ADDRESSREG0= =1)LAMCU_DATA=CONREG2;/从地址为1的CONREG2寄存器读数据else LAMCU_DATA=8bzzzzzzzz;endelseLAMCU_DATA=8bzzzzzzzz;EndEndmodule使用Modelsim 5.

9、5f仿真结果如图3和图4所示。图中ALE、CS、RD、WE、MCU_DATA是测试激励源信号,代表AT89C52接口信号;CONREG1和CONREG2的内部寄存器;ADDRESSREG是内部地址锁存寄存器。图3 CONREG1写过程 图4 CONREG1读过程 图3是CONREG1写过程。首先,在ALE信号的下降沿,锁存MCU_DATA的数据到ADDRESSREG内部地址锁存寄存器。然后,在WE信号的上升沿,把MCU_DATA(0XAA)的数据锁存到寄存器CONREG1。图4是CONREG1读过程。首先,在ALE信号的下降沿,锁存MCU_DATA(0X00)的数据到ADDRESSREG内部地址锁存寄存器。然后,在RD信号的低电平期间,把MCU_DATA(0XAA)的数据锁存到寄存器CONREG1。从图3和图4可以看出,对CONREG1寄存器的读、写过程完全满足进序要求,CONREG2的读写过程同CONREG1一样,也完全满足时序要求,实现了期望的功能。结语本文实现CPLD与单片机接口设计是笔者设计的高速采样设备的一部分,经实际验证完全正确。简单地修改该模块,笔者已成功地将其应用于多个CPLD或FPGA与单片机接口的项目中。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1