PC总线范文

2024-05-08

PC总线范文(精选5篇)

PC总线 第1篇

PC/104[1,2]是一种专门为嵌入式应用而定义的工业控制总线规范,以IBM PC/AT总线规范为基础的个人计算机及其外围设备在实际应用上取得了巨大的成就,IEEE-996称之为工业标准架构(ISA)总线。PC/104是ISA标准的延伸,在IEEE-P996.1中,定义为兼容PC嵌入式模块标准。PC/104总线源于实践发展的需要,同时得益于PC技术的迅速发展,由于其具有开发环境友好、兼容芯片丰富、标准支持广泛等优势,受到了众多嵌入式产品生产商和系统集成商的欢迎,尽管现在ISA设备已不常见,但PC/104在嵌入式系统领域中却仍是通行的标准。

ARM是当前嵌入式系统应用中的热门技术。由于ARM处理器的卓越性能、较低的价格以及业内半导体厂商的广泛支持,在嵌入式环境中应用广泛。ARM在设计上基于SoC思想,对每一个具体应用,优先考虑使用集成周边设备可能性最大的单一芯片,但在板极扩展方面仍然缺乏能被广泛接受的新工业标准。

本研究探讨基于ARM体系的PC/104总线设计。

1 PC/AT模型和PC/104总线

1.1 总线信号

PC/104是一种8/16位总线系统,总线时钟为6 MHz~8 MHz(±500 ppm),周期的占空比为50%±5%,4个或5个时钟脉冲即可完成一次完整的总线访问[3,4]。在嵌入式系统开发中常用以下信号:

(1) 地址和数据信号线

BALE总线地址锁存使能信号线。由平台CPU驱动,当ISA扩展卡或DMA控制器占用总线时,它也被置为逻辑1。

SA<19:0>。低20根地址信号线,由当前总线的拥用者驱动。

LA<23:17>。锁存地址信号线,用来访问16 MB的存储器地址空间。由当前总线拥有者或DMA控制器驱动。

SD<15:0>。数据信号线。

(2) 总线周期控制信号线

MEMR#。存储器读信号线。

MEMW#。存储器写信号线。

IOR# I/O。I/O读信号线。

IOW# I/O。I/O写信号线。

(3) 中断和DMA信号线

IRQx中断请求信号线允许扩充卡请求平台CPU提供的中断服务。

DRQx DMA请求信号线由I/O资源将其驱动为有效状态,来请求平台DMA控制器服务。

DACKx# DMA应答信号线由平台DMA控制器驱动为有效状态以选中请求DMA传送周期的I/O设备。

TC终端计数信号线由平台DMA控制器驱动,以表明所有的数据已经被传送。

1.2 端口地址和中断系统

PC/AT系统使用不同的指令访问存储器空间和I/O端口空间,访问存储器空间时PC/104总线驱动MEMR#和MEMW#信号,访问I/O端口空间时PC/104总线驱动IOR#和IOW#信号。两个空间使用同一套地址线,但是,由于端口空间只有64 k有效,进行I/O端口访问时地址线上只有SA<15:0>是有效的。

PC/AT系统有专门的端口访问指令用于实现端口访问,Linux用户程序只需以root权限调用ioperm()指定需操作的端口地址范围,之后即可自由访问这些端口。由于用于访问端口的一组宏实际上直接对应CPU的端口访问指令,存取效率很高。

PC/104总线上提供了从IRQ2到IRQ7共6个中断输入信号,在PC/AT系统中这些信号由中断控制器8259统一管理。外部设备可以通过操作IRQ线,迫使CPU执行预先安排的中断处理例程以保证突发事件的及时响应。由于大部分中断输入资源被系统母板占用,PC/AT系统中真正可用于扩展模板的硬件中断线很少,实际使用时多采用共享电路方式进行中断线复用,如图1所示。

1.3 PC/104总线周期

PC/104总线周期分为CPU驱动和DMA控制器驱动两大类,其中CPU驱动的包括存储器读/写总线周期和I/O读/写总线周期,DMA控制器驱动的包括DMA存储器读/写总线周期。在嵌入式系统扩展中较常用的是I/O读/写总线周期。PC/104总线的I/O读时序,如图2所示。其中,典型的tRD应大于30 ns,tAF应大于50 ns.

2EP9315(ARM920T)体系和PC/104硬件实现

ARM920T是一个32位哈佛结构处理器,其处理器总线在信号和时序上与PC/104均有较大差异。对SRAM、SDRAM、FLASH等不同形式的存储器,EP9315有一个统一的总线访问控制。引脚CSn用于存储器芯片的选通,可视为地址总线的高位线。EP9315的SRAM控制器支持存储器的8/16/32位访问方式。

PC/104总线使用标准TTL逻辑电平,而EP9315的处理器总线电平为3.3 V。双电源总线收发器74LVC245、74LVC16T245等可用于实现电平转换。

2.1 中断和DMA的实现

