基于FPGA的PCI总线串口卡设计

基于FPGA的PCI总线串口卡设计,第1张

  随着计算机测试技术的飞速发展,越来越多的外部设备通过串口与计算机进行通信,实现信息共享以及设备的集中控制和管理。利用串口进行通信具有结构简单、传输距离远、成本低廉等优点,被广泛应用于各个领域。同时,PCI(Peripheral CompONent Interconnect)总线是一种高性能32/64位局部总线,最大数据传输速率为132 Mb/s,可同时支持多组外设,数据吞吐量大,是目前应用最广泛、最流行的一种高速同步总线。因此,利用PCI总线实现上位机与外部设备的串口通信,可以提高通信能力。

  1系统硬件设计

  本设计中选用Altera公司的FPGA芯片EP1C6SQ240作为核心器件,完成PCI接口以及UART的设计,实现PCI总线与串口的连接。选用美信公司的MAX490芯片作为电平转换电路。系统的硬件连接框图如图1所示。

  基于FPGA的PCI总线串口卡设计,第2张

  数据传输过程:上位机通过PCI总线发送并行数据到UART的数据缓存器中,然后数据经UART的数据缓存器进入UART的移位寄存器进行并串转换后,通过串口传到下位机。反之,下位机通过串口将数据传送到UART的移位寄存器中,进行串并转换,然后进入UART的数据缓存器中,最后传到上位机。

  设计中采用,传输距离长、抗干扰能力强的RS422串口。但是规定RS422:逻辑1的电平为-6 V~-2 V;逻辑0的电平为+2 V~+6 V。而FPGA的I/O电平一般为0~3.3 V,二者之间的电平不兼容。为了使二者之间的供电电压保持一致,必须加入电平转换电路。为此选用美信公司的MAX490芯片来实现二者之间的电平转换,其电路原理图如图2所示。

  基于FPGA的PCI总线串口卡设计,第3张

  1.1 PCI总线接口

  PCI总线接口的功能是将一个不支持 PCI 协议的后端设备接口到PCI 总线上。为了实现PCI总线接口的基本功能,必须完成如下模块的设计:PCI空间配置模块、偶校验模块、地址译码和命令译码模块、设备状态机模块等。PCI总线接口原理框图如图3所示。

  基于FPGA的PCI总线串口卡设计,第4张

  1.1.1 PCI空间配置模块

  PCI协议支持3种地址空间:I/O空间、内存空间和配置空间。配置空间是PCI所特有的一种空间,其大小为256 B,前64 B是必需的,记录了PCI串口设备的基本信息。PCI设备的一些主要的信息如下:

  (1) VendorID、DeviceID:分别表示设备的生产厂商和设备编号。

  (2) Command:命令寄存器,包含设备控制位,包括允许存储器读写响应等。

  (3) STatus:状态寄存器,记录PCI总线的相关事件信息。

  (4) Base Adress Register:基地址寄存器,指示此PCI设备按I/O方式还是按内存方式进行读写以及需要的地址空间大小。

  (5) Interrupt Line、Interrupt Pin:为设备使用的中断号和中断引脚。

  1.1.2 偶校验模块

  PCI总线的偶校验用于检验数据传输是否正确。在PCI总线上,利用偶校验模块检查每次传输中主设备是否正确地寻址到目标设备,以及它们之间的数据是否正确地传输。

  1.1.3 地址译码和命令译码模块

  地址译码模块主要用于检测地址与此PCI串口设备的基地址是否匹配,如果匹配,则PCI串口设备响应当前的总线 *** 作。

  命令译码模块表示PCI串口设备响应不同的总线命令,通过检测PCI-cbe[3:0]信号线上的值,完成命令译码。

  1.1.4 设备状态机模块

  PCI总线接口电路是时序复杂的接口电路,它的复杂性由PCI总线 *** 作的多样性决定。根据PCI的总线 *** 作类型和总线 *** 作时序关系,在这里抽象出一种简洁明了,符合总线时序、更易于硬件描述语言实现的状态机。总线接口状态机示意图如图4所示。状态机的设计是整个设计的核心部分,利用该状态机可以完成配置寄存器、存储器、I/O的读写 *** 作。

  基于FPGA的PCI总线串口卡设计,第5张

  状态机包括4个状态:空闲(idle)状态、配置读写(con)状态、存储器或I/O读写(rw)状态、传输中止(backoff)状态。系统复位后,状态机转入空闲状态,在空闲状态中采样总线,并根据总线的变化来决定状态机即将转入的状态。如果此时命令总线上是配置寄存器读写命令,判断PCI-irdy信号是否有效来决定下一可能的状态。如果信号无效,则状态机转入传输中止状态,然后返回空闲状态;如果信号有效,则状态机转入配置读写状态。如果此时命令总线上是存储器或者I/O的读写命令,则判断PCI-frame信号是否有效来决定下一可能的状态。如果信号无效,状态机转入传输中止状态,然后返回空闲状态;如果信号有效,状态机转入存储器或I/O读写状态。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2484476.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存