电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者电子文章FPGA用CPLD实现单片机读写模块

用CPLD实现单片机读写模块

11-20 16:13:57 | http://www.5idzw.com | FPGA | 人气:911
标签:fpga是什么,fpga教程,fpga培训,http://www.5idzw.com 用CPLD实现单片机读写模块,http://www.5idzw.com

摘要:介绍实现单片机与Xilinx公司XC9500系列可编程逻辑器件的读写逻辑功能模块的接口设计,以及Xilinx公司的XC9500系列可编程逻辑器件的开发流程。

关键词:复杂可编程逻辑电路 微处理器 在系统编程 现场可编程门阵列

1 概述

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

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

2 Xilinx公司的可编程逻辑器件

Xilinx公司的XC9500系列可编程逻辑器件是一款高性能、有特点的可编程逻辑器件。它的系统结构如图1所示。从结构上看,它包含三种单元:宏单元、可编程I/O单元和可编程的内部连线。它的主要特点是:

①在所有可编程引脚之间pin-pin延时最短可为5ns;系统的时钟速度可达到100MHz。

②XC9500系列的容量范围为36~288个宏单元

③5V在系统可编程。可以编程10000次。

④具有强大的强脚锁定能力。

⑤每个宏单元都有可编程低功耗模式。

⑥没有用的引脚有编程接地能力。

Xilinx的XC9500系列可编程逻辑器件的主要性能如表1所列。

表1 Xilinx XC9500系列器件

项  目 XC9536 XC9572 XC95108 XC95144 XC95216 XC95288
寄存器/个 36 72 108 144 216 288
可用门数/个 800 1600 2400 3200 4800 6400
宏单元数/个 36 72 108 144 216 288
fPD/ns 5 7.5 7.5 7.5 10 10
tSU/ns 3.5 4.5 4.5 4.5 6.0 6.0
tCO/ns 4.0 4.5 4.5 4.5 6.0 6.0
fCNT/MHz 100 125 125 125 111.1 111.1
fSYSTEM/MHz 100 83.3 83.3 83.3 66.7 66.7

注:fCNT=16位计数器最高工作频率;fSYSTEM=整个系统的最高工作效率。

 

3 CPLD同单片机接口设计

CPLD同单片机接口原理如图2所示。

CPLD同单片机接口设计中,单片机采用Atmel公司的AT89C52,CPLD采用Xilinx公司的XC95216。该CPLD芯片结构及性能见图1和表1。AT89C52通过ALE、CS、RD、WE、P0口(数据地址复用)同XC95216芯片相连接。

 

ALE:地址锁存信号。

CS:片选信号。

RD:读信号。 WR:写信号。

AD0~AD7:数据地址复用信号。

本例的设计思想是,在XC95216设置两个控制寄存器,通过单片机对两个控制寄存器的读写来完成对其它过程的控制。

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);

inout[7:0]MCU_DATA;//单片机的地址数据复用信号

output[7:0]CONREG1,CONREG2;//内部控制寄存器

input ALE; //单片机的地址锁存信号

input CS; //单片机的片选信号

input RD; //单片机的读信号

input WE; //单片机的写信号

reg[7:0]LAMCU_DATA; //内部控制寄存器

reg[7:0]ADDRESSREG; //内部地址锁存寄存器

reg[7:0]CONREG1; //内部控制寄存器

reg[7:0]CONREG2; //内部控制寄存器

[1] [2]  下一页

,用CPLD实现单片机读写模块
关于《用CPLD实现单片机读写模块》的更多文章