EP9315的引脚INT[3:0]是外部中断3-0的输入。ARM920T最多允许64个IRQ或FIQ信号,同时提供32个IRQ硬件优先级和2个FIQ优先级。内部中断可被设置为高电平有效、低电平有效,或者上升/下降沿有效。PC/104的中断请求信号可以直接用于ARM920T的中断申请。考虑信号线的负载后,PC/104设备中常见的共享中断信号线方式仍可沿用。

ARM920T的DMA模块提供12个直接存储器存取通道。其中的10个用于周边设备与存储器间的存取访问,2个用于存储器到存储器的传送存取。每个DMA通道连接到16位的DMA请求总线,这些请求可能来自音频设备、UART等,每个DMA请求及与之相关的物理地址都被独立地编程。ARM920T的DMA在应用上与PC/AT系统有较大的不同,少数应用中PC/104设备如需使用DMA资源,则必须完成硬件和驱动的设计。

2.2 端口映射和总线时序

PC/AT系统中,由于端口访问具有兼容性好、效率高、易于实现等特征,在PC/104设备中的应用非常普遍。标准ARM920T系统可以有I/O存储器地址空间,但没有独立的I/O端口地址空间及相应的控制线,处理器也不存在专用于I/O访问的指令。通过硬件电路可将一段SRAM存储器地址映射为I/O端口空间。ARM920T的SRAM读时序,如图3所示。

PC/104的端口地址线只有低16位有效(64 k bytes),简便起见,实现时直接使用1根CSn线用于端口映射。为避免处理器总线在访问其他地址空间时意外命中端口空间,CSn线必须作为高位地址线参与地址译码。图3中CSn信号在其他地址信号建立后再经tADS才建立,而在其他地址信号无效前tADS先无效。对比图2所示时序,新引入CSna和RDna信号,在外部设备速度允许的前提下,设法保证PC/104的标准时序。

设定CSna信号的无效时间较容易实现。另典型的tRD需大于30 ns,这可通过推迟RDn信号的建立时间来满足。以下VHDL代码对合适的周期时钟进行计数,以推迟RDn信号的建立:

… …

PROCESS (TCLK)BEGIN

IF (TCLK’EVENT AND TCLK =‘1’) THEN

IF RDn = ‘0’ THEN cnt <= 0; ELSE

cnt <= cnt + 1; END IF;

IF cnt = 4 THEN RDna <= 0;END IF; END PROCESS;

… ….

以16位或8位方式访问PC/104的端口空间,在驱动中必须将EP9315的SRAM控制器设为相应位宽的访问方式。

3 Linux系统下的访问实现

3.1 总线设备的Linux驱动

Linux不允许用户程序直接访问存储器物理地址,总线设备如依赖x86的I/O端口访问模式工作,必须借助内核驱动。此时应将PC/104总线视为字符设备,在/dev下创建相应的节点[5,6]。

设备初始化时必须进行内存资源映射,并确定访问位宽:

static void PC104_init(void)

{

… …

//将内存资源的物理地址映射到核心虚地址空间

devPC104.io_base = ioremap(PC104_IO_BASE, PC104_IO_LEN);

devPC104.io_width = 8; //位宽

PC104_configWidth(devPC104.io_width); //寄存器

… …

}

系统调用read实现如下:

ssize_t device_read (struct file *filp, char *buf, size_t count, loff_t *f_pos)

{

… …

arg->data = readb((devPC104.io_base + arg->addr));

return 1;}

系统调用write实现如下:

ssize_t device_write (struct file *filp, const char *buf, size_t count, loff_t *f_pos)

{

… …

writeb(arg->data, (devPC104.io_base + arg->addr));

return 1;}

3.2 Boot阶段的访问

ARM系统没有PC/AT模型中的BIOS机制,如果在引导过程中需要访问PC/104总线设备,只能在bootloader中添加代码解决。由于此时Linux尚未启动,bootloader可以直接访问物理地址。

4 结束语

利用ARM系统成本较低、功耗更小、启动速度快、指令效率高的特点,兼顾PC/AT系统和PC/104总线设备在产业化基础方面的优势,在ARM平台上构建PC/104总线,有助于利用现有资源,保护已有投资。

由于ARM与PC/AT模型在处理器架构上有本质性的差异,在ARM平台上构建的PC/104总线在所有的具体应用中要做到与标准PC/104规范完全兼容几乎是不可能的,但是在特定的应用需求及确定的操作系统下,这种努力是完全可行并且有效的。对于使用PC/AT模型I/O端口资源的PC/104设备,Linux通过内核驱动以存储器地址实现访问,会造成访问效率的显著下降。另外,在使用遵守ISA PnP(Plug and Play)规范的设备时,也存在较多的困难。

摘要:在分析了ARM处理器系统在指令系统、存储器模型、中断系统、总线时序等方面的特点,研究了IBM PC/AT和PC/104总线规范的基础上,提出了一种在ARM系统中高兼容性地实现PC/104总线的硬件电路方案,以及与之相应的在Linux操作系统中的驱动设计,并讨论了影响该兼容系统性能的相关因素。解决了在ARM系统中无法使用标准PC/104模板的难题。采用该方案,有利于在嵌入式系统的设计中兼顾ARM处理器和PC/AT体系的优势。

