注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
tx_xy的个人空间 https://home.eeworld.com.cn/space-uid-216158.html [收藏] [复制] [分享] [RSS]
日志

FPGA起步ABC之代码风格

已有 1807 次阅读2011-9-3 01:34 |个人分类:FPGA起步ABC|

    先说几句题外话,关于代码风格这部分,我非常努力地想把这部分写好,前前后后一共改了4版,但没有一版让自己满意,很遗憾!

我之所以愿意在代码风格这部分花如此之多的时间,两个原因:第一就是因为论坛里面大部分都是一些尚未从事工作的朋友,所以想尽可能地给朋友们一些自认为比较 好的建议,可以帮助大家养成良好的代码习惯;第二是因为代码风格这部分本身就很重要,现在的工作越来越注重团队协作,优良的代码风格,本身就是对同事的一 种尊重、就是团队协作能力的一种体现!

那什么样的代码风格比较好?我个人认为做到如下两点就OK

1. 从阅读代码的人来说,如果所写的代码,能够被一个新手或者刚入门者可以很轻松的理解,这样的代码,OK

2. 从阅读代码的工具工具来说,无论什么综合工具,综合出来的电路都一样,这样没有任何歧义的代码,OK


  如何写出可以让人理解的代码(以verilog语言为例)

1.       代码要比较好理解,最容易做到的就是把代码写短,因此在每个always语句块尽可能只处理一个信号,或者只处理一组相关度很高的信号(例如ram的读/写信号、片选信号);

 2.       从代码格式上来说,写出比较好看的代码,遵从大家普遍认可的代码格式,也有助于对代码的阅读,所谓普遍认可的代码格式,可以参考下例:

 always @posedge work_clk or negedge rst_b//always语句顶格开始

begin // 每个always 块都以begin开始,以end结束,且beginend前都空4个空格

    if!rst_b//begin end 之间的语句相对于beginend,都空4个空格

        begin

            signal_out <= 1’b0;//所有赋值语句相对于begin语句,退后4个空格

        end

    else ifcondition

        begin

            signal_out <= data_in;

        end

end

 3.对每一个代码,都应该添加一个头文件,所谓的头文件,其内容可以包括:代码编写人的名字,代码编写的时间,代码的版本号,以及每次代码修改时所做的改动的相关说明,代码能够实现的功能,代码所使用的算法简单介绍,信号时序图等,参考下例:

// ----------------------------------------------------- //

// author : tx_xy;

// 2011-9-3

// ver 1.0

// function describe

// timing describe

// ----------------------------------------------------- //

 

4       易理解,更重要的一点是在定义信号名称时要易懂,能够做到望文生义,当然还需要详尽的注释

4.1    所有输入输出的信号都必须要有说明;

input [7:0] image_data_8_bit; //input data from ccd

output    sram_odd_wr; //odd image data sram write enable, 1 = write, 0 = read

output    sram_even_wr; //even image data sram write enable, 1 = write, 0 = read

4.2    代码内部所有定义的regwire信号,都必须要有说明;

4.3    对一个always语句块,建议都描述其实现的功能;

4.4    根据算法流程,或者数据通道流向,从前往后安排代码;在算法实现过程中,建议按照算法实现步骤,每一个步骤所对应的always语句块都标注清楚属于算法的哪一个步骤!
发表评论 评论 (6 个评论)
回复 soso 2011-9-4 10:19
作为一个外行,我都能看得进去,所以是一篇很不错的文章
回复 tx_xy 2011-9-4 19:42
soso: 作为一个外行,我都能看得进去,所以是一篇很不错的文章
前段时间,家里忙着装修,现在一切都搞定,以后可以经常来论坛,hoho!
回复 soso 2011-9-6 09:18
tx_xy: 前段时间,家里忙着装修,现在一切都搞定,以后可以经常来论坛,hoho!
哈哈 给力 谢谢啦
回复 soso 2011-9-6 09:18
tx_xy: 前段时间,家里忙着装修,现在一切都搞定,以后可以经常来论坛,hoho!
话说造娃计划进展如何?刚装修的屋子还是少住啊
回复 tx_xy 2011-9-6 23:31
soso: 话说造娃计划进展如何?刚装修的屋子还是少住啊
恩 已经搬进来住啦 HOHO 。谢谢soso提醒 。。。
回复 soso 2011-9-8 08:53
tx_xy: 恩 已经搬进来住啦 HOHO 。谢谢soso提醒 。。。

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章