add: dual port imem and uart

This commit is contained in:
Jose
2026-03-03 01:44:27 +01:00
parent 98f948ab18
commit a890b031a7
36 changed files with 97 additions and 50 deletions

View File

@@ -6,7 +6,7 @@
# Simulator : AMD Vivado Simulator # Simulator : AMD Vivado Simulator
# Description : Script for compiling the simulation design source files # Description : Script for compiling the simulation design source files
# #
# Generated by Vivado on Mon Mar 02 23:30:40 CET 2026 # Generated by Vivado on Tue Mar 03 01:07:16 CET 2026
# SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025 # SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025
# #
# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. # Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.

View File

@@ -6,7 +6,7 @@
# Simulator : AMD Vivado Simulator # Simulator : AMD Vivado Simulator
# Description : Script for elaborating the compiled design # Description : Script for elaborating the compiled design
# #
# Generated by Vivado on Mon Mar 02 23:30:41 CET 2026 # Generated by Vivado on Tue Mar 03 01:07:19 CET 2026
# SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025 # SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025
# #
# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. # Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.

View File

@@ -1,3 +1,4 @@
000000B3 04100293
00810113 FFFFF337
002080B3 FFC30313
00532023

View File

@@ -6,7 +6,7 @@
# Simulator : AMD Vivado Simulator # Simulator : AMD Vivado Simulator
# Description : Script for simulating the design by launching the simulator # Description : Script for simulating the design by launching the simulator
# #
# Generated by Vivado on Mon Mar 02 23:30:42 CET 2026 # Generated by Vivado on Tue Mar 03 01:04:08 CET 2026
# SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025 # SW Build 6299465 on Fri Nov 14 12:34:56 MST 2025
# #
# Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. # Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.

View File

