见程序如见人---没有代码风格还学什么FPGA

来源:本站
导读:目前正在解读《见程序如见人---没有代码风格还学什么FPGA》的相关信息,《见程序如见人---没有代码风格还学什么FPGA》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《见程序如见人---没有代码风格还学什么FPGA》的详细说明。
简介:人人都知道文如其人,这里的“文”对程序员来说指的就是代码,从一段代码源文件能看出很多问题。

人人都知道文如其人,这里的“文”对程序员来说指的就是代码,从一段代码源文件能看出很多问题,比如:

1)此人所在公司版本管理是否规范,是否有统一的代码风格。

如果一个公司没有统一的代码规范,则一个大的项目基本无法维护,无法继承,往往代码的编写者离职后,继承者需要花费大量的时间来理解,甚至无法理解。连成熟的、可复用的模块都没有,谈何效率?谈何经验积累?如果作为甲方,找这样的公司作为乙方你放心吗?

2)代码作者对HDL语言的理解程度。

笔者见过很多很多人的HDL代码,还像写C语言一样编程,像下面代码片段:

always @ (posedge clk or  posedge rst)beginif (rst)begin    command         <= command_idle;    address         <= 12'b0;    data_to_bu61580     <= 16'h0;          state      <= 6'h0;     state_1    <= 6'h0;          rx_rd_cnt  <= 0;          command_word  <= 16'h0;     cmd_stk_pt_reg   <= 16'h0;     upload_cnt     <= 0;    int_status      <= 16'h0;    data_pointer        <= 16'h0;     DSP_INT6           <= 0;     dsp_int_cnt        <= 0;                // chip scope trigger signals    // end  else if (~int_n & ~bus_to_bu_occupied_by_sar)begin        case (state)        0:begin//set busy bit                       rx_rd_cnt <= 0;            //serve_done <= 0;            upload_cnt <= 0;            state <= 6'h1;            state_1 <= 6'h0;/////        end            case(state_1)            0:                begin                command <= write_reg;                address <= config_reg1_addr;                data_to_bu61580 <= 16'h8f80; // set busy bit in REG #1                if(command_ack == 1)                    begin                    command <= command_idle;                    state_1 <= 6'h1;                    end                else                    state_1 <= 6'h0;                end            1:                begin                if(wr_rd_state == wr_rd_idle)                    begin                    state_1 <= 6'h0;                state <= 6'h1;                end                else                state_1 <= 6'h1;                end            default:state_1 <= 6'h0;            endcase            end<span style="font-family:'sans serif', tahoma, verdana, helvetica;font-size:14px;line-height:1.5;">   </span>

上面的代码,交给你维护,你愿意吗?为什么这段代码不好?首先,阻塞赋值和非阻塞赋值的概念不清楚,按照顺序语句在编程;其次,不理解“不完整的if/case语句会引入不必要的锁存器或触发器”,浪费资源不说,时序的概念基本没有,还可以肯定的是STA肯定没做;再次,位宽不匹配,虽然这一点没有严格要求,但看着综合器给出的上十个警告,不心烦吗?!!!

像下面这段片段,是价值1W的一个源文件,你敢信?要不是有人出钱买了,反正我不信!看着那一排排的k、l、m、n及基本没有注释,是不是想哭了?

always @(posedge clk_hdlc or negedge reset)if(!reset)  begin  state<=0;  data_s<=1;  count_byte<=0;  k<=0;  l<=0;  m<=0;  n<=0;  count_d<=0;  clk_rd<=0;  buff[4:0]<=0;  empty<=0;  crc_en<=0;  i<=0;  j<=0;  end

代码风格各个公司各有各自的规定,但是一条基本原则要满足:代码是给人看的!完成功能的同时,做不到赏心悦目,但至少要有人看得懂吧!

提醒:《见程序如见人---没有代码风格还学什么FPGA》最后刷新时间 2024-03-14 01:05:40,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《见程序如见人---没有代码风格还学什么FPGA》该内容的真实性请自行鉴别。