Read raw binary file

B

Beanut

I've been playing around with reading binary data into a testbench. I
noticed a lot of people asking questions on the user group over the
years, but didn't see a simple expample, so here's some code that might
help:

constant N : integer := 28671; --Number of bytes in file minus
one
subtype file_element is std_logic_vector(7 downto 0);
type mem_array is array(N downto 0) of file_element;

shared variable memory : mem_array;

begin
----------------------------------------------------------------------------

-- This code reads a raw binary file one byte at a time.
load_memory : process is
type bit_vector_file is file of bit_vector;
file vectors : bit_vector_file open read_mode is "calconst.bin";
variable next_vector : bit_vector (0 downto 0);
variable actual_len : natural;
variable index : integer := 0;
begin
while not endfile(vectors) loop
read(vectors, next_vector, actual_len);
if actual_len > next_vector'length then
report "vector too long";
else
memory(index) :=
conv_std_logic_vector(bit'pos(next_vector(0)),8);
index := index + 1;
end if;
end loop;
wait;
end process load_memory;
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top