Перейти к содержанию
    

vhdl не жрет ф-ю из library. Что делаю не так ?

--rx_pack.vhd

library STD, IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.numeric_std.all;

package RX_PACK is
   function EQUAL (A: std_logic_vector; B: std_logic_vector)  return std_logic;  

package body RX_PACK is
    function EQUAL (A: std_logic_vector; B: std_logic_vector)  return std_logic is
  begin
    if A = B then
      return '1';
    else
      return '0';
    end if;
  end EQUAL;
end RX_PACK;

--========================================================================
--decode_frame.vhd
  
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;

library work;
use work.RX_PACK.all;

entity DECODE_FRAME is
   port(
  
end DECODE_FRAME;

architecture RTL of DECODE_FRAME is
  
  begin
  
   END_OF_PAYLOAD: process (RX_CLK)
   begin
      if RX_CLK'event and RX_CLK = '1' then
         if RESET = '1' then
            LENGTH_MATCH    <= '0';
            LESS_THAN_256   <= '0';
            LENGTH_ZERO     <= '0';
            LENGTH_ONE      <= '0';

         elsif CE_IN = '1' then
           if END_OF_FRAME = '1' then
              LENGTH_MATCH <= '0';
           elsif DATA_FIELD = '1' then
              LENGTH_MATCH <= EQUAL(LENGTH_TYPE(10 downto 0), std_logic_vector(DATA_COUNTER(10 downto 0)) );
           end if;

           LESS_THAN_256   <= LENGTH_FIELD and FIELD_COUNTER(0) and EQUAL(RXD, "00000000");
           LENGTH_ONE      <= LENGTH_FIELD and FIELD_COUNTER(1) and EQUAL(RXD, "00000001") and LESS_THAN_256 and
                              (not LT_CHECK_DISABLE);
           LENGTH_ZERO     <= LENGTH_FIELD and FIELD_COUNTER(1) and EQUAL(RXD, "00000000") and LESS_THAN_256 and
                              (not LT_CHECK_DISABLE);
         end if;

      end if;
   end process END_OF_PAYLOAD;
--========================================================================  
  end RTL;
  --========================================================================
  
  
Quote

[Synth 8-1031] equal is not declared ["..........................decode_frame.vhd":212]

 

В Vivado  и rx_pack.vhd   decode_frame.vhd - в library work поместил.

В compile_order правильно: rx_pack.vhd, затем   decode_frame.vhd

Что делаю не так ?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/29/2022 at 12:42 PM, andrew_b said:
library STD, IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.numeric_std.all;

перед package body?

Все так.

rx_pack попал в - unreferenced !

Например, Константы не видятся:

Quote

 

          EXTENSION_FLAG  <= EQUAL(RXD_REG6, EXTENSION_CODE) and RX_ERR_REG6 and (not RX_DV_REG6);  

         PRE_FALSE_CARR_FLAG  <= EQUAL(RXD_REG5, FALSE_CARRIER_CODE) and RX_ERR_REG5 and (not RX_DV_REG5);

--===========================================================================================

[Synth 8-1031] extension_code is not declared ["/...../rx.vhd":745]

 

Проект целиком Vivado_2019:

https://drive.google.com/file/d/1rT2sp_43RfLxwJgWoljNy9uKXzIvp_mD/view?usp=sharing

rx.vhd rx_pack.vhd ptp_pack.vhd

Screenshot from 2022-07-04 09-23-12.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос снят.

Переименовал library work в eth, и файлы поместил в эту lib. - Заработало.

Почему vivado игнорирует library work- загадка природы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...