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

原创 2016年05月31日 15:34:17

说明:写代码总感觉不是很好,向前辈学习,提升自己。

感悟:文章作者可以将一个大工程划分为多个子模块,主要分功能模块和控制模块,一个功能一个模块的思路刚开始觉得很繁琐,但是到后来却发              现他利于移植,更重要的是将功能划分开,方便阅读和维护。

进度:第三章(159页)

整理来自:时间的诗

  1、模块:功能模块、控制模块、组合模块
  2、准则:一个模块一个功能
  3、信号:
           组合模块:clk, rst_n, RX_Pin_In, TX_Pin_Out  // 端口信号
           控制模块:clk, rst_n, Start_Sig, Done_Sig, TX_En_Sig, TX_Done_Sig,
           功能模块:clk, rst_n, Start_Sig, Done_Sig 


           模块内部:
           TX_Data,                           // 数据信号
           isS, isO,                          //中间信号
           assign S_Start_Sig = isS;          //端口信号
           assign O_Start_Sig = isO;
          
           “仿顺序操作”的建模都有标志性的“ 模块构造”,
           就是所有模块都拥有“ Start_Sig”和“ Done_Sig”。
           “ Start_Sig”如同 C 语言中的调用指令,
           “ Done_Sig”如同 C 语言的返回指令。
           这两个信号的存在就是为了控制模块的调用。
           
     计数器:isCount,  // 标志寄存器使能着该定时器
             Count1,   // 计数到1ms
             Count_MS, // 技术多少个1ms
             rTimes,   // 计数次数
     
  4、模块命名方式及模块信号注释:

sos_module
sos_control_module
s_module
o_module
sos_control_module U3
(
 .CLK( CLK ),
 .RSTn( RSTn ),
 .Start_Sig( Start_Sig ),      // input - from top
 .S_Done_Sig( S_Done_Sig ),    // input - from U1
 .O_Done_Sig( O_Done_Sig ),    // input - from U2
 .S_Start_Sig( S_Start_Sig ),  // output - to U1
 .O_Start_Sig( O_Start_Sig ),  // output - to U2
 .Done_Sig( Done_Sig )         // output - to top
 );

  5、常用定时器 计数器模板
/****************************************/
  parameter T1MS = 16'd49_999;  //开发板使用的晶振为50MHz,50M*0.001-1=49_999
/***************************************/
reg [15:0]Count1;
always @ ( posedge CLK or negedge RSTn )
  if( !RSTn )
     Count1 <= 16'd0;
  else if( Count1 == T1MS )
     Count1 <= 16'd0;
  else if( isCount )
     Count1 <= Count1 + 1'b1;
  else if( !isCount )
     Count1 <= 16'd0;
/****************************************/ 
reg [9:0]Count_MS;
always @ ( posedge CLK or negedge RSTn )
  if( !RSTn )
     Count_MS <= 10'd0;
  else if( Count_MS == rTimes )
     Count_MS <= 10'd0;
  else if( Count1 == T1MS )
     Count_MS <= Count_MS + 1'b1;

/******************************************/

  6、仿顺序操作状态机:
  
always @ ( posedge CLK or negedge RSTn )
  if( !RSTn )  begin
     i   <= 4'd0;
     isO <= 1'b0;
     isS <= 1'b0;
     isDone <= 1'b0;
  end
  else if( Start_Sig )
     case( i )
       4'd0:
         if( S_Done_Sig ) begin isS <= 1'b0; i <= i + 1'b1; end
         else isS <= 1'b1;
       4'd1:
         if( O_Done_Sig ) begin isO <= 1'b0; i <= i + 1'b1; end
         else isO <= 1'b1;
       4'd2:
         if( S_Done_Sig ) begin isS <= 1'b0; i <= i + 1'b1; end
         else isS <= 1'b1;
       4'd3:
         begin isDone <= 1'b1; i <= 4'd4; end
       4'd4:
         begin isDone <= 1'b0; i <= 4'd0; end
       default:
         begin isDone <= 1'b0; i <= 4'd0; end
      endcase

    /*****************************************/

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

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

说明:写代码总感觉不是很好,向前辈学习,提升自己。 感悟:文章作者可以将一个大工程划分为多个子模块,主要分功能模块和控制模块,一个功能一个模块的思路刚开始觉得很繁琐,但是到后来却发          ...

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

读书笔记(Verilog HDL那些事儿_建模篇1)      说明:写代码总感觉不是很好,向前辈学习,提升自己。      感悟:1: 系统 -> 封装 -> 模块 这样的层次结构不只是Ve...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

css那些事儿——读书笔记

之前定下的学习计划这些天一直在坚持每天完成一点,牛客网上的编程题已经过了一遍,《css那些事儿》也看了一遍,同时看完了《响应式web设计》这几天也在边忙着实验室的事,边在github上提交最近重新学习...

【读书笔记】 UML那些事儿

引言:本次的总结一时为了回顾之前学习的内容,加深理解。更重要的是,学习英语。。。

Verilog HDL笔记

模块模块介绍 模块是Verilog HDL语言的基本单元,数字系统是用模块的形式来描述。 模块是描述某个设计的功能、结构和其他模块通信的外部端口。 Verilog HDL中的各个模块是并行运行的 模块...

Verilog HDL的建模

September 13, 2016 作者:dengshuai_super 出处:http://blog.csdn.net/dengshuai_super/article/details/52...

读《CSS那些事儿》笔记一

学习css最好的方法就是不断地做,不断地想,不断地实践 Css的特点: 1、修饰页面文本、图片等页面元素,避免使用不必要的HTML元素 2、更有效地控制页面结构、页面布局 3、提高开发和维护的...

我本一无所有——读《明朝那些事儿》

被石敬瑭拱手相让于契丹的燕云十六州,和罗成那腰配弯刀的燕云十八骑。

[verilog读书笔记]5.门级建模

一、门的类型     1.与门(and)和或门(or)         与门和或门都具有一个标量输出端和多个标量输入端。门的端口列表中的第一个端口必定是输出,其后为输入端口。         ...

[verilog读书笔记]2.层次建模

1.设计方法学 数字电路设计中有两种基本的设计方法:自底向上和自顶向下设计方方法。 而在典型的设计中,这两种方法是混合使用的,设计人员首先根据电路的体系结构定义顶层模块。逻辑设计者确定如何根据功能...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)