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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3847|回复: 6

[求助]编译错译!

[复制链接]
发表于 2005-1-12 15:46:39 | 显示全部楼层 |阅读模式

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

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

x
我从网上下了一个fifo的源程序,但我对该程序进行编译的时候出现如下错误:Internal error:"Width mismatch in relational operator" in eBuildBinaryOp at line 1347 of file readexpr.c.不知该如何解决,请各位大侠帮忙,谢谢了!
发表于 2005-1-12 17:16:17 | 显示全部楼层

[求助]编译错译!

端口的数据宽度不匹配,要看具体的代码
 楼主| 发表于 2005-1-12 18:32:26 | 显示全部楼层

[求助]编译错译!

源代码如下,请版主指点,谢谢了!
  
library IEEE;
use IEEE.Std_logic_1164.all;
entity FIFOMXN is
   generic(m, n : Positive := 8); --m is fifo depth, n is fifo width
   port(RESET, WRREQ, RDREQ, CLOCK : in Std_logic;
         DATAIN : in Std_logic_vector((n-1) downto 0);
         DATAOUT : out Std_logic_vector((n-1) downto 0);
         FULL, EMPTY : inout Std_logic);
end FIFOMXN;
architecture V2 of FIFOMXN is
   type Fifo_array is array(0 to (m-1)) of Bit_vector((n-1) downto 0);
   signal Fifo_memory : Fifo_array;
   signal Wraddr, Rdaddr, Offset : Natural range 0 to (m-1);
   signal Rdpulse, Wrpulse, Q1, Q2, Q3, Q4 : Std_logic;
   signal Databuffer : Bit_vector((n-1) downto 0);
begin

sync_ffs : process
        begin
                wait until rising_edge(CLOCK);
                Q1 <= WRREQ;
                Q2 <= Q1;
                Q3 <= RDREQ;
                Q4 <= Q3;
end process;

Wrpulse <= Q2 and not(Q1);
Rdpulse <= Q4 and not(Q3);   

Fifo_read : process
   begin
      wait until rising_edge(CLOCK);
      if RESET = '1' then
         Rdaddr <= 0;
         Databuffer <= (others => '0');
      elsif (Rdpulse = '1' and EMPTY = '0') then
         Databuffer <= Fifo_memory(Rdaddr);
         Rdaddr <= (Rdaddr + 1) mod m;
      end if;
   end process;

Fifo_write : process
   begin
      wait until rising_edge(CLOCK);
      if RESET = '1' then
         Wraddr <= 0;
      elsif (Wrpulse = '1' and FULL = '0') then
         Fifo_memory(Wraddr) <= To_Bitvector(DATAIN);
         Wraddr <= (Wraddr + 1) mod m;
      end if;
   end process;
Offset <= (Wraddr - Rdaddr) when (Wraddr > Rdaddr)
            else (m - (Rdaddr - Wraddr)) when (Rdaddr > Wraddr)
            else 0;
EMPTY <= '1' when (Offset = 0) else '0';
FULL <= '1' when (Offset = (m-1)) else '0';
DATAOUT <= To_Stdlogicvector(Databuffer) when RDREQ = '0'
            else (others => 'Z');
end V2;
 楼主| 发表于 2005-1-18 21:58:12 | 显示全部楼层

[求助]编译错译!

再次请教版主,在我打开一VHD文件时,出现如下提示:Your project's ACF contains syntax errors--Altera recommends correcting these syntax errors before continuing work on the project.不知这是由于什么原因造成的,还有上面提到的ACF指的什么呢?
请版主赐教,谢了!
发表于 2005-1-19 10:01:32 | 显示全部楼层

[求助]编译错译!

生成你这个程序里面用了很多行为描述语句,比如fifo的二维数组类型和mod运算符,这些东西很难综合,特别是你只用altera自带的综合器的时候。
你从网上下的这个程序比较适合仿真,但是想要综合实现还要自己写。最好直接调用altera的fifo。
acf文件是altera自己定义的一种文件格式,用来给布局布线做约束用的。
 楼主| 发表于 2005-1-19 15:52:58 | 显示全部楼层

[求助]编译错译!

再次谢过版主了!
 楼主| 发表于 2005-1-20 21:59:38 | 显示全部楼层

[求助]编译错译!

再问,当我对程序进行仿真时,可以实现数据的输出,但当数据输出以后,后面又跟着输出"0000",不知这是怎么造成的,该如何解决?
请教版主,谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-5 12:46 , Processed in 0.025348 second(s), 9 queries , Gzip On, Redis On.

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