关键词:ARM,PC/104,Linux,设备驱动,嵌入式应用

参考文献

[1]梁军兵,赵鸿鸣,金建祥.基于ARM处理器的PC/104处理器模块的开发[J].工业控制计算机,2004,17(12):19-20.

[2]PC/104 Embedded Consortium.PC/104 Specification Ver-sion 2.5[M].San Francisco:PC/104 Embedded Consorti-um,2003.

[3]杨素行.微型计算机系统原理及应用[M].北京:清华大学出版社,1995.

[4]Institute of Electrical and Electronic Engineers,Inc.IEEEP996,ISA Bus Timing Diagrams[M].New York:Instituteof Electrical and Electronic Engineers,Inc,1999.

[5]毛德操,胡希明.Linux内核源代码情景分析[M].杭州:浙江大学出版社,2001.

PC总线 第2篇

现代微机在运算速度、存储容量、软件环境等各方面已经得到了极大的增强, 唯有直接硬件扩展能力改变不大。母板总线插卡是目前基于PC机的应用系统可直接访问控制的硬件的最主要扩展方式。其应用虽很方便, 但无论采购或研发成本都较高, 硬件配置和软件驱动也多有限制, 对于简单及实验应用不很适用。EPP是基于PC机原打印机接口的增强并行端口, 可以通过简单的端口控制实现双向数据传输, 只是接口形式与标准总线不同, 一般不能直接利用, 也不适合多硬件的扩展, 因此实际应用不多。若将其适当改造形成标准外部并行总线, 则扩展连接各种实验硬件与应用设备, 实现PC控制下的直接检测与控制将十分方便。

2 EPP接口[1,2]

EPP (增强并行端口) 协议提供了数据读、写周期和地址读、写周期等四种总线传输周期。数据周期用于主机和外设间的数据、状态信息传输, 地址周期用于地址、控制信息传输。图1 (a) 和 (b) 分别是EPP数据写周期和地址读周期时序图。基于硬件握手信号的数据传输过程可在一个ISA I/O周期内完成, 因而可以达到较高的数据传输率。

EPP占用并行口基地址+0~+7共8个相邻的I/O映像地址。其中基地址+2对应控制寄存器, 用以实现必要的选择控制;基地址+3对应EPP的地址寄存器, 对其进行I/O操作便产生地址周期;基地址+4是EPP的数据寄存器0, 对其进行8位I/O读写操作, 便产生对应DATA[7:0]的数据读写周期。

3 基于EPP接口的总线式设备扩展[3,4]

PC机的EPP并行接口需要进行必要的改造才能以标准总线的形式连接外部接口设备。图2 (a) 所示EPP并行标准总线扩展方案使用1片74HC273和1片G16V8实现由EPP总线到8位地址、数据总线的转换。EPP接口端提供了及时的nWAIT信号以确保EPP读写周期不发生超时错误, 而总线设备端则提供了独立的地址总线信号、读写控制信号和基于地址译码产生的片选信号以方便连接类似8255这样的地址、数据分离的总线接口芯片。图2 (b) 是8255硬件连接示例。除了连接具有独立片选和读写控制信号的总线器件外, 也可以利用16V8输出的特定设备写信号nDEV1W直接控制锁存器

图2 EPP并行标准总线扩展方案进行数字量输出, 用特定设备读信号nDEV1R直接打开缓冲器进行数字量输入。

图3是应用16V8实现的逻辑转换样例。主要是根据EPP总线周期信号产生扩展总线地址锁存信号和数据读写信号以及结合由74HC273锁存的地址A7~A2生成满足图3需求的设备选择信号。如果需要, 可以增加16V8进行译码以连接更多的设备。

4 EPP接口及扩展设备的访问控制

PC机EPP的nWRITE信号与控制端口的第0位STROBE位相对应且在信号输出时自动取反, 因此执行EPP写周期时应置EPP控制口的STROBE位为1, 而执行EPP读周期时应置EPP控制口的STROBE位为0;控制端口的第1位AUTOFD位和第3位SLC位分别控制PC机EPP的n DATASTB信号和nADDRSTB信号的输出, AUTOFD位和SLC位都置为0可确保能够正常输出nDATASTB信号和nADDRSTB信号;控制端口的第5位PCD位用以确定数据信号DATA[7:0]的方向, 必须按照下一个EPP周期的要求正确设定;控制端口的第2位nINIT位对应低电平有效的nRESET信号, 外设正常工作时应保持为高电平。由此, 通过EPP地址口或数据口输出地址或数据前控制端口的低6位应为05H (输出方式) , 而EPP数据口输入数据前控制端口的低6位应为24H (输入方式) 。要访问基于EPP接口扩展的总线式外部设备, 应先向EPP地址端口写入设备选通地址, 然后再通过EPP数据端口进行相应设备的数据访问。写入设备选通地址后, 如果要执行数据读访问, 必须改变EPP接口为输入方式并在下一次输出地址或数据前重新改变EPP接口为输入方式。

