FPGA项目实战学习分享_W2

Day1(210121Thu) 工程创建与Basys3计算器实例测试

Getting Started with the Basys 3 (Legacy)

  • 约束文件与顶层文件信号引脚对应;约束文件语言为Tcl;

  • “Generate Bitstream” 花费的时间比想象地久,要等到“Generate Bitstream”按钮从灰色变为彩色才算完;在log中未找到“creating xxx.bit”相关记录,但在文件夹目录中找到了bit和bin文件.此问题已解决,新版本的bit文件生成进度不显示在log中而是在右侧project summary中,如图

  • “Program Device” debug file在哪里找?此问题已解决,可以不添加debug文件。

  • “Generate Bitstream”疑似失败 项目删除 重新开始后来回顾发现其实当时并没有失败,只是自己对流程不熟悉太没有信心了。

  • “Run Synthesis" 的时间会比较长

  • 打开synthesized design后发现尽管项目删除了,device properties依然保持了之前设置的状态

  • 按照视频步骤顺序直接进入到“Generate Bitstream”环节,这时与视频出入的地方就在于会提醒你是否先implement再generate,我选择了是

  • 忽略debug文件也一样可以对板子进行编程,目前来看所有其他步骤都能正常推进,板子的计算器功能也可以正常使用。debug问题之后再深究吧。

FPGA-Design-of-a-Digital-Analog-Clock-Display-using-Digilent-Basys3-Artix-7/LAB1_Introduction_Setup/

在吃完饭躺床上休息的时候其实一直在思考,就我现在在学的东西来看,包括以前学校暑期实习和毕设的项目,Artix-7也好MKR1000也好树莓派也好,都是在板子上敲敲打打,这并不能让我想象得到真实工作场景中我要做的工作是什么样子的。希望这个问题在我演练了更多项目做了更多的research以后能找到问题的答案吧。

  • HDLBits里的题目基本就是作者根据给定好的信号输入输出写好testbench,在submit时自动利用写在testbench里的cases测试。
  • Github项目第一章介绍部分的脚本,simulation结束后点击“Untitled 1”查看波形,全屏功能各工程类软件通用;虽然简单,但其实还是有些成就感的。
  • “Implementation” 此步骤目的在于将由Synthesize生成的netlist映射到Basys上,使其能通过开关实现所设计的功能。
  • 对于中午休息时产生的问题,刚下楼抽烟的时候有了点猜想。FPGA软件工程师的工作内容可能集中在嵌入式开发,例如当Xilinx推出Zynq时解决Arm架构与FPGA架构之间的协同工作?而硬件工程师做得可能是在拿到大公司出品的FPGA芯片后,做一些PCB和约束文件编写的工作从而使得带有FPGA芯片的主板可以ready to work。

FPGA-Design-of-a-Digital-Analog-Clock-Display-using-Digilent-Basys3-Artix-7/LAB2_Seven Segment Display/

  • 牛肉在楼下炖着,先看眼PDF
  • 做了够两天吃的牛肉,耽误时间了,今天先到这里吧。

Day2(210122Fri) Basys3计算器实例代码分析与DA时钟项目构想

  • 从pdf上完全看不出来想干什么,决定直接利用HDLBits时钟计数器那道题加上Basys3提供的实例进行最终的时钟设计。先从Basys3计算器实例的top代码看起(此处的学习路线规划可以有很多种,因人而异,在我的日记里写的肯定是我习惯的学习风格,互相理解哈)。
  • 关于SegmentScroll找到了一个tutorial,上板子调试也可以正常工作,先看这个代码了。这里给大家推荐一个Ipad看代码的教程,我用的是CodeViewer方案,不是很完美,但是聊胜于无了,有空再试试GitHub方案。
  • 代码是看懂了 但是在修改显示字符周期的过程中对于Vivado和modelsim的操作还是有问题,把其中的7改成1后在板子上还是不会改变。打算去看看视频学习下正确流程了。
  • 按照特权同学的视频写了一个简单的LED闪烁脚本和其testbench,但是在仿真时出现了elaborate error,注意变量名的一致即可。

Day3(210123Sat) LED_PWM算法调试

昨天的仿真波形始终有问题,今天上职业年课程,抽空继续调试。

  • 在成功生成仿真波形后发现LED始终没有拉高,在修改了PWM算法后依然如此。
  • 调整testbench中时延、周期等参数,依然没有改变。
  • 怀疑是按照板子的时钟频率进行仿真需要的物理时间过长,因此在测试算法中伪造时钟频率测试是否为物理时间的原因。
  • 在将仿真中时钟频率等比例调低后发现LED可以按照PWM设定拉高降低。说明板子的1MHz时钟频率需要远超物理时间的仿真时间。
  • C&P 约束条目,注意看好变量名和引脚匹配即可。
  • 另外还写了三灯轮流以不同周期闪烁的简单脚本,上板子测试均没有问题。动图太大了放不上来。
  • 有一个遗留问题是测试脚本的更新需要每次都更新bitstream然后重新program device是么,好麻烦啊这样。

