XVC(Xilinx Virtual Cable) 是Xilinx推出的基于TCP/IP协议的远程调试方法,可用于Xilinx FPGA的远程下载和调试,具体介绍可见Xilinx官方文档编号XAPP1251。

先讲目前的开发结果,在Vivado 2019.1环境下,目标FPGA为xc7v690t,加载的bit文件大小为28M左右,实际JTAG bit数(TCK个数)为229859840,结果见下表,除去异常的某一点,显而易见的XVC性能已远远高于官方下载器Platform Cable USB II。

环境 加载方式 TCK频率(HZ) 消耗时间(s) 等效TCK频率(Hz) 效率(%)
ubuntu 19.10 XVC 6M 44 - 47 5.11M 85.2
ubuntu 19.10 XVC 10M 24 9.58M 95.8
ubuntu 19.10 XVC 12M 20 11.42M 95.2
ubuntu 19.10 XVC 12.5M 19 12.10M 96.8
window 7 XVC 6M 102 - 124 2.03M 33.8
window 7 XVC 10M 24 9.58M 95.8
windows 7 XVC 12M 20 11.42M 95.2
windows 7 XVC 12.5M 20 11.42M 91.4
ubuntu 19.10 Platform Cable USB II 6M 80s 2.87M 47.8
ubuntu 19.10 Platform Cable USB II 12M 47s 4.89M 40.8
windows 7 Platform Cable USB II 6M 81s 2.84M 47.3
windows 7 Platform Cable USB II 12M 47s 4.89M 40.8

一切的开始也同样始于XAPP1251,这份应用笔记提供了一种基于ZYNQ的XVC服务器实现方法,注意该文档P18中提到

The reference design was measured to have a performance of approximately 3.2 Mb/s while programming the AC701. This measurement was made with a TCK frequency of 6.25 MHz and the ARM processor running at 667 MHz

官方参考设计的TCK比特效率为51%左右,而我又是如何优化设计使得比特效率提高至90%以上,接下来慢慢道来。

首先分析该文档P18处(Performance Considerations),以下内容均为分析该部分:

  • Reduce TCK ratio(减小TCK分频)

减小TCK分频可以提高TCK频率,这是最直接的提速方法。但要注意到的是,参考设计使用的IP核AXI-Lite to JTAG(P5, figure 4),其TCK频率为。TCK分频相关代码位于jtag_proc.v,分析源码可知,C_TCK_CLOCK_RATIO作为IP配置参数,必须为2的倍数,且大于等于4。而XVC协议中`settck`命令要求TCK频率可由软件配置,在这一点上参考设计有所缺失。

always @(posedge CLK)
beginif (RESET == 1'b1)begintck_count <= 0;...endelsebeginif (enable_red == 1'b1)begintck_count <= 0;...endelse if (tck_en == 1'b1)beginif (tck_count == (C_TCK_CLOCK_RATIO / 2) - 1)begintck_count <= 0;endelsebegintck_count <= tck_count + 1;end...endend
endassign tck_pulse = (tck_count == (C_TCK_CLOCK_RATIO / 2) - 1) ? 1'b1 : 1'b0;always @(posedge CLK)
beginif (RESET == 1'b1)begintck_i <= 1'b0;...endelsebegin...if (enable_red == 1'b1)begintck_i <= 1'b0;...endelse if (tck_en == 1'b1)beginif (tck_pulse == 1'b1)begintck_i <= ~tck_i;...endendelsebegin...endend
endassign TCK = tck_i;
  • Ensure a 1 Gigabit Ethernet connection(千兆网)

对于ZYNQ这一点基本都是可以做到的

  • Create a larger software buffer size

这里的软件缓冲区,指的是`getinfo`中<maximum vector length>,而这又指代的是缓冲区深度,并不是JTAG的传输长度。经过实测,`shift`命令中<length>段,恒小于<maximum vector length>*8,该参数对XVC传输影响非常大

  • Increase vector length -- AXI4-Lite to JTAG controller
  • Add interrupts -- AXI4-Lite to JTAG Controller.

这两点合起来分析。首先vector length指的是该IP核,一次JTAG传输可移位的最大TCK个数。参考设计中该值为32,即一次传输至多有32个TCK时钟。增加中断,即JTAG传输完成中断(PL-to-PS),可免去CPU轮询控制寄存器CTRL中传输完成状态位,减少总线占用。但两点改进并不好,原因如下:

1 启动JTAG传输之前需要CPU通过GP总线将TMS/TDI数据从内存搬运至寄存器中去,JTAG传输完成后需要将TDO数据从寄存器中搬运回内存。除去JTAG传输的时间,CPU两次写AXI-Lite总线和读一次AXI-Lite总线所消耗时间不可忽略,这是因为ZYNQ的GP(Master)总线为AXI3总线,连接至AXI-Lite总线时必须增加一个AXI协议转换。因此对于ZYNQ来说,读写挂载于GP总线上的外设延时都相当大,实测该时间为数百ns至数us。

2 增大vector length相应的AXI传输次数会增加,并没有减少时间消耗。这是由AXI-Lite总线特性所决定的,AXI-Lite总线传输burst length 恒为1,即一次只能输出一个总线数据宽度的数据量。

根据以上分析,应该意识到参考设计所提供的AXI-Lite转JTAG IP核对XVC传输效率有很大的影响,下一步将是……

(不定时更新,随时会鸽,别问源码)

基于ZYNQ的Xilinx Virtual Cable(XVC) Server 开发心得(一)相关推荐

  1. [转]SQL Server开发技巧

    经常发现收藏的连接变成空连接,暂时将由于的内容拷贝过来,以免需要的时候找不到. http://www.microsoft.com/china/sql/using/tips/development/de ...

  2. 基于zynq的千兆网udp项目_基于Zynq平台的EtherCAT主站方案实现

    作者:陈秋苑 谢晓锋 陈海焕 广州虹科电子科技有限公司 摘 要:EtherCAT 是开放的实时以太网通讯协议,由德国倍福自动化有限公司研发.EtherCAT 具有高性能.低成本.容易使用等特点,目前在 ...

  3. 基于ZYNQ的网页上传BMP图片至HDMI端口输出实例

    目录 Change Log 0 前言 0.1 系统实现 0.2 源码下载 0.3 项目信息 1 ZYNQ开发板HDMI输出BMP图片功能:FPGA相关 1.1 系统框图 1.2 RTL图 1.3 Bl ...

  4. 基于ZYNQ移动机器人控制器设计(3)控制器硬件方案选型

    本章介绍控制器硬件的方案选型,首先回答为什么选择 ZYNQ 平台来进行移动机器 人控制器方案设计,分析 ZYNQ 的架构与我们提出的控制器设计方案有哪些与生俱来的 契合.接着花了较多的篇幅来阐释锁定 ...

  5. 基于ZYNQ的光纤-以太网高速传输系统设计

    关注.星标公众号,精彩内容每日送达 作者:姜 浩,李和平 ,马翠梅 为满足合成孔径雷达实时成像.数据回放等高速可靠数据传输需求,解决传统数据传输系统由于接口要求高.体积与功耗大以及网络配置不灵活等原因 ...

  6. 基于ZYNQ+AD9361的软件无线电平台设计与实现 (2)

    基于ZYNQ+AD9361的软件无线电平台设计与实现(1) 1 评估板简介 信迈科技 XM-ZYNQ7045-EVM 是一款基Xilinx Zynq-7000 系列 XC7Z045/XC7Z100 高 ...

  7. 基于Zynq的光流法软硬件协同设计与实现

    基于Zynq的光流法软硬件协同实现 一. 前言 光流场(Optical Flow Field)[1]是指图像中所有像素点构成的一种二维(2D)瞬时速度场,其中的二维速度矢量是景物中可见点的三维速度矢量 ...

  8. 基于ZYNQ 的多轴运动控制平台关键技术研发-总体架构设计(一)

    基于多轴运动控制平台的实时通信和同步控制需求,采用 Xilinx Zynq 7020 SoC 作为核心处理器,设计了双核 SoC 多轴运动控制平台的总体架构.结合多轴运动控 制系统与接口特征,完成了 ...

  9. 基于zynq的千兆网udp项目_一种基于ZYNQ的四路万兆以太网安全交换机的制作方法...

    本实用新型涉及网络安全.网络通信技术领域,尤其是一种基于ZYNQ的四路万兆以太网安全交换机,适用于大中型企业的交换网络. 背景技术: 随着互联网的高速发展,传统的以太网交换机在功能和性能上已不能满足要 ...

最新文章

  1. xampp去运行php文件_从0开始构建一个属于你自己的PHP框架
  2. IE Web 开发支持将迁移到 StackOverflow
  3. 最优乘车(Floyd)
  4. Linux 基础I/O :文件描述符,重定向,文件系统,软链接和硬链接,动态库和静态库
  5. 学会查看 RabbitMQ日志
  6. c语言中把时间拷到字符串中,C语言中将日期和时间以字符串格式输出的方法
  7. 菜鸟的成长记录--linux 通配符和特殊字符集合的使用
  8. arraylist从大到小排序_为什么插入排序比冒泡排序更受欢迎?
  9. 信息技术是一把双刃剑,如何掌控好这柄剑?
  10. POJ 1573机器人走迷宫
  11. 单片机c语言 arduino,单片机C语言程序设计实训100例——基于Arduino+Proteus仿真
  12. 使用云函数快速升级网易云音乐等级
  13. 戴尔dell电脑恢复出厂设置教程(BIOS恢复出厂设置,新版台式机)
  14. Linux 系统升级蝉道
  15. 漫画:六九式是一道简单有趣的算法题(开车...)
  16. 【UVA】P1510 Neon Sign
  17. typescript:类型细化
  18. 干货 | 4步带你完成私有云盘搭建
  19. Eclipse相关技术总结
  20. jenkins pipeline slave部署nacos负载均衡平滑升级

热门文章

  1. Python中的程序控制结构 顺序结构和选择结构
  2. 程序设计第二十二题 空心三角形
  3. 法线向量扰动、副法线
  4. 如何搭建Telegram群机器人
  5. excel文档损坏打不开的原因是什么?
  6. 地图经纬度坐标转换BD-09/GCJ-02/WGS84坐标转换
  7. 蓝宇数码冲刺深交所:年营收2.72亿 郭振荣控制45%股权
  8. (转)Winton:如何在100多个期货市场交易
  9. 怎样有效率地进行外文文献检索?
  10. gitlab 配https_gitlab容器--带https配置