读书笔记(Verilog HDL那些事儿_建模篇1)

来源:互联网 发布:js向object中添加元素 编辑:程序博客网 时间:2024/05/18 22:44
  
  读书笔记(Verilog HDL那些事儿_建模篇1)
  
  说明:写代码总感觉不是很好,向前辈学习,提升自己。
  
  感悟:1: 系统 -> 封装 -> 模块 这样的层次结构不只是Verilog,基本所有的代码都是
                 可以这样划分的。
             2: “代码风格”或者“代码结构”的确是需要好好考虑的问题。相同的“代码风格”
                 便于阅读和维护。
             3: 大多数代码设计都是按照数据流先后顺序进行的,因此在各模块实现过程中
                 使用“仿顺序操作”的确可以使设计思路更清晰,当然,其中的问题就是如何从
                 千丝万缕的功能中将模块细化,这个过程很费时间,当确定了各个模块的功能,
                 整个系统构架也就呈现在了眼前,再根据系统构架优化各个模块功能,如此迭代,
                 终能实现繁杂的系统功能.
  

  进度:完毕(时间问题,只关注编程思想)


  整理来自:时间的诗

  
  
  1、系统建模 模块封装 模块
  
  2、模块封装:低级建模就是这样一回事,早期的建模,我们只是针对每某个硬件资源,建立一个“ 基
     础”而已。这个“ 基础”虽然可以调用,但是却不是真正的完成品。如果“ 基础”要成
     为完成品,那么该“ 基础”就要执行所谓的“ 封装”。
  
  3、每一个简单的功能模块,可以看似一位员工。
     每一个简单的控制模块,可以看似一位领导。
     每一个简单的组合模块,可以看似一组小组。
     每一个组合模块再组合起来,可以看似一个大组。
     每一个大组为某种“ 目的”存在,如果有独立运行的能力,就可以成为部门(接口)。
     最后由许多接口组合起来,就成为一个“ 系统”。
       
     这就是“ 低级建模”最基本思路
  
  4、笔者的建模技巧-低级建模,不仅是关心“如何建模”而已?笔者非常执着与“代码风
     格”或者“代码结构”。从实验的开始到实验的结束,笔者都是使用同样的“代码风格”。
     要如何维护好自己的代码风格,并不是这本笔记讨论的范围,但是笔者很建议读者可以
     参考笔者的“代码风格”。
  
  5、单独使用仿顺序操作缺点:
      a: 模块的重复,资源的消耗。
      b: 建模量多,连线设计繁多。
      c: 模块调用的难度。
      
    如果读者有笔者这样的耐性,这样的劳动当然是没有问题啦。但是,实际上笔者也觉得
    这样的建模方法非常“猥琐”,而且模块的连线也很困难。所以我们需要另一种“仿顺
    序操作”建模的方法,毕竟 4-1 章 和 4-2 章的方法只适合小型的“仿顺序操作”而已。
    这个方法既是“命令式的仿顺序操作”。
    
  6、所谓“命令式的仿顺序操作”就是将各个功能模块通过命令调用.
   
     always @ ( posedge or CLK or negedge RSTn )    if( !RSTn )    begin      i <= 4'd0;      rPin_Out <= 1'b0;      isDone <= 1'b0;      ......    end    ===> else if( Function_Start_Sig[1] )    case( i )      // S 摩斯码产生      ......      4'd 9:      begin isDone <= 1'b1; i <= i + 1'b1; end      4'd10:      begin isDone <= 1'b0; i <= 4'd0;    endcase    ===> else if( Function_Start_Sig[0] )    case( i )      // 0 摩斯码产生      ......      4'd 9:      begin isDone <= 1'b1; i <= i + 1'b1; end      4'd10:      begin isDone <= 1'b0; i <= 4'd0;    endcase    /*************************************************/        假设我要产生 S 模式码,那么我只要往 Function_Start_Sig     输入 2'b10 即可。


    
  
0 0