在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4160|回复: 11

[求助] 计数计数模块设计遇到的问题

[复制链接]
发表于 2012-6-12 16:03:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我正在用CPLD设计一个计时计数模块:按下reset清零,按一下start开始计时,按一下stop停止计时把结果传给单片机,现在就是控制不了stop,就是仿真时start为高电平1时计数器工作,为0时停止计数,stop控制不了,请问应该怎样才能控制呢?
发表于 2012-6-13 08:10:44 | 显示全部楼层
用状态机控制吧
发表于 2012-6-13 10:05:10 | 显示全部楼层
用状态机控制吧
 楼主| 发表于 2012-6-13 15:05:22 | 显示全部楼层
能具体点吗?状态机我不是很熟
 楼主| 发表于 2012-6-14 10:24:08 | 显示全部楼层
程序是
entity count  is
   port(
            clk,start,stop,reset : in std_logic;
             cout : out  std_logic_vector(7 downto 0)
          );
end count;
architecture behav of count
begin
process(clk,start,stop,reset)
  variable c : std_logic_vector(7 downto 0);
begin
if reset='1' then
c:="00000000";
if clk'event and clk='1'  then
if start'event and start='1'  then
c:=c+1
elsif stop'event and stop='1'  then
cout<=c;
end if;
end if;
cout<=c;
end process;
end behav
编译后出现错误:can't infer register for "c[0]" at count.vhd,because it does not hold its value outside the clock edge
发表于 2012-6-14 10:24:33 | 显示全部楼层
state_machine_cnt.JPG 回复 1# woshaogang123
 楼主| 发表于 2012-6-14 10:39:15 | 显示全部楼层
非常谢谢
 楼主| 发表于 2012-6-14 10:40:08 | 显示全部楼层
非常感谢
发表于 2012-6-14 17:24:46 | 显示全部楼层
回复 5# woshaogang123


library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity count is
  port(
    clk:in std_logic;
    reset : in std_logic;
    start: in std_logic;
    stop: in std_logic;
    cout : out std_logic_vector(7 downto 0)
  );
end count;

architecture behav of count is
begin

  process(clk,reset)
    variable c : std_logic_vector(7 downto 0);
  begin
    if reset='1' then
      c:="00000000";
      cout<="00000000";
    elsif clk'event and clk='1' then
      if start='1' then
        c:=c+1;
      elsif stop='1' then
        cout<=c;
      end if;
    end if;
  end process;

end behav;
Capture1.PNG
 楼主| 发表于 2012-6-15 09:50:44 | 显示全部楼层
我做的是一个激光测距仪,用CPLD作时间间隔测量,就是测量激光从发射出去到碰到目标反射回来的时间,start是一PWM信号,作启动计数器的开门信号.stop就是回波信号,作关闭计数器的关门信号,我的思路是检测start信号的第一个上升沿作开门信号,stop的第一个上升沿作关门信号
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-19 12:50 , Processed in 0.025378 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表