打印

请教CPLD在主板诊断卡中的应用

[复制链接]
3140|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
实验室坏了一台台式机,无法启动,所以想diy个主板诊断卡,但是网上查了很多资料还是对诊断卡的原理不是很清除,最后还是直接买了块小卡修了电脑。。修好后还是不甘心,想了解下诊断卡的原理,再diy一个。
网上对诊断卡的原理介绍是通过PCI总线读取IO空间80H地址处的post code。
但是我不清楚诊断卡到底是以何种方式获得的呢?
查过计算机启动初期的资料,PCI设备是在开机自检的最后阶段才完成初始化,分配IO空间,存储空间等,那应该在这之前诊断卡就无法工作的啊,为什么实际上它能读出在这之前的post code呢?
另外,PCI总线是否在上电后就能够使用?诊断卡是只要“监听”PCI总线上对80H地址的写操作(假设BIOS对IO空间的写操作可以反映在PCI总线上,实际上貌似各种总线,甚至电池的IIC都能做成相应的诊断卡,这令人很费解。。),还是要主动进行对IO空间的读操作获取post code?
求大侠指教诊断卡的具体工作原理!
下图是我买的诊断卡实例,上面用的是lattice的cpld,查过是32个宏单元的,所以肯定只是实现一部分PCI协议。

相关帖子

沙发
viatuzi| | 2012-3-20 10:21 | 只看该作者
没研究过这个东西,不过我觉得:
1. PCI总线是一个广播式的总线,所有PCI的传输都会送到这个PCI的插槽上
2. debug卡应该是监听PCI总线上的数据,从而判定计算机当前的状态。
3. CPLD的功能有二,一个是实现PCI 传输的解码,获取传输数据,这个要比实现PCI协议简单很多;二把数据送数码管显示。

使用特权

评论回复
板凳
Ynnus| | 2012-3-20 14:00 | 只看该作者
应该只是需要读特定地址的数据就行,不需要做复杂协议。
这是一个ISA的诊断卡的原理图。
PCI的你自己再找找。

使用特权

评论回复
地板
zepanwucai|  楼主 | 2012-3-21 16:46 | 只看该作者
2# viatuzi 昨天把那块小板“逆向”了下,发现使用的信号线只有clk,AD[15:0],Frame,C/BE#[3:0],而IDRY#和RST#则只是连到led上指示而已。看了下时序图,应该勉强可以监听到对80H IO空间的写操作。
但还有点疑问,小板上只连了AD[15:0]这一半的地址数据复用引脚,高16位没有连接,这是为什么呢?是因为自检的时候只会出现对16位地址的读写?还是因为在数据段C/BE#只可能在低两位有效?或者是其它什么原因?
既然能省到16根引脚,能否再省到8根引脚呢(只使用AD[7:0])?

使用特权

评论回复
5
viatuzi| | 2012-3-21 22:30 | 只看该作者
这个还真没有研究过
不过感觉只看低16bit地址是可以的,因为PCI device的配置空间只有256字节而已,从低8bit地址译码就可以得到。
而数据只看低16bit的话,应该是有效的debug信息之存在于低16bit数据,所以才会只用两个数码管来显示。
上面的都是猜测啊,回头我有时间的话帮你问一下吧。
4# zepanwucai

使用特权

评论回复
6
zepanwucai|  楼主 | 2012-3-21 23:07 | 只看该作者
这个还真没有研究过
不过感觉只看低16bit地址是可以的,因为PCI device的配置空间只有256字节而已,从低8bit地址译码就可以得到。
而数据只看低16bit的话,应该是有效的debug信息之存在于低16bit数据,所以才会只用 ...
viatuzi 发表于 2012-3-21 22:30

两位数码管只能表示8位post code的。。
不过还是谢谢啊,我现在打算从小板上飞线研究下具体原理。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

180

帖子

6

粉丝