@@ -1,6 +1,6 @@
{ {
crc : 5732162227090726530 , crc : 899746931471304080 ,
ccp_crc : 0 , ccp_crc : 0 ,
cmdline : " --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip --snapshot tb_top_behav xil_defaultlib.tb_top xil_defaultlib.glbl" , cmdline : " --incr --debug typical --relax --mt 8 -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip --snapshot tb_top_behav xil_defaultlib.tb_top xil_defaultlib.glbl" ,
buildDate : "Nov 14 2025" , buildDate : "Nov 14 2025" ,

View File

@@ -25,11 +25,11 @@ INOUT_PROTOINST_FILTER=true
INTERNAL_PROTOINST_FILTER=true INTERNAL_PROTOINST_FILTER=true
CONSTANT_PROTOINST_FILTER=true CONSTANT_PROTOINST_FILTER=true
VARIABLE_PROTOINST_FILTER=true VARIABLE_PROTOINST_FILTER=true
SCOPE_NAME_COLUMN_WIDTH=93 SCOPE_NAME_COLUMN_WIDTH=159
SCOPE_DESIGN_UNIT_COLUMN_WIDTH=83 SCOPE_DESIGN_UNIT_COLUMN_WIDTH=83
SCOPE_BLOCK_TYPE_COLUMN_WIDTH=103 SCOPE_BLOCK_TYPE_COLUMN_WIDTH=103
OBJECT_NAME_COLUMN_WIDTH=121 OBJECT_NAME_COLUMN_WIDTH=154
OBJECT_VALUE_COLUMN_WIDTH=72 OBJECT_VALUE_COLUMN_WIDTH=1904
OBJECT_DATA_TYPE_COLUMN_WIDTH=75 OBJECT_DATA_TYPE_COLUMN_WIDTH=75
PROCESS_NAME_COLUMN_WIDTH=75 PROCESS_NAME_COLUMN_WIDTH=75
PROCESS_TYPE_COLUMN_WIDTH=75 PROCESS_TYPE_COLUMN_WIDTH=75

View File

@@ -12,8 +12,8 @@ Nov 14 2025
/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/hazard.v,1772467244,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/id_ex.v,,hazard,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, /home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/hazard.v,1772467244,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/id_ex.v,,hazard,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,,
/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/id_ex.v,1772490462,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/if_id.v,,id_ex,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, /home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/id_ex.v,1772490462,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/if_id.v,,id_ex,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,,
/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/if_id.v,1772490110,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/imem.v,,if_id,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, /home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/if_id.v,1772490110,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/imem.v,,if_id,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,,
/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/imem.v,1772485445,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/imm_gen.v,,imem,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, /home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/imem.v,1772490099,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/imm_gen.v,,imem,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,,
/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/imm_gen.v,1772470571,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/me_wb.v,,imm_gen,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, /home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/imm_gen.v,1772490121,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/me_wb.v,,imm_gen,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,,
/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/me_wb.v,1772468767,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/pc.v,,me_wb,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, /home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/me_wb.v,1772468767,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/pc.v,,me_wb,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,,
/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/pc.v,1772289140,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/regfile.v,,pc,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, /home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/pc.v,1772289140,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/regfile.v,,pc,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,,
/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/regfile.v,1772483280,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/top.v,,regfile,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,, /home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/regfile.v,1772483280,verilog,,/home/jomaa/git/riscv-ac/riscv-ac.srcs/sources_1/new/top.v,,regfile,,,../../../../../../../../opt/Xilinx/2025.2/data/rsb/busdef,,,,,

View File

@@ -1,3 +1,4 @@
000000B3 04100293
00810113 FFFFF337
002080B3 FFC30313
00532023

View File

@@ -1,20 +1,21 @@
`timescale 1ns / 1ps `timescale 1ns / 1ps
////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////
// Company: // Company: nope
// Engineer: // Engineer: Jose
// //
// Create Date: 03/01/2026 07:26:34 PM // Create Date: 02/20/2026 09:21:52 AM
// Design Name: // Design Name: RISCV AC Processor Simulation
// Module Name: tb_top // Module Name: tb_top
// Project Name: // Project Name: riscv-ac
// Target Devices: // Target Devices: Artix 7
// Tool Versions: // Tool Versions: 2025.2
// Description: // Description: Testbench for simulation + MMIO
// //
// Dependencies: // Dependencies:
// //
// Revision: // Revision: 2.0 - MMIO
// Revision 0.01 - File Created // Revision: 1.0 - Basic structure
// Revision: 0.01 - File Created
// Additional Comments: // Additional Comments:
// //
////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////
@@ -26,13 +27,15 @@ module tb_top();
reg clk; reg clk;
reg rst; reg rst;
wire [1:0] leds; wire [1:0] leds;
wire [31:0] debug; wire [31:0] uart_tx_data;
wire uart_tx_en;
top uut ( top uut (
.clk(clk), .clk(clk),
.rst(rst), .rst(rst),
.leds(leds), .leds(leds),
.debug(debug) .uart_tx_data(uart_tx_data),
.uart_tx_en(uart_tx_en)
); );
// T_CLK = 10ns // T_CLK = 10ns

View File

@@ -13,19 +13,24 @@
// //
// Dependencies: // Dependencies:
// //
// Revision: 1.0 // Revision: 2.0 - Dual port for UART programming
// Revision 0.01 - File Created // Revision: 1.0 - Basic structure
// Revision: 0.01 - File Created
// Additional Comments: // Additional Comments:
// //
////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////
module imem( module imem(
input clk, input clk,
input [31:0] address,
input we, // puerto 1
input [31:0] write_data, input [31:0] read_addr,
input [7:0] write_addr, output [31:0] inst_out,
output [31:0] inst_out
// puerto 2
input we_ext,
input [31:0] write_addr_ext,
input [31:0] write_data_ext
); );
reg [31:0] memory[0:255]; reg [31:0] memory[0:255];
@@ -39,9 +44,11 @@ initial begin
end end
always @(posedge clk) begin always @(posedge clk) begin
if(we) if(we_ext) begin
memory[write_addr] <= write_data; memory[write_addr_ext[9:2]] <= write_data_ext;
inst_reg <= memory[address[9:2]]; end
inst_reg <= memory[read_addr[9:2]];
end end
assign inst_out = inst_reg; assign inst_out = inst_reg;

View File

@@ -1,11 +1,38 @@
`timescale 1ns / 1ps `timescale 1ns / 1ps
`default_nettype none //////////////////////////////////////////////////////////////////////////////////
// Company: nope
// Engineer: Jose
//
// Create Date: 02/20/2026 09:21:52 AM
// Design Name: RISCV AC Processor Implementation
// Module Name: top
// Project Name: riscv-ac
// Target Devices: Artix 7
// Tool Versions: 2025.2
// Description: Top module for interconnection
//
// Dependencies:
//
// Revision: 2.0 - MMIO
// Revision: 1.0 - Basic structure
// Revision: 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module top ( module top (
input clk, input clk,
input rst, input rst,
// Programacion
input [31:0] prog_data,
input [31:0] prog_addr,
input prog_we,
// Debug & UART
output [1:0] leds, output [1:0] leds,
output [31:0] debug output [31:0] uart_tx_data,
output uart_tx_en
); );
// ========================================== // ==========================================
@@ -26,8 +53,14 @@ module top (
); );
imem u_imem ( imem u_imem (
.clk(clk), .address(npc_IF), .we(1'b0), .clk(clk),
.write_data(32'b0), .write_addr(8'b0), .inst_out(ir_IF) // por aqui lee la CPU
.read_addr(pc_IF),
.inst_out(ir_IF),
// por aqui meto el programa
.we_ext(prog_we),
.write_addr_ext(prog_addr),
.write_data_ext(prog_data)
); );
// ========================================== // ==========================================
@@ -161,9 +194,18 @@ module top (
// ========================================== // ==========================================
// ETAPA ME & WB // ETAPA ME & WB
// ========================================== // ==========================================
// --- hacemos un apaño pa poder sacar cosas a la UART (MMIO) ---
wire is_uart = (alu_res_ME == 32'hFFFFFFFC);
wire dmem_we = we_mem_ME & ~is_uart; // si va pa la UART no escribimos en memoria
assign uart_tx_en = we_mem_ME & is_uart;
assign uart_tx_data = regB_ME;
// --------------------------------------------------------------
wire [31:0] mem_data_ME; wire [31:0] mem_data_ME;
dmem u_dmem ( dmem u_dmem (
.clk(clk), .we(we_mem_ME), .address(alu_res_ME), .clk(clk), .we(dmem_we), .address(alu_res_ME),
.write_data(regB_ME), .mem_data_out(mem_data_ME) .write_data(regB_ME), .mem_data_out(mem_data_ME)
); );
@@ -187,11 +229,4 @@ module top (
assign leds[0] = Branch_Taken; // se enciende cuando hay salto assign leds[0] = Branch_Taken; // se enciende cuando hay salto
assign leds[1] = ID_EX_Clr; // se enciende en bloqueos assign leds[1] = ID_EX_Clr; // se enciende en bloqueos
assign debug = {
alu_res_EX[15:0],
rd_WB,
rs1_ID,
npc_IF[7:2]
};
endmodule endmodule

View File

@@ -61,7 +61,7 @@
<Option Name="IPStaticSourceDir" Val="$PIPUSERFILESDIR/ipstatic"/> <Option Name="IPStaticSourceDir" Val="$PIPUSERFILESDIR/ipstatic"/>
<Option Name="EnableBDX" Val="FALSE"/> <Option Name="EnableBDX" Val="FALSE"/>
<Option Name="DSABoardId" Val="cmod_a7-35t"/> <Option Name="DSABoardId" Val="cmod_a7-35t"/>
<Option Name="WTXSimLaunchSim" Val="34"/> <Option Name="WTXSimLaunchSim" Val="37"/>
<Option Name="WTModelSimLaunchSim" Val="0"/> <Option Name="WTModelSimLaunchSim" Val="0"/>
<Option Name="WTQuestaLaunchSim" Val="0"/> <Option Name="WTQuestaLaunchSim" Val="0"/>
<Option Name="WTIesLaunchSim" Val="0"/> <Option Name="WTIesLaunchSim" Val="0"/>