




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验名称 全高清实时视频显示 嵌入式系统设计与调试 课程名称 嵌入式系统设计 姓名学号 彭嘉乔3130104084 年级专业 大三 电子信息工程 所在学院电气工程学院 全高清实时视频显示嵌入式系统设计与调试报告3130104084 彭嘉乔心得体会:我想了想,还是决定把心得体会放在这里。毕竟基础实验大家做的都是一样的内容,何况我们做的水平也就那样,Phase5还没有做完。但我的感想是独一无二的,不如把最有价值的部分排版到最前面。如果让我直观总结下这22天小学期的感受,我会毫不犹豫地说:“累”。如果要具体点的话,“真的很累”。这种累,不仅是身体上的累,更是心累,大部分时候是一种深深的绝望。我对这门课是有心理准备的。上课前我就看过往届学生写的报告,无一例外充斥着“大学最累的课”“大学生涯难度最高的课”“累得昏天黑地”这种话,然而我还是有着迷之自信。其实如果我不是有着迷之自信的话我压根就不会选这门课,毕竟我之前没有上过数字系统设计,没有任何与FPGA板开发有关的经验,对这门课的内容完全是两眼一抹黑。这门课一开始是早上八点开始,到下午五点结束,后来才改成了早上八点半开始。最初我根本不适应这样的强度,而且由于这样改变了我睡午觉的习惯,导致我第一周每天回寝室后都先补觉睡到九点,再起来继续白天的进度到凌晨三点再睡觉,作息严重混乱。后面稍微调整过来了,回寝不需要补觉了,只是昏昏沉沉一晚上而已。从Phase2第一次要求自己写代码开始我就感觉到了巨大的压力。因为没有上过数字系统设计,我压根就不会Verilog语言,得拿着数设的书从零开始自学,以致于连写个激励源文件都要折腾一天时间。这门课的玄学之处也从写这第一个testbench开始出现,我照着书上的例子一模一样的形式写的都运行不了。当然这只算小儿科的,Phase2.3把之前的几个文件综合起来,本来分别检验都符合要求,综合起来后出现了严重的bug,仿真显示scl的输出有一半是高阻态,sda的输出始终为高阻态。即使将其强制赋值为1再输出仍然不行。我在i2c文件里通过注释掉其余语句逐句检验也发现不了问题。偶然间我发现,当注释掉与sda有关的一切,删掉sda的输出引脚后仿真显示scl正常,注释掉scl后sda仍然全为高阻态。我开始猜测是不是sda引脚出现了干扰,甚至去检查约束文件。为了这个bug我整整耽误了两天,最终在万念俱灰走投无路的情况下我干脆重建了工程把代码原样复制了进去,结果仿真就正常了有趣的是重建工程前还可以生成bitstream文件,重建后就不行了。明明是一样的代码啊再花半天终于生成了bitstream文件,我也不知道怎么弄好的,然后烧录上去果然不能用,即使仿真波形和老师给的标准波形一模一样。干脆全部推倒重写吧。这样的玄学在之后的实验中会一而再再而三地发生。同样的代码,重建工程复制进去就是截然不同的结果。同一个工程没有任何改动,重启下电脑就不能用了。同样的bitstream文件每次烧录显示都不同。一模一样的操作步骤在别人的电脑上行得通在自己电脑上就报错。不仅是我,其他同学也都发现了,人人都知道了重建大法好,出bug第一反应不再是去找原因而是先重建试试。想想以后我用的电子产品可能就是这样一群人用这样的方式做出来的,简直慌得要死。除了玄学,很多时候一点小问题也会耽误我们一整天的时间。或者是数百行代码里的一句话,或者是软件的一个设置。在此不得不吐槽一下vivado和SDK都实在是太复杂太用户不友好了,如果老师不多教教软件的使用,告诉我们软件各个部分各种功能都是做什么的,只靠我们自己摸索实在是太难了。其实除了玄学问题我们真的没办法以外,大部分问题我们最终发现都是很简单的小问题,如果经验丰富的话很快就能解决,可让我们这些新手来自己解决的话往往无从下手,像无头苍蝇一样浪费非常多的时间。整个小学期,我们可能只有5%的时间真正在写代码,70%以上的时间双眼空洞地盯着电脑屏幕,仰天长叹乞求上苍告诉自己究竟错在了哪里。当然上天不会回应,助教也不会。当我发现无论我问什么助教都会回答:“讲义上有自己好好看看吧”而我确定一定以及肯定我把讲义上的每一个字都看过了而且确实没有答案的时候,助教在我心中就已经不存在了。虽然我可以理解老师和助教希望我们自己解决问题以提升能力积累经验的苦心,但是我质疑这样是否有效率。让高中生提前接触微积分他或许会感受到数学的美和神奇进而爱上数学,而换成个小学生只会感到枯燥厌烦。适当拔高确实可以考验打磨学生,拔得太高拔苗助长只是种折磨。如果在好几个关键时刻有过来人抬我们一手,稍微指点一下,我们的进度起码可以快一周,Phase5可能就做出来了,攀登到高峰看到最美的风景,创新实验也能做得更好。可实际上我们在很多没有意义的细节上浪费时间,向着看不见的敌人挥拳,收不到任何正反馈,仿佛身体被掏空一般难受。我并不怕苦怕累,毕竟能考进浙江大学,吃不得苦高考就被淘汰掉了。可大多数时候我知道自己吃苦能换来什么,知道自己忙得有意义能忙出成果,但在这门课里大多数时候是“穷忙”,结果每天在电脑前忙个不停,却可能一整天都找不出bug原地踏步,没有任何充实的感觉,反而觉得异常空虚。或许是作学生太久了变得娇惯了吧,觉得世间万事都该让着自己。幸好在我最烦躁最愤怒的时候被老师浇了一盆冷水,现在还记得特别深刻:“以后工作的时候,没人会问你遇到了什么问题,只会问你做出来了没有。”这么一想大概也就释怀了吧。这个世界就是这么残酷啊,我确实可以找一万个理由来解释我为什么做得这么差,可还是掩盖不掉一个现实就是别人做出来了可我没有。没做出来就是没做出来,还是老实承认自己太菜吧。其实世间所有的不如意,都是自己不给力。毕竟学渣是原罪。 以下是具体的实验过程。Phase1、基于 Xilinx Vivado 的嵌入式系统设计入门实验。 Phase1是整个实验的入门,与其他实验相比,实验很简单,不过因为没有指导,需要自己摸索,所以,也是花了我们半天的时间。这次实验是对vivado软件的初步认识,如建立project,IP,sdk等等。Phase2、设计 HDMI 控制器。 Phase2首先进行的是HDMI控制器的硬件设计,根据时序图得到hsync,vsync等信号和clk信号的关系,实验需要进行720p和1080p的设计,程序编写并不困难,但是由于对verilog语言的陌生,我和队友在testbench的编写上花费了较多的时间,后来经过上网找例子教程才明白,弄懂之后发现并不难,主要包括复位信号,时钟信号和输入信号,这些语句在不同的程序里大同小异,一次编写成功后,基本就掌握了testbench的编写。 下一节进行的是I2C总线控制器设计,以前曾经学习过I2C,所以我先是找了以前的I2C协议的程序,然后参考程序写出I2C协议,先是将频率转化为CLK_100K_A和CLK_100K_B,再利用二者的 | 或者&得到CLK_100K_SDA和CLK_100K_SCL,在这两个时钟下进行i2c_scl和i2c_sda的计算,最后经过仿真观察波形确定程序的正确性。 第三节是在前两节的基础上进行HDMI 显示测试图硬件电路设计。首先接触到的是yuv422编码方式,在理解这种编码方式上花费了一些时间,尽管如此,在之后还是出现了反色的问题。反色问题的原因是因为技术行数据写入了偶数行,使得yuyv的排列变成了yvyu,解决方案是地址整体加1或者减1。实验还是分为720p和1080p两部分,但是其实两部分差不多,所以我们为了节省时间,只做了和后面实验有关系的1080p部分。显示彩条和彩色砖块都是对地址进行划分。之后的显示小飞机需要从rom中读取数据,这一部分的步骤按照实验讲义进行,在rom的读取语句中有些困惑,经过询问同学,知道输入输出对应rom里用到的引脚便可。在显示小飞机的实验中,图片出现了左右偏移的情况,最左侧一列为绿色,按照我们的想法,将loc_x地址加2进行调整,如果不够,再加2,然而加到8后最右侧一列已经出现明显偏移,而最左侧一列仍然是绿色,这让我们意识到,最左侧一列可能根本没有显示信号。进过检查代码 ,enable信号响应需要时间,由于在读取像素点信息时引入了enable信号,当扫到第一列的时候enable仍为0,导致第一列没有获得像素点信息。进行相应的更改,显示器上得以在每一处均有显示。最后经过合适的调整,使得显示不偏不倚。Phase3、AXI-Lite 接口的设计。Phase3 是从软件给出的AXI-Lite协议修改得到自己要用的AXI-Lite协议,封装成IP核添加到Block design中,利用cpu提供的150Mclk执行。这是我第一次接触到AXI协议,为了弄懂AXI-Lite协议,我阅读了讲义上提供的英文参考资料,因为对AXI协议没有基础,所以在阅读过程中比较吃力。在通读一遍后,对AXI协议有了简单的了解。从phase4.1中得到了zju_ip的AXI_Lite协议,尝试着去理解这个协议。AXI_Lite协议包括端口定义,各种信号和对register或者rom的调用。我们主要做的内容就是讲zju_ip中的register调用改为rom调用。在调用之前的I2C程序时,需要注意输入输出的匹配。IP封装时,选择package current resource,完成封装后,就可以在Block design中直接调用创建的IP,选择自动连接,然后将输入输出引脚引出。Block design完成后,有时会发现IP核中的错误,需要对IP进行修改,可以直接找到IP的程序文件用记事本或其他阅读软件打开修改保存,然后在upgrade IP,然后generate outputs得到更新后的IP。直接在已创建好的IP上进行修改更新,比重新封装一个新的IP要简单快捷。搭建好block design后,生成比特流文件并打开sdk,在sdk中编写软件,用cpu通过axi协议访问rom,对rom进行读写的操作。Phase4、AXI-Full 接口的设计。 Phase3中用到的是axi slave,在phase4中用到的是axi master,master的程序代码与slave相比更加繁杂。在4.1提供了一份波形图供参考,我们通过波形图分析各个信号之间的关系。在信号的关系中,txn_request信号和axi总线的关系最为复杂,也最为重要。txn_request信号sdk写完后进行烧录,出现了绿屏的现象,这是因为没有在sdk中写入elf文件,写入elf文件后在显示器上显示花屏,这是因为airbus.h文件没有正确的放入sdk中。在修改了一些错误后,终于在显示器上有了显示。示器上显示出的大飞机图片出现了左右偏移的情况,且偏移的幅度很大。我们又开始进行漫长的debug过程。先是修改了地址位,结果大飞机却出现了雪花,急忙将地址为修改回来。后来,听从同学的意见,我们将fpga板子重启,重新烧录,在显示器上得到了正确的显示。全高清数码相框的实验中,短学期已经将要结束,我们直接应用了老师提供的bmp.c和main.c代码,不过直接用这写代码在编译时不通过,问题出现在“f_mount(0,&fs);”一句,报错的原因是因为参数不够,打开“ff.h”文件查看f_mount的用法,并进行修改,编译得以通过。向sd卡里复制bmp图片,然后查到板子上,烧录后在显示器上没有显示图片,而在sdk中显示“airbus1 open success”和“It is not a bmp file”,出现这个问题的原因是因为main.c中的“sprintf(filename,0:/bmp1080p/airbus%d.bmp,j);”语句与sd卡中的bmp文件名airbus_1不匹配所导致,修改语句为 “sprintf(filename,0:/bmp1080p/airbus_%d.bmp,j);”bmp文件能够在显示屏上正常显示。这是出现的又一个问题只能显示前airbus_1.bmp至airbus_9.bmp这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电工工考试题及答案
- 文化产业管理证书考生心得体会
- 精密医学发展的趋势与挑战试题及答案
- 育婴师文化敏感性的提升考核试题及答案
- 林肯事故测试题及答案
- 卫生管理创新方法与案例试题及答案
- 激光多功能应用试题及答案
- 自主招生网络试题及答案
- 污水管道疏通试题及答案
- 西医临床数据收集技巧试题及答案
- Unit 7 Happy Birthday!Section A(教学教学设计)2024-2025学年人教版英语七年级上册
- 中职教育二年级下学期数学《组合数公式》教学课件
- 急性冠脉综合征
- 免疫治疗中假性进展的机制与评估标准
- 保险客户经理劳动合同样本
- 2024养鸡场鸡粪买卖合同范本
- 燃煤发电厂液氨罐区安全管理规定
- 苏教版六年级下册数学期末测试卷【完整版】
- 2024年上海市普通高中学业水平等级性考试化学试卷(含答案)
- 办公耗材采购服务方案(技术方案)
- DZ∕T 0153-2014 物化探工程测量规范(正式版)
评论
0/150
提交评论