Skip to content
Snippets Groups Projects
Commit 899ee3ea authored by David Lanzendörfer's avatar David Lanzendörfer
Browse files

Fix generation for Quartus

parent b654c46e
No related branches found
No related tags found
No related merge requests found
......@@ -57,21 +57,27 @@ module neuron_matrix #(
// wires for wiring the network together
wire [NUMBER_NEURONS_W-1:0][values_layer+1:0]translated_address;
for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin
assign translated_address[gv] = address-gv*values_layer;
end
generate
for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin : translate_addr_m
assign translated_address[gv] = address-gv*values_layer;
end
endgenerate
wire[NUMBER_NEURONS_W-1:0][NUMBER_NEURONS_H-1:0] layer_output_array;
wire [NUMBER_NEURONS_W-1:0] read_enable_array;
for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin
assign read_enable_array[gv] = (translated_address[gv]<values_layer) && read_enable;
end
generate
for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin : re_arr_m
assign read_enable_array[gv] = (translated_address[gv]<values_layer) && read_enable;
end
endgenerate
wire [NUMBER_NEURONS_W-1:0] write_enable_array;
for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin
assign write_enable_array[gv] = (translated_address[gv]<values_layer) && write_enable;
end
generate
for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin : rw_arr_m
assign write_enable_array[gv] = (translated_address[gv]<values_layer) && write_enable;
end
endgenerate
wire[NUMBER_NEURONS_W-1:0] inference_done_array;
wire[NUMBER_NEURONS_W-1:0] backprop_done_array;
......@@ -101,35 +107,37 @@ module neuron_matrix #(
end
genvar gv;
for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin
layer #(
.NUMBER_SYNAPSES(NUMBER_SYNAPSES),
.NUMBER_NEURONS(NUMBER_NEURONS_H)
)
hidden_layer(
.clk(clk),
.rst(rst),
// Enable inference
.run_inference((gv==0)?run_inference:inference_done_array[gv-1]),
.inference_done(inference_done_array[gv]),
// Data IO
.layer_inputs((gv==0)?layer_inputs:layer_output_array[gv-1]),
.layer_outputs(layer_output_array[gv]),
// Backprop
.backprop_in_port((gv==0)?backprop_in_port:backprop_ports[gv-1]),
.backprop_out_port(backprop_ports[gv]),
.backprop_done(backprop_done_array[gv]),
.backprop_enable(backprop_enable),
// Data interface
.write_enable(write_enable_array[gv]),
.read_enable(read_enable_array[gv]),
.write_done(write_done_array[gv]),
.read_done(read_done_array[gv]),
.address(translated_address[gv]),
.data_i(data_i),
.data_o(data_o_array[gv])
);
end
generate
for(gv=0;gv<NUMBER_NEURONS_W;gv=gv+1) begin : matrix_layers
layer #(
.NUMBER_SYNAPSES(NUMBER_SYNAPSES),
.NUMBER_NEURONS(NUMBER_NEURONS_H)
)
hidden_layer(
.clk(clk),
.rst(rst),
// Enable inference
.run_inference((gv==0)?run_inference:inference_done_array[gv-1]),
.inference_done(inference_done_array[gv]),
// Data IO
.layer_inputs((gv==0)?layer_inputs:layer_output_array[gv-1]),
.layer_outputs(layer_output_array[gv]),
// Backprop
.backprop_in_port((gv==0)?backprop_in_port:backprop_ports[gv-1]),
.backprop_out_port(backprop_ports[gv]),
.backprop_done(backprop_done_array[gv]),
.backprop_enable(backprop_enable),
// Data interface
.write_enable(write_enable_array[gv]),
.read_enable(read_enable_array[gv]),
.write_done(write_done_array[gv]),
.read_done(read_done_array[gv]),
.address(translated_address[gv]),
.data_i(data_i),
.data_o(data_o_array[gv])
);
end
endgenerate
assign backprop_out_port = backprop_ports[NUMBER_NEURONS_W-1];
assign layer_outputs = layer_output_array[NUMBER_NEURONS_W-1];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment