产品 求购 供应 文章 问题

0431-81702023
LED
LED 显示屏高速数据通讯接口设计

摘要 :本文阐述了利用 CYPRESS 公司 EZ - USB FX2 系列 USB2. 0 集成芯片 CY7C68013 的高速 Slave FIFO 通用外部接口来实现 PC机和 LED 点阵显示屏间数据通讯的设计方案 , 给出了其接口电路的 硬件原理及底层软件的设计过程。

关键词 :USB2. 0 ; CY7C68013 ; FIFO ; LED 显示

1 引言

LED 显示屏具有亮度高 ,故障低、能耗少、使用 寿命长、显示内容多样、显示方式丰富等优点 ,可广 泛用于公路、金融、证券、车站、码头、体育场馆等公 共场合 ,其显示数据通常来自上位 PC ,这就要求 有一个高速通道来传输大量的显示数据 , USB2. 0 接 口无疑是一个很好的解决方案。

USB 由总线提供电源 , 传输时具有 CRC 检错、 纠错能力 , 能实现真正的实时热插拔 , 并支持多个 外设连接到同一个连接器上 , 从而缓解 PC 系统资 源冲突 , 这些突出的优点使得 USB1. x PC机外部 设备上得到了广泛的应用 , USB2. 0 传输速度高达 480Mb/ s , USB1. x 40 , 并向下兼容 USB1. x。 这样就使得快速大量的数据传输得以实现。

在此强调一下两个下文将要用到的概念: IN 端 点和 OUT端点。此处的 INOUT都是相对于上位 PC 机而言 , IN端点指用来接收上位 PC机数据的端点 , OUT端点则是往 PC机发送数据的端点。

2 CY7C68013 简述

带高速 Slave FIFO 通用外部接口的 CY7C68013 CYPRESS 公司推出的 USB2. 0 集成微处理芯片 , 片上集成了 USB 收发器 (SIE) 、增强型 8051 单片机 (其指令系统与普通 8051 单片机完全兼容) 8k 程 序存储区 , 共有 4 个支持 USB2. 0 高速传输的端点 (2 IN 端点和 2 OUT端点) 4kB 片内 RAM, RAM 可配置为 4 端点的 FIFO ,其中 2 端点可以配置为双、三、四缓冲区 ( FIFO) , 一个端点最大可配置为 2kB FIFO ,更重要的是 , 该芯片提供了两个用于实现 USB2. 0 高速传输的可 编程外部设备接口以及 Slave FIFO GPIF , 2 个 通用外部接口可通过与 4 端点协调工作来实 现 USB2. 0 的高速传输 , 本文只讨论 Slave FIFO 可编 程外部设备接口的应用。

CY7C68013 56pin100pin128pin 三种封装 ,其 中 56pin 已具备所有 USB2. 0 功能 , 100pin 则在 56pin 基础上增加了更多 I/ O 和更多 GPIF模式下的 控制信号 , 128pin 又在 100pin 基础上增加了用于扩 充数据存储区的地址总线和数据总线。本应用就是 基于可编程外部设备接口 Slave FIFO ,大量数据传输 可直接由 FPGA 处理而无需扩充外部数据存储区 , 在此选择最经济的 56pin CY7C68013 即可满足设计 要求 , 其体系结构如图 1 所示。

3 Slave FIFO简介

CY7C68013 虽然可以用内置增强型 8051 单片 机直接处理 USB2. 0 数据 , 但这样会受到单片机速 度的限制而无法实现 USB2. 0 的高速传输。通常为 了解决这一矛盾 , 可使 CY7C68013 的片上增强型 8051 单片机仅用于辅助处理 USB 设备请求和设备 列举以及协调内部端点和外部数据处理设备 ( FPGA , ASIC , DSP , IDE ) 的工作 ,这样 USB 数 据流就可绕过慢速的 8051 单片机而直接从端 点 FIFO 进入快速外部主设备或从外部主设备进入端点 FIFO , 以实现 USB2. 0 高速传输 。由于 CY7C68013“端点 FIFO 的读写是受外部数据处理 设备控制的 ,所以这些 FIFO 称为 Slave FIFO ,上述这 种实现 USB2. 0 高速传输的模式称为 Slave FIFO 模 式。

