原创 FPGA代码风格(二):一个always块干一件事

2010-2-10 21:36 5024 12 13 分类: FPGA/CPLD

   我想以一个例子来说明:LED的闪烁灯,下面是我摘抄的一位同学的代码:


module LED(clk, rst_n, led);     //clk = 50M


   input      clk   ;
   input      rst_n ;
   ouput      led   ;


   reg        led   ;
   reg [24:0] cnt   ;


   always @  (posedge  clk or negedge  rst_n)
      begin
          if (rst_n == 1'b0)  
             begin
                cnt <= 25'b0;
                led <= 1'b0 ;
             end
          else if(cnt == 25'd25000000)
              begin
                cnt <= 25'b0;
                led <= ~led ;
              end
          else
             begin
                cnt <= cnt + 1'b1;
             end


      end


endmodule
  


     这段代码并不难,可以说非常简单,大概意思是,让LED亮500ms,然后再熄灭500ms,如此循环。程序下载能正常运行。但是这样的代码风格我并不能苟同,这样的风格有软件编程的风格,而没有硬件的层次风格。如果程序再大一点,一个always块中,做这事又做那事,我想读代码的人会头晕。我想说的是一个always块中尽量干一件事,尽量有硬件电路的层次感。就像组合逻辑要和时序逻辑分开编码一样,组合逻辑一块,时序逻辑一块,非常有层次感。下面我改写上面的程序,将计数器电路和LED状态电路分开编码在两个always块中:


module LED(clk, rst_n, led);     //clk = 50M


   input       clk   ;
   input       rst_n ;
   ouput      led   ;


   reg           led   ;
   reg [24:0] cnt   ;


   wire cnt_500ms = (cnt == 25'd25000000);   //计数到500ms


   always @  (posedge  clk or negedge  rst_n)
      begin
          if        (rst_n           == 1'b0)     cnt <= 25'b0;
          else if (cnt_500ms  == 1'b1)     cnt <= 25'b0;
          else                                          cnt <= cnt + 1'b1;
      end
   
   always @ (posedge clk or negedge rst_n)
     beign
        if        (rst_n          == 1'b0)     led <= 1'b0;
        else if (cnt_500ms == 1'b1)     led <= ~led;
     end


endmodule


        我不敢说,我的这样的风格是最好的,但是可以说层次很清楚,哪些电路在前,哪些在后,非常清晰,欢迎大家批评指正。

文章评论1条评论)

登录后参与讨论

用户1516747 2010-2-11 00:07

楼主说的对,看过华为培训的资料就知道应该这样。
相关推荐阅读
用户244280 2011-04-09 02:19
有源晶振的EMC设计
    有源晶振的电路设计常见有两种:(1)、 (2)、原理图设计要点:(1)、晶振电源去耦非常重要,建议加磁珠,去耦电容选三个,容值递减。(2)、时钟输出管脚加匹配,具体匹配阻值,可根据测试结果而定...
用户244280 2011-04-05 12:46
三极管开关电路之一(基本电路)
       在板卡设计中,三极管开关电路用得非常多,然而却经常被人忽视。一位同事曾经对我说,都什么时代了,还用三极管。但是用得好的话,绝对事半功倍。        在最近的一次板卡上机调试中,由于板...
用户244280 2010-07-17 00:12
远征军魂
              今天重温了一下那段历史,一段被经历过的老年人时刻萦绕在脑海无法忘却,被浮躁的中年人忘却,被无知的青年一无所知的历史-----中国远征军。        看完凤凰大视野的那段...
用户244280 2010-06-22 22:13
毛主席词一首
     我很喜欢毛主席的一些诗词,经常去诵读,下面是毛主席的一首词,是红军长征过程中,攻占了娄山关后毛主席写的,词如下:  忆秦娥-娄山关    西风烈   长空雁叫霜晨月   霜晨月   马蹄声碎...
用户244280 2010-06-22 22:04
与君分享---我的一首词
南国冬暖阳花红枝未枯枝未枯好景处处无心留顾 十年漫漫寒窗苦满心抱负却无路却无路愁绪千千泪如雨注...
用户244280 2010-06-22 22:03
我的诗两首
     其一 孤坐仰苍穹星辰月当空又是中秋夜愁绪谁能懂          其二荔园初夏杨柳垂,晓风拂来破静水,怎奈此景无限悲,前途何方愁相随!...
我要评论
1
12
关闭 站长推荐上一条 /2 下一条