阅读:2040回复:8
用VHDL设计的计数器毛刺如何解决?
以下为我所编的计数器起始值为X1000,终值为X2000。编译没问题,但仿真的时候,输出波形有毛刺,不知是否是程序结构有问题?
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity mycount is port(clk,resetn: in std_logic; sum: out std_logic_vector(15 downto 0)); end mycount; architecture countarch of mycount is begin process (resetn, clk) variable ref_timer: std_logic_vector(15 downto 0); begin if resetn = \'0\' then ref_timer := (others => \'0\'); elsif clk\'event and clk = \'1\' then if(ref_timer = X\"2000\" ) then ref_timer:=X\"1000\"; else ref_timer:= ref_timer + 1; end if; end if; sum<=ref_timer+X\"1000\"; end process; end countarch; |
|
|
沙发#
发布于:2003-12-31 16:30
那是正常的不是毛刺,因为记数器的不同位有几ns的时差,所以记数总线看起来好象有毛刺。
|
|
板凳#
发布于:2004-01-07 14:04
那是正常的不是毛刺,因为记数器的不同位有几ns的时差,所以记数总线看起来好象有毛刺。 同意 |
|
地板#
发布于:2004-01-13 08:00
这样的计数器怎么可以用呢?问题在这里
if(ref_timer = X\"2000\" ) then ref_timer:=X\"1000\"; |
|
地下室#
发布于:2004-02-25 10:52
本人是初学者,望X_ray能给予指正。谢谢
|
|
|
5楼#
发布于:2004-03-15 15:16
XILINX 中有COUNTER 程序DEMO样板
感觉你的结构不对,看看你的RTL图 |
|
6楼#
发布于:2004-03-19 10:48
TO magictong:
望老兄告知具体的xilinx中counter的网址 |
|
|
7楼#
发布于:2004-03-23 14:47
修改程序的算法可以解决的。比如增加技术其时钟的步长
|
|
8楼#
发布于:2004-03-24 15:51
如果有时间,可以研究动态步长的算法,解决毛刺效果不错。
|
|