深入剖析FPGA规范化的重要性

电子说

1.2w人已加入

描述

很多人认为,IC/FPGA属于设计范畴。设计是一个需要设计师自由创作的过程,怎么可能被一些条条框框所局限呢?其实,设计规范化与自由创作之间没有任何矛盾。它只是制约了那些可能出错或者低效的行为,令设计思路更加明朗、设计效率得到提高、设计质量充分保证。还有人认为,目前在IC/FPGA设计方面,并没有类似工业ISO质量管理体系的国际通用标准规范体系,到底有没有这样的规范呢?

其实这是一个创造、发展、完善、规范的过程。比如ISO,就是在现代工业发展很多年后,才建立并逐步完善起来,又经过一段时间才大规模的推广使用。相比较之下,FPGA,甚至整个IT产业,都还属于正处于高速发展期,尚未完全成熟。其二,任何大型国际通用规范体系的雏形,都是由一些企业内部规范、行业内部规范逐步整合发展而成。目前有少量企业、研究所都有其相应的标准,成为通用规范需要一个过程。

来看一份计数器规范:

逐一考虑初值、加1条件、结束值三要素,且初值必须为0;

使用某一计数值,须同时满足加1条件;

结束条件必须同时满足加1条件,且结束值必须是结束值-1形式(计数是从0开始的);

取某个数时,assign形式必须为:(加1条件)&&(cnt==计数值-1);

每轮计数周期结束,计数器必须归0;

若要限定范围,推荐>=和<两种符号;

先写always段,条件用名字代替;再assign写加1条件;最后assign写结束条件;

加1条件必须与计数器严格对齐,其它信号一律向计数器对齐;

命名规范。如:add_cnt表示加1条件;end_cnt表示结束条件。

在实际设计中,考虑边界值通常要认真思考,而且很容易出错。在这条规则中,需要限定范围推荐使用“>=”和“<”两种符号。这里严格限制一定是“大于或等于”和“小于”,而不能用“大于”“小于或等于”。如要取前8位数,就取cnt>=0 && cnt<8。

该规则参考编程里的for循环语句。假如要循环8次,for循环的条件通常写成“i=0;i<8;i++”,前面的0表示开始值,后面的8表示循环次数。当然,也可以写成“i=0;i<=7;i++”,但是这些数字的意义令人费解。尽管7是从8-1得来,但是多一个-1的思考,完全是画蛇添足。代码不够简明,而且容易出现混乱。

在这份规范中,每一条原则都有其内在的原因,是从实际工作中凝练而出的,可以用于指导以后工作中通用需求的依据。

规范的意义不止于此,更重要的是对于学习者而言是一条捷径。在初期,不必过多的去纠结其原因,也就是说你不必去想“规则是怎么来的”,只需要按照规则要求去做,即可避免自己慢慢摸索所需要走的弯路。至于规则的原理,在长期的使用中慢慢就会理解并体会。按照正确的方法在实际中运用,接着在实际工作中反过来加深理解。这是“在战争中学习战争”的精髓。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分