新闻中心

EEPW首页>EDA/PCB>设计应用> 基于FPGA的PCI总线串口卡设计

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

作者: 时间:2010-10-18 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/191527.htm

1.1.1空间配置模块
协议支持3种地址空间:I/O空间、内存空间和配置空间。配置空间是所特有的一种空间,其大小为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的读写操作。

 状态机包括4个状态:空闲(idle)状态、配置读写(con)状态、存储器或I/O读写(rw)状态、传输中止(backoff)状态。系统复位后,状态机转入空闲状态,在空闲状态中采样总线,并根据总线的变化来决定状态机即将转入的状态。如果此时命令总线上是配置寄存器读写命令,判断PCI-irdy信号是否有效来决定下一可能的状态。如果信号无效,则状态机转入传输中止状态,然后返回空闲状态;如果信号有效,则状态机转入配置读写状态。如果此时命令总线上是存储器或者I/O的读写命令,则判断PCI-frame信号是否有效来决定下一可能的状态。如果信号无效,状态机转入传输中止状态,然后返回空闲状态;如果信号有效,状态机转入存储器或I/O读写状态。
1.2 UART模块
 PCI总线传输的是并行数据,而串口传输的是串行数据,要想实现PCI总线与串口的数据传输,必须通过UART完成数据的串并/并串转换。本文设计的基于的UART由4个模块组成:波特率发生器模块、寄存器控制模块、接收模块以及发送模块。UART的总体框图如图5所示。

1.2.1 波特率发生器模块
 波特率发生器实际上就是一个分频器,用来产生和串行通信所采用的波特率同步的时钟,这样才能按照串行通信的时序要求进行数据接收或发送[3]。本设计中UART收发的每一个数据宽度都是波特率发生器输出时钟周期的16倍,即假定当前按照9 600 b/s进行收发,那么波特率发生器输出的时钟频率应为9 600×16 Hz。
1.2.2 寄存器控制模块
 设计的UART包括:2个数据缓冲寄存器(接收、发送缓冲寄存器);2个状态寄存器(中断识别、线路状态寄存器);2个控制寄存器(中断使能、线路控制寄存器);2个移位寄存器(接收、发送移位寄存器)。寄存器控制模块完成除了移位寄存器外的所有寄存器的读写控制。
1.2.3 接收模块
 接收模块包括接收缓冲寄存器和接收移位寄存器。在接收数据开始时,为了能够准确地传输数据,先要清空接收缓冲寄存器和接收移位寄存器,然后接收移位寄存器等待检测数据的起始位。检测到有效的起始位后开始接收数据,同时启动接收数据计数器,统计接收数据的位数,直到接收到满足需求的数据位。如果需要奇偶校验,则产生校验位。最后接收停止位,完成1帧数据(起始位+数据位+奇偶校验位+停止位)的接收,将数据存入接收缓冲寄存器,进行下一帧数据的接收,并通知上位机读取数据。



关键词:FPGAPCI总线串口

评论


相关推荐

技术专区

关闭