Skip to content

Commit e3224d2

Browse files
committed
Merge branch 'sim_test' of https://github.com/LSC-Unicamp/processor_ci into sim_test
2 parents c9ef751 + cdd4a91 commit e3224d2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+352
-0
lines changed

rtl/connected/AUK-V-Aethia.sv

Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
`timescale 1ns / 1ps
2+
3+
`ifndef SIMULATION
4+
`include "processor_ci_defines.vh"
5+
`endif
6+
7+
`define ENABLE_SECOND_MEMORY 1 // Habilita o segundo barramento de memória
8+
9+
module processorci_top (
10+
input logic sys_clk, // Clock de sistema
11+
input logic rst_n, // Reset do sistema
12+
13+
`ifndef SIMULATION
14+
// UART pins
15+
input logic rx,
16+
output logic tx,
17+
18+
// SPI pins
19+
input logic sck,
20+
input logic cs,
21+
input logic mosi,
22+
output logic miso,
23+
24+
//SPI control pins
25+
input logic rw,
26+
output logic intr
27+
28+
`else
29+
output logic core_cyc, // Indica uma transação ativa
30+
output logic core_stb, // Indica uma solicitação ativa
31+
output logic core_we, // 1 = Write, 0 = Read
32+
33+
output logic [3:0] core_wstrb,
34+
output logic [31:0] core_addr, // Endereço
35+
output logic [31:0] core_data_out, // Dados de entrada (para escrita)
36+
input logic [31:0] core_data_in, // Dados de saída (para leitura)
37+
38+
input logic core_ack // Confirmação da transação
39+
40+
`ifdef ENABLE_SECOND_MEMORY
41+
,
42+
output logic data_mem_cyc,
43+
output logic data_mem_stb,
44+
output logic data_mem_we,
45+
output logic [3:0] data_mem_wstrb,
46+
output logic [31:0] data_mem_addr,
47+
output logic [31:0] data_mem_data_out,
48+
input logic [31:0] data_mem_data_in,
49+
input logic data_mem_ack
50+
`endif
51+
52+
`endif
53+
);
54+
logic clk_core, rst_core;
55+
`ifdef SIMULATION
56+
assign clk_core = sys_clk;
57+
assign rst_core = ~rst_n;
58+
`else
59+
60+
// Fios do barramento entre Controller e Processor
61+
logic core_cyc;
62+
logic core_stb;
63+
logic core_we;
64+
logic [3:0] core_wstrb;
65+
logic [31:0] core_addr;
66+
logic [31:0] core_data_out;
67+
logic [31:0] core_data_in;
68+
logic core_ack;
69+
70+
`ifdef ENABLE_SECOND_MEMORY
71+
logic data_mem_cyc;
72+
logic data_mem_stb;
73+
logic data_mem_we;
74+
logic [3:0] data_mem_wstrb;
75+
logic [31:0] data_mem_addr;
76+
logic [31:0] data_mem_data_out;
77+
logic [31:0] data_mem_data_in;
78+
logic data_mem_ack;
79+
`endif
80+
`endif
81+
82+
`ifndef SIMULATION
83+
Controller #(
84+
.CLK_FREQ (`CLOCK_FREQ),
85+
.BIT_RATE (`BIT_RATE),
86+
.PAYLOAD_BITS (`PAYLOAD_BITS),
87+
.BUFFER_SIZE (`BUFFER_SIZE),
88+
.PULSE_CONTROL_BITS (`PULSE_CONTROL_BITS),
89+
.BUS_WIDTH (`BUS_WIDTH),
90+
.WORD_SIZE_BY (`WORD_SIZE_BY),
91+
.ID (`ID),
92+
.RESET_CLK_CYCLES (`RESET_CLK_CYCLES),
93+
.MEMORY_FILE (`MEMORY_FILE),
94+
.MEMORY_SIZE (`MEMORY_SIZE)
95+
) u_Controller (
96+
.clk (sys_clk),
97+
98+
.rst_n (rst_n),
99+
100+
// SPI signals
101+
.sck_i (sck),
102+
.cs_i (cs),
103+
.mosi_i (mosi),
104+
.miso_o (miso),
105+
106+
// SPI callback signals
107+
.rw_i (rw),
108+
.intr_o (intr),
109+
110+
// UART signals
111+
.rx (rx),
112+
.tx (tx),
113+
114+
// Clock, reset, and bus signals
115+
.clk_core_o (clk_core),
116+
.rst_core_o (rst_core),
117+
118+
// Barramento padrão (Wishbone)
119+
.core_cyc_i (core_cyc),
120+
.core_stb_i (core_stb),
121+
.core_we_i (1'b0), //core_we = 0
122+
.core_addr_i (core_addr),
123+
.core_data_i (0), // core_data_out = 0 because we never write to instruction memory
124+
.core_data_o (core_data_in),
125+
.core_ack_o (core_ack)
126+
127+
`ifdef ENABLE_SECOND_MEMORY
128+
,
129+
.data_mem_cyc_i (data_mem_cyc),
130+
.data_mem_stb_i (data_mem_stb),
131+
.data_mem_we_i (data_mem_we),
132+
.data_mem_addr_i (data_mem_addr),
133+
.data_mem_data_i (data_mem_data_out),
134+
.data_mem_data_o (data_mem_data_in),
135+
.data_mem_ack_o (data_mem_ack)
136+
`endif
137+
);
138+
`endif
139+
140+
141+
// Core space
142+
logic core_cyc_stb;
143+
logic data_mem_cyc_stb;
144+
145+
aukv aukv_inst(
146+
.i_clk (clk_core),
147+
.i_rstn (~rst_core), // Reset ativo baixo
148+
.i_irq (1'b0), // IRQ fixo como inativo
149+
.o_ack (), // Sem interligação de ACK
150+
151+
// Sinais de memória de dados
152+
.o_data_mem_en (data_mem_cyc_stb),
153+
.o_data_mem_we (data_mem_we),
154+
.o_data_mem_addr (data_mem_addr),
155+
.o_data_mem_data (data_mem_data_out),
156+
.o_data_mem_strobe (data_mem_wstrb), // Sem strobe
157+
.i_data_mem_valid (data_mem_ack),
158+
.i_data_mem_data (data_mem_data_in),
159+
160+
// Sinais de memória de instruções
161+
.o_code_mem_en (core_cyc_stb),
162+
.o_code_mem_addr (core_addr),
163+
.i_code_mem_data (core_data_in),
164+
.i_code_mem_valid (core_ack)
165+
);
166+
167+
168+
assign core_cyc = core_cyc_stb;
169+
assing core_stb = core_cyc_stb;
170+
assign data_mem_cyc = data_mem_cyc_stb;
171+
assign data_mem_stb = data_mem_cyc_stb;
172+
assign core_we = 1'b0; // core_we = 0
173+
assign core_data_out = 32'b0; // core_data_out = 0 because we never write to instruction memory
174+
175+
176+
endmodule
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)