fix nasty addressing bug in block_memory
This commit is contained in:
parent
f60ec0c0e3
commit
3d722d1e60
|
|
@ -75,14 +75,14 @@ module block_memory (
|
||||||
// throw BRAM operations into the front of the pipeline
|
// throw BRAM operations into the front of the pipeline
|
||||||
wea <= 0;
|
wea <= 0;
|
||||||
if( (valid_i) && (addr_i >= BASE_ADDR) && (addr_i <= MAX_ADDR)) begin
|
if( (valid_i) && (addr_i >= BASE_ADDR) && (addr_i <= MAX_ADDR)) begin
|
||||||
wea[addr_i % N_BRAMS] <= rw_i;
|
wea[(addr_i - BASE_ADDR) % N_BRAMS] <= rw_i;
|
||||||
addra[addr_i % N_BRAMS] <= (addr_i - BASE_ADDR) / N_BRAMS;
|
addra[(addr_i - BASE_ADDR) % N_BRAMS] <= (addr_i - BASE_ADDR) / N_BRAMS;
|
||||||
dina[addr_i % N_BRAMS] <= data_i;
|
dina[(addr_i - BASE_ADDR) % N_BRAMS] <= data_i;
|
||||||
end
|
end
|
||||||
|
|
||||||
// pull BRAM reads from the back of the pipeline
|
// pull BRAM reads from the back of the pipeline
|
||||||
if( (valid_pipe[2]) && (addr_pipe[2] >= BASE_ADDR) && (addr_pipe[2] <= MAX_ADDR)) begin
|
if( (valid_pipe[2]) && (addr_pipe[2] >= BASE_ADDR) && (addr_pipe[2] <= MAX_ADDR)) begin
|
||||||
data_o <= douta[addr_pipe[2] % N_BRAMS];
|
data_o <= douta[(addr_pipe[2] - BASE_ADDR) % N_BRAMS];
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ class LogicAnalyzerCore:
|
||||||
|
|
||||||
# compute base addresses
|
# compute base addresses
|
||||||
self.fsm_base_addr = self.base_addr
|
self.fsm_base_addr = self.base_addr
|
||||||
self.trigger_block_base_addr = self.fsm_base_addr + 6
|
self.trigger_block_base_addr = self.fsm_base_addr + 7
|
||||||
|
|
||||||
self.total_probe_width = sum(self.probes.values())
|
self.total_probe_width = sum(self.probes.values())
|
||||||
n_brams = math.ceil(self.total_probe_width / 16)
|
n_brams = math.ceil(self.total_probe_width / 16)
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,10 @@ module logic_analyzer_controller (
|
||||||
write_pointer <= write_pointer + 1;
|
write_pointer <= write_pointer + 1;
|
||||||
bram_we <= 1;
|
bram_we <= 1;
|
||||||
|
|
||||||
if(write_pointer == trigger_loc) state <= IN_POSITION;
|
if(write_pointer == trigger_loc) begin
|
||||||
|
if(trig) state <= CAPTURING;
|
||||||
|
else state <= IN_POSITION;
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
else if(state == IN_POSITION) begin
|
else if(state == IN_POSITION) begin
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue