欢迎光临
我们一直在努力

基于verilog的数字时钟设计报告,verilog时钟设计代码

?

场景分析一:

slow_clk不是由PLL这类IP产生的,而是由逻辑产生的。

理想情况下,slow_clk这类时钟到达1/2的时刻是相同的;

非理想情况下,这类时钟达到1/2的时刻有很大可能与FPGA逻辑版本编译布局布线情况有关,每次进行编译后问题情况可能都不一样,会导致其上升沿到达1/2的时刻不一致;

问题描述:期望是数据先从RAM的当前地址中读出、或者数据写入RAM的当前地址里,之后地址计数器才能进行翻转。

但是由于slow_clk不是从PLL里产生的,而是由逻辑产生;从而导致其上升沿到达RAM clk端口和cnt模块的时刻存在先后关系,而非同时到达,导致写错地址或者读错地址。

?

图1

?

?解决方法:逻辑设计保证cnt的计数翻转时刻与clk上升沿的先后设计,使其符合预期要求,如图二所示采用两路时钟驱动。

?

图2

结论,对待这类不是由PLL产生的时钟slow_clk,使用时就需要格外关注其上升沿达到各个模块的时刻是否相同;

若需要满足时间的先后顺序的话,需要逻辑设计进行保证(举例,如上图二所示)。

?

场景分析二:ISE工程稳定性分析

对比分析下面两种设计,分析其对ISE软件编译布局布线的依赖程度。

图3的设计,存在slow_clk上升沿到达1/2两点的时刻可能不同,受编译布局布线的影响大概是20%左右。

图4的设计,受ISE编译布局布线的影响大概75%左右,即每次ISE编译,Verilog工程其功能都可能受影响、导致工程功能异常,工程不稳定度比较高。

图3 图4

需要特别说明的是:在同步逻辑设计中,是不建议使用图4的时钟使用方式

对图4的设计进行修改,可以采用时钟使能的方式,如图5所示。采用时钟使能的方式,将时钟使能送到RAM的读写使能端口。

图5

一般,硬件上若是需要进行两个时钟的切换,可以考虑采用专用的时钟切换芯片。

?

?

?

?

?

?

15917611

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。