소스 검색

Implemented OISC COM

Communication block link to OISC
Min 6 년 전
부모
커밋
db7e4c116b
1개의 변경된 파일16개의 추가작업 그리고 0개의 파일을 삭제
  1. 16 0
      src/oisc/cpu.sv

+ 16 - 0
src/oisc/cpu.sv

@@ -25,6 +25,7 @@ module oisc8_cpu(processor_port port);
 	pc_block#(.PROGRAM("../../memory/oisc8.text")) pc0(bus0);
 	alu_block alu0(bus0);
 	mem_block ram0(bus0, port);
+	oisc_com_block com0(bus0, port);
 
 endmodule
 
@@ -87,6 +88,21 @@ module pc_block(IBus bus);
 
 endmodule
 
+module oisc_com_block(IBus bus, processor_port port);
+	reg [7:0] addr;
+	reg wr,rd;
+	assign port.com_addr = wr|rd ? addr : 8'd0;
+	PortReg#(.ADDR_SRC(COMAR), .ADDR_DST(COMA)) p_coma(
+			.bus(bus),.data_from_bus(addr),.data_to_bus(addr),.wr(),.rd()
+	);
+	PortInputSeq#(.ADDR(COMD)) p_comd(
+			.bus(bus),.data_from_bus(port.com_wr),.wr(wr)
+	);
+	PortOutput#(.ADDR(COMDR)) p_comdr(
+			.bus(bus),.data_to_bus(port.com_rd),.rd(rd)
+	);
+endmodule
+
 module mem_block(IBus bus, processor_port port);
 	reg w0,w1,w2,wd0,wd1;
 	reg [15:0] data, cached;