首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

简单的10进制的加法器,为什么都会出现问题?

简单的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;


 


结果却是


你的这个题目准确的说应该是10位2进制计数器,而不是加法器,因为你没有数据输入端.
你仿真的问题看来是你还没有搞清楚10位在FPGA中表达与单片机的区别.10位是BCD玛表示的,你把程序改一下,使更接近与真实器件工作方式会好很多,要时刻告诉自己VHDL不是C!
我对VHDL只是能看懂,找问题估计不怎么行,看代码是没有什么问题。你所谓的仿真效果不理想就是那一个小的毛刺吗,这并不影响实际的运行,并且你肯定是用的时序仿真,不是用的功能仿真吧,如果你想看好的仿真效果,用功能方针肯定不会有毛刺的。
在交流中前进,共同实现nios的应用。
用不同的进程实现不同的功能
返回列表