求助

[复制链接]
1948|2
 楼主| woshaogang123 发表于 2012-6-15 12:23 | 显示全部楼层 |阅读模式
我做的是一个激光测距仪,用CPLD作时间间隔测量,就是测量激光从发射出去到碰到目标反射回来的时间,start是一PWM信号,作启动计数器的开门信号.stop就是回波信号,作关闭计数器的关门信号,我的思路是检测start信号的第一个脉冲作开门信号,stop的第一个脉冲作关门信号
process(clk,reset)
variable c:std_logic_vector(7 downto 0)
    begin
if reset='1'  then
   c:="00000000";
   cout<=c;
elsif clk'event and clk='1'  then
  if start='1'  then
    c:=c+1;
elsif stop='1'  then
cout<=c;
end if;
endif;
end process
现在仿真出来的结果是start为高电平时计数,一直为高就一直计数,为低电平时stop信号还没来就不工作了.
请哪位大侠指点一下,不胜感激
GoldSunMonkey 发表于 2012-6-15 14:39 | 显示全部楼层
c换成signal,不要用变量
GoldSunMonkey 发表于 2012-6-15 14:41 | 显示全部楼层
而且语法有问题。你的star一直为1,他只会不停的计数,永远都不会到stop来。
换换思路
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

17

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部