变量与参数命名
变量与参数命名1.不用语言的关键词命名变量与参数
这是废话,就是我同意您老这么变态,编译也不会教您好受的。
2.命名尽量体现信号的特点
很多人不喜欢长的名字,不是到是键盘输入不好还是懒。贫僧建议还是长点的名字更利于以后的阅读。例如,一个同步信号名字叫“syn”看起来简单呢,还是“synchronization_1sec”看起来容易理解?
3.常数,尤其是状态机的状态面,用宏表示
代码里面的常数,在后期阅读中绝对是埋下的地雷,需要专门的注释或者处理。在做状态机的时候的状态名称是自己规定的,这时候宏就是一个很好的机制。“if state == STATE_IDLE”远比“state= = 4’b0000”容易理解。
4.所有定义必须有说明
这些说明内容需要尽可能详细,尤其是位宽、速度这些信息一定要有,以方便以后重用。我们前面各讲都说了,系统内部参数的位宽,会影响结构的设计。很多程序员为了以后的重用,又喜欢吧位宽定义为参数。这样问题来了,原来8比特的代码,到了128比特能重用的可能性有多少呢?所以,一定要好好说明,防止被误用。
5.宏、参数和变量等通过名称里面的大小写区别,并且严格执行
这是防止例如给宏赋值之类的错误,也方便代码的阅读。
代码与注释
1.模块开头必须加详细说明,介绍输入、输出、功能以及参考文件
2.注释必须有一定的比例
很多人不重视写注释,认为不是有效代码,敲起来还老长。实际上,很大程度上,注释就是你为以后自己阅读代码留下的指路标记,用来防止后面你自己都不认识自己的代码了。
3.首格缩进一定要对齐
这也是为了方便阅读,首格缩进不一致很容易造成阅读困难。
4.一个always模块里面只操作一个寄存器
以前强调过,我们设计是“看图说话”,所以这个要求不难达到。那些说“臣妾做不到”的,肯定是不自信、心急的,不画图就写代码了。这个风格实在是问题多多。
5.“if”语句层次不能太多
“if”就是比较器,多层的“if”就是串联的比较器,这或造成组合逻辑在时间上的灾难。
6.分层设计,每个模块的功能必须单一
自顶向下,分层设计是被实践证明最有效的工程流程,需要遵守。
调试与纪录
1.在修改程序时,不要直接修改原来部分,最好注释掉原来语句,在重写修改部分
一般规律,改错比改正容易。所以保留原来的部分,实在不成还能恢复,否则可能是欲哭无泪。
2.认真纪录模块注释的“历史”部分
列宁说:“忘记历史就意味着背叛”,贫僧曰:“纪录历史,防止二过”。
3.如果有很多函数要修正,请一个一个地作,修正一个函数检查一个函数
一次修改多处,出了问题都不知道到底是哪里的问题了。
下一页 剩余页
页:
[1]