VHDL,累加器到底累加多少个数据的问题。

shuanghb   2008-4-12 15:24 楼主
if(cnt 代码如下:
cal_p:process(clk,ena,sop,cnt,tem_dat,sum)
begin
if(clk'event and clk='1')then
if(ena='0')then  --清零
  sum<=(others=>'0');
end if;
if(ena='1')then  --置数累加
  if(sop='1')then
   sum<=tem_dat;
  elsif(cnt    sum<=sum+tem_dat;     //前10个tem_dat的累加(理论上只做到包含cnt=9)
  end if;                //实际仿真却发现累加作了11个tem_dat(即,包含cnt=10)     
end if;
end if;
-- if(ena='1')then  --保持,可以省略
--  if(cnt>=b"0000_1010")then
--   sum<=sum;
--  end if;
-- end if;
end process cal_p;
-------------------------------------
请高手帮忙,
小弟是在看不出错误在那?
谢谢

回复评论 (4)

cnt的 程序呢?

给你做了小小的修改
cal_p : process (clk)
begin
if (clk'event and clk = '1') then
  if (ena = '0') then  --清零
    sum <= (others => '0');
  elsif (sop = '1') then
      sum <= tem_dat;
  elsif (cnt < b"0000_1010") then 
      sum <= sum + tem_dat;    
    end if;              
  end if;
end if;  

和你的功能一样
如果没有异步清零,敏感变量就一个
点赞  2008-4-15 12:25
这个简单啊,网上搜一下就得到答案了.
点赞  2008-5-1 09:37
aaronstone 写的意思对 可语法有问题
点赞  2008-5-1 11:26
2楼的说话谦虚点   
点赞  2008-5-1 11:28
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复