URL
https://opencores.org/ocsvn/xucpu/xucpu/trunk
Subversion Repositories xucpu
Compare Revisions
- This comparison shows the changes necessary to convert path
/xucpu
- from Rev 24 to Rev 25
- ↔ Reverse comparison
Rev 24 → Rev 25
/trunk/src/components/BRAM/ram_parts.vhdl
168,7 → 168,7
|
ARCHITECTURE Structural OF RAM32K IS |
|
SIGNAL memory_array : B32K_array_type; |
SIGNAL memory_array : B32K_array_type := init_b32k(filename); |
|
SIGNAL data_address : STD_LOGIC_VECTOR(12 DOWNTO 0); |
SIGNAL data_select : STD_LOGIC_VECTOR(1 DOWNTO 0); |
/trunk/src/components/BRAM/RAM.vhdl
50,6 → 50,7
USE ieee.std_logic_1164.ALL; |
USE ieee.numeric_std.ALL; |
USE work.ram_parts.ALL; |
USE work.hexio.ALL; |
|
ENTITY memory IS |
|
75,9 → 76,11
|
ARCHITECTURE Structural OF memory IS |
|
CONSTANT dummy : INTEGER := notify_f("Initialisation of memory component starts"); |
|
BEGIN -- Structural |
|
SMALL_MEM : IF w_data >= 8 AND w_data <= 14 GENERATE |
SMALL_MEM : IF w_addr >= 8 AND w_addr <= 14 GENERATE |
MEM0 : RAM_GENERIC |
GENERIC MAP ( |
filename => filename, |
93,19 → 96,19
q2 => q2); |
END GENERATE SMALL_MEM; |
|
LARGE_MEM : IF w_data = 15 GENERATE |
MEM1: RAM32K |
GENERIC MAP ( |
filename => filename, |
w_data => w_data) |
PORT MAP ( |
clk => clk, |
we => we, |
a1 => a1, |
a2 => a2, |
d1 => d1, |
q1 => q1, |
q2 => q2); |
LARGE_MEM : IF w_addr = 15 GENERATE |
MEM1 : RAM32K |
GENERIC MAP ( |
filename => filename, |
w_data => w_data) |
PORT MAP ( |
clk => clk, |
we => we, |
a1 => a1, |
a2 => a2, |
d1 => d1, |
q1 => q1, |
q2 => q2); |
END GENERATE LARGE_MEM; |
|
END Structural; |
/trunk/src/components/BRAM/tb_generic_ram.vhdl
21,6 → 21,7
USE ieee.std_logic_1164.ALL; |
USE ieee.numeric_std.ALL; |
USE work.RAM.ALL; |
USE work.hexio.ALL; |
|
-- Test bench for instatiating a memory and initialising |
-- it from a file. |
41,9 → 42,20
SIGNAL inst_o : STD_LOGIC_VECTOR(15 DOWNTO 0); |
|
SIGNAL ctr_a : NATURAL RANGE 0 TO (2**w_addr - 1); |
CONSTANT dummy : INTEGER := notify_f("Initialising tb_generic_ram"); |
|
BEGIN -- ARCHITECTURE Structural |
|
-- purpose: Data dumping when simulation starts |
-- type : combinational |
-- inputs : |
-- outputs: |
dump1: PROCESS IS |
BEGIN -- PROCESS dump1 |
notify("Simulation of tb_generic_ram starts"); |
WAIT; |
END PROCESS dump1; |
|
RAM1 : memory |
GENERIC MAP ( |
filename => "test_data.txt", |
/trunk/src/util/file/hexio.vhdl
24,7 → 24,7
|
-- This type must be used for base memory arrays |
TYPE cstr_array_type IS ARRAY(INTEGER RANGE <>) OF INTEGER RANGE 0 TO 65535; |
TYPE B32K_array_type IS ARRAY(0 TO 3) OF cstr_array_type(0 TO 8192); |
TYPE B32K_array_type IS ARRAY(0 TO 3) OF cstr_array_type(0 TO 8191); |
|
FUNCTION init_cstr ( |
CONSTANT array_size : IN INTEGER; |
31,8 → 31,12
CONSTANT input_file : IN STRING) |
RETURN cstr_array_type; |
|
FUNCTION init_b32k ( |
CONSTANT input_file : IN STRING) |
RETURN B32K_array_type; |
|
PROCEDURE init_b32k_array ( |
SIGNAL array_io : INOUT B32K_array_type; |
VARIABLE array_io : INOUT B32K_array_type; |
CONSTANT filename : IN STRING); |
|
PROCEDURE init_var_array ( |
46,6 → 50,13
PROCEDURE dump_array ( |
CONSTANT array_in : IN cstr_array_type); |
|
PROCEDURE notify ( |
CONSTANT message : IN STRING); |
|
FUNCTION notify_f ( |
CONSTANT message : IN STRING) |
RETURN INTEGER; |
|
END PACKAGE hexio; |
|
PACKAGE BODY hexio IS |
76,6 → 87,24
CONSTANT filename : IN STRING); |
|
-- Procedure and function body definitions |
PROCEDURE notify ( |
CONSTANT message : IN STRING) IS |
|
VARIABLE output_line : LINE; |
BEGIN |
write(output_line, message); |
writeline(OUTPUT, output_line); |
END; |
|
FUNCTION notify_f ( |
CONSTANT message : IN STRING) |
RETURN INTEGER IS |
BEGIN |
notify(message); |
|
RETURN 0; |
END; |
|
FUNCTION init_cstr ( |
CONSTANT array_size : IN INTEGER; |
CONSTANT input_file : IN STRING) |
83,20 → 112,29
|
VARIABLE rv : cstr_array_type(0 TO array_size - 1) := (OTHERS => 0); |
|
VARIABLE output_line : LINE; |
|
BEGIN -- FUNCTION init_cstr |
|
write(output_line, STRING'("Initialising memory")); |
writeline(OUTPUT, output_line); |
notify("Initialising memory"); |
init_var_array(rv, input_file); |
|
init_var_array(rv, input_file); |
|
RETURN rv; |
END FUNCTION init_cstr; |
|
FUNCTION init_b32k ( |
CONSTANT input_file : IN STRING) |
RETURN B32K_array_type IS |
|
VARIABLE rv : B32K_array_type; |
|
BEGIN -- FUNCTION init_b32K |
|
init_b32k_array(rv, input_file); |
|
RETURN rv; |
END FUNCTION init_b32K; |
|
PROCEDURE init_b32k_array ( |
SIGNAL array_io : INOUT B32K_array_type; |
VARIABLE array_io : INOUT B32K_array_type; |
CONSTANT filename : IN STRING) IS |
|
FILE input_file : TEXT; |
113,7 → 151,7
BEGIN |
|
FOR i IN 0 TO 3 LOOP |
array_io(i) <= (OTHERS => 0); |
array_io(i) := (OTHERS => 0); |
END LOOP; |
|
file_open(fstatus, input_file, filename, READ_MODE); |
133,7 → 171,7
-- Turn a hex value into an integer value |
read_hex(line_value, i_value); |
|
array_io(i)(j) <= i_value; |
array_io(i)(j) := i_value; |
|
write(output_line, STRING'("Index :")); |
write(output_line, i*8192+j); |