File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -242,10 +242,11 @@ class Main() extends Module {
242242 memory.io.address_2 := (registers.io.out_a + decoder.io.immediate) / 4 .U + 1 .U ;
243243
244244 printf(
245- " [SW] Rs1: %d Rs2: %d Immediate: %b\n " ,
245+ " [SW] Rs1: %d Rs2: %d Immediate: %b Raw Address: %b \n " ,
246246 decoder.io.rs1,
247247 decoder.io.rs2,
248- registers.io.out_a + decoder.io.immediate
248+ registers.io.out_a + decoder.io.immediate,
249+ (registers.io.out_a + decoder.io.immediate) / 4 .U
249250 );
250251 }
251252
Original file line number Diff line number Diff line change @@ -32,23 +32,30 @@ class Memory() extends Module {
3232 io.read_value_1 := 0 .U
3333 io.read_value_2 := 0 .U
3434
35- val isVGA = io.address_1 > 0b1000000000000 .U ;
35+ val isVGA = io.address_1 >= 0b1000000000000 .U ;
3636 io.address_vga := Mux (isVGA, io.address_1 - 0b1000000000000 .U ,0 .U );
3737 io.write_vga := isVGA && io.write_1
3838 io.write_value_vga := io.write_value_1
3939
40+ when(isVGA) {
41+ printf(
42+ " Writing to VGA! Address: %b Data: %b\n " ,
43+ io.address_1 - 0b1000000000000 .U ,
44+ io.write_value_1
45+ );
46+ }
4047
4148 io.read_value_1 := memory.readWrite(
4249 io.address_1,
4350 io.write_value_1,
44- io.read_1 || io.write_1,
51+ ( io.read_1 || io.write_1) && ! isVGA ,
4552 io.write_1
4653 )
4754
4855 io.read_value_2 := memory.readWrite(
4956 io.address_2,
5057 io.write_value_2,
51- io.read_2 || io.write_2,
58+ ( io.read_2 || io.write_2) && ! isVGA ,
5259 io.write_2
5360 )
5461
Original file line number Diff line number Diff line change @@ -44,22 +44,39 @@ class MainSpec extends AnyFreeSpec with Matchers with ChiselSim {
4444 dut.io.debug_write.poke(true .B )
4545
4646 dut.io.debug_write_address.poke(0 .U )
47- dut.io.debug_write_data.poke(0b000000000111_00000_000_00001_0010011 .U ) // ADDI
47+ dut.io.debug_write_data.poke(0b00000000000000000100_00010_0110111L .U ) // LUI
4848 dut.clock.step(1 )
4949
5050 dut.io.debug_write_address.poke(1 .U )
51- dut.io.debug_write_data.poke(0b0000000_00001_00000_010_00000_0100011 .U ) // SW
51+ dut.io.debug_write_data.poke(0b000000001000_00001_000_00001_0010011L .U ) // ADDI
5252 dut.clock.step(1 )
5353
5454 dut.io.debug_write_address.poke(2 .U )
55- dut.io.debug_write_data.poke(0b000000000000_00000_010_00010_0000011 .U ) // LW
55+ dut.io.debug_write_data.poke(0b000000000000_00010_010_00000_0100011L .U ) // SW
5656 dut.clock.step(1 )
57+
58+ dut.io.debug_write_address.poke(3 .U )
59+ dut.io.debug_write_data.poke(0b11111111100111111111_00000_1101111L .U ) // JAL
60+ dut.clock.step(1 )
61+
62+
63+ // dut.io.debug_write_address.poke(0.U)
64+ // dut.io.debug_write_data.poke(0b000000000111_00000_000_00001_0010011.U) // ADDI
65+ // dut.clock.step(1)
66+
67+ // dut.io.debug_write_address.poke(1.U)
68+ // dut.io.debug_write_data.poke(0b0000000_00001_00000_010_00000_0100011.U) // SW
69+ // dut.clock.step(1)
70+
71+ // dut.io.debug_write_address.poke(2.U)
72+ // dut.io.debug_write_data.poke(0b000000000000_00000_010_00010_0000011.U) // LW
73+ // dut.clock.step(1)
5774
5875 dut.io.debug_write.poke(false .B )
5976 dut.clock.step(1 )
6077
6178 dut.io.execute.poke(true .B )
62- dut.clock.step(12 )
79+ dut.clock.step(24 )
6380 }
6481 }
6582}
You can’t perform that action at this time.
0 commit comments