1 概述
CPLD(复杂可编程逻辑电路)是一种具有丰富的可编程I/O引脚的可编程逻辑器件,具有在系统可编程、使用方便灵活的特点;不但可实现常规的逻辑器件功能,还可实现复杂的时序逻辑功能。把CPLD应用于嵌入式应用系统,同单片机结合起来,更能体现其在系统可编程、使用方便灵活的特点。CPLD同单片机接口,可以作为单片机的一个外设,实现单片机所要求的功能。例如,实现常用的地址译码、锁存器、8255等功能;也可实现加密、解密及扩展串行口等单片机所要求的特殊功能。实现嵌入式应用系统的灵活性,也提高了嵌入式应用系统的性能。
CPLD(复杂可编程逻辑电路)是一种具有丰富的可编程I/O引脚的可编程逻辑器件,具有在系统可编程、使用方便灵活的特点;不但可实现常规的逻辑器件功能,还可实现复杂的时序逻辑功能。把CPLD应用于嵌入式应用系统,同单片机结合起来,更能体现其在系统可编程、使用方便灵活的特点。CPLD同单片机接口,可以作为单片机的一个外设,实现单片机所要求的功能。例如,实现常用的地址译码、锁存器、8255等功能;也可实现加密、解密及扩展串行口等单片机所要求的特殊功能。实现了嵌入式应用系统的灵活性,也提高了嵌入式应用系统的性能。
2 Xilinx公司的可编程逻辑器件
Xilinx公司的XC9500系列可编程逻辑器件是一款高性能、有特点的可编程逻辑器件。它的系统结构如图1所示。从结构上看,它包含三种单元:宏单元、可编程I/O单元和可编程的内部连线。它的主要特点是:
①高性能。在所有可编程引脚之间pin-pin延时5ns;系统的时钟速度可达到100MHz。
②容量范围大。Xilinx公司的XC9500系列可编程逻辑器件的容量范围为36~288个宏单元;可用系统门为800~6400个。
③5V在系统可编程。可以编程10000次。
④具有强大的强脚锁定能力。
⑤每个宏单元都有可编程低功耗模式。
⑥没有用的引脚有编程接地能力。
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系列器件
项 目 | 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=整个系统的最高工作效率。
ALE:地址锁存信号。
CS:片选信号。
RD:读信号。
WR:写信号。
AD0~AD7:数据地址复用信号。
本例的设计思想是,在XC95216设置两个控制寄存器,通过单片机对两个控制寄存器的读写来完成对其它过程的控制。
XC95216设置的两个控制寄存器,可以作内部寄存器,也可以直接是映射为I/O口。
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; //内部控制寄存器
assign MCU_DATA=RD?8'bzzzzzzzz:LAMCU_DATA;
initial //寄存器初始化
begin
LAMCU_DATA<=0;
ADDRESSREG<=0;
CONREG1<=0;
CONREG2<=0;
end
always@(negedge ALE)
begin
ADDRESSREG<=MCU_DATA; //地址锁存
End
always@(posedge WE)
begin
if(!CS &&ADDRESSREG[0]= =0)) LAMCU_DATA
<=CONREG1; //从地址为0的CONREG1寄存器读数据
else if(!CS&&(ADDRESSREG[0]= =1))LAMCU_DATA<=CONREG2;
//从地址为1的CONREG2寄存器读数据
else LAMCU_DATA<=8'bzzzzzzzz;
end
else
LAMCU_DATA<=8'bzzzzzzzz;
End
Endmodule
使用Modelsim 5.5f仿真结果如图3和图4所示。图中ALE、CS、RD、WE、MCU_DATA是测试激励源信号,代表AT89C52接口信号;CONREG1和CONREG2的内部寄存器;ADDRESSREG是内部地址锁存寄存器。
图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与单片机接口的项目中。
上一篇:SPCE061A在语音识别机器人中的应用
下一篇:串行DataFlash存储器及其与单片机的接口
推荐阅读最新更新时间:2024-03-16 12:49
设计资源 培训 开发板 精华推荐
- CGD和Qorvo将共同革新电机控制解决方案
- 是德科技 FieldFox 手持式分析仪配合 VDI 扩频模块,实现毫米波分析功能
- 贸泽开售可精确测量CO2水平的 英飞凌PASCO2V15 XENSIV PAS CO2 5V传感器
- 玩法进阶,浩亭让您的PCB板端连接达到新高度!
- 长城汽车研发新篇章:固态电池技术引领未来
- 纳芯微提供全场景GaN驱动IC解决方案
- 解读华为固态电池新专利,2030 叫板宁德时代?
- 让纯电/插混车抓狂?中企推全球首款-40℃可放电增混电池,不怕冷
- 智驾域控知多少:中低端车型加速上车,行泊一体方案占主体
- Foresight推出六款先进立体传感器套件 彻底改变工业和汽车3D感知
- ADI直播:MEMS技术与产品解析
- Keysight示波器主题月有奖系列活动之 注册大奖天天抽 抢楼踩中亦有奖
- 国产FPGA有奖直播:安路全新FPSoC产品SF1系列(FPGA+MCU),Demo板介绍和案例解析
- 有奖直播|5G多场景终端应用对连接器的新要求及Molex的5G连接方案
- 了解 MPS 隔离解决方案,答题赢【华为蓝牙无线耳机、小米氮化镓充电器】!
- 安世半导体&世平集团 Nexperia 在5G基础架构的应用 下载赢好礼!
- 【贝能好礼相送】我们拼啦 寻觅Infineon 调光恒流LED驱动器 ICL5102写真
- 【EEWORLD第三十七届】2012年04月社区明星人物揭晓!
- 是德感恩月:有奖征文免费送示波器啦!