diff options
| author | JulianCamacho <jjulian.341@gmail.com> | 2023-10-03 16:55:27 -0600 |
|---|---|---|
| committer | JulianCamacho <jjulian.341@gmail.com> | 2023-10-03 16:55:27 -0600 |
| commit | bc466f0511d8b3029c0822f415ebc9ae152b9d09 (patch) | |
| tree | ed7f32765005481d891bd7f31af43b2787dfc98c /rtl/cache/routing.sv | |
| parent | 8c5a91578ca929f3a94b54628f6431c136dc417d (diff) | |
sram, offset and routing comments
Diffstat (limited to 'rtl/cache/routing.sv')
| -rw-r--r-- | rtl/cache/routing.sv | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/rtl/cache/routing.sv b/rtl/cache/routing.sv index 8f744dd..aae6f51 100644 --- a/rtl/cache/routing.sv +++ b/rtl/cache/routing.sv @@ -49,9 +49,18 @@ module cache_routing } state; //Arbitrar el bus del lado de la cache + + /* Se sabe si el address es cache o no evaluando los bits de IO. + * Esto es posible porque se cumple lo siguiente: + * - La memoria tiene un tamaño que es una potencia de 2 + * - Sus direcciones inician en 0 + * Entonces si los bits de IO son distintos de 0, se sabe que no es + * una dirección cached + */ assign cached = io == 3'b000; assign cache_mem = cache_mem_read || cache_mem_write; + // Acá se divide el core_address para analizarse por separado assign {io, core_tag, core_index, core_offset} = core_address; assign core_address_line = {io, core_tag, core_index, 4'b0000}; assign core_readdata_line = cached ? data_rd : mem_readdata; |