Windows环境下I/O端口的访问可能要用到内核设备驱动和相关低级编程技术以绕过操作系统的保护机制, 自行开发直接端口访问并不容易, 通常可借助WinIO、Vbio等第三方的支持库实现对EPP接口及扩展设备的访问控制。EPP接口的初级及实验应用在纯DOS环境下进行则更加简便直接。可用U盘制作一个纯DOS的启动盘, 需要时通过U盘启动直接进入纯DOS, 取下U盘正常启动则进入Windows系统, 应用非常方便。

5 结语

基于EPP接口的硬件扩展总线可方便扩展连接多组总线硬件。以此为基础构造的开放性实验系统经实际验证, 良好效果。相比母板总线插卡式的内部硬件扩展方法, 基于EPP接口的总线式外部硬件扩展成本更低, 应用更灵活, 控制检测更为直接, 开发调试更加方便, 其不仅适合简单应用及实验, 也完全值得更大范围的推广应用。

参考文献

[1]Infogile Inc..IEEE 1284-1994Standard:Updating the PC ParallelPort[EB/OL].[June 2006].http://www.infogile.com/pdf/1284.pdf.

[2]Lava Computer MFG Inc..IEEE 1284:Parallel Ports[EB/OL].[2002].http://www.nor-tech.com/solutions/dox/ieee1284_parallel_ports.pdf.

[3]Dhananjay Grade.并行端口编程[M].韩永彬, 译.北京:中国电力出版社, 2000.

PC总线 第3篇

信号显示卡是雷达嵌入式故障诊断系统中的重要组件,主要完成系统工作过程中采集信号的显示和诊断流程的指示,是重要的人机对话窗口的执行部件。因此,显示卡功能的好坏,直接关系到整个系统最终能否完成工作。

1 系统硬件设计与实现

如图1所示,该显示卡的硬件电路主要由输入匹配网络、模数转换单元、时钟产生电路、时序产生电路、控制信号产生模块和显示单元组成。

输入的模拟信号经缓冲放大以后进入模数变换器AD9054,其最高采样速率为200Ms/s,具有380MHz的模拟输入带宽。它有两个采集数据输出端口(Port A和Port B),可以选用单端口输出或双端口交替乒乓输出。A/D转换后输出的数据经两路锁存器锁存以满足后续存储器的高速写入[1]。

如图1所示,系统时序产生控制电路产生系统时钟并协调系统各部分工作步骤,它根据A/D变换采样时钟以及A/D变换器输出接口时序的要求,产生锁存器的锁存时钟,并以适当的延迟量提供存储器的读写脉冲。时序产生电路还提供地址产生器和记录长度计数器的计数时钟。系统初始化后,A/D变换就开始进行,采集到的数据不断写入存储器,这时时序产生电路仅向地址产生器提供时钟源,使其作"+1"操作,这样存储器地址递增翻转。当触发逻辑被触发后,时序产生电路使能记录长度计数器工作,并提供采样时钟作为计数时钟源。记录长度计数器到用户设定的记录长度时,时序产生电路就关断时钟开关,使存储器停止翻转,同时向PC机申请数据传输。当PC机以某种形式读取采集数据时,时序产生电路又根据PC104总线读取操作提供存储器读出地址翻转时钟,将存储器的内容按采集记录的相反顺序读出。

图1中的虚线框内包含的逻辑被集成在一片大规模高速可编程逻辑器件EP1K30内[2]。其中触发逻辑、记录长度计数器和地址产生器密切配合使系统按设定的方式工作。触发方式由软件触发,示波器卡一经运行就自动地不断抓取波形;外输入触发需要一个外输入TTL逻辑信号,待设定的逻辑信号沿到来时产生触发;信号电平触发是根据被采集信号的幅度值到或超过设定的电平值时产生触发。信号电平触发的实现通过高速逻辑信号比较器实时监测A/D变换器的输出结果,当比较结果大于或小于设定基准值时产生触发。为了能够实现预期触发,地址产生器和记录长度计数器相互结合使用。地址产生器实质上是一个双向环形计数器,如图2所示,其顺时针方向地址递增数据写入,逆时针向地址递减数据读出[3]。

计算机通过PC104总线设置显示卡的工作方式和读取采集到的数据。为了多通道同时使用,每个显示器卡有一通道号,软件逐个设置好各通道状态后可以同时或分别使能触发。各通道的外触发输入可用于多通道在同一触发时刻采样记录。PC机可通过I/O、DMA、中断等多种方式与示波器卡进行通讯或采样数据读取[4]。

2 系统软件设计

显示卡的整个结构是由PC104总线接口电路和功能电路两部分构成的,而功能电路部分单片机是核心,因此单片机软件的编写也是一个很重要的部分。单片机的程序是用C语言编写的,主要结构如下:

(1)和上位机的通信程序。其中包括读取上位机的命令,把测试数据传送给上位机,报告功能电路的状态。

(2)功能函数。其中包括AD采集程序、设置量程、复位、自动调零、自检、中断服务程序等等。

因此,显示卡软件由主程序和中断程序组成,程序如框图3和图4所示。

