##// END OF EJS Templates
LFR-EQM 2.1.83...
LFR-EQM 2.1.83 > ad_conv_RH1401_withFilter version idem EM

File last commit:

r544:7527baf4377d JC
r601:1b6a99d2ea09 (LFR-EQM) 2-1-83 simu_with_Leon3
Show More
data_write.vhd
77 lines | 2.8 KiB | text/x-vhdl | VhdlLexer
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE IEEE.MATH_REAL.ALL;
USE ieee.numeric_std.ALL;
LIBRARY std;
use std.textio.all;
ENTITY data_write IS
GENERIC (
OUTPUT_FILE_NAME : STRING := "output_data_2.txt";
NB_CHAR_PER_DATA : INTEGER := 4
);
PORT (
clk : IN STD_LOGIC;
data_in_val : IN STD_LOGIC;
data : IN STD_LOGIC_VECTOR(NB_CHAR_PER_DATA * 4 - 1 DOWNTO 0);
close_file : IN STD_LOGIC
);
END;
ARCHITECTURE beh OF data_write IS
BEGIN -- beh
PROCESS
FILE file_pointer : TEXT;
VARIABLE line_read : LINE;
VARIABLE line_content : STRING(1 TO 4);
VARIABLE line_write : LINE;
VARIABLE line_content_write : STRING(1 TO NB_CHAR_PER_DATA);
VARIABLE line_content_write_inv : STRING(1 TO NB_CHAR_PER_DATA);
VARIABLE char_read : CHARACTER;
VARIABLE data_read : STD_LOGIC_VECTOR(15 DOWNTO 0);
VARIABLE signal_part : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN -- PROCESS
WAIT UNTIL clk = '1';
file_open(file_pointer , OUTPUT_FILE_NAME , WRITE_MODE);
WHILE close_file = '0' LOOP
IF data_in_val = '1' THEN
FOR i IN 1 TO NB_CHAR_PER_DATA LOOP
signal_part := data(i*4-1 DOWNTO (i-1)*4);
CASE signal_part IS
WHEN "0000" => line_content_write(NB_CHAR_PER_DATA+1-i) := '0';
WHEN "0001" => line_content_write(NB_CHAR_PER_DATA+1-i) := '1';
WHEN "0010" => line_content_write(NB_CHAR_PER_DATA+1-i) := '2';
WHEN "0011" => line_content_write(NB_CHAR_PER_DATA+1-i) := '3';
WHEN "0100" => line_content_write(NB_CHAR_PER_DATA+1-i) := '4';
WHEN "0101" => line_content_write(NB_CHAR_PER_DATA+1-i) := '5';
WHEN "0110" => line_content_write(NB_CHAR_PER_DATA+1-i) := '6';
WHEN "0111" => line_content_write(NB_CHAR_PER_DATA+1-i) := '7';
WHEN "1000" => line_content_write(NB_CHAR_PER_DATA+1-i) := '8';
WHEN "1001" => line_content_write(NB_CHAR_PER_DATA+1-i) := '9';
WHEN "1010" => line_content_write(NB_CHAR_PER_DATA+1-i) := 'a';
WHEN "1011" => line_content_write(NB_CHAR_PER_DATA+1-i) := 'b';
WHEN "1100" => line_content_write(NB_CHAR_PER_DATA+1-i) := 'c';
WHEN "1101" => line_content_write(NB_CHAR_PER_DATA+1-i) := 'd';
WHEN "1110" => line_content_write(NB_CHAR_PER_DATA+1-i) := 'e';
WHEN "1111" => line_content_write(NB_CHAR_PER_DATA+1-i) := 'f';
WHEN OTHERS => NULL;
END CASE;
END LOOP; -- i
write(line_write,line_content_write);
writeline(file_pointer,line_write);
END IF;
WAIT UNTIL clk = '1';
END LOOP;
file_close(file_pointer);
WAIT;
END PROCESS;
END beh;