给主板加装双BIOS系统真的不可行吗? 张泽 张彤 2000年 第25期   《电脑报》18期上王庆东先生的《为主板加装双BIOS系统》(以下简称《双》)的文章刊出后,接连出现了几篇有关加装失败的文章,这使我们对此产生了兴趣,经过理论分析和实践证明,我们认为加装双BIOS是可行的,但原文存在一些问题,特此撰文参加讨论。   本来我们非常赞成王先生的方案,早在“双BIOS主板”出现之初,我们就讨论过能否将普通主板改为双BIOS。讨论结果与王先生的方案类似,将新增的ROM叠在原来ROM上(即除了片选端以外的端子全部并联),通过控制片选信号,来实现双BIOS切换。其实这种做法并非王先生首创,在电子设备中,尤其是数字电路、计算机领域,这个电路被广泛运用(只是很少能见到两片电路叠焊在一起的),可以说如果没有这种电路,就没有计算机。你也许会在遥控电视机的电路图中找到类似电路,电路中CE的作用除了片选控制外同时还起到了扩展地址位的作用,如把两片1K RAM经这样连接,就相当于一片2K RAM,CE端成为2K RAM的最高地址位,你可以发现RAM1、RAM2的数据端、地址端及读写控制等全部是并接的,这与王先生的方案如出一辙。所以王先生的方案应该是可行的。   至于上拉电阻的问题需要从数字电路基础知识说起,上拉电阻等效电路如^25030205a^1。现在的存储器电路一般都是MOS管组成的,MOS管是接近理想状态的压控源,其输入电阻在几十兆以上,输入端几乎呈绝缘状态,以至于输入端可以因沉积大量静电荷而被击穿,所以MOS电路应放置于消电袋内,或将电路各脚短接,而安装、调试时,工具、烙铁甚至桌面都要接地,同时操作者要佩戴接地腕带。当然,现在的MOS电路一般都有输入保护,最简单的办法就是加一只耐压较低的二极管(稳压管),当电压高于二极管击穿电压后,就无法再升高,若有反向电压,二极管也会马上导通从而保证MOS管输入端不被击穿。22期《也谈给主板加装双BIOS系统》文章中测量结果就很像保护二极管的特性。MOS管如此高的输入电阻,使电源从上拉电阻流入MOS输入端的电流微乎其微,所以上拉电阻的阻值大小与MOS管无关,需要考虑的是当开关闭合时,流过电阻的电流是否能让电源、电阻、开关等承受得了,一般只要大于1K就可以了,(假设电源为5V,电阻为1K,电流仅为5mA,)在实际应用中一般上拉电阻取值在4.7K~47K之间。   上拉电阻电路绝非从书本上抄来的“理想电路”,它在数字电路中也广泛应用,不信看你的主板上,一般都有几个像^25030205b^的元件,特征是管脚为单数(5脚、9脚等),其内部电路如^25030205d^,可以看出其中集成了多个电阻,而这些都是上拉电阻。   当然王先生的电路并不完整,严格地说还应有图1所示的电容C,C的作用是抑制干扰信号和防止在开关切换瞬间产生的触点抖动,但由于在本电路中R的阻值不大且开关均在BIOS ROM不工作、甚至是关机时切换,所以没有C电路也能正常工作。若要加此电容,需注意R与C不可同时取得过大(C<5μf),否则就变成“延时开关”了。   综上所述“双BIOS”系统在理论上是可行的,在实践中是否可行呢,我们决心一试。   首先,我们拿单位里闲置多年的两台486开刀,两台电脑的BIOS ROM都是27C1001 EPROM,并可以互换使用,但其中一片BIOS中的CMOS设置画面被修改过(是在《电脑报》相关文章鼓动下的首批试验品),这是辨认双BIOS成功与否的重要标志。按照《双》文章中电路搭好,将两片ROM的22脚翘起,插回主板,开机,电脑正常启动,进入CMOS一看“AWARD……”一切正常(这是未修改过的一片BIOS),关机,转换开关,再开机,仍然启动正常,进CMOS,哇,“ZHANG ZE……”BIOS已经变成另一片,成功了(应该是意料之中)。   有了第一次成功,我们决定作进一步尝试。因为双BIOS的目的是刷新BIOS,而EPROM是无法这样刷的,所以我决定在我的磐英P2-133A上实验。回家将原来用作备份的2M EPROM作为芯片1(见《双》文),焊好电阻、开关,插上原机上的29C020,插回主板,检查无误,开机(转换开关置于芯片1),直觉告诉我不妙!果然显示器开始“眨眼睛”,硬盘自检后再无动静,这情景就像BIOS刷新失败后一样。关机,拔下双BIOS,将FLASH ROM单独插回主板,开机,嘿嘿,“能源之星”又回来了,这才松了一口气,拔下FLASH,将芯片1连插座一起插回主板,开机,又是黑屏,难道是EPROM坏了?但将接在22脚CE端开关拆去,并插回插座后,又能启动。如此结果宣告双BIOS系统初步实验失败,21、22期文章中所述情况并非偶然。   那么为什么理论上可行的电路,会无法工作,甚至损坏ROM呢?我们只好再回到理论分析,造成芯片损坏可能有三种情况,一是电源问题,如电压升高、反向等,显然与我们无关;二是输入电压过高击穿芯片的输入电路,看来也不可能(再重申一遍,一般情况下MOS电路输入只与电压有关,与电流无关);三是输出电流过大烧毁芯片。可以看出最有可能的是第三种情况,一片ROM只有数据线与输出有关,所以我们重点看数据端口。数据端又称输入/输出端(I/O),其内部电路对于不懂电子的普通读者可能看起来很复杂,不如将它放在理想状态下,这时读有效的存储器数据端相当于一些转换开关,当输出高电平时,相当于开关与电源接通,而低电平时开关与地接通。芯片1、芯片2的I/O,正常时一定只能有一片电路呈输出有效状态,这是由片选端和读写控制端共同控制的,如果有两片以上输出有效,就可能烧毁电路,具体说明:假使芯片1、芯片2同时呈读有效状态(由于反向器的存在,这种情况不会发生),芯片1的D1端输出高电平,芯片2端的D1却正好输出低电平,由于它们并接,相当于在电源与地之间有了一根短路线,当然这根“短路线”的“熔断电流”只有几百毫安甚至更低,这对于大功率的开关电源是“小菜”,所以“短路线”被轻而易举地烧断了,你甚至感觉不到温升。当然,实际情况下,输出电路有一定内阻,可能还有短路保护电路,而且输出的是脉冲信号,所以未必损坏器件,但是造成数据紊乱是肯定的。所以说排除了人为原因(焊接、安装问题)外,BIOS无法启动肯定与片选信号的错乱有关,经仔细分析王先生的文章,认为其中有两个问题:一个是电路设计漏洞,ROM 22脚经过切换开关直接入地(接16脚),而检查主板上BIOS插座22脚并非直接接地。为此我们进行了进一步检测,用万用表测22脚电压,在开机后只有几个很短时间的低电平而随后一直维持高电平,由此可知,BIOS ROM的读有效只有开机时维持很短时间,其他均被CE端的高电平屏蔽,而王先生的方案中忽略了这一点,让ROM CE端(无论哪一片)始终有效,而在主板上除了BIOS ROM外还有一片RAM用于存放CMOS讯息(记忆电池就是为它准备的),两片存储器不能同时为读状态,而双BIOS电路却将BIOS ROM的CE端状态,始终被置为有效,当系统发出读指令时ROM与RAM同时发送信号,如此ROM与RAM“硬碰硬”,就算不损坏器件,系统出错也在所难免。当然因主板电路未必相同,所写入的程序也不尽相同,所以完全可能在有的主板上能正常工作(可能王先生就是碰到这种情况),我们在486上的实验可能也是碰巧通过的。   另一问题是《双》文中遗漏了需将两片ROM 22脚都翘起的说明,再加上《双》文中图6给人的错觉,而如果不将芯片1的22脚翘起,就会造成芯片1的22脚受到系统和切换开关的双重控制,这将非常危险,除了前述损坏ROM、RAM外还可能损坏控制芯片(因为控制芯片输出的高电平,可能被切换开关强制接地)。对于精通硬件和数字电路的读者相信不难发现此问题;但对其不熟悉的读者,哎,在此只能奉劝一句,“没有金刚钻,就别揽瓷器活。”   根据所发现的问题,我们作了如下改动,并重新进行了实验,如^25030205c^3,在芯片1下再加一个32脚插座,注意芯片1的22脚应翘起,将原焊于16脚的接地线(黑线),改接新加插座的22脚(注意焊接技巧),如此一来这个“怪物”又高了一层,将它插回主板,开机,一切正常,BIOS日期08/15/99,这是EPROM的BIOS版本,说明第一步已经成功,在进入Windows后转换开关,重新启动,这一次同样正常启动,再看日期已变为12/15/99,说明已变成了FLASH ROM,一切正常,为保险起见,又刷了一次BIOS也同样成功,后来又将两片ROM分别单独启动多次,均未出现启动失败,至此“双BIOS系统”实验成功了。   有了超级武器,真是“有恃无恐”,用它刷了几次BIOS,真是既快又安全,确实不同凡响!真希望各位能与我们同享此快乐,请打消对双BIOS的疑虑吧!   我们的e-mail:zezhang@990.net,欢迎各位朋友来信探讨,同时也可提供双BIOS成品,欢迎来信垂旬。