主程序完成开辟与遥控帧格式一致的数据区域、芯片的初始化以及串行异步数据的发送和接收。串行异步数据发送接收期间,MPU会关闭中断0和1,但这并不会影响MPU对按键的相应和处理。当82C79检测到有按键按下时,要么能够在数据发送完毕后的时间空隙内申请中断并得到处理,要么多等待30ms,而后请求中断并得到处理。多出来的30ms与下一次按键的时间间隔(最少为几百毫秒)相比少得多,因此关闭中断的过程不影响按键的处理。

中断程序/INT0中,MPU将读取82C79中的键值,并判断按键类型。当按键为普通按键时,MPU并不改变82C79的工作方式,只将按键对应的指令代码填充到数据区域的相应字节位,并将R4赋值#01H。当按键为"长按"按键时,MPU将指令代码填充到数据区域的相应字节位后,会立即改变82C79的工作方式,将其设置在传感器扫描工作方式。当"长按"按键断开时,由于传感器矩阵发生了变化,82C79能再次通过IRQ信号通知MPU。再次进入中断程序时,MPU将82C79的工作方式再改回到键盘扫描方式后,才将R4赋值#01H,至此一个完整的按键过程完成。对于配合旋钮开关的"长按"按键,按键闭合的时候,MPU还需要打开A/D转换;按键断开时,MPU则要关闭A/D转换。

中断程序T0中,每经过两次中断即80ms(MPU的工作频率决定了其最大定时到达不了80ms),MPU就将串行数据发送指针置位。

3 结论

解决PC104总线数据传输的瓶颈问题,合理分配硬件资源。PC104总线的突出优点是结构简单、易于开发,但其传输速率较慢。通过实际应用证明基于PC104总线雷达信号显示卡的设计能克服以上设计缺陷,特别是能充分满足便携式设计特点的要求,适应维修训练要求。

参考文献

[1]范延,严程,李德胜,等.PC总线接口卡设计技术与字符液晶显示卡的实现[J].电子技术,1998(12):17-18.

[2]杨世新.高速数据存储示波卡的设计与实现[J].现代电子技术,2001(3):13-15.

[3]杨英,林连雷.雷达信号测量的虚拟示波器设计[J].电子测量技术,2007(12):70-72.

PC总线 第4篇

1 测频原理

传统的频率测量方法有两种[2]:直接测频法和测周期法。直接测频法就是在给定的闸门信号中填入被测脉冲, 通过必要的计数线路, 得到填充脉冲的个数, 从而算出待测信号的周期。它的主要缺点是存在被测脉冲的±1个误差, 难以兼顾低频和高频实现等精度测量, 所以测量准确度较低。测周期法[3]是在一个信号周期内记录下基准定时脉冲的个数, 然后换算成频率f。主要缺点是存在基准脉冲的±1个误差, 适用于较低频率的测量。

多周期同步测频方法[4]是在直接测频的基础上发展而来的, 其特点在于测量过程中实际闸门时间不是固定值, 而是被测信号周期的整数倍, 即与被测信号是同步的, 因此消除了对被测信号计数产生的±1个误差, 测量精度大大提高, 而且达到了在整个测量频段的等精度测量。多周期同步测频法的原理[5,6], 如图1所示。

如图1所示, 首先, 由控制线路给出闸门开启信号, 计数器等到被测信号的上升沿到来时, 真正开始计数;然后, 两组计数器分别对被测信号和标准频率信号计数。当控制线路给出闸门关闭信号后, 计数器等到被测信号下降沿到来时结束计数, 完成一次测量过程。可以看出, 实际闸门与设定闸门并不严格相等, 但最大差值不超过被测信号的一个周期。被测频率的计算方法为:

undefined

式中:Nx为被测信号的计数值;N0为标准频率信号的计数值;f0为标准频率信号的频率;τ为闸门时间, 计数器的开闭与被测信号完全同步, 即在实际闸门中包含整数个被测信号的周期, 因而不存在对被测信号计数的±1个误差。

2 硬件电路设计

如图2所示, 该模件硬件主要包括PC104控制处理模块、CPLD测试模块、信号调理模块、继电器驱动模块和高精度20 MHz晶振。在该系统中为了实现对多路频率信号的测量, 采用了通过继电器控制来选择信号的方案。通过CPLD控制继电器的动作, 接通不同的继电器开关, 被测信号通过继电器之后, 由6N137高速光电隔离器隔离、电平转换之后送入CPLD进行测频。由于CPLD的I/O口驱动电流较小, 所以加了一级ULN2803驱动器来驱动继电器的线包。CPLD主要完成的功能是实现数字频率计, 采用多周期同步测频法完成对输入信号频率的测量, 并通过与PC104的接口逻辑, 将测量结果送给PC104主机, 由主机进行频率值的计算及显示, 从而完成整个测频模件的功能, CPLD选用Altera公司的EPM7128SQC100芯片。

3 软件设计

3.1 测频电路程序设计

