我是靠谱客的博主 开放西装,最近开发中收集的这篇文章主要介绍Verilog之计数器资源优化,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Verilog之计数器资源优化

       采用Verilog编写计数器延时或定时时,会消耗FPGA的片内资源,同时也进而对综合出来的逻辑电路的路径延时产生影响。为此本文探讨以下两种情况对FPGA片内资源的消耗,以及路径延时对系统最大工作频率的影响。其一,计数器实现语句位于同一个always逻辑块中;其二,计数器实现语句采用单独的always逻辑块,与程序其他逻辑块相互独立。

    (1)计数器实现语句与程序其他逻辑位于同一个always逻辑块

      上述代码如下所示,系统最大工作频率约为256.6MHz,消耗61个LUT,22个寄存器。

//-------------------------------------------------
Clear: begin				
	if( (!en)&& (cnt1==cnt_ms) ) begin
		cnt1	<= 0;
		dout  <= 0;
		state <= Idle;
	end
	else begin
		cnt1	<= cnt1 + 1;
		state <= Clear;
	end	
end
//-------------------------------------------------

  



    (2)计数器实现语句与程序其他逻辑位于两个独立的always逻辑块

      上述代码如下所示,系统最大工作频率约为277.5MHz,消耗38个LUT,23个寄存器。多用的一个寄存器为DelayOver变量。

//-------------------------------------------------			
			Clear: begin				
				if( (!en)&& DelayOver ) begin
					dout  <= 0;
					state <= Idle;
				end
				else begin
					state <= Clear;
				end	
			end
			
			default: state <= Idle;
		endcase
	end

always@(posedge clk)
	if(rst) begin
		cnt1	<= 0;
		DelayOver  <= 0;
	end
	else begin
		if(cnt1==cnt_ms) begin
			cnt1	<= 0;
			DelayOver  <= 1;
		end
		else begin
			cnt1	<= cnt1 + 1;
			DelayOver  <= 0;
		end
	end
//-------------------------------------------------

  


       结论

       对比两种情况可知,尤其对于位宽较大的计数器可以进行优化,由独立的always块进行实现,同时可以将一个计数器拆分为两级计数实现,这样可以减小计数器的位宽。










最后

以上就是开放西装为你收集整理的Verilog之计数器资源优化的全部内容,希望文章能够帮你解决Verilog之计数器资源优化所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部