VerilogHDL那些事-整合篇学习笔记

1、源码的整合——定时器整合于操作步骤

  好处是:操作更加方便。

 1   case( i )
 2                 
 3                     0:
 4                      if( C1 == 10 - 1 ) begin C1 <= 5'd0; i <= i + 1'b1; end 
 5                      else begin rQ <= 1'b1; C1 <= C1 + 1'b1; end 
 6                      
 7                     1:
 8                      if( C1 == 10 - 1 ) begin C1 <= 5'd0; i <= i + 1'b1; end 
 9                      else begin rQ <= 1'b0; C1 <= C1 + 1'b1; end 
10                      
11                      2:
12                      if( C1 == 10 - 1 ) begin C1 <= 5'd0; i <= i + 1'b1; end 
13                      else begin rQ <= 1'b1; C1 <= C1 + 1'b1; end 
14                      
15                      3:
16                      if( C1 == 10 -1 ) begin C1 <= 5'd0; i <= i + 1'b1; end 
17                      else begin rQ <= 1'b0; C1 <= C1 + 1'b1; end 
18                      
19                 endcase

2、源码整合——显性指向时钟,清楚每一步骤消耗的时钟

3、循环保留和循环操作 

  循环保留:将多次的循环展开成多个步骤;保留循环:Verilog语言实现循环语句,如for循环。

 4、模块之间的调用延迟

  由于存储器存在D触发器,造成输入和输出之间存在延迟的问题,解决方法有两个:

  1)加入旁路寄存器

    在输出端加入寄存器,使得输出延迟,加入一个寄存器,延迟一个时钟,其缺点是:如果延迟时钟较多,那么需要的旁路寄存器也就多了;

  2)使用循环操作同步数据

 

5、采用两级缓存(2个移位寄存器)解决亚稳态问题

  当FPGA采集外部信号时,容易出现亚稳态这种现象。

6、计数器的程序

1 always @ ( posedge CLK or negedge RSTn )
2     if( !RSTn )
3         C1 <= 4'd0;
4     else if( C1 == 4 ) 
5         C1 <= 4'd1; 
6     else 
7         C1 <= C1 + 1'b1; 

  第5行 C1 <= 4'd1;即每一次计数从1开始,计满4结束,也就是每一个过程占了4个时钟。

 

 

posted @ 2015-06-15 20:12  yulone  阅读(419)  评论(0)    收藏  举报