对于CPLD的编程, 一般有通过电路原理图的方式和通过硬件描述语言即VHDL语言两种方式[7]。第一种方式直观性强, 较好理解, 适用于小规模数字电路的设计;第二种方式具有多层次描述系统硬件功能的能力, 可读性强, 适用于时序电路及大规模电路的设计。本文采用两者相结合的方式, 用VHDL语言实现数字频率计的设计, 用原理图的方式实现了PC104主机的接口逻辑, 并进行仿真。结果表明完全可以满足功能需求, 编译环境为Max+PlusⅡ。

以下为数字频率计的VHDL语言源代码[8,9,10]。设计了两个32位计数器, 一个8位数据选择器及一个触发器控制闸门信号。

以上程序通过软件编译后生成数字频率计的逻辑功能模块图如图3所示。以下是程序的仿真波形 (见图4) , 标准频率为20 MHz, 被测信号频率为0.1 MHz, 仿真时间设为120 μs。

从仿真的结果可以看出, 在定时脉冲CL到来时, 计数器并没有开始计数, 而是等到被测信号的上升沿到来时, START信号才开启, 计数器开始计数, 定时脉冲结束时, 计数器也是等到被测信号的上升沿到来时才结束计数, 实现了多周期同步测频。图4中被测信号频率的计算方法如式 (1) 所示。与系统预设值相同, 可以实现所需的功能。

3.2 PC104接口电路实现

该设计中PC104接口电路部分在Max+PlusⅡ中用原理图的方式实现。使用的PC104总线信号有地址线A0~A9、数据线D0~D7、读写信号线IOR/IOW、复位信号RESET、中断信号IRQ3、地址允许线AEN。在PC104总线的接口电路部分遵循一个原则:就是输出加锁存, 输入加缓冲驱动。该接口电路示意如图5所示, 首先地址线的A3~A9位与外部波段开关设置地址及AEN信号通过译码电路中的比较器进行比较, 若相同, 则说明该模块被选中, 然后根据A0~A2的译码结果, 结合读写信号线产生输出锁存器74HC273及输入缓冲器74HC244的脉冲信号或使能信号, 完成对数字频率计及外部电路的读写及控制。在总线工作方式上采用中断方式。设计中, 将计数器的实际计数结束信号EEND作为总线的中断触发信号IRQ3, 以此来提高PC104总线的工作效率。该接口逻辑的仿真结果如图6所示。

从仿真结果可以看出, 接口逻辑可以很好地控制外部继电器的接通, 产生清零及定时脉冲, 并能正确地读取数字频率计的计数结果, 实现模块预定的功能。该接口逻辑已在实验中得到了验证。

3.3 PC104应用程序设计

在调试该模件时系统采用Windows Me操作系统, 编译环境采用TC 3.0。主程序包括系统初始化、中断初始化、接通继电器及产生清零和定时脉冲模块。在中断服务程序中主要完成了读取计数值、计算频率值及显示打印功能。它的程序流程图如图7所示, 在此不再列出具体代码列。

4 实验结果

实验采用的方法是将板载的20 MHz的晶振在CPLD内部分别进行2分频和20分频, 得到10 MHz和1 MHz的信号, 然后再将这两个频率信号分别进行2, 4, 6, 8分频, 得到共9个被测信号, 闸门时间为1 s, 测试结果如表1所示。

由测试结果可以看出, 模件的测频精度较高, 完全能够满足一般性测试系统的需要。

5 结 语

采用多周期同步测频技术设计并实现了基于PC104总线和CPLD的测频模件。给出硬件设计原理图和数字频率计的VHDL程序源代码, PC104总线的接口逻辑电路, 最后得出仿真结果, 编制了PC104总线应用程序。实际应用表明, 该模件精度高, 稳定性好, 能够很好地完成对频率量测试的任务。

摘要:根据某测试系统的需要, 设计基于PC104总线和CPLD的高精度测频模件, 采用多周期同步测频法实现对所测频段的等精度测量。设计了该测频模件的硬件电路, 并给出用CPLD实现数字频率计的详细VHDL源代码。采用原理图的方式编写PC104总线的接口逻辑, 并利用Max+PlusⅡ软件进行仿真。结果显示频率计及接口逻辑均可正确工作。实际应用表明, 该测频模件具有精度高, 可靠、稳定等优点。

关键词:PC104,CPLD,多周期同步测频,VHDL

参考文献

[1]黄家彬, 訾向勇, 刘爱兰.基于PC104的脉冲信号的产生及测量方法[J].国外电子测量技术, 2004 (6) :23-25.

[2]魏钟记, 刘峰, 汪铭东.数字测频方法及实现[J].电子测量技术, 2006 (4) :28-29.

[3]王宏利, 程旭德, 徐兵, 等.基于AT89C51的智能测频仪设计[J].计算机测量与控制, 2007, 15 (3) :410-412.

[4]章军, 张平, 于刚.多周期同步测频测量精度的提高[J].电测与仪表, 2003 (6) :16-17.

[5]柳义利, 周渭, 刘海霞.一种高速连续频率测量方法[J].2000 (1) :32-33.

