特权同学

基于Toolkit的Altera Cyclone-V Gbits Transceiver测试

0
阅读(3215) 评论(1)

Altera Cyclone-V Gbits Transceiver测试

         FPGA内嵌的Gbits Transceiver早有耳闻,此番拿到一块TerasicCyclone 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的官网可以downloadCD-ROM的随盘资料,获得方式也非常简单,只要注册其会员即可,无需提供任何Terasic产品的购买信息。我想Terasic的其他kit应该都是如此,大家不妨通过此途径搜罗一下希望获得的Terasic套件资料。

         随盘资料下载地址:

http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=167&No=830&PartNo=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=5&WT.oss_r=1&WT.oss=transceiver%20toolkit%20example%20design

         特权同学通过这种方式找到了一些关于TransceiverToolkitexample。只可惜,在这一大把的example中,还是没有Cyclone V GX Starter Kit可直接对应的例子。想想也是,如果altera提供了,terasic应该不至于懒到不做copy-paste的工作。于是,咱还是决定自己动手,丰衣足食。从零开始,非也,咱可以找个最合适的example移植一下。那个3.125G的最接近,而且也是Cyclone V器件的。于是开始了一番改造工作。当然也遇到了不少麻烦事,不过好在咱都一一解决,从中也摸到这个Transceiver的脾性,也正好可以分享一下。

         如图所示,移植工作也来得非常简单。除了改改器件、把顶层接口引脚定义重新分配一下基本就搞定了。这可不是,也费了好大劲才把Quartus II产生的各种Error一网打尽。

         如图所示,器件重新选择5CGXFC56F27C7,注意了,这一下恐怕就要让小伙伴们都惊呆了,Why?只有13.1Quartus II才支持这个新器件,咋办?让我们的老版本都见鬼去吧。先去睡一觉,让13.1Gbits先从Altera的服务器搬到咱家里再说。工欲善其事必先利器,这一步不得不做。

         这个例程的大体功能框图如下。用Qsys搭了几个组件,利用Custom PHY(即Transceiver的一种最通用的PHY)实现一个收发对,数据的收发都是通过内部的组件来产生的持续的随机测试数据流,而loopback并非在FPGA内部,而是在板级我们通过线缆实际的将这一对收发信号连接起来。

接着,我们来到顶层模块的对外接口定义。这里的信号,我们可以简单的分为三个部分:其一是Transceiver的时钟,如这里的hssi_refclksystem_refclksystem_refclkFPGA内部逻辑使用的时钟,和一般的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

         下面,贴几张图,测试的效果让大家饱饱眼福。我想,一定要自己亲自动手玩才过瘾,特权同学不过先上一道开胃菜而已。后面有时间还会再送上几篇应用笔记,希望大家一起探讨。


 

 

 

  1. 写的很好,留名mark