@@ -28,7 +28,7 @@ module attosoc (
2828 input clk,
2929 output reg [7 :0 ] led,
3030 output uart_tx,
31- input uart_rx,
31+ input uart_rx
3232);
3333
3434 reg [5 :0 ] reset_cnt = 0 ;
@@ -38,7 +38,8 @@ module attosoc (
3838 reset_cnt <= reset_cnt + ! resetn;
3939 end
4040
41- parameter integer MEM_WORDS = 8192 ;
41+ // parameter integer MEM_WORDS = 8192;
42+ parameter integer MEM_WORDS = 16384 ;
4243 parameter [31 :0 ] STACKADDR = 32 'h 0000_0000 + (4 * MEM_WORDS); // end of memory
4344 parameter [31 :0 ] PROGADDR_RESET = 32 'h 0000_0000; // start of memory
4445
@@ -47,13 +48,24 @@ module attosoc (
4748 reg [31 :0 ] ram_rdata;
4849 reg ram_ready;
4950
51+ reg [31 :0 ] irq = 32 'h 0000_0000;
52+ wire [31 :0 ] eoi;
53+
5054 wire mem_valid;
5155 wire mem_instr;
5256 wire mem_ready;
5357 wire [31 :0 ] mem_addr;
5458 wire [31 :0 ] mem_wdata;
5559 wire [3 :0 ] mem_wstrb;
5660 wire [31 :0 ] mem_rdata;
61+ wire [31 :0 ] mem_la_addr;
62+ wire mem_la_read;
63+
64+ always @(posedge clk)
65+ begin
66+ if (mem_la_read)
67+ ram_rdata <= ram[mem_la_addr[23 :2 ]];
68+ end
5769
5870 always @(posedge clk)
5971 begin
@@ -64,7 +76,7 @@ module attosoc (
6476 if (mem_wstrb[2 ]) ram[mem_addr[23 :2 ]][23 :16 ] <= mem_wdata[23 :16 ];
6577 if (mem_wstrb[3 ]) ram[mem_addr[23 :2 ]][31 :24 ] <= mem_wdata[31 :24 ];
6678
67- ram_rdata <= ram[mem_addr[23 :2 ]];
79+ // ram_rdata <= ram[mem_addr[23:2]];
6880 ram_ready <= 1'b1 ;
6981 end
7082 end
@@ -107,13 +119,13 @@ module attosoc (
107119 picorv32 #(
108120 .STACKADDR(STACKADDR),
109121 .PROGADDR_RESET(PROGADDR_RESET),
110- .PROGADDR_IRQ(32 'h 0000_0000 ),
122+ .PROGADDR_IRQ(32 'h 0000_0010 ),
111123 .BARREL_SHIFTER(0 ),
112- .COMPRESSED_ISA(0 ),
113- .ENABLE_MUL(0 ),
114- .ENABLE_DIV(0 ),
115- .ENABLE_IRQ(0 ),
116- .ENABLE_IRQ_QREGS(0 )
124+ .COMPRESSED_ISA(1 ),
125+ .ENABLE_MUL(1 ),
126+ .ENABLE_DIV(1 ),
127+ .ENABLE_IRQ(1 ),
128+ .ENABLE_IRQ_QREGS(1 )
117129 ) cpu (
118130 .clk (clk ),
119131 .resetn (resetn ),
@@ -123,7 +135,11 @@ module attosoc (
123135 .mem_addr (mem_addr ),
124136 .mem_wdata (mem_wdata ),
125137 .mem_wstrb (mem_wstrb ),
126- .mem_rdata (mem_rdata )
138+ .mem_rdata (mem_rdata ),
139+ .irq (irq ),
140+ .eoi (eoi ),
141+ .mem_la_read (mem_la_read),
142+ .mem_la_addr (mem_la_addr)
127143 );
128144
129145 simpleuart simpleuart (
0 commit comments