基于FPGA的DisplayPort设计与实现
扫描二维码
随时随地手机看文章
数家业界主要的平板电视及显示技术公司纷纷宣布推出高清 3D 电视和令人惊艳的4K x 2K LCD 显示器,从而可将用户家中、车内或移动设备上的电视、显示器以及其他电子设备之间需要交换的数据量显著提升至前所未有的水平。在这些最新的电视上,体育迷们可以欢欣鼓舞地体验到众多优异性能,如 176 度的超广视界、1,200:1 的超高对比度以及 450尼特的亮度——足以使最阴暗的洞穴通透明亮。
不过, 对于开发这些电视或连接至这些电视的电子产品的设计工程师来说,所有这些最新特性都意味着需要非常高的带宽。例如,一部具备 800 万像素的四声道 4Kx2K 高清电视(可为家庭提供数字影院效果)需要的带宽是当前顶级电视和显示器在理想工作状态下所需带宽的四倍,这意味着在机顶盒与高清电视之间存在巨大的数据吞吐量。
这种对更高带宽的需求并不单单来自消费产品市场,为了满足 MRI 和 CT扫描、命令与控制、菊花链显示、电子公告牌与 DNA 3D渲染、航空器、天气以及人体构造等众多应用领域的显示需要,广播设备、数字显示、科研以及医疗市场也在不断加大对带宽的要求。
为了在控制成本的同时还能有助于满足这种带宽需求,视频电子标准协会 (Video Electronics Standards Association) 于 2007 年向市场推出了DisplayPort,并随后积极与合作伙伴展开合作,对 DisplayPort 进行优化。如今,VESA DisplayPort 1.1a 已能够在单根线缆内支持多达 4 个通道且每通道最高 2.7Gbps 的数据率,而 DisplayPort1.2 又将支持的数据数率翻了一番,达到5.4Gbps(足以在单显示器应用中支持3,840 x 2,400 像素 (60Hz),或 4 台显示器应用中的 1,920x1,200 像素,或 2,560x 1,600 像素的 3D 显示 (120Hz))。DisplayPort 可同时支持两种嵌入式显示,如笔记本电脑的显示器,以及视频“源端”设备(机顶盒、DVD 播放机、PC 图形卡以及笔记本电脑)和独立显示设备(HDMI 与 DisplayPort 标准文档中所称的“宿端”设备)之间的盒至盒连接 (box-to-box connection)。
图1 TED Spartan-6 FPGA 消费类视频套件
一些芯片制造商已针对上述应用推出了现成的标准发送器和接收机,而赛灵思推出了名为 Xilinx LogiCORETM DisplayPort v1.1(v1.2 将在 IDS 12.1中配套提供) 的灵活可编程 VESA DisplayPort v.1.1a 解决方案。该 IP 可随时提供给赛灵思的客户,但在用户展开设计之前,建议先了解与该标准的部分关键功能有关的其它背景信息,如Policy Maker,以及如何使用我们即将推出的 XAPP“使用 MicroBlazeTM 嵌入式系统实施 DisplayPort Source PolicyMaker 控制系统参考设计”在东京电子设备 (TED) 提供的 Spartan-6 消费类视频套件上完成实施工作。
Policy Maker — 关键性差异
对于显示市场来说,DisplayPort协议标志着连接技术的重大变革。这次转型的意义不亚于在 Intel 主导的 PC 市场上从并行 PCI 总线升级至串行 PCI Express。在显示市场上,VESA 通过DisplayPort 引领着从 VGA、DVI 以及HDMI 等协议成功升级至高速串行收发器、基于包的层架构协议。与并行协议不同,串行分组协议在实现和维持连接或链路方面要多一层复杂性。在 VESA DisplayPort 1.1a 规范中,控制功能被划分为 Link Policy Maker 和 Stream Policy Maker。Link Policy Maker 可管理链路,并负责保持链路同步。其任务包括发现链路、对链路进行初始化和维护。Stream Policy Maker 可管理传输初始化,并通过底层硬件对行动序列施加控制来维护同步流。
Policy Maker 的上述要素需根据特定的实施来决定,而且可在操作系统、软件驱动程序、固件或者 FPGA 逻辑中进行配置。为简化使用,许多商用DisplayPort IC 将 Link 和 Stream PolicyMaker 对设计人员隐藏。如果用户的显示要求恰与套装的 DisplayPort ASSP相匹配,则其价格和易用性确实无可争辩。但是,想要让产品在竞争中脱颖而出的设计人员则倾向于采用 FPGA。
图2 DisplayPort Source Policy Maker Controller System Reference Design 与 LogiCORE 源端高层结构图
Source Policy Maker参考设计
DisplayPort Source Policy Maker控制系统参考设计采用MicroBlaze嵌入式系统来实施与商用套装 DisplayPort 芯片类似的功能,且具备可进行源代码定制的额外优势。通过使用 Source Policy Maker Controller System Reference Design 的应用手册,用户不必对 Policy Maker 进行详细了解即可顺利启动设计工作,仅需简单地将范例设计连接起来。
除了上述源代码设计之外,DisplayPort 的传输 (Tx) 或源端内核也配套提供了用于实现有限状态机 (FSM)控制器的额外范例设计。
DisplayPort Tx FSM 控制器范例设计(其顶级文件名为 dport_tx_fsm_cntrl)配套提供 DisplayPort LogiCORE 源端设计范例。该款简单的概念验证设计内含基于 RTL 的有限状态机,以实施可演示正确启动流程的简单Policy Maker。与其他范例设计相比,dport_tx_fsm_cntrl 设计范例的优势在于可以显著缩短仿真时间。
Source Policy Maker 控制系统参考设计采用拟将于 5 月下旬推出的MicroBlaze 嵌入式系统 XAPP,其顶级ISE 项目名称为“dport_source_ref_design.xise”(您可以通过访问 http://www.xilinx.com/products/ipcenter/EF-DI-DISPLAYPORT.htm 快速查找到)。该设计使用户能够根据自己的需要对 Source Policy Maker Controller的源代码进行修改。此外,其还能够与 DisplayPort LogicCORE v1.2 (IDS12.1) 版和 Spartan-6 TED 消费类视频套件协同运行。
上述两种范例设计都包含了可实现内核设置及链路和流维护的基本流程。请注意,TED Spartan-6 消费类视频套件没有提供 DisplayPort 线缆。
功能概述
源端、宿端/ 视频规范都会采用 Policy Maker,但在 DisplayPortLogiCORE 中,赛灵思对它们进行了差别实施。与源(发送)端的 Policy Maker 功能相比, 宿( 接收) 端的Policy Maker 功能要简单得多。赛灵思LogiCORE 在 LogiCORE 内实施了大部分宿端 Policy Maker 功能。基于 RTL的宿端控制器可提供剩余部分的功能。由于源端 Policy Maker 的功能复杂得多,因而可采用源代码参考设计的方式提供。
让我们来深入了解源端Policy Maker,其使设计人员能够最大限度地提高功能灵活性与实施灵活性。顶级范例设计包含内核的两个高级组件示例:XAPP 使用 MicroBlaze 嵌入式系统实施 DisplayPort Source Policy Maker 控制系统参考设计;以及 DisplayPort 内核源端(发送)设计。赛灵思将内核的实施分成原子链路功能,分别称为主链路 (Main Link)、二级通道 (Secondary Channel) 以及 AUX 通道协议。主链路可实现主视频流的交付。二级通道可在消隐期内将音频信息的交付集成到主链路中。赛灵思将在未来发布的内核中提供二级通道。同时,AUX 通道可为宿端通信通道建立专用源端(参见图 2)。
赛灵思为用户数据接口新增了线路缓存器,使用户能够在 FPGA(参见图 2、3 和 4)中便捷实施范例设计。图 3 中宿端的 Policy Maker 与 Device Controller 都是 CORE GeneratorTM 所提供宿端设计范例的组成部分。
MicroBlaze 处理器发挥核心作用
赛灵思推出的 Source Policy Maker Controller 可与内核配合使用,这样其功能在很大程度上和 ASSP DisplayPort源端设备一样。我们建议您使用MicroBlaze 嵌入式或外部处理器来正确初始化和维持该链路。XAPP 包含的Policy Maker Reference Design 预配置版本在 FPGA 内的 MicroBlaze 处理器中实施,可帮助用户立刻将设计方案转换成硬件。正式供货时的参考设计将包含设计人员可以修改的源代码。
Source Policy Maker Controller设计的“逻辑”部分位于 MicroBlaze处理器之上,并使用 I2C 命令来控制内核配合使用,控制器即可在 FPGA 外部实施(即在外部处理器中实施)。
设计人员可使用支持赛灵思Platform Studio (EDK) 的赛灵思嵌入式硬件设计套件或具有 SDK 的赛灵思嵌入式软件设计套件,对 XAPP 设计进行修改。通常情况下,FPGA 设计人员使用 EDK,而软件开发人员则使用SDK。
EDK 流会生成一个中间网络文件 (NGC),您可以在实施设计之前,将其整合在项级 ISE 项目中。NGC文件包含构成 BRAM 初始化一部分的MicroBlaze 代码。
如果用户修改过软件,EDK 流通常会占用较长的时间。不过,用户一旦生成了网络列表,就不再需要 EDK或者 SDK 了。SDK 流可修改 FPGA比特流,因此仅需更新 BRAM 中的MicroBlaze 代码内容。该 SDK 流能够为软件修改提供更快的转换时间,但在这种情况下,用户必须每生成一个比特流就使用一次 SDK。有关本专题的 XAPP 白皮书涵盖了如何使用赛灵思FPGA 嵌入式软件开发套件运行该设计的详尽说明。
该“入门指南”涵盖丰富信息,其中包括订购与许可、仿真、全系统硬件评估,以及技术支持等。此外,其还包含用户可用于生成范例设计的脚本文件,以及如何使用范例测试台与范例模式生成器进行仿真的说明。
用户可将该设计与从 TED Spartan-6FPGA 消费类视频套件中下载的完整版或评估版赛灵思DisplayPort LogiCORE以及 DisplayPort FPGA Mezzanine Card卡配合使用(http://www.xilinx.com/products/devkits/TB-6S-CVK.htm)。
源端的 Policy Maker 内含一个状态机,可通过 AMBA?APB 端口或采用AMBA 至 PLB 桥的 32 位 PLBv46 总线连接至处理器接口。赛灵思在 BlockRAM 中存储了用户可修改的指令集。赛灵思用来调训 (train) 该链路的 C++代码不但是采用 GNU C++ 编译器编译的,并且还在采用赛灵思 EDK PlatformStudio 处理器设计套件的 FPGA 内部实施的软 MicroBlaze 处理器上进行了全面测试。参考设计包含完整的赛灵思 SDK项目。范例测试台可将一个 135MHz的时钟连接至 VID 时钟,并将一个100MHz 的时钟连接至 APB 时钟。赛灵思对所有输入是否连接正确进行检查。此外,顶级模块还提供复位功能。
扩展显示识别
DisplayPort 一个特别重要的特性是,能够通过 VESA 的增强显示识别2010年 夏季刊37手把手课堂:FPGA 101数据 (EDID) 结构与不同的设备进行接口相连。EDID 并不是什么新事物。实际上多年以来设计人员一直在使用各种视频接口读取 EDID 的宿端设备参数,从而与设备进行接口连接。不过这些早期的 EDID 及相关接口 技术通常不包含高级可配置通信通道。如今借助 DisplayPort,VESA 为系统增添了智能性,不但能在源端(如机顶盒、DVD 播放器或 PC 图形卡)与宿端设备(如显示监控器)之间进行功能协调,而且还可优化通信参数。DisplayPort v1.1a 可协调的变量包括通道数量(1、2 或者 4)、每信道数据速率(1.62 或 2.7Gbps)、电压摆幅(0.2、0.6、0.8、1.2 V)、4 个级别的通道预加重以及链路时钟向下扩散。
由 CORE Generator 生成,并与LogiCORE 一道提供的接收宿端范例设计可提供范例 EDID(见图 3),以便满足 EDID 源端设备的读取需求,确保用户的最佳视觉体验。
图3 DisplayPort 接收高级方框图
宿端范例设计在 FPGA 内部的BRAM 中实施了 EDID 数据结构。DisplayPort 的源代码可通过 AUX 通道实现 I2C 协议。图 3 和图 4 显示了连接至源端的 DisplayPort 宿端的方框图。宿端的 Link 与 Stream Policy Maker属于宿端内核的组成部分,不过源端的 LinkPolicy Maker 具有更高的复杂性,将作为源代码随参考设计提供。EDID 通过I2C 接口与接受宿端进行接口连接。
I2C 协议非常适合针对 EDID 数据结构的连接,并常常用于这种类型的应用。I2C 控制器负责定位与管理在EDID 中发现的数据,并通过串行接口与 I2C 接口协议(通过 AUX 通道)将数据传输至宿端内核。在工作模式下,用户无需知晓 EDID 是否正被访问。用户可通过检测 I2C 总线来监控 ROM 的内容。在调试模式下,用户能够修改I2C 控制器,覆盖 EDID ROM 提供的 3位内容。I2C 提供控制信号,在与适当的开集输出相连时,可提供 I2C 主接口。
宿端内含名为“DisplayPort 配置数据(DPCD)”的数据结构,可以存储配置数据并作为宿端与源端都可读写的通信邮箱使用。源端一般使用跨 AUX 通道的 DPCD 内容(参见图 3 和图 4)。
Policy Maker 链路调训
在 DisplayPort 链路上建立通信的过程称为“链路调训”。在链路调训的过程中,内核在通信启动时将着力于最大限度降低错误的同时,优化链路速度与功耗。如果在数据传输中出现问题,内核将自动重复链路调训,以适应不断变化的条件。源端与宿端信息包之间的通信通过双向半双工 1Mbps AUX 通道进行。视频与音频数据通过主链路信道(1、2 或 4)进行传输,其是从源端到宿端的高速千兆位级收发器通道。
内核的链路调训工作分两步执行:时钟恢复、信道均衡;符号锁定(symbol lock)、信道间对准。步骤一,接收器的 PLL 锁定至进入的信号,并恢复链路时钟。步骤二,系统对通道均衡与信道间对准进行优化。
下面是源端与宿端的 PolicyMakers 的典型工作顺序:
1. Tx Link Policy Maker 可监控热拔插检测情况,如果检测到有热拔插,则向 Stream Source Policy Maker 发送通知。Stream Source Policy Maker 通过 AUC 通道读取宿端 EDID;
2. Tx Link Policy Maker 通过AUX 通道读取来自宿端的 DisplayPort配置数据。根据源端与宿端的功能配置情况,它可为宿端 DPCD 的链路配置字段编写配置参数,并通过写入到宿端 DPCD 的“TRAINING_PATTERN_SET”字节启动链路调训,随即对调训模式的发送进行初始化;
3. Tx Link Policy Maker 根据来自 Rx Link Policy Maker 的反馈,通过调节电压摆幅以及在必要时调节比特率,来控制时钟恢复顺序。一旦内核完成时钟恢复,链路调训就进入通道均衡阶段。在该阶段,如果调用 Rx LinkPolicy Maker,即对预加重进行调节。此外,接收器还将在本阶段完成符号锁定与信道间的对准;
4. 一旦内核通过链路调训( 即系统完成位锁定与符号锁定),就会在 DPCD 中予以提示。Tx Link PolicyMaker 可向 Tx Stream Policy Maker 报告调训状况,以在进行流属性数据传输的同时实现同步流。
Policy Maker 的附加功能
除了参与链路调训外,Tx Link Policy Maker 还可利用来自接收器的IRQ HPD 信号监控宿端事件通知,并可检查 DPCD 的链路状态字段,了解中断的原因。如果Tx Link Policy Maker检测到链路失去锁定,就必须重新训练链路。如果接收器调用,其还可重新配置链路,增加或者减少主链路信道数。
此外,Link Policy Maker 还可决定多个 AUX 请求事物处理的顺序,因为每个事物处理结束于另一个事物处理开始之前。由于宿端的答复可以是 NACK或者 DEFER,Policy Maker 必须决定针对这两种情况的后续工作。AUX 事物处理仅限于 16 字节的数据,因此Policy Maker 必须将较大的事务处理分成多个不超过 16 字节的事物处理。
由于 DisplayPort 能够协商和优化链路设置,因而能够在不断变动的条件下实现最佳结果。Link 与 Stream Policy Maker是进行流程协调的控制功能,能够实现现代高速视频与音频的传输。采用 MicroBlaze 嵌入式系统的赛灵思Source Policy Maker Controller 系统参考设计经过精心设计,可帮助您充分发挥这些全新功能的所有优势,向市场推出功能丰富的显示产品。赛灵思DisplayPort LogiCORE 可提供高度灵活的源端与宿端解决方案,具有可下载到TED Spartan-6 消费类视频套件中的范例 EDID 及源代码。免费提供该 IP 的评估版本。