注:
① 本应用笔记的 Demo 基于 QuartusII13.0 版本
② 本应用笔记适用于 28nm 器件,以 Cyclone5 为例来描述,其它系列器件大同小异,详细可以参考附录中的相关文档
ALTERA 28nm 器件在 Transceiver 的独立例化上和老器件对比,有了很大的变化。IP 例化工具 MegaWizard Plug-in Manager 中专门有一组 Transceiver PHY IP 用于实现 Transceiver的例化,如下图所示。
![58f433c215454bdd8f7a06dc8f767405.png](https://i-blog.csdnimg.cn/blog_migrate/caa0443ca95963fc1be6ed38a76eede6.jpeg)
重配置 IP(Transceiver Reconfiguration Controller)可以对这些 PHY IP(Custom PHY,Native PHY,Low Latency PHY,Deterministic Latency PHY)实现动态重配。动态重配包含很多方面,本应用笔记专门介绍重配置 IP 的 Streamer 模式,并以 CYCLONE5 为例,演示Streamer 模式实现 Custom PHY IP 的 Channel 和 PLL 动态重配置。
在进入正题之前,先介绍一下重配置 IP 例化时的几个重要参数的设置。第一个就是Interface Bundles,参见下图,包含两个选项:Number of reconfiguration interface 和 Optionalinterface grouping。Number of reconfiguration interface,顾名思义就是这个重配置 IP 一共有多少个重配置接口;Optional interface grouping 是对这些重配置接口进行分组。为什么还要对这些重配置接口进行分组呢?原因很简单,一个重配置 IP 可以对多个 PHY IP 实现动态重配,要配置多少个 PHY IP,就分多少组,每组的个数就是对应的 PHY IP 所需要的重配置接口数。分组的格式在 IP 例化界面已经给了说明:用逗号分割,如果只有一组就空缺,啥都不需要填。举个例子,重配置 IP 需要对三个 PHY IP 进行重配,分别需要 2,4,2 个重配置接口,那么 Number of reconfiguration interface 就填 8,Optional interface grouping 就填 2,4,2。做了个简单的测试,发现填2,4也没问题,原因是它会把剩下没分组的接口归为默认的一组,这也就是为啥只有一组时可以啥也不填了。
另外一个重要的参数就是 Reconfiguration Features,也包含两个选项:Enable channel/PLL reconfiguration 和 Enable PLL reconfiguration support block,第一个选项选中时,后一个选项默认会选中。本笔记是介绍重配置 IP 的 Steamer 模式,而该模式就是实现 Channel 和 PLL的动态重配置,所以没啥好说的,赶紧把 Enable channel/PLL reconfiguration 选中。
![142f3e85878f853a737b34fdfc35e10d.png](https://i-blog.csdnimg.cn/blog_migrate/746431489efec9c4405e84341423a791.jpeg)
插个题外话:如何知道例化的 PHY IP 需要多少个重配置接口呢?很简单,在例化 PHY IP时它会告诉你,如下图中红框已经醒目的圈出了。
![3955a918c15fe1e75d1f14e3cd9f36e1.png](https://i-blog.csdnimg.cn/blog_migrate/c8f8e1173797fcdb95e05daef1ab9c11.jpeg)
重配置 IP 和 PHY IP 的连接示意图如下所示,可以清楚的看到重配置 IP 有三个接口:
①重配置管理接口(Reconfiguration Management Interface)
②MIF 导入接口(MIF
Reconfiguration Interface)
③Transceiver 重配置接口(Transceiver Reconfiguration)。
它支持两类配置模式:Register Based 和 Streamer Based。两类模式不完全重叠,意思就是有的配置功能前者支持,有的配置功能后者支持,有的两者都支持,例如 Pre-CDR 和 Post-CDR 的环回模式只能由前者搞定,PLL 的速率和 Channel 的位宽只能由后者搞定,而 PMA 的设置两者都能搞定。前者操作简单不做过多啰嗦,后者是基于 mif 文件实现重配置,是本应用笔记讲述的重点。
![5f3ac2d1bb746b5f7752878bc7dfcf30.png](https://i-blog.csdnimg.cn/blog_migrate/3ffa60d673c3a41d8ce211386849b2fd.jpeg)
Streamer Based 在操作上分为两种:一种是通过 MIF 导入接口将 mif 文件自动导入,实现重配置;另一种是将 mif 文件的内容通过重配置管理接口直接写入,也称为 direct write模式。前者需要在 MIF 导入接口上挂接一个 ROM,该 ROM 存放 Channel 和 PLL 的 mif 文件。通过重配置管理接口操作流模式寄存器组(Streamer Module Registers)触发重配置,MIF 导入接口自动将 ROM 中的 mif 文件导入实现重配置。后者通过重配置管理接口操作流模式寄存器组,将 mif 文件中的寄存器配置内容直接写入到对应地址。
看到这里,估计你已经懵了,脑袋里产生很多疑问:流模式寄存器组是什么?该组有哪些寄存器?寄存器的含义是什么?具体怎么操作?mif文件是怎么产生的?格式又是怎么样的?direct write 模式要写些什么东西?V