VHDL: ¿Qué significa STD_INPUT y STD_OUTPUT que aparecen en std.textio?

3

El paquete contiene las siguientes líneas:

entrada de archivo: TEXTO está en "STD_INPUT"; SALIDA de archivo: el TEXTO sale "STD_OUTPUT";

Por alguna razón, estos me recuerdan los flujos de entrada y salida estándar de mis lecciones en lenguaje C. ¿Qué significan estos aquí? ¿Es realmente posible leer / escribir el flujo de entrada / salida estándar utilizando este paquete? ¿Cómo?

    
pregunta quantum231

2 respuestas

2

Respuesta corta: Sí :)

Lamentablemente no todos los simuladores lo admiten.

Actualmente, solo conozco GHDL y ModelSim / QuestaSim. No tengo información sobre iSim o xSim.

No conozco ninguna herramienta de síntesis que admita STD_IN y STD_OUT. Xilinx XST tiene soporte de E / S de archivos pero creo que no hay soporte para STD_IN / STD_OUT.

Vivado no admite archivos de E / S y Quartus no admite std.textio.

    
respondido por el Paebbels
0

Ejemplos mínimos probados en GHDL 0.33

Lee 4 líneas de entrada desde la entrada estándar, y escupe cada una de ellas de vuelta a la salida estándar:

library std;
use std.textio.all;
library ieee;
use ieee.std_logic_1164.all;

entity tmp_tb is
end;

architecture behav of tmp_tb is
begin
    process
        variable my_line : line;
    begin
        for i in 3 downto 0 loop
            readline(input, my_line);
            writeline(output, my_line);
        end loop;
        wait;
    end process;
end;

Lee 4 enteros de stdin y escríbelos en una señal. Esto se puede observar en un archivo de onda generado. Usos: enlace

architecture behav of tmp_tb is
    constant clk_period : time := 1 ns;
    signal my_integer : integer;
begin
    process
        variable my_line : line;
        variable my_integer_var : integer;
    begin
        for i in 3 downto 0 loop
            readline(input, my_line);
            read(my_line, my_integer_var);
            my_integer <= my_integer_var;
            wait for clk_period / 2;
        end loop;
        wait;
    end process;
end;

Un montón de ejemplos de escritura estándar en GitHub:

Escriba un entero como hexadecimal en stdout: enlace

    

Lea otras preguntas en las etiquetas