分享

Verilog及Xilinx_FPGA入门(四)

 小小锐DarkRose 2014-07-23

Verilog入门(四)

       

         本人所撰写的文章都是由个人经验所集成,如有错误观点请指正,如不喜请勿喷

 

 

1)流水线设计

若一个系统模块过多,这时就很难保证来自某一个模块的信号进入其他模块,时间上的同步。

解决:

流水线:多设计寄存器,一级一级递进;这样以资源换速度,保证时序稳定;

 

如 :module u1

    .a(a)

     );

 

   Reg A_buf;

   

   always@(posedge clk) 

   Begin

     A_buf<=a;

End

 

Module u2

    .a(A_buf)

     );

 

   Module u3

    .a(A_buf)

     );

 

Module u4

    .a(A_buf)

     );

.....

2)时序收敛

 

ISE自带静态时序分析器,自学静态时序分析器的使用

理解建立时间与保持时间,抖动与偏移

 

一般情况下,工作在100Mhz以上的工作时钟时,需要考虑时序收敛的问题,如何去约束路径,约束时序

 

100Mhz以下,只要代码风格够好,时序收敛一般没问题。

 

100Mhz以下,改进代码以实现时序收敛

 

典型问题,状态机的跳转

 

如:

Reg[5:0]  state;

Reg[31:0] cnt;

 

.....

 

casestate

   1....

.....

 

   10:begin

     

     If(cnt==1000)

       begin 

       State<=11;

       Cnt<=0;                 //代码下载到板子,在这里,可能问题就来了,假如state先跳转了,cnt

                               //会变为0吗?所以需要改进代码,来确保state跳转,同时让cnt变为

                              //0

      End else begin

             Cnt==cnt+1;         

             end     

end

 

11:begin

   End

.....

Endcase  

 

 

提速建议:(1)少使用嵌套语句,以达到建立时间少

        (2) 多用case语句代替if语句 (case语句比较符合FPGA基本的查表原理)

        (3) 异或与移位算是运算中最快的两种方式了

 

 

 

3)模块结构设计:

 

 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多