Board logo

标题: 简单的10进制的加法器,为什么都会出现问题? [打印本页]

作者: 蓝天下    时间: 2006-6-22 09:42     标题: 简单的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;


 


结果却是



作者: HAWK    时间: 2006-6-26 11:04

你的这个题目准确的说应该是10位2进制计数器,而不是加法器,因为你没有数据输入端.
你仿真的问题看来是你还没有搞清楚10位在FPGA中表达与单片机的区别.10位是BCD玛表示的,你把程序改一下,使更接近与真实器件工作方式会好很多,要时刻告诉自己VHDL不是C!
作者: kzw    时间: 2006-6-26 18:11

我对VHDL只是能看懂,找问题估计不怎么行,看代码是没有什么问题。你所谓的仿真效果不理想就是那一个小的毛刺吗,这并不影响实际的运行,并且你肯定是用的时序仿真,不是用的功能仿真吧,如果你想看好的仿真效果,用功能方针肯定不会有毛刺的。
作者: meling    时间: 2006-6-27 12:17

用不同的进程实现不同的功能




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