一、Mobiveil RapidIO 2.2核仿真操作说明
3
二、基于Xilinx GTX的RapidIO可综合wrapper设计说明
4
三、上板调试步骤
4
3.1 chipsocpe观察RapidIO Outbound和 Inbound接口数据
5
3.2 SoC系统调试操作说明
5
一、Mobiveil RapidIO 2.2仿真操作说明
Mobiveil RapidIO源代码需要对其仿真环境进行设置才能完成仿真过程,原因是Mobivieil RapidIO测试激励system verilog代码只能在32位操作系统中运行,且有些操作系统缺少相应仿真运行环境库。具体仿真修改操作如下:
1.
建立64位操作系统镜像,选择rhel-server-6.3-x86_64-dvd.iso为操作系统安装所用操作系统镜像。在现有的操作系统下键入以下命令进行操作系统光盘挂载:mount -o loop ~ver7/rhel-server-6.3-x86_64-dvd.iso /home/RHEL6.3/
2.
在系统etc/yum/repos.d/目录下建立文件名为rhel6-3.repo的文件,文件内键入以下内容:
#[rhel-source]
#name=Red Hat Enterprise Linux $releasever - $basearch - Source
[6.3image]
Name=Red Hat Enterprise Linux 6.3
Baseurl=file:///home/RHEL6.3
Enable=1
gpgcheck=0
3.
使用如下命令查看VCS和DVE软件缺少的库文件:
ldd /export/COREDATA/eda_tools/synopsys/tool_collection/VCS_MX/2011.12/linux/bin/vcs1
ldd /export/COREDATA/eda_tools/synopsys/tool_collection/VCS_MX/2011.12/gui/dve/linux/bin/dve.exe
4.
在.bashrc中设置库搜索的路径,键入以下RapidIO,VCS,verdi库路径:
export LD_LIBRARY_PATH= $NOVAS_HOME/share/PLI/VCS/LINUX:$RAPIDIO_SO:/export/COREDATA/ eda_tools/synopsys/tool_collection/VCS_MX/2011.12/linux/lib :/export/COREDATA/eda_tools/Novas/novas-201210p3/share/FsdbWriter/LINUXAMD64:
5.
搜索缺少的库,键入如下命令:Yum search “X11”。其中X11为需要安装的库名称。
6.
安装缺少的库,一般32位库为有i868的标志,安装后能自动解决库的关联问题,例如键入以下命令进行库安装:Yum install libX11.i686 libX11-common.noarch libX11-devel.i686
7.
部分.so库操作系统不带有该安装包,需要单独下载安装,安装路径为/home/RHEL6.3/Packages/,比如:Rpm -i /home/RHEL6.3/Packages、
安装完成后,进入rapidIO/dv/rundir文件夹下运行./RUN命令进行仿真,各个仿真功能点命令放在rapidIO/dv/config文件夹下,仿真结果如下图所示:
http://s4/mw690/001OUzCqzy6Kox5EUcrd3&690控制器基于FPGA操作说明(RapidIO
部分" TITLE="[转载]PCIe/RapidIO 控制器基于FPGA操作说明(RapidIO 部分" />
图 1-1
二、基于Xilinx GTX的RapidIO可综合wrapper设计说明
基于Xilinx GTX的RapidIO可综合wrapper设计包括以下几个步骤:
1.
生成支持RapidIO协议的GTX。
生成支持RapidIO协议的GTX,需要使用Xilinx CORE generator生成支持virtex-7系列GTX/GTH,需要注意在gtwizard中第2页的protocol template选项中选择srio multi lane。由于RapidIO协议部分包含PCS部分,且可综合,因此GTX不使用PCS层,PCS层设置全部选择bypass,在gtwizard第三页TX和RX 外部数据宽度都选择20bits。第四页中使用字符对齐,可选端口中需要勾选ENPCOMMAALIGN和ENMCOMMAALIGN。
Gtwizard中还需要考虑的是差分时钟频率选择的问题,理论上GTX支持SRIO所有标准速率传输需求,但由于FPGA本身最高频率的限制,我们选用1.25Gbps和3.125Gpbs的串行速率进行测试,差分时钟选择156.25Mhz,相应选项在gtwizard第二页。
设置完成后,点击Generate,gtwizard会自动生成GTX代码,使用该代码完成后续工作。
2.
设计10b转20b模块。
Mobiveil RapidIO单通道为10b并行,而GTX单通道至少为16b,因此需要考虑设计一个10b转20b的位宽转换模块,经讨论协商,可以选择的方案有以下几种:
(1)
: 10位宽度的数据发送两遍变成20位的数据,交由GTX发出,接收方向收到两遍数据只选取低10位或者高10位数据。
(2)
: 接收两个10位数据后再将数据统一发出,GTX端并串转换前速率是RapidIO PCS层速率的两倍,跨时钟域需要添加FIFO模块来满足时序要求。
3.
关于Xilinx GTX的RapidIO wrapper设计。
RapidIO wrapper设计包括RapidIO控制器,Xilinx GTX wrapper,10b转20b模块,AMBA桥模块等,设计使用顶层将这些模块包含其中,完成简单的对外接口以便上板调试使用。由于RapidIO使用四通道进行传输,每个通道又包含发送和接收两个模块,需要例化四个GTX模块,每个发送和接收模块都需要一个10b转20b模块,使用上述第二种方法完成位宽转换过程,设计完成可综合仿真结果如下图所示:
http://s5/mw690/001OUzCqzy6Kox9wx1O64&690控制器基于FPGA操作说明(RapidIO 部分" />
图 2-1
三、 上板调试步骤
使用vivado进行后续的布局布线和最终生成上板调试文件,两片FPGA使用MGB和PCIe cable线连接,FPGA A MGB子板跳线接downstream模式,另一边接upstream模式,先下载host端bin文件,再下载device端bin文件,完成后重启device端设备。
3.1 chipsocpe观察RapidIO Outbound和 Inbound接口数据
利用vavido chipsocpe观察RapidIO PCS层Outbound 和 Inbound接口数据,其中需要加入debug核的信号有:fifo_char_8b_0,fifo_char_8b_1,fifo_char_8b_2,fifo_char_8b_3,uli_lane_oe_0,uli_lane_oe_1,uli_lane_oe_2,uli_lane_oe_3,rxd0_ph_0,rxd1_ph_0,rxd2_ph_0,rxd3_ph_0,ism_state。下图为RapidIO SOC环境下上板调试结果:
http://s2/mw690/001OUzCqzy6Koxdzofnb1&690控制器基于FPGA操作说明(RapidIO 部分" /> 图 3-1
3.2 SoC系统调试操作说明
通过chipscope抓取信号和观察串口打印信息来判断RapidIO环境是否正常,也可以使用双RapidIO方案进行RapidIO链路建立测试,所测结果定性相同,下图是复位后DDR初始化完成和RapidIO链路建立后情况,dfi_init_complete信号被拉高:
http://s12/mw690/001OUzCqzy6Koxc2nTJ6b&690控制器基于FPGA操作说明(RapidIO 部分" /> 图 4-1