[6]董婧, 陈昊.基于嵌入式微处理器和FPGA的高精度测频设计[J].现代电子技术, 2007, 30 (20) :160-162.

[7]刑建平, 曾繁泰.VHDL程序设计教程[M].北京:清华大学出版社, 2005.

[8]雷伏容.VHDL电路设计[M].北京:清华大学出版社, 2006.

[9]张亦华, 延明.数字电路EDA入门VHDL程序实例集[M].北京:北京邮电大学出版社, 2003.

PC总线 第5篇

PC104总线是一种专门为嵌入式控制而定义的工业控制总线,它秉承了IBM-PC开放式总线结构的优点,与IBM-PC完全兼容,同时可满足嵌入式控制的特殊要求:体积小、功耗低、可靠性高、编程调试方便,并采用模块化结构,总线易于扩充,紧固堆栈方式安装,因此在控制和检测领域得到了广泛应用[1]。多轴运动控制卡广泛应用于开放式数控系统、机器人控制等工业自动化装备,但常用的运动控制卡多以DSP为核心,不仅开发周期长,而且需与工业PC配合使用,应用成本较高。而采用嵌入式工控机PC104+运动控制接口卡的形式,则可很好地满足小型便携式设备的运动控制应用需求,不仅成本低、便于开发,应用也更灵活。但PC104模块的小尺寸给接口卡的设计带来了一定的困难。为此以现场可编程门阵列FPGA为核心,通过软件编程实现其与PC104主机的总线接口以及与外部多轴运动控制、开关量控制等功能接口,显著减少了接口器件、节省了硬件布线空间,并且使接口卡的性能更稳定,抗干扰能力更强。

1 运动控制接口卡总体设计

根据对常用运动控制卡的功能需求分析,拟定了运动控制接口卡的总体框图如图1所示。实线框内为接口卡内部电路,它由核心器件FPGA和一些必要的外围电路组成。其中,FPGA采用Altera公司的Cyclone系列FPGA——EP1C6Q240C8,其工作电压为3.3V,内核电压1.5V,采用0.13μm工艺制造,内部有锁相环、RAM块,逻辑容量有5980个逻辑单元,支持多种I/O标准和低成本串行配置器件,可很好地满足本接口卡的应用需求。

主机通过PC104总线向接口卡发出动作指令,地址译码模块对总线地址进行译码,为FPGA内部其他模块的寄存器分配地址。本卡的运动控制指令采用脉冲形式输出,可直接应用于步进电机和伺服电机的运动控制。各轴的运动控制脉冲信号由FPGA内部的DDA精插补器产生。DDA精插补器根据PC104主机发送来的各控制轴粗插补指令,产生相应的方向控制和均匀的位移脉冲输出。各运动轴的位置编码器反馈信号经差分接收转换为单端信号后被送入FPGA内部的编码器接口模块,进行四倍频、鉴向,并产生计数脉冲和方向信号给可逆计数器进行计数,计数结果存于位置寄存器中,供PC104读取。考虑到实际应用需求和可扩展性,本卡共设计了24路数字量输入通道和24路数字量输出通道,输入通道可根据用户具体要求来定义其用途,如作为控制轴位置传感器接口,用于原点、限位等,而输出通道则可以用于一些外部设备的启停控制等。

2 功能模块的FPGA内部实现

本运动控制接口卡的主要功能完全由FPGA通过内部逻辑实现。下面按功能模块分别介绍其实现方法。

2.1PC104总线接口模块设计

PC104主板与本接口卡组成应用系统时,首先要为该卡设置与主板内的其他设备不相冲突的I/O地址。PC104的标准规定,外设的操作地址线为A[9:0]。把PC104地址线的A0~A9,IOCS16,IOR和IOW连接到FPGA,A0~A9为PC104的低10位地址总线,IOCS16为IO空间16位操作信号线,IOR,IOW分别为系统总线的读、写选择信号线。A0~A9,IOR相与产生了FPGA内部其他各功能模块状态寄存器的片选信号,供PC104读取;A0~A9,IOW相与产生了FPGA内部其他各功能模块数据锁存器的片选信号,供PC104写入。由于接口卡只用到了PC104总线的16位方式,没有用到它的8位总线方式,使得PC104在访问该卡上的任何资源时,IOCS16必须一直保持为低,否则将得不到其高8位数据[2,3]。图2是PC104总线接口模块框图。

2.2 数控精插补器模块设计

为使本接口卡能够方便地应用于步进电机和伺服电机的运动控制,接口卡的运动控制指令采用脉冲形式输出。为保证其运动控制的实时性,应用系统的轨迹插补采用PC104粗插补加FPGA精插补的两级插补方法。PC104经过粗插补,得到各个运动轴在一个插补周期的位移增量指令,并传送给接口卡。经过FPGA精插补,把各轴位移增量指令转化为相应轴的方向控制信号和均匀的位移脉冲输出,粗插补与精插补同步进行,这样一方面减轻了PC104的负担,另一方面发挥了FPGA的并行处理能力,保证了输出脉冲均匀性,提高了运动控制的实时性和平稳性。