Day4(210124 Sun) Github项目继续推进

按道理今天本来是该休息的,但我休息日的原则是想干嘛干嘛,想学习就学一会儿,学累了想躺着就躺着,一切以不勉强自己为标准,所以今天就是属于我心理压力太大自愿爬起来学习,并没有勉强自己哈哈哈贱啊。本来昨天仿真上板子一切顺利给我牛逼坏了,今天信心满满打算跳过算法训练部分,后来冷静了下合计还是从头看看吧,万一还有什么不知道的经验呢,别以后遇到什么解决不了的bug最后发现就出现在今天的练习项目里。

  • 开始做DAClock_SevenSegments项目,在做clock的module时发现之前在HDLBits上写过的时钟复制过来后报错,如图
  • 报错内容是“[HDL 9-806] Syntax error near “non-printable character with the hex value ‘0xc2’”.” 去网上查了一下发现问题特别诡异有趣。可以先参考李锐博恩的博客;不想看的话我的大概情况是我先把代码从HDLBits笔记的word里复制出来发到微信里,再从微信复制到Notepad++里,之后就报错,李锐博恩的分析是编码有问题,将Notepad++的编码改为ANSI就能看出空格的问题了,之后再用替换功能把乱码全部替换为空格即可。
  • 要先想好模块结构再创建文件啊唉
  • 目前第一步是写一个以clk信号起伏为秒数的时钟模块,命名为Step_Clock。testbench写好后debug了很久,又因为停电进展总体十分不顺利。

Day5(210125 Mon) Github项目继续推进

  • 仿真bug借助compile_log找到了,感谢馬鹿吖的博客,是算法文件pm变量类型赋得有问题。HDLBits里默认赋的是wire,其实应该是reg,但这个问题在HDLBits里并没有报错。仿真波形如图
  • 修改了ss,mm和hh的位数问题,下一步就是修改算法使用物理时间了,感觉这一步仿真起来会很漫长。
  • 根据经验来看compile error基本都是在design source中的,elaborate error都是发生在sim文件中的。
  • 已经在仿真中实现了十二小时制六位时钟,如下图所示。下一步开始研究数码管显示。
  • 第一步先继续把SegmentsScroll代码研究透彻。
  • 一下午时间基本上已经把可以上板的算法写差不多了,仿真出来的结果也看起来还不错。
  • 一个只有分钟和秒钟的钟成功了,如图

  • 大体上的功能已经解决,目前还有几个需要完善的小功能,在此总结记录一下。
    • 分钟变时钟
    • 添加冒号
    • 时间调整键
  • 一个个来吧

Day6(210126 Tue) Github项目继续推进

  • 首先解决分钟变时钟,设计好后测试一小时,并无明显误差,在设计下一步功能同时继续测试。
  • 接下来的复位调整功能需要点思考。目前的功能构想是利用switch作复位,当sw==1时通过左右button键对时钟的时和分进行调整。算法上初步规划在if (rst == 1)上做设计。
  • 差不多想好了,用rst区分manutiming和autotiming,rst拉高并维持时开启manutiming模式,时钟按照button的拉高调整;rst降低时处于autotiming模式,按照时钟信号生成的sec_ena自动走时。
  • 在实际设计手动控制部分时出现了点问题,如果用btn_up信号做判断的话由于时钟信号频率过高,时钟信号上升沿检测方法会造成按一次按钮时钟跳升多个位数的情况。难道要用btn_up上升沿检测?
  • 一个具有双按键功能调整的时钟原型机已经可以正常使用了,如下图
  • 认输了,动图太大根本传不上来。好家伙5M的视频专换成动图变50M了你敢信。反正就是除了没有那个冒号,这玩意已经是个功能完备走时准确的十二小时制电子钟了。

Day7(210127 Wed) 一周总结

这是第一次边学习边写日志,本来一开始觉得没什么发出来的必要,谁都不会看,但后来发现这个日志对于我自己的学习还是很有帮助的。既能记录遇到的困难和解决办法,又能监测和督促我的学习进度,有没有人看反而不那么重要了。当然如果能帮助到他人依然还是会让我很开心。

至于进度,客观来讲这个进度实际上是有点慢了,这样一个简单的小项目(大作业?)如果认真弄的话根本用不了一周,但考虑到我刚学这方面知识也才俩月,一门新的语言,新的软件,新的硬件,第一周有这个进度实际上我也是不难过的,自我审视下来也觉得还算努力,没有浪费太多时间。感谢我两位好朋友天天听我废话帮助我得到休息,为了不辜负别人,我继续加油吧。

今天是采购日,打算休息一天,过会儿还有一篇酱炖牛肉的博客,哈哈哈也算是我休息日难得的乐趣吧。

