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

поблема с типом signed

Добрый день!

Помогите решить следующую проблему.

Есть код на vhdl, синтезируется, есть тестовое воздействие на vhdl, при запуске которого симулятор выдает ошибку:

# Fatal error at an unknown location

# while elaborating region: /func_tst_vhd/uut

# Fatal error at func_tst.vhd line 60

# while elaborating region: /func_tst_vhd

# Load interrupted

# Error loading design

# Error: Error loading design

 

 

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

 

 

entity func is

generic(

WIDTH : natural := 16;

PIPEID : natural := 1

);

port(

clk : in std_logic;

ena : in std_logic;

 

Xi : in signed(WIDTH -1 downto 0)

 

);

end func;

 

architecture Behavioral of func is

 

signal dX, Xresult : signed(WIDTH -1 downto 0);

 

signal Zneg, Zpos : std_logic;

begin

 

line 60: dX<=Xi;

 

end Behavioral;

 

Помогите, пожалуйста решить проблему с запуском симулятора.

ISE 7.1, ModelSim 6.0

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


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

Пожалуйста, используйте тег code или codebox для оформления кода.

 

В приведённом куске коде криминала не вижу. Ошибка, видимо, в другом месте.

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


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

>Пожалуйста, используйте тег code или codebox для оформления кода.

сорри учту на будущее.

 

я тоже не вижу, но когда я подключаю библиотеку use ieee.std_logic_arith.all; в тестовый файл, то modelsim выбрасывает следующую ошибку:

# ** Error: func_tst.vhd(34): Aggregate expression cannot be scalar type (error).

# ** Error: func_tst.vhd(35): (vcom-1137) Identifier 'signed' is not visible. Making two objects with the name 'signed' directly visible via use clauses results in a conflict; neither object is made directly visible. (LRM Section 10.4)

 

чтобы не было сомнений, что ошибки в коде нет, прикладываю файлы

Изменено пользователем mery

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


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

>Пожалуйста, используйте тег code или codebox для оформления кода.

сорри учту на будущее.

 

я тоже не вижу, но когда я подключаю библиотеку use ieee.std_logic_arith.all; в тестовый файл, то modelsim выбрасывает следующую ошибку:

# ** Error: func_tst.vhd(34): Aggregate expression cannot be scalar type (error).

# ** Error: func_tst.vhd(35): (vcom-1137) Identifier 'signed' is not visible. Making two objects with the name 'signed' directly visible via use clauses results in a conflict; neither object is made directly visible. (LRM Section 10.4)

 

чтобы не было сомнений, что ошибки в коде нет, прикладываю файлы

 

не надо подключать _одновременно_ arith и unsigned. собственно второй еррор об этом недвусмысленно намекает. ( Error: func_tst.vhd(35): (vcom-1137) Identifier 'signed' is not visible. Making two objects with the name 'signed' directly visible via use clauses results in a conflict; neither object is made directly visible)

а вообще выкиньте arith нафик,используйте numeric_std-это стандарт

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


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

Точно используйте только numeric_std, вот вам подсказка по преобразованию типов:

http://dz.ee.ethz.ch/support/ic/hdl/vhdlsources.en.html

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


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

numeric_std - это хорошо, а он же не поддерживает операцию conv_signed(arg,size), а его поддерживает std_logic_arith и что делать? Симулятор по прежнему выдает ошибку:

 

# ** Error: p2r_cordicpipe.vhd(19): (vcom-1137) Identifier 'signed' is not visible.  Making two objects with the name 'signed' directly visible via use clauses results in a conflict; neither object is made directly visible. (LRM Section 10.4)
#    Definitions included from:
#         ieee.std_logic_arith.signed
#         ieee.numeric_std.signed

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


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

numeric_std - это хорошо, а он же не поддерживает операцию conv_signed(arg,size),
Функция to_signed устроит?

 

а его поддерживает std_logic_arith и что делать?
Не использовать пакет std_logic_arith и его производные и почитать что-нибудь по стандартной библиотеке VHDL. Например, исходники пакета numeric_std. Там всё достаточно ясно. Ищите в каталоге ModelSim.

 

Cимулятор по прежнему выдает ошибку:

# ** Error: p2r_cordicpipe.vhd(19): (vcom-1137) Identifier 'signed' is not visible.  Making two objects with the name 'signed' directly visible via use clauses results in a conflict; neither object is made directly visible. (LRM Section 10.4)
#    Definitions included from:
#         ieee.std_logic_arith.signed
#         ieee.numeric_std.signed

Он не знает, какой из двух конфликтующих типов signed (numeric_std.signed или std_logic_arith.signed) надо использовать.

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


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

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

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

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

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

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

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

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

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

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