基于CH365的PIC通信卡的设计

时间:2007-04-29

基于CH365的PIC通信卡的设计

徐文祥,罗正全


PCI是先进的高性能局部总线,可同时支持多组外围设备。PCI局部总线不受制于处理器,为中央处理器及高速外围设备提供数据传输通道,进行总线之间数据传输的调度管理,PCI采用高度综合化的局部总线结构,以确保计算机中各部件、附加卡及系统之间的可靠运行。基于现在市场上PCI芯片有PLX公司及AMCC公司的器件,他们在硬件设计周期以及驱动程序开发上对于初学者来讲都存在一定困难。CH365是一个连接PCI总线的通用接口芯片,支持I/O端口映射、存储器映射、扩展ROM以及中断。CH365将32位高速PCI总线转换为简便易用的类似于ISA总线的8位主动并行接口,用于制作低成本的基 于PCI总线的计算机板卡、以及将原先基于ISA总线的板卡升级到PCI总线上。另外CH365不论在设计难度、开发周期、ISA移植,还是在价格上都有其自身优越性,所以CH365应用非常广泛,例如适用于高速实时的I/O控制卡、通讯接口卡、数据采集卡、电子盘、扩展ROM卡等。

1 CH365的特点

(1)可以设定PCI板卡的设备标识(Vendor ID,Device ID,Class Code等)。

(2)支持以字节、字或双字为单位对I/O端口或者存储器进行读写。

(3)自动分配I/O基址,支持长达240B的I/O端口。

(4)支持本地硬件定址功能,自由选择I/O地址,在指定地址实现I/O端口。

(5)直接升级ISA的I/O板卡到PCI总线,完全不需要修改原ISA卡的相关软件。

(6)直接映射支持容量为32kB的存储器SRAM或者扩展ROM(Boot ROM)。

(7)无需外接元器件扩容支持容量为64kB以及128kB的存储器或者扩展ROM。

(8)支持扩展ROM无硬盘引导,支持闪存Flash Memory在线升级。

(9)可以提供扩展ROM应用的子程序库BRM,用于BIOS环境下用户界面显示及数据处理。

(10)支持低电平有效的本地中断请求,支持中断共享。

(11)提供两线串行主机接口,可以挂接类似24C0X的两线串口E2PROM器件。

(12)内置4μs-1ms的硬件计时单元,用于软件运行过程中作为延时参考。

(13)芯片本身无需驱动程序即可工作,升级ISA板卡可以不需要驱动程序。

2 空间映射

PC机中包括3种空间:存储器空间、I/O空间、配置空间。存储器空间主要包括内存、显存、扩展ROM、设备缓冲区等,一般用于存放大量数据和进行数据块交换。I/O空间主要包括设备的控制寄存器和状态寄存器,一般用于控制和查询设备的工作状态以及少量数据的交换。配置空间主要用于向系统提供设备自身的基本信息,并接受系统对设备全局状态的控制和查询。为了避免地址冲突,PCI总线要求各个设备所占用的地址能够重定位。重定位是由设备的配置空间的基址寄存器实现的,通常情况下,各个设备的基址寄存器总是被BIOS或者操作系统分配为不同的基址,从而将各个设备分别映射到不同的地址范围。在需要时,应用程序也可以自行修改基址。CH365的存储器空间占用32kB,偏移地址是0000H-7FFFH,可以全部提供给外部设备使用,实际地址是存储器基址加上偏移地址。CH365的I/O空间占用256kB,去掉CH365自用寄存器,还可以提供240B给外部设备使用,偏移地址是00H-EFH,实际地址是I/O基址加上偏移地址。

3 本地端信号线引脚

本地端信号线引脚如表1所示。

4 基于CH365的PCI通信卡原理框图

基于CH365的PCI通信卡由PCI接口部分、CH365接口芯片、译码电路、本地总线4部分构成,如图1所示。

4.1 译码电路产生

在设计中采用传统74LS138产生本地8位总线地址,使用CH365地址A0,A1,A2以及读写控制信号参加译码。74LS138将地址译码输出2路读控制和2路写控制,经过74LS245或74LS574来控制输入和输出,如图2所示。

