Kevin:如何提高敲代码的速度?
咱们很多人可能都有这样的情况,敲了几行代码,总感觉前边敲的代码有问题,但是又不确定是否有问题或是哪有问题。总在这几行来来回回耽搁很多时间。
当然,可能也有这样的情况,一个 always 或 negedge 关键字敲了好几遍,始终敲不对。
看过SDRAM第一季和第二季视频的朋友应该注意到过,我在视频中敲代码的速度和你相比,可能还是要稍微快一点的。
这段时间稍微空闲点,借此机会和大家聊一聊如何提高写代码的速度。
一、理顺设计思路
之前公司的一个同事,从硬件转做FPGA,那个时候我刚离职不久,和他关系也非常好,刚进公司的时候和他还住同一个宿舍。
其实他的基础还是可以的,自己纯自学,开发软件还是用得很熟练。因为之前自学的时候,都是看些例程,自己动手比较少。
他刚拿到公司的项目后,稍微了解了一下项目需求,之后就开始写代码。在写代码的过程中,他就出现了刚才我说的情况,花了很长时间,还在那几行代码上徘徊,结果还是不晓得自己写的代码到底是对还是不对。
对于这种情况,属于典型的思路不清晰。思路不清晰,写代码的速度肯定慢!
在SDRAM的视频中,不知道大家有没有注意到过,我在写代码之前,对于一些稍复杂的模块,会先画好时序图。
为什么画时序图呢?
大家接触FPGA之后,有没有发现,FPGA其实玩的就是时序。
我在写代码之前,在时序图上基本上会将一个模块中用到的大部分信号画出来。大家不要小看画时序图这个步骤,画时序图,其实就是在整理自己的思路,时序图反映出来的,就是你的代码。
这是在SDRAM第二季中OV5640 IIC配置模块的部分时序图,大家可能会觉得画时序图很浪费时间,其实并不是这样。
在我自己画时序图的过程中,基本上,我画的每一个信号,我都会去想这个信号我该怎么用verilog去实现,也就是每一个信号就对应着一个变量。
时序图出来了,也就是你的思路理顺了,在写代码的时候,对照着时序图去写代码,写代码的速度能不快吗?
当然,画时序图,有很多种方式,可以在草稿纸上直接画,也可以在Visio上画,也可以在timegen软件上画。
二、使用便利的代码编写工具
工欲善其事,必先利其器。古人的智慧真的是令人敬佩的。
我们写的模块中,基本上大部分都是always块。
这个是串口接收模块中的一部分代码,在每个always块,基本上都是这种结构。
每定义一个reg型变量就写这么多代码always @(。。。)的话,还是会影响到写代码的速度的。
细心的朋友应该发现了,我在SDRAM第一季中用的编辑器是Notepad++,第二季用的编辑器是 gvim。
在gvim中,我使用到了很多快捷方式,像always块,只需要按一个按键就可以出来。
当然,对于gvim,刚开始使用的朋友可能还是会不太习惯的。
有了解过的,知道vim有什么命令模式之类的。说实话,我也没有去仔细去了解他具体有哪些模式,按什么键退出或进入什么模式。因为这对我来讲,我不关心,我只关心怎么用vim让我敲代码更方便。
对于gvim,可以自己在 _vimrc 这个文件中设置自己想要的快捷键。
下面来说一下Kevin使用的这个_vimrc 文件中已定义好的快捷方式。
F3:直接生成always块。
F5:生成版权信息。
F6:将例化的模块端口对齐。
F8:对齐定义的内部变量。
:cr,生成定义变量注释。
:cc,生成主代码部分注释。
另外,使用gvim还有一个好处,就是TAB键会自动替换成空格键。这个作用,可以让你写的代码不管在哪个编辑器中查看代码,你的代码格式都会像在gvim中编辑的那么好看。
两个不同的编辑器,gvim和notepad++中打开,看到的效果一致,当然,在quartus ii 和ISE中打开,看到的效果也还是一样的。
关于gvim就暂时介绍这么多,有想使用gvim来提升敲代码速度的,直接在【开源骚客】公众号(微信号:OpenSoc)中回复关键字 “gvim” 就可以下载的网盘链接地址了。
注意,“gvim”是区分大小写的哈!!!
Fred
2019年5月6日 上午11:39
可是,怎么设置gvim的?
Kevin
2019年10月15日 下午10:15
直接在开源骚客公众号回复 “GVIM”,直接解压就可以用了,不需要其他配置