用CPLD实现单片机读写模块
[11-20 16:13:57] 来源:http://www.88dzw.com FPGA 阅读:8911次
文章摘要:注: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设置两个控制寄存器,通过单片机对两个控制寄存器的读写来完成对其它过
用CPLD实现单片机读写模块,标签:fpga是什么,fpga教程,http://www.88dzw.com注: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; //内部控制寄存器
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写过程 图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与单片机接口的项目中。
《用CPLD实现单片机读写模块》相关文章
- › 用CPLD实现单片机与ISA总线并行通信
- › 用CPLD实现DSP与PLX9054之间的连接
- › 用CPLD实现单片机读写模块
- 在百度中搜索相关文章:用CPLD实现单片机读写模块
- 在谷歌中搜索相关文章:用CPLD实现单片机读写模块
- 在soso中搜索相关文章:用CPLD实现单片机读写模块
- 在搜狗中搜索相关文章:用CPLD实现单片机读写模块