FPGA项目实战学习分享_W2相关推荐

  1. 苏嵌项目实战 学习日志1

    苏嵌项目实战 学习日志1 姓名:王尹新叶 日期: 2018/09/03 今日学习任务 安装VM,学习用虚拟机运行Linux系统,复习C语言知识,进行相关操作. 今日任务完成情况 安装完VM,并在虚拟机 ...

  2. 【首次开放】京东商城AI项目实战学习

    <京东NLP企业项目实战训练营> 专注于培养行业TOP10%的NLP工程师 对课程有意向的同学 添加课程顾问小姐姐微信 报名.课程咨询 ???????????? 01 京东NLP项目内容详 ...

  3. Android组件化与插件化开发项目实战整理分享(含支付宝、360、美团、滴滴等大厂项目实战)

    小公司不说,但是在大公司的项目发展到一定程度,就必须进行模块的拆分.模块化是一种指导理念,其核心思想就是分而治之.降低耦合.而在 Android 开发的实践,目前有两种途径来实现,一个是组件化,一个是 ...

  4. python智慧城市_智慧城市背景下Python机器学习项目实战案例分享

    首先,何为智慧城市?智慧城市的"智慧"源自何处? 智慧城市的特征在于运用大数据和数字技术提高居民生活质量. 机构获得的数据越全面.越实时,它们就越有能力观测事件发生的详情.分析需求 ...

  5. 智慧城市背景下Python机器学习项目实战案例分享

    首先,何为智慧城市?智慧城市的"智慧"源自何处? 智慧城市的特征在于运用大数据和数字技术提高居民生活质量. 机构获得的数据越全面.越实时,它们就越有能力观测事件发生的详情.分析需求 ...

  6. Flutter项目实战教程分享、基础使用、性能优化、每日积累

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,优美的应用体验 来自于细节的处理,更源自于码农的自我要求与努力 Flutter是谷歌推出的最新的移动开发框架,本文章为横向经验积累分享目 ...

  7. 十年互联网项目实战经验分享:项目经理成长之路的三个层次

    网易项目管理专家雷蓓蓓老师,结合十年互联网项目摸爬滚打的实战经验,首次披露了从业多年来的诸多干货.项目经理要想在升职加薪路上走的更顺,核心要解决的是什么呢?就是怎么样去提升自己的核心竞争力,也就是升& ...

  8. 【项目实战案例分享】DMZ区防御体系技战法

    一.实践背景 近几年,参加国家级.省级攻防演练蓝队主防大大小小10几次,在各类政府.央企集团.大型国企等多样且复杂的网络环境中,在前期需要花费大量精力梳理客户资产,帮客户建立一套纵深防御系统. 在整个 ...

  9. 【北京迅为】嵌入式Linux+QT开发零基础入门+项目实战教程分享

    B站搜'北京迅为', 入门视频教程免费学习,持续更新. https://space.bilibili.com/33785640 0基础学习+知识点 +实战项目演练 视频精简,思路清晰,不做无用功,让所 ...

最新文章

  1. WC前的颓废——带花树
  2. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 在 Flutter 端实现 EventChannel 通信 )
  3. Python类的多态和多态性
  4. 使用Tornado实现Ajax请求
  5. Silverlight之工具箱使用1
  6. python计算现场得分_浅谈用 Python 计算文本 BLEU 分数
  7. js定时器和linux命令locate
  8. 日志查看技巧_如何用 Linux 技巧大大提高工作效率?
  9. numpy where
  10. flex 内嵌js文件
  11. PL/SQL developer连接远程ORACLE
  12. CF1047A Little C Loves 3 I
  13. TimesTen In-Memory Database
  14. 广州地铁线路查询程序C语言,广州地铁线路图
  15. Java 征途:行者的地图(推荐好文)
  16. 启动定时器t0的工作指令是_80c51单片机定时器t0工作于方式1定时时间1ms当晶振为6mhz时求计数初值为多少...
  17. Axure-中继器的使用
  18. 2019年涨工资指南:为什么要学AI、AI薪资水平和就业前景分析
  19. Smss.exe进程分析
  20. 【云栖大会】云栖大会盛大召开 已成全球一流科技盛会

热门文章

  1. ROS系列——rqt的安装以及使用方法介绍
  2. 电脑怎么看隐藏的文件?1分钟教您如何查看
  3. 北漂,2013好好混
  4. “无法连接到internet”的解决办法
  5. 谷歌翻译不能用 2022.12
  6. javer奇遇记之救世篇
  7. 电脑老是弹出脱机连接_电脑在不联网的情况下.总是弹出脱机状态,是什么问题...
  8. 【Python】深入理解NumPy数组中的一维向量
  9. Microsoft Word 远程代码执行漏洞(CVE-2023-21716)
  10. Android:一个高效的UI才是一个拉风的UI(二)