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

write file vhdl

signal car: carry := ( x"000000",
                              x"000000",
                              x"000000",
                              x"000000",
                              x"000000",
                              x"000000",
                              x"000000",
                              x"000000",
                              x"000000",
                              x"000000",
                              x"000000",
                              x"000000");    

-- ....

write_to_file: process(clk)
                        variable outdata_line: line;
                        variable outdata: integer :=0;
                        file output_data_file: text open write_mode is "out_data.txt";
                            begin
                            if rising_edge(clk) then
--130:                            outdata := conv_integer(signed(car(N-1)(15 downto 8)));
                                write(outdata_line, outdata);
                                writeline(output_data_file,outdata_line);
                            end if;
                        end process

 

line 130: Second argument of write must have a constant value.

 

В чём проблема?

 

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


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

может в том что написано, а именно

variable outdata,

то есть variable - это как бы переменная, а не константа?

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


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

outdata := conv_integer(signed(car(N-1)(15 downto 8)));

N подразумевает for

 

 

 

какие ieee.* библиотеки подключили?

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


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

outdata := conv_integer(signed(car(N-1)(15 downto 8)));

N подразумевает for

 

 

 

какие ieee.* библиотеки подключили?

 

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.NUMERIC_STD.ALL;
library std;
use std.textio.all;

entity FIR is
     Generic (N:natural:=12);
    Port ( X : in  STD_LOGIC_VECTOR (7 downto 0);
           clk : in  STD_LOGIC;
           start : in  STD_LOGIC;
           Y : out  STD_LOGIC_VECTOR (23 downto 0));
end FIR;

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


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

use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.NUMERIC_STD.ALL;

Использовать две эти библиотеки одновременно - плохая практика. Обычно рекомендуется использовать только numeric_std. В этом случае преобразование будет выглядеть так:

outdata := to_integer(signed(car(N-1)(15 downto 8)));

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


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

В ModelSim всё прекрасно работает, с ошибкой столкнулся в ISE.

Исправил. Спасибо.

outdata := to_integer(signed(car(N-1)(15 downto 8)));

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

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


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

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

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

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

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

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

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

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

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

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