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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3791|回复: 4

[求助] 源程序实体和testbench的COMPONENT不匹配

[复制链接]
发表于 2014-7-17 15:37:40 | 显示全部楼层 |阅读模式

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

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

x
如题。
单独在Modelsim中仿真结果是正确的
在Actel公司的Libero中检查无错,也可以综合,但启动Modelsim仿真时则显示如下错误:
** Failure: (vsim-3807) Types do not match between component and entity for port "num"
检查程序,两者是完全对应的,请各位大神解答,谢谢

-- edges_counter.vhd
----------------------
LIBRARY ieee;
USE ieee.std_logic_1164.all;
----------------------
ENTITY edges_counter IS
  PORT(clk:IN STD_LOGIC;
       num:BUFFER NATURAL RANGE 0 TO 100000
      );

END edges_counter;
----------------------
ARCHITECTURE edges_counter OF edges_counter IS
SIGNAL a:NATURAL RANGE 0 TO 100000;
SIGNAL b:NATURAL RANGE 0 TO 100000;
BEGIN


PROCESS(clk)
   VARIABLE temp1 : NATURAL RANGE 0 TO 100000;
   BEGIN
    IF(clk'EVENT AND clk='1')THEN
      temp1 := temp1+1;
      a<=temp1;
    END IF;
  END PROCESS;
PROCESS(clk)
   VARIABLE temp2 : NATURAL RANGE 0 TO 100000;
   BEGIN
    IF(clk'EVENT AND clk='0')THEN
      temp2 := temp2+1;
      b<=temp2;
    END IF;
  END PROCESS;
  num<=a+b;
END edges_counter;
---------------------------


-- testbench.vhd
---------------------
LIBRARY ieee;
USE ieee.std_logic_1164.all;
--USE ieee.numeric_std.ALL;
---------------------
ENTITY testbench IS
END testbench;
---------------------
ARCHITECTURE testbench OF testbench IS
  COMPONENT edges_counter IS
      PORT(clk:IN STD_LOGIC;
           num:BUFFER NATURAL RANGE 0 TO 100000
          );

  END COMPONENT edges_counter;
  SIGNAL clk:STD_LOGIC;
  SIGNAL num:NATURAL RANGE 0 TO 100000;
  BEGIN
  SIMINSTANCE:edges_counter PORT MAP(clk,num);
  clk_generationROCESS
                   BEGIN
                   clk<='1';
                   wait for 20 ns;
                   clk<='0';
                   wait for 20 ns;
                 END PROCESS clk_generation;
END testbench;  
----------------------
发表于 2014-7-18 09:30:22 | 显示全部楼层
回复 1# AD677

num端口有问题,你现在用的是自然数,最好用std_logic_vector试试看。
发表于 2014-7-19 12:56:17 | 显示全部楼层
回复 1# AD677

  I could not see any assertion to 'num' in test bench...
 楼主| 发表于 2014-7-21 09:42:50 | 显示全部楼层
回复 2# chinafpga


    但是我所写的是计算时钟信号边缘的程序,如果用std_logic_vector来代替感觉不太好
    在另外一个sram的程序中,我定义地址addr为integer型的也是出现同样的错误,给actel公司发邮件,他们说综合以后addr变成了
                  addr     : out   std_logic_vector(2 downto 0);
   也是建议我将addr改成std_logic_vector,但这样如果要对addr进行加减还需要再申明std_logic_signed
   是不是不能将端口定义为integer或natural型呢?因为即使定义了综合后也会被转换成std_logic_vector。
   谢谢
发表于 2014-7-25 08:53:16 | 显示全部楼层
这个没有关系吧,各种类型是可以相互转换的啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-15 15:50 , Processed in 0.019717 second(s), 9 queries , Gzip On, Redis On.

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