4 CY7C68013 固件程序设计

为方便应用开发 , CYPRESS 公司为 CY7C68013 所属的 EZ - USB FX2 系列提供了免费下载的 Keil C 环境下的 USB 固件库 , 以及 C51 编写的固件构架程 序和一些典型应用的范例程序 , 这使得开发者只需 理解 USB 数据传输原理 , 而不用钻入艰深的 USB 底 层协议就可完成开发 ,从而大大缩短开发时间 ,以便 把更多的精力放在外部接口设计上。

下面仅就固件程序设计进行论述 , 整个固件应 用程序通常包含 3 个程序文件 :

DSCR. A5 ———设备描述符表文件 , 该文件详细 记录了 USB 外围设备的相关信息 , 这里需要注意的 是设备描述符和端点描述符 。设备描述符给出了 USB 的一般信息 , 其中 VID/ PID 码十分重要 , 上位 PC 机根据这个码值才能正确加载 USB 应用设备驱 动程序。至于端点描述符 , 每个端点都有 , 上位 PC 机根据端点描述符的内容来决定每个端点的带宽要求。本设计用 1 端点 EP2 来接收上位 PC机的显示数据 ; 另用一个端点 EP1 来处理上位机和通讯接口间开发者自定义 的通讯协议 , 以使上位机可以在需要的时候 查询已被传送的显示数据的接收状况 , 从而 进一步保证显示数据的有序传输。

FW. C ———固件构架程序。该固件构架 程序主要用于实现 USB 设备列举的诸多控 制传输和 USB 总线协议的相关工作 , 完成了 USB 与 外部兼容设备所需的基本功能。该程序的核心函数 void SetupCommand(void) 称作设备请求剖析器 ,用于 处理上位 PC 机发送的标准 USB 设备请求以实现 USB 设置命令。

APP. C ———开发者在相关范例应用程序的基础 上通过修改或增加一些应用程序段而形成的面向实 际的应用程序。本应用中主要修改了 Slave FIFO 的 操作方式以使 Slave FIFO 接收数据的速度能够达到 最大值 ,所采用的设置方法如下:

通过寄存器 EP2CFG可将 EP2 设置为 OUT端 点。当需要首先考虑数据准确性时 , 可将该端点传 输模式设置为批量传输 , 其最大包长为 512 字节 , 4 缓冲区( FIFO) 。而当需要传输视频数据时 ,可将该端 点的传输模式设置为同步传输 , 最大包长 1024 字 节 ,双缓冲区( FIFO)

通过寄存器 EP2FIFOCFG设置下面的内容 : 端点 EP2 设置为 16 位操作模式(一次可以操作 2 个字节) 以与 FD 16 位宽度总线匹配 ; 再设置该 OUT端点为 AUTOOUT模式 , 这样来自上位 PC机的 数据就可以不通过 CY7C68013 上的 8051 单片机 ,而 是自动地填充相应的端点 FIFO

通过寄存器 IFCONFIG设置这样的工作模式 : CY7C68013 产生 48MHz IFCLK时钟 , 将该时钟作为 片上 SlaveFIFO 与外部主设备的工作时钟;数据的接 收与发送设置为同步读写方式 , 这样在每个 IFCLK 时钟的上升沿就可以读写 2 个字节 , 从而使数据读 写速度可以达到 96MHz byte/ s

本设计只使用了 EP2 这个端点 ,而且 已将 其配置为 AUTOOUT操作模式。因此 , CY7C68013 可 绕过片上 8051 而自动将 USB 数据接收到 EP2 FI2 FO 中。

需要增加的程序段是 CY7C68013 片内 8051 单 片机根据上位机查询回应当前数据接收状况 , 这个程序段和普通的 8051 单片机 232 串口通讯程序类 似 , 不同的只是原来的 232 串行口中断被 EP1 IN EP1 OUT这两个 USB2. 0 中断所替换 , EP1 OUT端 点收到上位 PC 机发来的数据时 , 将产生 EP1 OUT 中断来处理接收到的数据; 同样当 CY7C68013 片内 8051 欲发往上位 PC机的数据已通过 EP1 IN 发送完 毕时 , 也会产生 EP1 IN 中断以使片内 8051 可以在 该端点放入新的发送数据。

