From c88beacfc7aff870272f78ce6043010e2299e211 Mon Sep 17 00:00:00 2001 From: Julian Blake Kongslie Date: Sun, 13 Mar 2022 16:48:51 -0700 Subject: Print a newline after memory read result prints. --- hdl/result_printer.sv | 58 ++++++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/hdl/result_printer.sv b/hdl/result_printer.sv index 3041e6e..4f27d0e 100644 --- a/hdl/result_printer.sv +++ b/hdl/result_printer.sv @@ -1,8 +1,7 @@ `include "defs.svh" module result_printer - #( TAG = 0 - ) ( input bit clock + ( input bit clock , input bit reset , output bit result_ready @@ -14,6 +13,7 @@ module result_printer , output uart_byte_t echo_data ); + bit hold_valid; ram_read_response_t hold; ram_byte_count_t byte_count; ram_word_count_t word_count; @@ -28,43 +28,49 @@ module result_printer result_ready = 0; echo_valid = 0; echo_data = 0; + hold_valid = 0; byte_count = 0; word_count = 0; state = state.first; end else begin if (echo_ready) echo_valid = 0; if (result_ready && result_valid) begin + hold_valid = 1; hold = result_data; - if (hold.tag == TAG) begin - byte_count = `RAM_WORD_BYTES; - word_count = `RAM_LINE_WORDS; - state = state.first; - end + byte_count = `RAM_WORD_BYTES; + word_count = `RAM_LINE_WORDS; + state = state.first; end - if (word_count != 0 && !echo_valid) begin - automatic ram_word_t w = hold.data[word_count-1]; - automatic ram_byte_t b = w[byte_count-1]; - echo_valid = 1; - case (state) - HIGH_NIBBLE: echo_data = b[7:4]; - LOW_NIBBLE: echo_data = b[3:0]; - endcase - if (echo_data < 10) - echo_data = echo_data + "0"; - else - echo_data = echo_data + "A" - 10; - state = state.next; - if (state == state.first) begin - byte_count = byte_count - 1; - if (byte_count == 0) begin - byte_count = `RAM_WORD_BYTES; - word_count = word_count - 1; + if (hold_valid && !echo_valid) begin + if (word_count != 0) begin + automatic ram_word_t w = hold.data[word_count-1]; + automatic ram_byte_t b = w[byte_count-1]; + echo_valid = 1; + case (state) + HIGH_NIBBLE: echo_data = b[7:4]; + LOW_NIBBLE: echo_data = b[3:0]; + endcase + if (echo_data < 10) + echo_data = echo_data + "0"; + else + echo_data = echo_data + "A" - 10; + state = state.next; + if (state == state.first) begin + byte_count = byte_count - 1; + if (byte_count == 0) begin + byte_count = `RAM_WORD_BYTES; + word_count = word_count - 1; + end end + end else begin + echo_valid = 1; + echo_data = "\n"; + hold_valid = 0; end end - result_ready = word_count == 0; + result_ready = !hold_valid; end end -- cgit v1.2.3