Jump to content

    
Sign in to follow this  
mery

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

Recommended Posts

Добрый день!

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

Есть код на 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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

>Пожалуйста, используйте тег 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)

 

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

Edited by mery

Share this post


Link to post
Share on other sites
>Пожалуйста, используйте тег 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-это стандарт

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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) надо использовать.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this