一周总结
2020年12月20日
一周总结之整体情况
本周的情况是 ① 结束了 IC 的期末考试,② 测试技术的双转子动平衡实现初步实现减震的目标。
1.1 IC 课程的期末考试
1.1.1 datapath 中的使能信号
这周在复习 IC 设计的作业的时候,发现自己在 datapath 中的使能信号的控制有时会变得很复杂,然后对比课件上的实例代码,就发现示例中的 datapath 代码中的使能信号很简单,就是最简单的“0”和“1”的状态去控制 DFF 是否执行相应的操作。而这些使能信号的控制都是在”control unit” 中去完成的,这也给了自己一个启发,就是:datapath 中的使能信号都是由 control unit 去控制的,因此,首先应该考虑的是画 datapath 的电路图,接着才是去画 control unit 的电路图,然后把使能信号从control unit 传到 datapath 中。 而不是在 datapath 中用实现很复杂的逻辑去控制使能信号的 0 和 1。
1.1.2 保持尽量小的模块代码
在复习的时候,看了一下课程给出的参考书——《数字系统设计方法》这本书的“verilog 编码风格”这一小节,里面讲到了很多个小点我都觉得很好,但是在目前让自己体会最深刻的就是这个点——“保持尽量小的模块代码”。
图 1: 数字系统设计方法
考试前一天晚上看到这一条提醒觉得挺好,以后可以试着让自己的模块就在 50 行以内。这是当时的体会,因为书上说,小的模块对于逻辑综合工具来说比较友好,能够得到很好的优化后的结果。当模块代码多了起来,工具对这个模块的优化效果就很有限。
考试的时候做上机考试题,然后自己就忘记上面这条建议,在压力与紧张的程序下大致画了很粗糙的电路图,开始编程,发现怎么调都不能实现功能仿真。又陷入了那个情景越着急程序越乱,越无法实现对应的功能。到了考试结束自己也没有实现程序要求。
下午的时候,自己觉得还是想把这个程序编出来,所以在自己的电脑实现了整个程序。这个时候就很深刻的的体会到——写“小模块”的好处了。写“小模块”意味着得把功能需求分析清楚,得分解到最简单的功能,这在一定程度上算是帮助自己理清楚到底要求是怎样的,当时考试的时候就是想着一口气吃成一个大胖子,在datapath里把题目里的功能都实现,这意味着我没有很好的去进行分析功能需求这一步。导致逻辑关系有点复杂。所以在datapath中对数据进行操作时,可以在把datapath分为更小的子模块,每个子模块实现一个最简单的需求,每个子模块的代码行数不超过50行。在control unit中利用FSM去控制各个子模块的使能信号的0和1.
1.1.3 求电路的最高运行频率
IC的笔试题中有这样一道让我来计算电路能够正常运行的最高频率是多少的题,自己是通过 critical path 去计算的,也不知道对不对,后面可以去找找资料求证一下。
1.1.4 编代码的风格问题
在考试的时候,自己有点体会到了由于题目的需求和自己编代码风格有点不一致导致自己会陷入到一些很奇怪的bug。考试的题目里是——rst是异步复位,高电平有效,然而自己编代码的风格通常都是rst_n异步复位,低电平,下降沿触发。就这样一个小小的不同,让自己在调试程序的时候调了不少的时间,而且还增添了很多的焦虑情绪。后面自己反思,为什么会出现这样的问题,自己认为主要原因是:自己用的snippets 片段去补齐一些代码,这些被补齐的代码都是我实现写好的,很符合自己的代码风格的snippets,但是遇见了新情况,新要求的时候,很有可能就面临着自己的代码风格和功能需求有小冲突的情况。所以这个时候就得明白这些个小冲突在哪儿,并且通过一定的语句将新情况新需求转换成符合自己的代码风格。
所以在下午重新去编程的时候,自己就先把输入信号rst取了一个逻辑非,给到rst_n,然后就转到自己熟悉的代码风格上来了。
1.2 测试技术的实验
昨天考完IC的期末,晚上7点就开始弄测试技术的实验,自己得承认自己在这个实验上画的时间并不多,所以对于减震的理论知识不是很懂。
所以自己负责的主要是labview界面的编写,其他组员负责的是在matlab里去编写消震算法以及互相关滤波算法。昨天晚上从7点弄到晚上12点,没有实现我们预期的效果,我的labview界面也不能用,所以一开始就是分开做的,先在labview里采集到数据,将数据保存成excel文件,然后在matlab去处理,组员的算法在一开始也不太好用。所以昨天晚上12点大家都不欢而散。
回到宿舍,我继续想了一下matlab算法上遇见的问题,我的Labview问题好解决。虽然matlab算法的细节我不太清楚,但是我借用了一下verilog中的testbench的思想,想着先用一个标准信号去做输入,给到他们的算法当中,去看他们的算法是在哪儿出现了问题。
所以今天上午9:30重新开始做实验的时候,就让他们按照这个思路试一下,他们各自都发现了算法中的bug,然后修改,证明了算法上的正确性之后,接着就去调试硬件方面了,最后在下午2:15左右,初步达到了预期的减震效果,然后我的labview程序也能把他们的算法都拼起来,并且处理得到最后的结果。后面的工作就是美化一下labview的界面,然后做好展示的PPT。
2 科研进展
无,目前在赶各种DDL。
3 自己的三大目标
这周语言方面的学习进度不大。
- 努力学习与工作:努力学习努力赶DDL。
- 每天坚持锻炼:本周运动了 1~2次。
- 学习英语和德语:无。