欢迎来到天天文库
浏览记录
ID:39555024
大小:30.50 KB
页数:3页
时间:2019-07-06
《可综合风格的计数器设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、可综合风格的计数器设计 写一个既紧凑又能满足定时要求的定时器可能会有一点棘手。根据你在面积和速度方面的要求,以及你所使用的具体器件的不同,你可能需要尝试完全不同的设计方法。 如果你需要设计一个计数速度很快的计数器,你最好先查找一下你所使用的FPGA设计工具中是否有厂家提供的现成的计数器单元。因为厂家提供的设计单元库针对特定的器件进行了优化,所以使用这些器件可以达到最快的速度。如果你的设计需要应用到几种不同的FPGA中,因而要求独立于特定的设计单元库,那么你就只能自己设计计数器了。当然,最容易的计数器设计就是count=count+1,但是你
2、可能得不到最好的结果。如果是计数值较小的计数器,使用序列器方法会得到较好的结果。例如:always@(count) case(count) 2'h0:next_count=2'h1; 2'h1:next_count=2'h2; 2'h2:next_count=2'h3; 2'h3:next_count=2'h0; endcaseendalways@(posedgeclkorposedgereset)begin if(reset)begin count=0; end elseif(enable)begin count=nex
3、t_count; endend另一种方法是异步产生计数使能,条件是使能信号必须没有毛刺并且与时钟信号有恰当的定时关系。例如:wiregate_clk=clk&enable;always@(posedgegate_clkorposedgereset)begin if(reset)begin count=0; end elsebegin count=count+1; endend另一种类型的计数器是波纹计数器。这种计数器适合速度较慢、要求低功耗的场合,可以用Verilog很容易地实现。例如:always@(count)begin coun
4、t0=count[0]; count1=count[1]; count2=count[2];endalways@(posedgeclkorposedgereset)begin if(reset)begin count[0]=0; end elsebegin count[0]=~count[0]; endendalways@(posedgecount0orposedgereset)begin if(reset)begin count[1]=0; end elsebegin count[1]=~count[1]; endenda
5、lways@(posedgecount1orposedgereset)begin if(reset)begin count[2]=0; end elsebegin count[2]=~count[2]; endendalways@(posedgecount2orposedgereset)begin if(reset)begin count[3]=0; end elsebegin count[3]=~count[3]; endend
此文档下载收益归作者所有