tag 标签: gbits

相关博文
  • 热度 27
    2014-6-1 22:20
    6012 次阅读|
    5 个评论
    Altera Cyclone-V Gbits Transceiver 测试          对 FPGA 内嵌的 Gbits Transceiver 早有耳闻,此番拿到一块 Terasic 的 Cyclone V GX Starter Kit 正好可以玩上一把。          Cyclone V GX Starter Kit 介绍网址: http://www.altera.com.cn/products/devkits/altera/kit-terasic-cyclone-v-gx-starter.html          在 Terasic 的官网可以 download 到 CD-ROM 的随盘资料,获得方式也非常简单,只要注册其会员即可,无需提供任何 Terasic 产品的购买信息。我想 Terasic 的其他 kit 应该都是如此,大家不妨通过此途径搜罗一下希望获得的 Terasic 套件资料。          随盘资料下载地址: http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=EnglishCategoryNo=167No=830PartNo=4          比较让人遗憾的是,正巧这个 Cyclone V GX Starter Kit 的随盘资料中并不提供 Gbits Transceiver 的例程,这与 GX Starter 的称呼极不相称。好在 Altera 网站上一搜,一把的例程可供参考。          当然了,特权同学早就注意到 Quartus II 菜单下有个叫做 Transceiver Toolkit 的玩意,如图所示。不禁浮想联翩,这个 Toolkit 一定大有用处。            在 Quartus II Handbook 果然有详细介绍和说明。于是决定玩转 Transceiver 咱就从 Toolkit 开始吧。在 Altera 英文网站(注意,特权同学已经发现中文网站很不靠谱了,用一些关键词很难搜到有价值的信息,于是转战 E 网),搜索“ transceiver toolkit example design ”可以找到真正的 example 。比如,以下网页的第三条信息。 http://www.altera.com/support/examples/on-chip-debugging/on-chip-debugging.html?GSA_pos=5WT.oss_r=1WT.oss=transceiver%20toolkit%20example%20design            特权同学通过这种方式找到了一些关于 Transceiver 和 Toolkit 的 example 。只可惜,在这一大把的 example 中,还是没有 Cyclone V GX Starter Kit 可直接对应的例子。想想也是,如果 altera 提供了, terasic 应该不至于懒到不做 copy-paste 的工作。于是,咱还是决定自己动手,丰衣足食。从零开始,非也,咱可以找个最合适的 example 移植一下。那个 3.125G 的最接近,而且也是 Cyclone V 器件的。于是开始了一番改造工作。当然也遇到了不少麻烦事,不过好在咱都一一解决,从中也摸到这个 Transceiver 的脾性,也正好可以分享一下。            如图所示,移植工作也来得非常简单。除了改改器件、把顶层接口引脚定义重新分配一下基本就搞定了。这可不是,也费了好大劲才把 Quartus II 产生的各种 Error 一网打尽。          如图所示,器件重新选择 5CGXFC56F27C7 ,注意了,这一下恐怕就要让小伙伴们都惊呆了, Why ?只有 13.1 的 Quartus II 才支持这个新器件,咋办?让我们的老版本都见鬼去吧。先去睡一觉,让 13.1 的 Gbits 先从 Altera 的服务器搬到咱家里再说。工欲善其事必先利器,这一步不得不做。            这个例程的大体功能框图如下。用 Qsys 搭了几个组件,利用 Custom PHY (即 Transceiver 的一种最通用的 PHY )实现一个收发对,数据的收发都是通过内部的组件来产生的持续的随机测试数据流,而 loopback 并非在 FPGA 内部,而是在板级我们通过线缆实际的将这一对收发信号连接起来。   接着,我们来到顶层模块的对外接口定义。这里的信号,我们可以简单的分为三个部分:其一是 Transceiver 的时钟,如这里的 hssi_refclk 和 system_refclk , system_refclk 是 FPGA 内部逻辑使用的时钟,和一般的 FPGA 输入晶振时钟信号大体相当, hssi_refclk 则有讲究,它是 Transceiver 所在 bank 专门的一个时钟差分对提供的;其二是 transceiver 的收发信号,我们这里只有一对,分别是接收 hssi_rx 和发送 hssi_tx ,话说在 Altera 内部代码定义其实都可以写成单端的信号,差分的定义和分配其实只要在引脚分配页面完成,后面我们会提到;其三,在这里只是一些虚拟的,测试中不需要用到的信号,它们大都是 transceiver 的状态信号,我们不需要对它们做实际分配,是否引出到顶层接口中其实也无所谓。            从原理图上看,这里在 Transceiver 所在的 Bank 中,有前面提到的专用时钟输入差分对,收差分对和发差分对。收发差分信号分别通过 SMA 插座进行引出。            分配好引脚,编译,当然不是一次通过,遇到了点小麻烦,会出现一个提示什么引脚电平不对的 Error 。此时需要打开 qsf 文件,将图示的两个电平定义由 1.5V 改为 2.5V ,具体原因咱就不多做介绍,大家有兴趣自己去研究一下。            接着完成编译,然后将 sof 文件下载到 Cyclone V GX Starter Kit 中,然后找到菜单打开 Transceiver Toolkit ,具体怎么用,咱也没必要再逐个介绍,反正平台搭起来了,大家自己瞎点点,三五分钟也就摸透它的脾气了,谁让咱玩 FPGA 的智商都这么高呢。当然了,还是推荐大家翻翻 Handbook 。          下面,贴几张图,测试的效果让大家饱饱眼福。我想,一定要自己亲自动手玩才过瘾,特权同学不过先上一道开胃菜而已。后面有时间还会再送上几篇应用笔记,希望大家一起探讨。