在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2326|回复: 1

[求助] modelsim仿真问题

[复制链接]
发表于 2015-4-26 15:38:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 BYbread 于 2015-4-26 15:42 编辑

底层实体(entity)定义了D:in integer range 0 to 15;
在顶层的例化(component)写成D:IN STD_LOGIC_VECTOR()3 DOWNTO 0);仿真出错。在quartus ii中的程序编译是OK的,quartus 8自带的仿真可以运行。但为什么在modelsim中说数据类型不匹配。# ** Failure: (vsim-3807) Types do not match between component and entity for port "d".
#    Time: 0 ps  Iteration: 0  Instance: /pwm/u1 File: E:/..................count.vhd Line: 8
# Fatal error in file E:/.............../count.vhd
#  while elaborating region: /pwm/u1
# Load interrupted
# Error loading design代码如下:底层:




  1. library ieee ;
  2. use ieee.std_logic_1164.all ;

  3. entity        count is
  4.         port
  5.         (
  6.                 clk,ld:in std_logic;
  7.                 d:in integer range 0 to 255;
  8.                 over:out std_logic
  9.         );

  10. end entity count;

  11. architecture art of count is
  12. signal count_255:integer range 0 to 255;
  13. begin
  14.         process(clk) is
  15.         begin
  16.                 if rising_edge(clk) then
  17.                         if ld='1'        then count_255 <= d;
  18.                         else count_255 <= count_255+1;
  19.                         end if;
  20.                 end if;
  21.         end process;
  22.         
  23.         process(count_255) is
  24.         begin
  25.                 if count_255 = 255 then over <= '1';
  26.                 else over <= '0';
  27.                 end if;
  28.         end process;
  29. end architecture art;



复制代码
顶层:



  1. library ieee ;
  2. --use ieee.std_logic_arith.all;
  3. use ieee.std_logic_1164.all ;
  4. --use ieee.std_logic_unsigned.all ;

  5. entity PWM is
  6.         port
  7.         (
  8.                 clk:in std_logic;
  9.                 A,B:in std_logic_vector(7 downto 0);
  10.                 pwm:out std_logic
  11.         );

  12. end entity PWM;

  13. architecture art of PWM is
  14. component count is
  15.         port
  16.         (
  17.                 clk,ld:in std_logic;
  18.                 d:in STD_logic_vector(7 DOWnto 0) ;
  19.                 over:out std_logic
  20.         );
  21. end component;

  22. signal over1,over2 : std_logic;
  23. signal ld1, ld2 : std_logic;        
  24. signal spwm : std_logic:='0';
  25. signal data1,data2 : integer range 0 to 255;
  26. begin
  27. u1:count port map(clk,ld1,A,over1);
  28. u2:count port map(clk,ld2,B,over2);

  29. process(over1,over2) is
  30.         begin
  31.         if over1= '1' then spwm <= '0';
  32.         elsif rising_edge(over2)        then spwm <= '1';
  33.         end if;
  34.         end process;
  35.         ld1 <= not spwm ;
  36.         ld2 <= spwm ;
  37.         pwm <=spwm ;
  38. end architecture art;



复制代码
发表于 2015-4-27 08:38:42 | 显示全部楼层
一个是Integer型、一个是std_logic_vector型,两个能匹配么;在quartus里可以运行,可能是quartus在执行的时候自动进行了数据类型转换,而modelsim可能不带这个功能;要么数据类型定义一样,要么使用数据类型转换函数conv_integer将std_logic_vector转换成integer型
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-29 14:40 , Processed in 0.020447 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表