电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者电子文章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
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与单片机接口的项目中。

上一页  [1] [2] 

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