записать целое число в файл vhdl

Я хотел бы записать целое число (переменное число) в файл (write.txt). Вот мой код, но, очевидно, он не работает. Любое предложение?

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.MATH_REAL.ALL;
library std;
use std.textio.all;

entity file_handle is
end file_handle;

architecture Behavioral of file_handle is

begin

process

variable line_var : line;
file text_var : text;
variable num : integer := 40;

begin        
    file_open(text_var,"C:\Users\Tommy\Desktop\write.txt", write_mode);
    write(line_var, num);         -- write num into line_var
    writeline(text_var, line_var);   -- write line_var into the file
    file_close(text_var);
end process;

end Behavioral;

После запуска синтеза, если я открою файл write.txt, я прочитаю b000000000000000000000000000101000. Кажется, адрес или что-то еще. Я ожидал прочитать 40.


person Message Passing    schedule 20.09.2015    source источник
comment
Ваш процесс зациклится. Добавьте оператор wait; после file_close(text_var);. После этого, закомментировав ненужный контекст (use IEEE.MATH_REAL.ALL; library std;) и изменив путь к файлу, ваша программа создаст файл write.txt, содержащий строку 40. IEEE Std 1076-2008 5.7 Строковое представление Для заданного значения целочисленного типа строковое представление представляет собой последовательность символов абстрактного литерала без точки, значением которой является заданное значение. b000.. . не соответствует формату абстрактных литералов (15.5 абстрактных литералов). Какой инструмент VHDL?   -  person    schedule 20.09.2015
comment
Это не вопрос FPGA, почему вы помечаете его FPGA?   -  person FarhadA    schedule 21.09.2015
comment
Сомневаюсь, что вы запускали синтез. Разве это не было симуляцией? Действительно, что вы ожидаете от своего синтезатора по поводу этой записи в файл? Запись в файлы — это программная концепция, а не аппаратная.   -  person Renaud Pacalet    schedule 21.09.2015
comment
Итак, b00000000000000000000000000101000 = 2^3 + 2^5 = 8 + 32 = ... Существуют ли перегрузки для write, позволяющие указать числовую базу?   -  person user_1818839    schedule 22.09.2015


Ответы (1)


Вместо этого попробуйте write(line_var, integer'image(num));. Он преобразует переменную num в десятичную строку.

person Jonathan Drolet    schedule 20.09.2015
comment
Я думаю, вы имеете в виду write(line_var, integer'image(num)); Кстати, вот так программа работает. - person Message Passing; 20.09.2015