Библиотека IEEE.numeric_std.all не допускает объявления без знака - PullRequest
0 голосов
/ 12 марта 2019

Я новичок во всей VHDL-сцене, так как перехожу из системного verilog. Выполняя простое практическое упражнение, я обнаружил, что не могу объявлять или использовать неподписанные типы данных. Я пробовал библиотеку numeric_std, а также библиотеку std_logic_unsigned, хотя знаю, что последняя на самом деле не является стандартом IEEE. Я получаю сообщение об ошибке: «Неизвестный идентификатор» без знака. »Кроме того, похоже, что при загрузке библиотеки не возникает проблем, поскольку во время компиляции появляется строка« Загрузка пакета NUMERIC_STD ».

В приведенном ниже коде я получаю сообщение об ошибке неизвестного идентификатора в строках, создающих порты D и Q.

library ieee;
  use ieee.std_logic_1164.all;
  use ieee.numeric_std.all;  

entity g_register is  
generic(
  G_DATA_WIDTH : integer := 16
);  
port(  
  D     : in unsigned(G_DATA_WIDTH-1 downto 0);  
  EN    : in std_logic;  
  CLK   : in std_logic;  
  ASYNC : in std_logic;  
  Q     : out unsigned(G_DATA_WIDTH-1 downto 0)  
);  
end g_register 

1 Ответ

2 голосов
/ 13 марта 2019

Чтобы использовать тип без знака (или со знаком), вам необходимо указать следующее:

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;

Обратите внимание, что ошибка «Неизвестный идентификатор« без знака »», скорее всего, возникает из-за того, что вы также включили пакет std_logic_arith.,Обратите внимание, что хотя std_logic_arith находится в библиотеке IEEE, это пакет с открытым исходным кодом, который действительно там не принадлежит.

Обратите внимание, что включение пакета std_logic_unsigned не помогает и не причиняет вреда.Это позволяет вам делать математику без знака с помощью std_logic_vector.Для RTL-кода я рекомендую не использовать операторы из этого пакета.Для тестовых стендов я рекомендую вместо этого использовать пакет IEEE numeric_std_unsigned.Пакет std_logic_unsigned также является пакетом с открытым исходным кодом и, опять же, на самом деле не принадлежит библиотеке IEEE.

...