📄 oc8051_top.v
字号:
.src1(src1), .src2(src2), .src3(src3), .srcCy(alu_cy), .srcAc(srcAc), .des_acc(des_acc), .sub_result(sub_result), .des1(des1), .des2(des2), .desCy(desCy), .desAc(desAc), .desOv(desOv), .bit_in(bit_out));////data ramoc8051_ram_top oc8051_ram_top1(.clk(wb_clk_i), .rst(wb_rst_i), .rd_addr(rd_addr), .rd_data(ram_data), .wr_addr(wr_addr), .bit_addr(bit_addr_o), .wr_data(wr_dat), .wr(wr_o && (!wr_addr[7] || wr_ind)), .bit_data_in(desCy), .bit_data_out(bit_data)`ifdef OC8051_BIST , .scanb_rst(scanb_rst), .scanb_clk(scanb_clk), .scanb_si(scanb_soi), .scanb_so(scanb_so), .scanb_en(scanb_en)`endif );//oc8051_alu_src_sel oc8051_alu_src_sel1(.clk(wb_clk_i), .rst(wb_rst_i), .rd(rd), .sel1(src_sel1), .sel2(src_sel2), .sel3(src_sel3), .acc(acc), .ram(ram_out), .pc(pc), .dptr({dptr_hi, dptr_lo}), .op1(op1_n), .op2(op2_n), .op3(op3_n), .src1(src1), .src2(src2), .src3(src3));////oc8051_comp oc8051_comp1(.sel(comp_sel), .eq(eq), .b_in(bit_out), .cy(cy), .acc(acc), .des(sub_result) );////program rom`ifdef OC8051_ROM oc8051_rom oc8051_rom1(.rst(wb_rst_i), .clk(wb_clk_i), .ea_int(ea_int), .addr(iadr_o), .data_o(idat_onchip) );`else assign ea_int = 1'b0; assign idat_onchip = 32'h0; `ifdef OC8051_SIMULATION initial begin $display("\t * "); $display("\t * Internal rom disabled!!!"); $display("\t * "); end `endif`endif////oc8051_cy_select oc8051_cy_select1(.cy_sel(cy_sel), .cy_in(cy), .data_in(bit_out), .data_out(alu_cy));////oc8051_indi_addr oc8051_indi_addr1 (.clk(wb_clk_i), .rst(wb_rst_i), .wr_addr(wr_addr), .data_in(wr_dat), .wr(wr_o), .wr_bit(bit_addr_o), .ri_out(ri), .sel(op1_cur[0]), .bank(bank_sel));assign icyc_o = istb_o;////oc8051_memory_interface oc8051_memory_interface1(.clk(wb_clk_i), .rst(wb_rst_i),// internal ram .wr_i(wr), .wr_o(wr_o), .wr_bit_i(bit_addr), .wr_bit_o(bit_addr_o), .wr_dat(wr_dat), .des_acc(des_acc), .des1(des1), .des2(des2), .rd_addr(rd_addr), .wr_addr(wr_addr), .wr_ind(wr_ind), .bit_in(bit_data), .in_ram(ram_data), .sfr(sfr_out), .sfr_bit(sfr_bit), .bit_out(bit_out), .iram_out(ram_out),// external instrauction rom .iack_i(iack_i), .iadr_o(iadr_o), .idat_i(idat_i), .istb_o(istb_o),// internal instruction rom .idat_onchip(idat_onchip),// data memory .dadr_o(wbd_adr_o), .ddat_o(wbd_dat_o), .dwe_o(wbd_we_o), .dstb_o(wbd_stb_o), .ddat_i(wbd_dat_i), .dack_i(wbd_ack_i),// from decoder .rd_sel(ram_rd_sel), .wr_sel(ram_wr_sel), .rn({bank_sel, op1_cur}), .rd_ind(rd_ind), .rd(rd), .mem_act(mem_act), .mem_wait(mem_wait),// external access .ea(ea_in), .ea_int(ea_int),// instructions outputs to cpu .op1_out(op1_n), .op2_out(op2_n), .op3_out(op3_n),// interrupt interface .intr(intr), .int_v(int_src), .int_ack(int_ack), .istb(istb), .reti(reti),//pc .pc_wr_sel(pc_wr_sel), .pc_wr(pc_wr & comp_wait), .pc(pc),// sfr's .sp_w(sp_w), .dptr({dptr_hi, dptr_lo}), .ri(ri), .acc(acc), .sp(sp) );////oc8051_sfr oc8051_sfr1(.rst(wb_rst_i), .clk(wb_clk_i), .adr0(rd_addr[7:0]), .adr1(wr_addr[7:0]), .dat0(sfr_out), .dat1(wr_dat), .dat2(des2), .des_acc(des_acc), .we(wr_o && !wr_ind), .bit_in(desCy), .bit_out(sfr_bit), .wr_bit(bit_addr_o), .ram_rd_sel(ram_rd_sel), .ram_wr_sel(ram_wr_sel), .wr_sfr(wr_sfr), .comp_sel(comp_sel), .comp_wait(comp_wait),// acc .acc(acc),// sp .sp(sp), .sp_w(sp_w),// psw .bank_sel(bank_sel), .desAc(desAc), .desOv(desOv), .psw_set(psw_set), .srcAc(srcAc), .cy(cy),// ports .rmw(rmw), `ifdef OC8051_PORTS `ifdef OC8051_PORT0 .p0_out(p0_o), .p0_in(p0_i), `endif `ifdef OC8051_PORT1 .p1_out(p1_o), .p1_in(p1_i), `endif `ifdef OC8051_PORT2 .p2_out(p2_o), .p2_in(p2_i), `endif `ifdef OC8051_PORT3 .p3_out(p3_o), .p3_in(p3_i), `endif `endif// uart `ifdef OC8051_UART .rxd(rxd_i), .txd(txd_o), `endif// int .int_ack(int_ack), .intr(intr), .int0(int0_i), .int1(int1_i), .reti(reti), .int_src(int_src),// t/c 0,1 `ifdef OC8051_TC01 .t0(t0_i), .t1(t1_i), `endif// t/c 2 `ifdef OC8051_TC2 .t2(t2_i), .t2ex(t2ex_i), `endif// dptr .dptr_hi(dptr_hi), .dptr_lo(dptr_lo), .wait_data(wait_data) );`ifdef OC8051_CACHE oc8051_icache oc8051_icache1(.rst(wb_rst_i), .clk(wb_clk_i), // cpu .adr_i(iadr_o), .dat_o(idat_i), .stb_i(istb_o), .ack_o(iack_i), .cyc_i(icyc_o), // pins .dat_i(wbi_dat_i), .stb_o(wbi_stb_o), .adr_o(wbi_adr_o), .ack_i(wbi_ack_i), .cyc_o(wbi_cyc_o)`ifdef OC8051_BIST , .scanb_rst(scanb_rst), .scanb_clk(scanb_clk), .scanb_si(scanb_si), .scanb_so(scanb_soi), .scanb_en(scanb_en)`endif ); defparam oc8051_icache1.ADR_WIDTH = 6; // cache address wihth defparam oc8051_icache1.LINE_WIDTH = 2; // line address width (2 => 4x32) defparam oc8051_icache1.BL_NUM = 15; // number of blocks (2^BL_WIDTH-1); BL_WIDTH = ADR_WIDTH - LINE_WIDTH defparam oc8051_icache1.CACHE_RAM = 64; // cache ram x 32 (2^ADR_WIDTH) `ifdef OC8051_SIMULATION initial begin #1 $display("\t * "); $display("\t * External rom interface: cache"); $display("\t * "); end `endif//// no cache//`else `ifdef OC8051_BIST assign scanb_soi=scanb_si; `endif `ifdef OC8051_WB oc8051_wb_iinterface oc8051_wb_iinterface(.rst(wb_rst_i), .clk(wb_clk_i), // cpu .adr_i(iadr_o), .dat_o(idat_i), .stb_i(istb_o), .ack_o(iack_i), .cyc_i(icyc_o), // external rom .dat_i(wbi_dat_i), .stb_o(wbi_stb_o), .adr_o(wbi_adr_o), .ack_i(wbi_ack_i), .cyc_o(wbi_cyc_o)); `ifdef OC8051_SIMULATION initial begin #1 $display("\t * "); $display("\t * External rom interface: WB interface"); $display("\t * "); end `endif `else assign wbi_adr_o = iadr_o ; assign idat_i = wbi_dat_i ; assign wbi_stb_o = 1'b1 ; assign iack_i = wbi_ack_i ; assign wbi_cyc_o = 1'b1 ; `ifdef OC8051_SIMULATION initial begin #1 $display("\t * "); $display("\t * External rom interface: Pipelined interface"); $display("\t * "); end `endif `endif`endifendmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -