<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>文档</title>
<link href="./css/semantic/semantic.min.css" rel="stylesheet">
<link href="./css/oscTree.css" rel="stylesheet">
<link href="./css/markdown.css" rel="stylesheet">
<link href="./css/index.css" rel="stylesheet">
</head>
<body>
<div class="ui container">
<div id="project-title">
<div class="title-wrap">
<div class="left">
<i class="icon eye"></i>
文档预览:
<span id="preview-title"></span>
</div>
<div class="right">
Export by Gitee
</div>
</div>
</div>
<div class="ui container" id="wiki-preview-container">
<div id="wiki-preview">
<div class="ui segment">
<div class="ui grid page">
<div class="three wide column doc-list">
<div class="title">
<a id="ex-all">
收缩全部章节
</a>
</div>
<div class="ztree" id="tree"></div>
</div>
<div class="thirteen wide column doc-content">
<div id="page-detail">
<div class="title">
</div>
<div class="content markdown-body">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
<script src="./js/jquery.min.js"></script>
<script src="./js/ztree.all.js"></script>
<script src="./js/jquery.ztree.exhide.min.js"></script>
<script>
var zTreeObj;var expandStatus=true;$(document).ready(function(){var setting={view:{showLine:true,showIcon:true},callback:{onClick:function(e,treeId,treeNode){if(treeNode!==null&&!treeNode.isParent&&typeof(treeNode.children)==="undefined"){var sort_id=treeNode.sort_id;var content=json_data.content;for(var c in content){if(c==sort_id){$("#page-detail .title").html(treeNode.name);$("#page-detail .content").html(content[c]);return false}}}else{zTreeObj.expandNode(treeNode)}}},data:{simpleData:{enable:true}}};zTreeObj=$.fn.zTree.init($("#tree"),setting,json_data.title);var first_content=json_data.title[0];$("#page-detail .title").html(first_content.name);$("#page-detail .content").html(json_data.content[first_content.sort_id]);$("#preview-title").html(json_data.preview_title);$("#ex-all").on("click",function(e){zTreeObj.expandAll(!expandStatus);expandStatus=!expandStatus;if(expandStatus){$(this).text("收缩全部章节")}else{$(this).text("展开全部章节")}})});
</script><script>var json_data = {"preview_title":"全国大学生集成电路创新创业大赛","title":[{"id":"000000000000Home","pId":0,"name":"Home","parent":null,"order":0,"sort_id":8246778,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Cp\u003EWelcome to the 全国大学生集成电路创新创业大赛 wiki!\u003C/p\u003E"},{"id":"79f4a9b","pId":"5825cc6","name":"通知","parent":"第七届海云捷迅杯","sort_id":8246779,"order":0,"isParent":true,"extname":null,"open":false},{"id":"000000000000001-关于“分赛区决赛-AIEP远程调试工具及固件7月5日版本更新”的说明","pId":"15e6cfe","name":"001-关于“分赛区决赛-AIEP远程调试工具及固件7月5日版本更新”的说明","parent":"第七届海云捷迅杯/通知/001","order":0,"sort_id":8246780,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Cp\u003E有部分队伍反应,AIEP远程调试工具及固件7月5日版本更新之后,出现了无法正常显示、无法统计帧率的问题。经过排查,几乎都是使用的自己开发的ddr3_vga IP,使用官方提供的IP的队伍没有问题。\u003C/p\u003E\n\u003Cp\u003E出现的问题是vhdmi IP双缓冲切换失败造成的,相当于是IP一直在写buffer0,但系统却一直在读buffer1,所以一直没有读到数据。经过调试发现出现这个问题的队伍大都出现以下问题:\n\u003Cstrong\u003E1.\u003C/strong\u003E 将vga的de和vsync信号在帧结束时同时拉低了,而且vsync的下降沿和上升沿之间间隔太短(帧与帧之间的空闲周期太少),造成了vhdmi在帧结束后的处理逻辑出现了问题。\n比如如下的帧结束信号,是错误的:\n\u003Cimg src=\"https://foruda.gitee.com/images/1688719500578418050/ea5c1855_12816403.png\" alt=\"错误示范\" title=\"屏幕截图\"\u003E\n\u003Cimg src=\"https://foruda.gitee.com/images/1688722267786430865/d519265b_12816403.png\" alt=\"错误示范\" title=\"屏幕截图\"\u003E\u003C/p\u003E\n\u003Cp\u003E正确的波形应该如下(见云盘文档《vhdmi IP使用说明_V1.1.doc》):\n\u003Cimg src=\"https://foruda.gitee.com/images/1688722426683945369/dbf604de_12816403.png\" alt=\"正确的波形示范\" title=\"屏幕截图\"\u003E\u003C/p\u003E\n\u003Cp\u003E\u003Cstrong\u003E2.\u003C/strong\u003E 一帧图像应该包括400*320个像素,但有些队伍在一个vsync周期内像素数量不足,比如如下一个队伍,通过我们内部调试发现在一帧的末尾缺失了一个像素(cnt_de本来应该是15,但这个队伍是14)\n\u003Cimg src=\"https://foruda.gitee.com/images/1689093078535731614/52aa7afa_12816403.png\" alt=\"输入图片说明\" title=\"屏幕截图\"\u003E\u003C/p\u003E\n\u003Cp\u003Evhdmi对时序的要求不高,也没有明确时序参数,但大致的时序形态还是要满足的\u003C/p\u003E"},{"id":"000000000000002-关于“分赛区决赛-AIEP远程调试工具及固件7月17日版本更新”的说明","pId":"14fcd5d","name":"002-关于“分赛区决赛-AIEP远程调试工具及固件7月17日版本更新”的说明","parent":"第七届海云捷迅杯/通知/002","order":0,"sort_id":8273309,"extname":".md","isParent":false,"isHidden":false,"content":"\u003Cp\u003E部分参赛队在使用7月5日的固件版本时候,出现帧率统计不准确的情况,除了在《关于“分赛区决赛-AIEP远程调试工具及固件7月5日版本更新”的说明》中提及的3种原因外,还发现了有队伍的自制vga IP输出的连续帧中,有部分帧“回跳”,也就是vga输出的帧实际上为上一帧或者上上帧,这让帧率统计功能受到了影响。为了去除帧“回跳”造成的帧率统计异常,更新7月17日固件版本,将“回跳”的帧从帧率统计中去除。同时,7月17日版本固件,修正了丢帧的缺陷。\u003C/p\u003E\n\u003Cp\u003E参赛队伍如果在使用7月5日和7月17日版本固件时,显示不正常、帧率统计不正常,请按照《关于“分赛区决赛-AIEP远程调试工具及固件7月5日版本更新”的说明》中提及的3种原因进行自查,同时,可以按照以下步骤,检查自己的vga IP是否有帧“回跳”的现象。\u003C/p\u003E\n\u003Cp\u003E1.ps端向vga IP的内存区域写入图像时,手动在该内存区域头部固定字节写入自增的数据\n2.在signaltap中添加vga相关信号,并设置trigger条件为每一帧的第一个像素,同时设置分段采样,设置如下:\n\u003Cimg src=\"https://foruda.gitee.com/images/1689608415397760713/67c439f0_12816403.png\" alt=\"输入图片说明\" title=\"屏幕截图\"\u003E\n3.检查四个分段,分别代表4帧图像的头部像素,并检查是否是按照写入内存区域的自增数据;检查该自增数据是否有“回跳”(即数字并非一直增加,而是偶尔减少)\u003C/p\u003E"},{"id":"5825cc6","pId":0,"name":"第七届海云捷迅杯","parent":"","sort_id":8252598,"order":2,"isParent":true,"extname":null,"open":false},{"id":"15e6cfe","pId":"79f4a9b","name":"001","parent":"第七届海云捷迅杯/通知","sort_id":8282316,"order":2,"isParent":true,"extname":null,"open":false},{"id":"14fcd5d","pId":"79f4a9b","name":"002","parent":"第七届海云捷迅杯/通知","sort_id":8282318,"order":3,"isParent":true,"extname":null,"open":false}],"content":{"8246778":"\u003Cp\u003EWelcome to the 全国大学生集