@@ -135,6 +135,28 @@ class Main() extends Module {
135135 printf(" [LW] Rs1: %d Immediate: %b\n " , decoder.io.rs1, registers.io.out_a + decoder.io.immediate);
136136 }
137137
138+ // LBU
139+ is(" b100_0000011" .U ) {
140+ registers.io.read_address_a := decoder.io.rs1;
141+
142+ memory.readPorts(4 ).enable := true .B ;
143+ memory.readPorts(4 ).address := registers.io.out_a + decoder.io.immediate;
144+
145+ printf(" [LBU] Rs1: %d Immediate: %b\n " , decoder.io.rs1, registers.io.out_a + decoder.io.immediate);
146+ }
147+
148+ // LHU
149+ is(" b101_0000011" .U ) {
150+ registers.io.read_address_a := decoder.io.rs1;
151+
152+ memory.readPorts(4 ).enable := true .B ;
153+ memory.readPorts(4 ).address := registers.io.out_a + decoder.io.immediate;
154+ memory.readPorts(5 ).enable := true .B ;
155+ memory.readPorts(5 ).address := registers.io.out_a + decoder.io.immediate + 1 .U ;
156+
157+ printf(" [LHU] Rs1: %d Immediate: %b\n " , decoder.io.rs1, registers.io.out_a + decoder.io.immediate);
158+ }
159+
138160 // SB
139161 is(" b000_0100011" .U ) {
140162 registers.io.read_address_a := decoder.io.rs1;
@@ -638,6 +660,28 @@ class Main() extends Module {
638660
639661 printf(" [LW] Rd: %d Data: %b\n " , rd_buffer, memory.readPorts(7 ).data ## memory.readPorts(6 ).data ## memory.readPorts(5 ).data ## memory.readPorts(4 ).data);
640662 }
663+
664+ // LBU
665+ is(" b100_0000011" .U ) {
666+ registers.io.write_address := rd_buffer;
667+ registers.io.write_enable := true .B ;
668+ registers.io.in := 0 .U (24 .W ) ## memory.readPorts(4 ).data;
669+
670+ program_pointer := program_pointer + 4 .U ;
671+
672+ printf(" [LBU] Rd: %d Data: %b\n " , rd_buffer, 0 .U (24 .W ) ## memory.readPorts(4 ).data);
673+ }
674+
675+ // LHU
676+ is(" b101_0000011" .U ) {
677+ registers.io.write_address := rd_buffer;
678+ registers.io.write_enable := true .B ;
679+ registers.io.in := 0 .U (16 .W ) ## memory.readPorts(5 ).data ## memory.readPorts(4 ).data;
680+
681+ program_pointer := program_pointer + 4 .U ;
682+
683+ printf(" [LHU] Rd: %d Data: %b\n " , rd_buffer, 0 .U (16 .W ) ## memory.readPorts(5 ).data ## memory.readPorts(4 ).data);
684+ }
641685 }
642686 }
643687 }
0 commit comments