CH365ISA
- 格式:pdf
- 大小:235.77 KB
- 文档页数:12
CH365升级ISA板卡与设计PCI板卡 1
PCI芯片CH365升级ISA板卡与设计PCI板卡
(本地硬件定址升级ISA板卡)
版本: 2 http://wch.cn
1、概述
本文将介绍ISA板卡向PCI板卡的升级、PCI板卡与ISA板卡软件设计的差别,另外还提供了一
些常用的现成电路图,供设计PCI板卡时参考。
2、升级ISA板卡
新的PC规范都去掉了ISA总线,很多以前设计的ISA板卡在新主板上无法使用,为了减少将ISA
板卡移植到PCI总线的工作量,CH365提供了本地硬件定址功能。具体的功能介绍在CH365手册中有详细说明,这里辅以原理图进行实例分析。
实例是一个I/O端口控制卡,通过8255与外部设备交换数据。板卡I/O端口的地址由译码器U3和U6进行级联译码,地址范围为250H-25FH,由于8255只占用4个I/O地址,所以实际程序中只会
使用250H-253H地址读写8255。中断请求INT是高电平有效,该信号通常由单片机等器件根据需要
进行驱动,一般电路中不一定需要中断。
2.1. 原ISA板卡的原理图
CH365升级ISA板卡与设计PCI板卡 2
2.2. 新PCI板卡的原理图(升级后)
2.3. 升级说明
为了方便板卡制造商的小批量加工,CH365尽量减少芯片的引脚,从而保持较大的引脚间距。同
时为了支持较多的功能,CH365对某些引脚进行了复用,并通过工作模式设定来选择复用引脚的实际功能。
PCI板卡中,电阻R1用于工作模式设定,将CH365的数据线D4默认置为低电平,所以CH365的MEM_WR引脚被用于本地硬件定址请求输入IOP_HIT。如果希望升级ISA板卡,但是又不希望修改任何
应用程序,那么必须使用电阻R1。本地硬件定址主要用于在不修改应用程序的前提下升级ISA卡。 译码器U2将CH365提供的地址进行译码,按图中连接的I/O地址是250H-25FH。当计算机存取
I/O端口地址250H-25FH时,译码电路输出有效,本地硬件定址输入-HIT出现低电平,所以CH365执
行I/O操作,输出低电平有效的-IOR或-IOW信号。由于CH365要求译码速度快于20nS,所以U2选用比74LS138速度快的74ALS138或者74AHC138,或者采用一个可编程器件,例如16V8等,译码速
度最好小于20nS。 在ISA板卡中,U7(8255)的-CS是由译码电路驱动的;在PCI板卡中,由于CH365的-IOR和
-IOW只在计算机存取指定的I/O端口地址(250H-25FH)时才有效,相当于已经经过初步的地址译码,
所以U4(82C55,不能用第一代8255,速度太慢)的-CS可以接地,保持一直有效,或者将剩余地址线A2-A0译码后再进一步产生-CS信号。 CH365升级ISA板卡与设计PCI板卡 3
PCI总线的复位信号是低电平有效,所以通过反相器U8向U4提供与ISA总线相同的高电平有效的复位信号。
CH365支持中断,具体请参考CH365的手册。由于PCI中断与ISA中断差别较大,如果PCI板卡中需要使用中断功能,那么必须修改应用程序,所以一般不会同时使用本地定址功能。在CH365的数
据线D3上连接一个下拉电阻R2用于工作模式设定,可以使CH365的SYS_EXT引脚用于中断请求输入INT_REQ,中断请求是低电平有效。原ISA中断请求经过反相器U9后作为CH365的中断请求-INT,但
中断的具体工作方式有区别;当需要中断功能时,应该将CH365芯片的第11脚(PCI_STOP或INTA)
连接到PCI总线的第119脚(INTA),图中以虚线表示此线根据需要连接。当不接该下拉电阻R2时(默认情况),CH365不提供中断功能,SYS_EX引脚为可以直接控制的输出信号线。
如果不需要中断功能(没有下拉电阻R2),则上述PCI板卡具有与原ISA板卡相同的功能。一般情况下,原ISA板卡的应用程序可以不加修改,直接用于移植后的PCI板卡。
如果原ISA板卡工作时不需要驱动程序,那么新PCI板卡也不需要驱动程序。如果在WINDOWS
中提供找到新硬件,可以不必安装驱动程序,或者安装一个假的驱动程序(提供一个不指定驱动程序的INF文件)。如果是新开发的PCI板卡或者原ISA板卡就需要驱动程序,那么可以参考CH365提供
的通用驱动程序和动态链接库,在应用层或者驱动层实现所需要的功能。 PCI总线的I/O端口地址一般是自动分配的,设备之间不会冲突;当采用本地硬件定址功能时,
应该选用空闲I/O端口地址,防止与其它设备冲突。 如果不采用本地硬件定址功能,则原ISA板卡的应用程序应该作少量修改,包括:获取计算机
自动分配给CH365的I/O端口基址;将I/O端口基址加上偏移地址后作为应用程序中各个I/O操作的
端口地址。同时,PCI板卡的本地二级译码电路可以简化甚至去掉,本实例中就可以直接去掉U2译码电路。
3、PCI板卡软件设计
3.1. 升级ISA板卡
对于只使用I/O端口资源的ISA板卡,通过CH365的本地硬件定址功能一般都能做到PCI板卡直接使用原ISA板卡的软件,而不要修改任何程序。
对于使用存储器资源的ISA板卡,例如双口RAM接口的应用,在硬件成本适当增加的情况下可以不修改软件,简单方法是在计算机中多插一个“存储器地址设定卡”(在BIOS阶段运行),或者在计
算机启动前执行设置存储器基址的工具程序CH365MEM.EXE(在操作系统启动时执行),该方法通常用
于初始测试,建议测试通过后针对PCI设计修改原ISA板卡的软件。 对于使用中断资源的ISA板卡,通常必须修改软件。
虽然原ISA板卡通过本地硬件定址功能或者“存储器地址设定卡”(或者工具程序)升级到PCI而可以不需要修改软件,但是在技术能力允许时建议修改软件,原因是:
① 由于I/O端口地址或者存储器地址是固定的,如果在同一台计算机插入多张同样的板卡,
就需要使用跳线等办法选择各板卡的地址以避免冲突。 ② 本地硬件定址所需要译码电路或者“存储器地址设定卡”增加了总成本,而设置存储器基
址的工具程序只能用于DOS或者WINDOWS 98操作系统。 ③ PCI总线提供了64KB的I/O地址空间,而ISA只有1KB,PCI总线提供了4GB的存储器地址
空间,而ISA通常只有16MB,PCI总线提供了至少22个中断(与操作系统和主板芯片组有关),而ISA通常只有15个中断。
④ 不能充分发挥PCI总线即插即用、灵活方便的特性。
3.2. 设计真正的PCI板卡
这里所指的真正的PCI板卡主要是指不使用本地硬件定址功能和“存储器地址设定卡”的PCI板
卡,以下统一简称为PCI卡。
3.2.1. 基本原理 CH365升级ISA板卡与设计PCI板卡 4
PCI卡与ISA卡的一个重要区别就是:ISA卡由设计人员作主,自由选择I/O端口地址、存储器MEM地址、中断号;而PCI卡由计算机(实际是由BIOS和操作系统OS)自动分配I/O地址、MEM地
址以及中断号。 任何一个标准的PCI卡都有配置空间,其中通常有多个配置寄存器,其中一些寄存器是基址寄存
器,例如I/O基址寄存器、MEM基址寄存器、中断号寄存器。 基址寄存器是随时可以读写的寄存器RAM,PCI芯片厂家不能干涉也不能事先假定其内容(显卡
是个例外,因为显示在BIOS之前工作)。以I/O基址寄存器为例。
⑴ PCI芯片例如CH365,具有I/O基址寄存器和I/O空间使能位(在命令寄存器中),一个PCI芯片可以有多个I/O基址寄存器,但是I/O空间使能位只有一个。当I/O空间使能位为0时,
CH365忽略任何I/O操作,所有I/O基址寄存器都没有作用,而当I/O空间使能位为1时,CH365才有可能执行I/O操作。
⑵ 当计算机复位时(实际是PCI总线复位时),I/O基址寄存器复位到0000H,I/O空间使能位
也复位到0。由于此时I/O空间使能位为0,所以CH365不会执行任何I/O操作。 ⑶ 当BIOS初始化时,向CH365的I/O基址寄存器中写入基址,例如9400H,然后将CH365的
I/O空间使能位设置为1。对于其它PCI卡,BIOS也执行相同操作,但是各个PCI卡的基址寄存器中的数值一定是不同的。
⑷ 由于I/O空间使能位为1,所以当CPU执行I/O指令时,CH365对I/O地址译码比较,如果发现I/O指令的地址与I/O基址寄存器相同,也是9400H,就会响应并执行该I/O操作。由
于CH365的I/O偏移地址范围是00H-0FFH,所以CH365的PCI卡的I/O地址范围为
9400H-94FFH,只要CPU执行在此地址范围内的I/O操作,CH365都会响应。 ⑸ 其它PCI卡被BIOS分配的I/O基址数值与CH365不同,所以不会响应I/O地址为9400H-94FF
的I/O操作,当然也就不会冲突。 ⑹ 进入操作系统例如WINDOWS后,WINDOWS也可以修改I/O基址,而一般情况下,WINDOWS是
保持BIOS自动分配给各个PCI板卡的基址。
⑺ 如果WINDOWS将CH365的I/O基址修改到DC00H,那么在修改之后,只有当CPU在DC00H到DCFFH地址读写I/O时,CH365才会响应并输入输出数据。
⑻ 应用程序也可以自己修改CH365配置空间中的基址寄存器,重新定位CH365,前提是不要与其它ISA或者PCI卡的地址冲突。
⑼ 由此可见,PCI板卡的I/O地址的译码由一个基址寄存器和一个比较器构成,改变基址寄存器中的数值就可以改变PCI板卡所占用的I/O地址,所以PCI板卡的I/O地址完全是动态分
配的,而不是ISA板卡的固定物理连接。
⑽ 对于存储器MEM,PCI卡例如CH365也有MEM基址寄存器和相应的MEM空间使能位,其功能与用途与I/O基址类似。但是有一个重要的区别,就是BIOS或者操作系统(例如WINDOWS)
为PCI板卡自动分配的MEM基址通常都在1MB以上,而DOS下的程序不方便读写1MB以上的内存,所以如果PCI板卡在DOS下应用,可以由应用程序自己修改MEM基址,将其设置在
1MB内存以下。“存储器地址设定卡”和设置存储器基址的工具程序就是基于这个原理将使
用MEM资源的原ISA板卡升级到PCI的。 ⑾ 对于中断,PCI卡例如CH365也有中断号寄存器,但是该中断号寄存器没有物理作用,只是
用于让操作系统或者应用程序知道当前使用的中断号。PCI板卡只管向PCI总线申请中断,BIOS或者WINDOWS会通过主板芯片组控制PCI路由,将PCI板卡申请的中断信号路由到相
应的中断号,所以应用程序直接修改中断号寄存器通常没有作用。在使用WINDOWS XP和较新主板芯片组的计算机中,PCI板卡的中断号还可以是16到23,而不仅仅局限于ISA总线
的0到15。
⑿ 综上所述,PCI板卡的I/O地址、MEM地址、中断号完全是动态分配的,也是非常灵活的,在不同的计算机中,不同的BIOS下,不同的操作系统下,以及不同的PCI插槽中,同一块
PCI板卡的I/O地址范围、MEM地址范围和中断号都有可能是不同的。
3.2.2. 软件设计
产品设计人员可以获得自己设计的PCI板卡的I/O地址、MEM地址、中断号。 根据原理中的说明,I/O地址就在配置空间的I/O基址寄存器中、MEM地址就在配置空间的MEM