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;
-------------------------------------
请高手帮忙,
小弟是在看不出错误在那?
谢谢
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;
和你的功能一样
如果没有异步清零,敏感变量就一个