Board logo

标题: 求助:简单的10进制加法器都出现问题了。 [打印本页]

作者: 蓝天下    时间: 2006-6-22 09:45     标题: 求助:简单的10进制加法器都出现问题了。

今天装了QII6.0,弄了个10进制的加法器,没有想到佳果与理想严重不一样,请求高手帮忙看看。谢谢!


library ieee ;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity CNT10 is
   port (clk,rst,en : in std_logic;
         CQ : out std_logic_vector(3 downto 0);
         cout : out std_logic );
end CNT10;
architecture behav of CNT10 is
begin
   process (clk,rst,en)
     variable CQI : std_logic_vector(3 downto 0);
   begin
     if rst='1' then CQI := (others => '0'); -- 计数器异步复位
      elsif clk 'event and clk ='1' then --检测时钟上升沿
        if en = '1' then                 -- 检测是否允许计数(同步使能)
           if CQI < 9 then CQI := CQI + 1; --允许计数,检测是否小于9
             else CQI := (others =>'0'); --大于9,计数器清零
           end if ;
        end if;
     end if;
      if CQI = 9 then cout <= '1';   --计数大于9,输出进位信号
         else cout <= '0';
      end if;
    CQ <= CQI; --将计数值向端口输出
  end process;
end behav;



作者: stone133    时间: 2006-6-22 22:50

没有什么问题啊
作者: 蓝天下    时间: 2006-6-23 10:18

谢谢斑竹的关注与回复。
我看了那个仿真结果
问什么CQ的波形间隔不一样?
比如0101与0111的时间间隔就不一样。
还有并不是在CLK的上升沿变化
延迟好多
请问是怎么回事?
谢谢
作者: anotherchen    时间: 2006-6-23 12:32

你用什么工具仿真的啊?

无可能会是这样的波形

应该是每来一个时钟+1的
作者: 蓝天下    时间: 2006-6-27 10:27

我没有用Modelsim 用的是QII6.0自带的
作者: stone133    时间: 2006-6-28 08:56

CQ <= CQI这句用时钟控制来完成,也就是输出前锁存一下




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0