基于CPLD的单片机PCI接口设计摘要:详细阐述一种利用CPLD实现的8位单片机与PCI设备间的通信接口方案,给出用ABELHDL编写的主要源程序
该方案在实践中检验通过
关键词:单片机CPLDPCI8位单片机在嵌入式系统中应用广泛,然而让它直接与PCI总线设备打交道却有其固有缺陷
8位单片机只有16位地址线,8位数据端口,而PCI总线2
0规范中,除了有32位地址数据复用AD[3~0]外,还有FRAME、IRDY、TRDY等重要的信号线
让单片机有限的I/O端口来直接控制如此众多的信号线是不可能的
一种可行的方案就是利用CPLD作为沟通单片机与PCI设备间的桥梁,充分利用CPLD中I/O资源丰富,用户可自定制逻辑的优势,来帮助单片机完成与PCI设备间的通信任务
1PCI接口设计原理1
1PCI总线协议简介这里只讨论PCI总线2
0协议,其它协议仅仅是在2
0的基础上作了一些扩展,仅就单片机与PCI设备间的通信来说,意义不大
PCI总线是高性能局部总线,工作频率0~33MHz,可同时支持多组外围设备
在这里,我们只关心单片机与一个PCI设备间通信的情况,而且是以单片机与CPLD一方作为主控方,另一方作为PCI从设备
这样做的目的是为了简化问题,降低系统造价
PCI总线上信号线虽多,但并不是每个信号都要用到
实际上PCI设备也并不会支持所有的信号线,比如错误报告信号PERR与SERR在网卡中就不支持
我们可以针对具体的应用选择支持其中部分信号线,还有一些信号线可以直接连电源或接地
下面简单介绍一下常用信号线的功能
AD[31~0]:地址数据多路复用信号
在FRAME有效的第一个周期为地址,在IRDY与TRDY同时有效的时候为数据
C/BE[3~0]:总线命令与字节使能控制信号
在地址其中传输的是总线命令;在数据期内是字节使能控制信号,表示AD[31~0]中那些字节是有效数据