RF - 今日电子
RF - 今日电子
RF - 今日电子
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
一种总线。在高速信号的实时处理中,<br />
利用 PCI 总线将采集数据直接传送到微<br />
机系统内存,可有效解决数据的实时传<br />
输和存储,为信号的实时处理提供方<br />
便。PCI 总线执行协议比较复杂,总线<br />
的接口逻辑也非常复杂,为简化电路设<br />
计和提高可靠性,本设计采用了 AMCC<br />
公司的总线控制器芯片 S5933。<br />
图 2 为 S5933 的内部结构框图。从<br />
外部看,它提供了 PCI Bus、External<br />
BIOS 及 ADD - ON 三个接口。因此,复<br />
杂的 PCI 接口规范完全由 S5933 实现,<br />
我们只需设计 ADD-ON 接口电路及编<br />
制可选的 External BIOS 即可。为便于<br />
ADD-ON 接口电路设计,还提供了三<br />
组寄存器,分别用于不同的接口设计。<br />
直通数据寄存器组用于目标设备方式<br />
Burst Mode 数据传输;Mailboxes 寄存<br />
器组用于 CPU 与 ADD-ON 之间少量数<br />
据通信,如 CPU 传输命令给 ADD-ON<br />
等;FIFO 寄存器组用于主控设备方式<br />
Burst Mode 数据传输,有同步、异步<br />
之分。此外, PCI 和 ADD-ON 接口各<br />
提供了两组操作寄存器组,用于接口控<br />
制,分别称为 PCI Bus 操作寄存器组和<br />
ADD-ON Bus 操作寄存器组。<br />
程序设计<br />
1 驱动程序设计<br />
S5933 驱动程序根据 Windows 驱动<br />
程序模型 WDM 设计,运行在 Win2000<br />
平台上,支持即插即用,采用基于数据<br />
包的 DMA 传输方式,每次最大传输<br />
64KB。当应用程序请求从系统读数据<br />
时,内核 I/O 管理器将此请求打包成一<br />
个 IRP(I/O 请求包),并调用驱动程序<br />
的读例程。如果设备不忙,就启动 DMA<br />
传输,否则将此 IRP 加入 IRP 队列中。<br />
启动设备 DMA 读时,先用数据传输的<br />
存储地址和数据长度设置写地址寄存器<br />
和写传送计数寄存器,再设置中断控制<br />
状态寄存器(INTCSR),使 DMA 完成<br />
时能触发中断,最后设置控制 / 状态寄<br />
存器(MCSR)来启动DMA 读。当本<br />
次DMA 传输完成时,系统产生中断,I/<br />
O 管 理器调用中断服务例程和<br />
DpcForIsr 完成此 IRP,并从 IRP 队列<br />
中取出下一个 IRP,启动下一次 DMA。<br />
下一次中断发生时同样处理,这样不断<br />
地进行 DMA 传输,直到 IRP 队列空为<br />
止。驱动程序主要采用中断方式来实<br />
现,程序流程如图 3 所示。<br />
由总线控制器 S5933 的结构可知,<br />
设备驱动程序需要实现双字 I/O 操作和<br />
物理内存管理。双字 I/O 的操作相对简<br />
单 , 调 用 虚 拟 机 管 理 器 的<br />
SIMULATE_VM_IO 例程即可,但物理<br />
内存管理较复杂。由于 S5933 发起的<br />
DMA 操作需要物理内存的起始地址,<br />
因此必须涉及页面级的物理内存操作,<br />
故采用下述内存管理策略:应用程序加<br />
载驱动程序,加载成功后发送申请缓冲<br />
区的事件给驱动程序,驱动程序使用<br />
PAGEALLOCATE 例程得到地址连续<br />
的适当长度的物理内存,锁定缓冲区并<br />
将物理地址逆映射为线性地址,将物理<br />
首地址填入 S5933 的写 RAM 地址寄存<br />
器,允许 S5933 进行主控 DMA 传输,传<br />
输完毕时,应用程序请求驱动程序释放<br />
上述物理内存。<br />
应用设计:工业控制<br />
图 3 驱动程序流程图<br />
2 用户应用程序设计<br />
本系统应用程序采用结构化、模块<br />
化的设计方法,采用一片 8031 单片机作<br />
为 CPU,各模块均完成一定的独立功能,<br />
便于系统的功能扩充和维护。系统操作<br />
由多级中文菜单提示进行。显示模块程<br />
序设计模式多,显示内容丰富,可显示中<br />
文菜单、回波波形、报警闸门、移动标尺、<br />
测量结果等。主控模块用于控制检测流<br />
程,实现数据的采集、处理和分析,并调<br />
用相应的功能模块实现显示和打印等。<br />
通信模块程序用于 CPU 与外部PC 的串<br />
行通信,将探伤波形及结果等相关信息<br />
传送至 PC 做进一步分析、处理或存档。<br />
键盘管理模块扩展了一个的小键盘,分<br />
成功能键和数字键,功能键用于选择操<br />
作类型,数字键用于参数输入,当键按下<br />
时向 CPU 申请中断。打印模块用于控制<br />
微型打印机打印结果和缺陷回波等。 EPC<br />
<strong>今日电子</strong> · 2007 年 12 月<br />
101