5 硬件设计

2 所示是 FPGA CY7C68013 的连接图 , 除 将 IFCLK作为 FPGA 输入时钟外 ,其它信号均在 FP2 GA CY7C68013 之间互连 。由于 FPGA 片内 RAM 很小 , 本系统还使用了一片 128k ×8 的高速静态 RAM(型号为 IS63LV1024 , 读写周期为 15ns) 作为数 据暂存器。FPGA CY7C68013RAMVT6103 的硬件 连接见图 2

USB 收到的来自上位 PC 机数据最终将被远 端安装在 LED 显示屏屏体内的显示控制部件中 , RAM 被填入预定数量的显示数据时 , FPGA 会从 RAM中连续取出数据并送到与 VT6103 连接的 4 位 数据输出端口 , VT6103 收到 4 位数据后 , 其内部会 自动按照 IEEE802. 3 规范对该数据进行 4B5B(转换 4 位数据数据码为 5 位数据码) 重新编码 ,然后将 5B 码送扰频器 ,再经片内整形后输出给以太网变压器 , 以驱动五类双绞线并将数据传给远端显示控制部 件。

6 软件设计

本系统的外部主设备接口逻辑采用 VHDL 硬件 描述语言 ,利用 ALTERA 公司 QUARTUS II开发平台进行设计。软件设计是以 FPGA 为核心的 ,主要由下 面 3 个并行执行的部分组成 , 在此每个部分分别设 计为一个 VHDL 进程(process) :

进程 1 : 外部主设备 FPGA 同步读写 CY7C68013 “端点 FIFO 的时序逻辑 , 并把接收到的数据存 入 FPGA FIFO 中。这部分只需要根据 Slave FIFO 读 写时序进行设计 ,Slave FIFO 时序图如图 3 所示。

这里需要引起注意的是两个建立时间: 其一是 tOEon , 这个建立时间是从 SLOE拉低到 Slave FIFO 数 据有效。其二是 tSRD ,即从 SLRD 信号拉低到第 1 个 同步读时钟上升沿的时间。这两个建立时间应大于 等于 CY7C68013 数据手册规定的时间。由于该 FPGA 59904 bit 的片上 RAM, 这里使用其中 4k byte RAM来生成 FIFO 结构 ,这样从 Slave FIFO 同步接收 到的 USB 数据就可以直接存入 FPGA 片上的 4k FI2 FO 中。图 4 是此进程的设计流程图。

进程 2 : 用于完成将 FPGA FIFO 中数据写入 128kB RAM的设计。只要 FPGA FIFO 中有数据 , 则该进程启动 , FPGA 会连续地把片内 FIFO 中取出 的 数 据 存 入 片 外 128kB 的 高 速 静 态 RAM ( IS63LV1024) , 这个片外的 128kB RAM分为两个 64kB ,两个区轮流接收来自 FPGA 片内 FIFO 的数据 , 当一个区接收完规定的显示数据后 , FPGA 会置 位 send data flag去启动进程 3 ,如果 FPGA 片内 FIFO 中还有数据 , FPGA 会把 RAM切换到另一个区继 续接收片内 FIFO 中的数据 ,其设计流程图如图 5 所 示。

进程 3 : 此进程由 send data flag信号启动 , 当发 送数据标志被置位时 , 此进程启动。此后 , FPGA 开 始从已完成显示数据接收的 RAM区读取数据并送 到 4 位宽度的数据输出口 , 此输出口与 VT6103 相 连。VT6103 25MHz 时钟每次接收半个字节(4bit) , 然后经片内 4B5B 编码、整形后将数据由差分输出口TX + TX - 串行输出 , 以把数据从 USB2. 0 接口模 块发给外部的显示处理模块。其设计流程图如图 6 所示。

其中 , VT6103 接收显示数据时序如图 7 所示。 每次接收 4bit , 芯片内部都将自动对每次接收到 的 4bit 数据进行处理并以 100MHz 的时钟频率串行 差分输出给以太网变压器。