@@ -3,100 +3,96 @@ package treecorel3
33import chisel ._
44import chisel .uitl ._
55
6- class MemArbiterIO ( implicit val p : Parameters ) extends Bundle {
7- val icache = Flipped (new AxiIO )
8- val dcache = Flipped (new AxiIO )
9- val axi = new AxiIO
6+ class MemArbiterIO extends Bundle {
7+ val icache = Flipped (new AXI4IO )
8+ val dcache = Flipped (new AXI4IO )
9+ val axi = new AXI4IO
1010}
1111
12- class MemArbiter ( implicit p : Parameters ) extends Module {
12+ class MemArbiter extends Module {
1313 val io = IO (new MemArbiterIO )
1414
15- val s_IDLE :: s_ICACHE_READ :: s_DCACHE_READ :: s_DCACHE_WRITE :: s_DCACHE_ACK :: Nil = Enum (5 )
16- val state = RegInit (s_IDLE)
15+ val eumIDLE :: eumICacheRd :: eumDCacheRd :: eumDCacheWt :: eumDCacheAck :: Nil = Enum (5 )
16+
17+ protected val state = RegInit (eumIDLE)
1718
18- // write address
1919 io.axi.aw.bits := io.dcache.aw.bits
20- io.axi.aw.valid := io.dcache.aw.valid && state === s_IDLE
21- io.dcache.aw.ready := io.axi.aw.ready && state === s_IDLE
20+ io.axi.aw.valid := io.dcache.aw.valid && state === eumIDLE
21+ io.dcache.aw.ready := io.axi.aw.ready && state === eumIDLE
2222 io.icache.aw := DontCare
2323
24- // write data
2524 io.axi.w.bits := io.dcache.w.bits
26- io.axi.w.valid := io.dcache.w.valid && state === s_DCACHE_WRITE
27- io.dcache.w.ready := io.axi.w.ready && state === s_DCACHE_WRITE
25+ io.axi.w.valid := io.dcache.w.valid && state === eumDCacheWt
26+ io.dcache.w.ready := io.axi.w.ready && state === eumDCacheWt
2827 io.icache.w := DontCare
2928
30- // write ack
3129 io.dcache.b.bits := io.axi.b.bits
32- io.dcache.b.valid := io.axi.b.valid && state === s_DCACHE_ACK
33- io.axi.b.ready := io.dcache.b.ready && state === s_DCACHE_ACK
30+ io.dcache.b.valid := io.axi.b.valid && state === eumDCacheAck
31+ io.axi.b.ready := io.dcache.b.ready && state === eumDCacheAck
3432 io.icache.b := DontCare
3533
36- // Read Address
3734 io.axi.ar.bits := AxiReadAddressChannel (
3835 Mux (io.dcache.ar.valid, io.dcache.ar.bits.id, io.icache.ar.bits.id),
3936 Mux (io.dcache.ar.valid, io.dcache.ar.bits.addr, io.icache.ar.bits.addr),
4037 Mux (io.dcache.ar.valid, io.dcache.ar.bits.size, io.icache.ar.bits.size),
4138 Mux (io.dcache.ar.valid, io.dcache.ar.bits.len, io.icache.ar.bits.len)
4239 )
43- io.axi.ar.valid := (io.icache.ar.valid || io.dcache.ar.valid) &&
44- ! io.axi.aw.valid && state === s_IDLE
45- io.dcache.ar.ready := io.axi.ar.ready && ! io.axi.aw.valid && state === s_IDLE
46- io.icache.ar.ready := io.dcache.ar.ready && ! io.dcache.ar.valid
40+ io.axi.ar.valid := (io.icache.ar.valid || io.dcache.ar.valid) && ! io.axi.aw.valid && state === eumIDLE
41+ io.dcache.ar.ready := io.axi.ar.ready && ! io.axi.aw.valid && state === eumIDLE
42+ io.icache.ar.ready := io.dcache.ar.ready && ! io.dcache.ar.valid
4743
4844 // Read Data
4945 io.icache.r.bits := io.axi.r.bits
5046 io.dcache.r.bits := io.axi.r.bits
51- io.icache.r.valid := io.axi.r.valid && state === s_ICACHE_READ
52- io.dcache.r.valid := io.axi.r.valid && state === s_DCACHE_READ
53- io.axi.r.ready := io.icache.r.ready && state === s_ICACHE_READ ||
54- io.dcache.r.ready && state === s_DCACHE_READ
47+ io.icache.r.valid := io.axi.r.valid && state === eumICacheRd
48+ io.dcache.r.valid := io.axi.r.valid && state === eumDCacheRd
49+ io.axi.r.ready := io.icache.r.ready && state === eumICacheRd ||
50+ io.dcache.r.ready && state === eumDCacheRd
5551
5652 switch(state) {
57- is(s_IDLE ) {
53+ is(eumIDLE ) {
5854 when(io.dcache.aw.fire()) {
59- state := s_DCACHE_WRITE
55+ state := eumDCacheWt
6056 }.elsewhen(io.dcache.ar.fire()) {
61- state := s_DCACHE_READ
57+ state := eumDCacheRd
6258 }.elsewhen(io.icache.ar.fire()) {
63- state := s_ICACHE_READ
59+ state := eumICacheRd
6460 }
6561 }
66- is(s_ICACHE_READ ) {
62+ is(eumICacheRd ) {
6763 when(io.axi.r.fire() && io.axi.r.bits.last) {
68- state := s_IDLE
64+ state := eumIDLE
6965 }
7066 }
71- is(s_DCACHE_READ ) {
67+ is(eumDCacheRd ) {
7268 when(io.axi.r.fire() && io.axi.r.bits.last) {
73- state := s_IDLE
69+ state := eumIDLE
7470 }
7571 }
76- is(s_DCACHE_WRITE ) {
72+ is(eumDCacheWt ) {
7773 when(io.dcache.w.fire() && io.dcache.w.bits.last) {
78- state := s_DCACHE_ACK
74+ state := eumDCacheAck
7975 }
8076 }
81- is(s_DCACHE_ACK ) {
77+ is(eumDCacheAck ) {
8278 when(io.axi.b.fire()) {
83- state := s_IDLE
79+ state := eumIDLE
8480 }
8581 }
8682 }
8783}
8884
89- class ProcessorIO ( implicit val p : Parameters ) extends Bundle {
85+ class ProcessorIO extends Bundle {
9086 val host = new HostIO
91- val axi = new AxiIO
87+ val axi = new AXI4IO
9288}
9389
94- class Processor ( implicit p : Parameters ) extends Module {
95- val io = IO (new ProcessorIO )
96- val core = Module (new Core )
97- val icache = Module (new Cache )
98- val dcache = Module (new Cache )
99- val arb = Module (new MemArbiter )
90+ class Processor extends Module {
91+ val io = IO (new ProcessorIO )
92+ protected val core = Module (new Core )
93+ protected val icache = Module (new Cache )
94+ protected val dcache = Module (new Cache )
95+ protected val arb = Module (new MemArbiter )
10096
10197 io.host <> core.io.host
10298 core.io.icache <> icache.io.cpu
0 commit comments