4.2 PCI卡制作及PCB图设计注意事项

PCI总线工作在高频环境中,传送线在信号线上驱动电压变化时会出现阻抗,信号线的宽度和到接地的距离都会影响其阻抗,所以在设计PCB时需要参考PCI总线规范,特别要注意考虑信号阻抗匹配,具体有以下几点作为参考:

(1)在32位PCI总线中,除了信号线外,还有2个卡存在信号:PRSNT1#和PRSNT2#。PCI板卡设计者在卡存在信号上对卡的电源需求进行编码,当卡被插在PCI插槽中时,他将其中至少一个或所有两个卡存在信号接地。

(2)对于32位PCI总线的所有信号,其电路长度限定在1.5in(约38mm)以内。建议在设计PCB时,PCI信号线的长度都小于25mm,尽量走弧线或者45°线,避免走直角或者锐角走线,并且尽量将走线布在元件面,而PCB背面保留大面积的接地覆铜,以降低传送线的阻抗。

(3)PCI总线的CLK信号线的长度要求是2.5in(约83mm)左右,并且只能与卡上一个负载连接。建议CLK信号线的长度尽量保持在50-85mm之间,并且不宜靠近其他信号线,为减少周边信号线的干扰,在CLK两侧及PCB背面布置接地线或者覆铜。

(4)CH365有3对电源引脚,至少需要3个电源退耦电容。

(5)与PCI插槽连接的电源线引脚可以自由选择,但数量不宜少于4对。当板卡的电源消耗较大时,可以多增加几对电源线,通过多点接触提供稳定的大电流。

4.3 硬件中断功能介绍

CH365芯片具有软件和硬件中断功能,与中断功能有关的2个引脚分别是PCI_INTA和SYS_EX。如果CH365的数据线D3连接了下拉电阻,则工作模式设定为启用中断功能,SYS_EX引脚自动复用为INT_REQ,作为本地中断请求输入引脚,低电平有效,外部电路需要请求计算机中断时只要向该引脚提供低电平脉冲。PCI_INTA总是作为PCI中断三态输出引脚,不用中断功能时可以悬空不接,需要中断功能时可以与PCI总线的INTA相连接,低电平有效,中断激活时输出低电平,中断未激活时输出高阻。

5 应用程序介绍

(1)接收数据子程序

CH365OpenDevice(true,true);

mPCH365_IO_REG mIoBase;

CH365GetIoBaseAddr(&mIoBase);

//CH365WriteIoByte(&mIoBase->mCH365IoPort

[0x0FA],71);//* * * * * * * * * *

UCHAR data1;

CH365ReadIoByte(&mIoBase->mCh365IoPort[m_PortNumR],&data1);m_DataR=data1;

(2)发送数据子程序

CH365OpenDevice(true,true);

mPCH365_IO_REG mIoBase;

CH365GetIoBaseAddr(&mIoBase);

CH365WriteIoByte(&mIoBase->mCh365IoPort[m_PortNumW],m_DataW);

本文采用南京沁恒公司提供的PCI接口芯片CH365实现了PCI通信卡的设计,在使用中测的实际传输率为10MB/s左右,工作稳定可靠,完全可以满足一般数据量传输不是非常快的场合。



  

参考文献:

[1]. PCI datasheet https://www.dzsc.com/datasheet/PCI_1201469.html.
[2]. ROM datasheet https://www.dzsc.com/datasheet/ROM_1188413.html.
[3]. 74LS138 datasheet https://www.dzsc.com/datasheet/74LS138_1054480.html.
[4]. 74LS245 datasheet https://www.dzsc.com/datasheet/74LS245_1054125.html.
[5]. 74LS574 datasheet https://www.dzsc.com/datasheet/74LS574_590912.html.
[6]. PCB datasheet https://www.dzsc.com/datasheet/PCB_1201640.html.


上一篇:自动调整漂移的磁通计
下一篇:4字控制键盘电路

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料