精插补模块主要由时序发生电路、DDA积分器电路等子模块组成。

2.2.1时序发生电路设计

整个精插补电路必须在时钟信号的严格控制下运行才能保证准确产生和输出进给脉冲。如图3所示,此电路的主要功能是将FPGA时钟引脚输入的30MHz时钟信号经过分频后送给DDA积分器电路,作为DDA积分器的累加控制时钟。该模块还包括终点判别计数器,其对累加时钟进行计数。当计数值为2n(n为被积函数寄存器位数,见下文)时,其向DDA积分器发停止信号,停止本次插补并加载下一个周期的精插补数据,并产生中断信号发给PC104,申请新的插补数据。

2.2.2DDA积分器电路设计

本模块的结构如图4所示。为保证各轴运动控制的连续性,减少对主机的实时性要求,在精插补脉冲转换模块中设计了一个缓冲器,用于在进行本次精插补运算时,存储PC104发送来的下一次插补数据,以便本次插补停止信号的触发下及时将保存在缓存器中的新插补数据立即送入DDA积分器,进行精插补,确保两次插补之间的连续性。

现以x轴精插补为例,讨论DDA插补器的基本原理。x被积函数寄存器JVX存放x向终点坐标xe,x积分累加器为JRX。另外还有一个终点判别计数器JL作为长度计数器。每当脉冲源发出1个插补迭代脉冲时,xe向其积分累加器中累加一次,当累加果超出积分累加器容量(2n)时,就溢出1个进给脉冲Δx。经过N=2n次累加后,溢出脉冲总数就等于被积函数值xe。终点判别计数器JL初始值为0,插补运行时将对插补迭代脉冲计数,当JL=N=2n时,则发出停止信号,说明到达了终点[4]。对于多轴联动,只要同时设计若干个积分器就可实现多轴联动的精插补运算。图5为最终完成的精插补模块时序仿真图。

2.3 编码器接口模块设计

此信号处理电路由四倍频及鉴向电路、可逆计数器以及位置寄存器等组成。旋转编码器输出的差分信号经26LS32转换为单端信号后被送入四倍频及辨向电路。四倍频及辨向电路产生的计数脉冲和方向信号给可逆计数器进行计数,计数结果由位置寄存器存储,供PC104读取。

旋转编码器典型输出为两个相位差为90°的方波信号A, B以及零位脉冲信号Z。对A, B两相信号的脉冲计数可得轴的转角;判断它们之间的相位关系可得转向,即当A相超前B相90°时,旋转编码器正转,当B相超前A相90°时,旋转编码器反转。如果能够将A或B信号四倍频,则角位移测量精度将提高4倍[5]。图6为设计的四倍频细分及鉴向电路原理图。

2.4I/O接口模块设计

本接口卡提供了24路数字量输入和24路数字量输出,供用户扩展使用。所有I/O数字量都用TLP521光耦进行了光电隔离,以有效抑制尖脉冲和各种噪声干扰,提高过程通道的信噪比[7]。

当需要输入外部开关量信号时,由PC104将输入开关量寄存器的地址、读控制信号、命令信号发送给FPGA,FPGA译码后将外部输入开关量输入至指定寄存器,并将其中的数据送到PC104数据线上,供PC104读取。当要输出设定的开关量状态时,PC104就将输出开关量寄存器的地址、写控制信号、命令信号发送给FPGA,FPGA译码后将PC104数据线上的数据保存到输出开关量寄存器里,从而控制开关量的断开或闭合。

3 结束语

介绍了一种可用于多轴闭环运动控制的PC104接口卡,它能够以脉冲加方向的信号形式输出多轴运动控制指令,便于直接应用于步进电机、伺服电机的运动控制,并能对增量式光电编码器等位置传感器输出的正交编码脉冲进行反馈检测,实现闭环运动控制,同时还设计了24路数字量输入和24路数字量输出,供用户扩展使用。由于整个接口卡以FPGA器件为核心,将多个接口模块集成于其中,硬件结构十分简洁,可靠性高,抗干扰能力强;而且与主机接口符合PC104的总线标准,可作为标准的运动控制接口模块使用。

参考文献

[1]PC/104 Specification Version2.4-August[Z].2001:5-7.

[2]Advantech Corporation.PCM-3350[Z].UserManual,2004.

[3]王友权.基于EPF10K30的ISA接口设计[J].现代电子技术,2004(24):64-68.

[4]陈蔚芳.机床数控技术及应用[M].北京:科学出版社,2005.

[5]顾越州.增量式编码器的接口设计[J].机电工程,1997(4):33-34.

[6]杨恒.FPGA/CPLD最新实用技术指南[M].北京:清华大学出版社,2005.

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

【PC总线】相关文章:

PC/104总线及其在数据采集中的应用02-09

信息总线05-07

软件总线07-16

仪表总线07-30

高速总线08-18

总线控制08-29

数据交换总线06-16

总线网络设计06-21

PROFIBUS总线08-01

高速智能总线08-02

上一篇:高中理综论文下一篇:子宫纵隔手术