OpenCores
URL https://opencores.org/ocsvn/kiss-board/kiss-board/trunk

Subversion Repositories kiss-board

[/] [kiss-board/] [tags/] [initial/] [kiss-board_soc/] [src/] [tessera_core.v] - Rev 11

Compare with Previous | Blame | View Log

 
`timescale 1ps/1ps
 
//
// Address map
//
`define APP_ADDR_DEC_W	8
`define APP_ADDR_SRAM	`APP_ADDR_DEC_W'h00
 
`define APP_ADDR_FLASH	`APP_ADDR_DEC_W'h04
`define APP_ADDR_DECP_W  4
`define APP_ADDR_PERIP  `APP_ADDR_DEC_W'h9
`define APP_ADDR_VGA	`APP_ADDR_DEC_W'h97
`define APP_ADDR_ETH	`APP_ADDR_DEC_W'h92
`define APP_ADDR_AUDIO	`APP_ADDR_DEC_W'h9d
`define APP_ADDR_UART	`APP_ADDR_DEC_W'h90
`define APP_ADDR_PS2	`APP_ADDR_DEC_W'h94
`define APP_ADDR_RES1	`APP_ADDR_DEC_W'h9e
`define APP_ADDR_RES2	`APP_ADDR_DEC_W'h9f
`define APP_ADDR_FAKEMC	4'h6
 
// 0x0000_0000 - 0x3fff_ffff RAM (1GByte)
	//0x00xx_xxxx(0x0000_0000-0x001f_ffff) Cached External_SDRAM0 CS0 BANK0(2Mbyte)
	//0x00xx_xxxx(0x002f_0000-0x003f_ffff) Cached External_SDRAM0 CS0 BANK1(2Mbyte)
	//0x00xx_xxxx(0x0040_0000-0x005f_ffff) Cached External_SDRAM0 CS0 BANK2(2Mbyte)
	//0x00xx_xxxx(0x0060_0000-0x007f_ffff) Cached External_SDRAM0 CS0 BANK3(2Mbyte)
	//0x00xx_xxxx(0x0080_0000-0x009f_ffff) Cached External_SDRAM0 CS1 BANK0(2Mbyte)
	//0x00xx_xxxx(0x00af_0000-0x00bf_ffff) Cached External_SDRAM0 CS1 BANK1(2Mbyte)
	//0x00xx_xxxx(0x00c0_0000-0x00df_ffff) Cached External_SDRAM0 CS1 BANK2(2Mbyte)
	//0x00xx_xxxx(0x00d0_0000-0x00ff_ffff) Cached External_SDRAM0 CS1 BANK3(2Mbyte)
 
	//0x01xx_xxxx(0x0100_0000-0x011f_ffff) Cached External_SDRAM1 CS0 BANK0(2Mbyte)
	//0x01xx_xxxx(0x012f_0000-0x013f_ffff) Cached External_SDRAM1 CS0 BANK1(2Mbyte)
	//0x01xx_xxxx(0x0140_0000-0x015f_ffff) Cached External_SDRAM1 CS0 BANK2(2Mbyte)
	//0x01xx_xxxx(0x0160_0000-0x017f_ffff) Cached External_SDRAM1 CS0 BANK3(2Mbyte)
	//0x01xx_xxxx(0x0180_0000-0x019f_ffff) Cached External_SDRAM1 CS1 BANK0(2Mbyte)
	//0x01xx_xxxx(0x01af_0000-0x01bf_ffff) Cached External_SDRAM1 CS1 BANK1(2Mbyte)
	//0x01xx_xxxx(0x01c0_0000-0x01df_ffff) Cached External_SDRAM1 CS1 BANK2(2Mbyte)
	//0x01xx_xxxx(0x01d0_0000-0x01ff_ffff) Cached External_SDRAM1 CS1 BANK3(2Mbyte)
 
	//0x02xx_xxxx(0x0200_0000-0x02ff_ffff) Cached None
 
	//0x03xx_xxxx(0x0300_0000-0x03ff_ffff) Cached None
 
	//0x04xx_xxxx(0x0400_0000-0x041f_ffff) Cached External_FLASH(2MByte) ( FPGA-CODE + PROGRAM-CODE )
	//0x04xx_xxxx(0x0420_0000-0x043f_ffff) Cached External_FLASH(2MByte) image
	//0x04xx_xxxx(0x0440_0000-0x045f_ffff) Cached External_FLASH(2MByte) image
	//0x04xx_xxxx(0x0460_0000-0x047f_ffff) Cached External_FLASH(2MByte) image
	//0x04xx_xxxx(0x0480_0000-0x049f_ffff) Cached External_FLASH(2MByte) image
	//0x04xx_xxxx(0x04a0_0000-0x04bf_ffff) Cached External_FLASH(2MByte) image
	//0x04xx_xxxx(0x04c0_0000-0x04df_ffff) Cached External_FLASH(2MByte) image
	//0x04xx_xxxx(0x04d0_0000-0x04ff_ffff) Cached External_FLASH(2MByte) image
 
	//....
 
// 0x4000_0000 - 0x7fff_ffff Resevved(1GByte)
	//....
 
// 0x8000_0000 - 0xefff_ffff DEVICE,etc
	//	0x90xx_xxxx(0x9000_0000-0x90ff_ffff) Uncached 16MB UART16550 Controller 0-15
	//	....
 
// 0xf000_0000 - 0xffff_ffff ROM(256MByte)
	//	....
 
module tessera_core (
	//
	sys_or1200_res,
	sys_or1200_clk,
	sys_wb_res,
	sys_wb_clk,
	sys_mem_res,
	sys_mem_clk,
	sys_sdram_res,
	sys_sdram_clk,
	sys_vga_res,
	sys_vga_clk,
	sys_clmode,
	//
	jtag_tms,
	jtag_tck,
	jtag_trst,
	jtag_tdi,
	jtag_tdo_o,
	jtag_tdo_oe,
	//
	uart_stx,
	uart_srx,
	uart_rts,
	uart_cts,
	uart_dtr,
	uart_dsr,
	uart_ri,
	uart_dcd,
	//
	mem_cs2_n,
	mem_cs2_g_n,
	mem_cs2_dir,
	mem_cs2_rstdrv,
	mem_cs2_int,
	mem_cs2_iochrdy,
	mem_cs1_n,
	mem_cs1_rst_n,
	mem_cs1_rdy,
	mem_cs0_n,
	mem_we_n,
	mem_oe_n,
	mem_a,
	mem_d_o,
	mem_d_oe,
	mem_d_i,
	//
	sdram0_clk,
	sdram0_cke,
	sdram0_cs_n,
	sdram0_ras_n,
	sdram0_cas_n,
	sdram0_we_n,
	sdram0_dqm,
	sdram0_ba,
	sdram0_a,
	sdram0_d_i,
	sdram0_d_oe,
	sdram0_d_o,
	//
	sdram1_clk,
	sdram1_cke,
	sdram1_cs_n,
	sdram1_ras_n,
	sdram1_cas_n,
	sdram1_we_n,
	sdram1_dqm,
	sdram1_ba,
	sdram1_a,
	sdram1_d_i,
	sdram1_d_oe,
	sdram1_d_o,
	//
	vga_clk,
	vga_hsync,
	vga_vsync,
	vga_blank,
	vga_d,
	//
	option
);
	// system
	input		sys_or1200_res;
	input		sys_or1200_clk;
	input		sys_wb_res;
	input		sys_wb_clk;
	input		sys_mem_res;
	input		sys_mem_clk;
	input		sys_sdram_res;
	input		sys_sdram_clk;
	input		sys_vga_res;
	input		sys_vga_clk;
	input	[1:0]	sys_clmode;
	// debug
	input		jtag_tms;
	input		jtag_tck;
	input		jtag_trst;
	input		jtag_tdi;
	output		jtag_tdo_o;
	output		jtag_tdo_oe;
	// uart
	output		uart_stx;
	input		uart_srx;
	output		uart_rts;
	input		uart_cts;
	output		uart_dtr;
	input		uart_dsr;
	input		uart_ri;
	input		uart_dcd;
	// flash
	//output		flash_rstn;
	//output		flash_cen;
	//output		flash_oen;
	//output		flash_wen;
	//input		flash_rdy;
	//inout	[7:0]	flash_d; // IO
	//output	[22:0]	flash_a;
	//output		flash_a_oe;
	output		mem_cs2_n;
	output		mem_cs2_g_n;
	output		mem_cs2_dir;
	output		mem_cs2_rstdrv;
	input		mem_cs2_int;
	input		mem_cs2_iochrdy;
	output		mem_cs1_n;
	output		mem_cs1_rst_n;
	input		mem_cs1_rdy;
	output		mem_cs0_n;
	output		mem_we_n;
	output		mem_oe_n;
	output	[22:0]	mem_a;
	output	[7:0]	mem_d_o;
	output	[7:0]	mem_d_oe;
	input	[7:0]	mem_d_i;
	// sdram0
	output		sdram0_clk;
	output		sdram0_cke;
	output	[1:0]	sdram0_cs_n;
	output		sdram0_ras_n;
	output		sdram0_cas_n;
	output		sdram0_we_n;
	output	[1:0]	sdram0_dqm;
	output	[1:0]	sdram0_ba;
	output	[12:0]	sdram0_a;
	input	[15:0]	sdram0_d_i;
	output	[15:0]	sdram0_d_oe;
	output	[15:0]	sdram0_d_o;
	// sdram1
	output		sdram1_clk;
	output		sdram1_cke;
	output	[1:0]	sdram1_cs_n;
	output		sdram1_ras_n;
	output		sdram1_cas_n;
	output		sdram1_we_n;
	output	[1:0]	sdram1_dqm;
	output	[1:0]	sdram1_ba;
	output	[12:0]	sdram1_a;
	input	[15:0]	sdram1_d_i;
	output	[15:0]	sdram1_d_oe;
	output	[15:0]	sdram1_d_o;
	// vga
	output		vga_clk;
	output		vga_hsync;
	output		vga_vsync;
	output		vga_blank;
	output	[23:0]	vga_d;
	// test
	input		option;
 
// Interrupt signals
	wire	[19:0]	pic_ints;
	wire		uart_int;
	wire		dma_a_int;
	wire		dma_b_int;
 
// Misc signal
	// VGA
	wire		vram_dma_req;
	wire	[31:0]	vram_dma_address;
	wire		vram_dma_ack;
	wire		vram_dma_exist;
	wire	[15:0]	vram_dma_data;
	// Debug
	wire		dbg_stall;
	wire	[31:0]	dbg_dat_dbg;
	wire	[31:0]	dbg_adr;
	wire	[3:0]	dbg_lss;
	wire	[1:0]	dbg_is;
	wire	[10:0]	dbg_wp;
	wire		dbg_bp;
	wire	[31:0]	dbg_dat_risc;
	wire	[2:0]	dbg_op;
 
// WishBone Master signals
	// RiscInstractionMaster
	wire		wb_rim_cyc_o;
	wire	[31:0]	wb_rim_adr_o;
	wire	[31:0]	wb_rim_dat_i;
	wire	[31:0]	wb_rim_dat_o;
	wire	[3:0]	wb_rim_sel_o;
	wire		wb_rim_ack_i;
	wire		wb_rim_err_i;
	wire		wb_rim_rty_i;
	wire		wb_rim_we_o;
	wire		wb_rim_stb_o;
	wire		wb_rim_cab_o;
	// RiscDataMaster
	wire		wb_rdm_cyc_o;
	wire	[31:0]	wb_rdm_adr_o;
	wire	[31:0]	wb_rdm_dat_i;
	wire	[31:0]	wb_rdm_dat_o;
	wire	[3:0]	wb_rdm_sel_o;
	wire		wb_rdm_ack_i;
	wire		wb_rdm_err_i;
	wire		wb_rdm_rty_i;
	wire		wb_rdm_we_o;
	wire		wb_rdm_stb_o;
	wire		wb_rdm_cab_o;
	// DebugMaster
	wire	[31:0]	wb_dm_adr_o;
	wire	[31:0]	wb_dm_dat_i;
	wire	[31:0]	wb_dm_dat_o;
	wire	[3:0]	wb_dm_sel_o;
	wire		wb_dm_we_o;
	wire		wb_dm_stb_o;
	wire		wb_dm_cyc_o;
	wire		wb_dm_cab_o;
	wire		wb_dm_ack_i;
	wire		wb_dm_err_i;
	// TICMaster
	wire		wb_ticm_cyc_o;
	wire	[31:0]	wb_ticm_adr_o;
	wire	[31:0]	wb_ticm_dat_i;
	wire	[31:0]	wb_ticm_dat_o;
	wire	[3:0]	wb_ticm_sel_o;
	wire		wb_ticm_ack_i;
	wire		wb_ticm_err_i;
	wire		wb_ticm_rty_i;
	wire		wb_ticm_we_o;
	wire		wb_ticm_stb_o;
	wire		wb_ticm_cab_o;
	// DMA Master0
	wire		wb_dma0m_cyc_o;
	wire	[31:0]	wb_dma0m_adr_o;
	wire	[31:0]	wb_dma0m_dat_i;
	wire	[31:0]	wb_dma0m_dat_o;
	wire	[3:0]	wb_dma0m_sel_o;
	wire		wb_dma0m_ack_i;
	wire		wb_dma0m_err_i;
	wire		wb_dma0m_rty_i;
	wire		wb_dma0m_we_o;
	wire		wb_dma0m_stb_o;
	wire		wb_dma0m_cab_o;
	// DMA Master1
	//wire		wb_dma1m_cyc_o;
	//wire	[31:0]	wb_dma1m_adr_o;
	//wire	[31:0]	wb_dma1m_dat_i;
	//wire	[31:0]	wb_dma1m_dat_o;
	//wire	[3:0]	wb_dma1m_sel_o;
	//wire		wb_dma1m_ack_i;
	//wire		wb_dma1m_err_i;
	//wire		wb_dma1m_rty_i;
	//wire		wb_dma1m_we_o;
	//wire		wb_dma1m_stb_o;
	//wire		wb_dma1m_cab_o;
 
// WishBone Slave signals
	// small SRAM0
	wire		wb_ram0s_cyc_i;
	wire		wb_ram0s_stb_i;
	wire		wb_ram0s_cab_i;
	wire	[31:0]	wb_ram0s_adr_i;
	wire	[3:0]	wb_ram0s_sel_i;
	wire		wb_ram0s_we_i;
	wire	[31:0]	wb_ram0s_dat_i;
	wire	[31:0]	wb_ram0s_dat_o;
	wire		wb_ram0s_ack_o;
	wire		wb_ram0s_err_o;
	// small SRAM1
	wire		wb_ram1s_cyc_i;
	wire		wb_ram1s_stb_i;
	wire		wb_ram1s_cab_i;
	wire	[31:0]	wb_ram1s_adr_i;
	wire	[3:0]	wb_ram1s_sel_i;
	wire		wb_ram1s_we_i;
	wire	[31:0]	wb_ram1s_dat_i;
	wire	[31:0]	wb_ram1s_dat_o;
	wire		wb_ram1s_ack_o;
	wire		wb_ram1s_err_o;
	// FlashSlave
	wire		wb_flashs_cyc_i;
	wire		wb_flashs_stb_i;
	wire		wb_flashs_cab_i;
	wire	[31:0]	wb_flashs_adr_i;
	wire	[3:0]	wb_flashs_sel_i;
	wire		wb_flashs_we_i;
	wire	[31:0]	wb_flashs_dat_i;
	wire	[31:0]	wb_flashs_dat_o;
	wire		wb_flashs_ack_o;
	wire		wb_flashs_err_o;
	// Uart0Slave
	wire		wb_uarts_cyc_i;
	wire		wb_uarts_stb_i;
	wire		wb_uarts_cab_i;
	wire	[31:0]	wb_uarts_adr_i;
	wire	[3:0]	wb_uarts_sel_i;
	wire		wb_uarts_we_i;
	wire	[31:0]	wb_uarts_dat_i;
	wire	[31:0]	wb_uarts_dat_o;
	wire		wb_uarts_ack_o;
	wire		wb_uarts_err_o;
	// sdram0Slave
	wire		wb_sdram0s_cyc_i;
	wire		wb_sdram0s_stb_i;
	wire		wb_sdram0s_cab_i;
	wire	[31:0]	wb_sdram0s_adr_i;
	wire	[3:0]	wb_sdram0s_sel_i;
	wire		wb_sdram0s_we_i;
	wire	[31:0]	wb_sdram0s_dat_i;
	wire	[31:0]	wb_sdram0s_dat_o;
	wire		wb_sdram0s_ack_o;
	wire		wb_sdram0s_err_o;
	// sdram1Slave
	wire		wb_sdram1s_cyc_i;
	wire		wb_sdram1s_stb_i;
	wire		wb_sdram1s_cab_i;
	wire	[31:0]	wb_sdram1s_adr_i;
	wire	[3:0]	wb_sdram1s_sel_i;
	wire		wb_sdram1s_we_i;
	wire	[31:0]	wb_sdram1s_dat_i;
	wire	[31:0]	wb_sdram1s_dat_o;
	wire		wb_sdram1s_ack_o;
	wire		wb_sdram1s_err_o;
	// VGASlave
	wire		wb_vgas_cyc_i; 
	wire		wb_vgas_stb_i; 
	wire	[3:0]	wb_vgas_sel_i; 
	wire		wb_vgas_we_i;
	wire	[31:0]	wb_vgas_adr_i; 
	wire	[31:0]	wb_vgas_dat_i; 
	wire		wb_vgas_cab_i;
	wire	[31:0]	wb_vgas_dat_o; 
	wire		wb_vgas_ack_o; 
	wire		wb_vgas_err_o;
	// DMA0Slave
	wire		wb_dma0s_cyc_i;
	wire		wb_dma0s_stb_i;
	wire	[3:0]	wb_dma0s_sel_i;
	wire		wb_dma0s_we_i;
	wire	[31:0]	wb_dma0s_adr_i;
	wire	[31:0]	wb_dma0s_dat_i;
	wire		wb_dma0s_cab_i;
	wire	[31:0]	wb_dma0s_dat_o;
	wire		wb_dma0s_ack_o;
	wire		wb_dma0s_err_o;
	// DMA1Slave
//	wire		wb_dma1s_cyc_i;
//	wire		wb_dma1s_stb_i;
//	wire	[3:0]	wb_dma1s_sel_i;
//	wire		wb_dma1s_we_i;
//	wire	[31:0]	wb_dma1s_adr_i;
//	wire	[31:0]	wb_dma1s_dat_i;
//	wire		wb_dma1s_cab_i;
//	wire	[31:0]	wb_dma1s_dat_o;
//	wire		wb_dma1s_ack_o;
//	wire		wb_dma1s_err_o;
 
///////////////////////////////////////////////////////////////////////////////
// Interrupt table
///////////////////////////////////////////////////////////////////////////////
	assign pic_ints[19:0] = {
	      1'b0,		// INT19 I2C Controller 0, Digital Camera Controller 0
	      1'b0,		// INT18 TDM Controller 0
	      1'b0,		// INT17 HDLC Controller 0
	      1'b0,		// INT16 Firewire Controller 0
	      1'b0,		// INT15 IDE Controller 0
	      1'b0,		// INT14 Audio Controller 0
	      1'b0,		// INT13 USB Host Controller 0
	      1'b0,		// INT12 USB Func Controller 0
	      1'b0,		// INT11 General-Purpose DMA 0
	      1'b0,		// INT10 PCI Controller 0
	      1'b0,		// INT9  IrDA Controller 0
	      1'b0,		// INT8  Graphics Controller 0
	      1'b0,		// INT7  PWM/Timer/Counter Controller 0
	      1'b0,		// INT6  Traffic COP 0, Real-Time Clock 0
	      1'b0,		// INT5  PS/2 Controller 0
	      dma_b_int,	// INT4  Ethernet Controller 0
	      dma_a_int,	// INT3  General-Purpose I/O 0
	      uart_int,		// INT2  UART16550 Controller 0
	      1'b0,		// INT1  Reserved
	      1'b0		// INT0  Reserved
	};
///////////////////////////////////////////////////////////////////////////////
// Bus control
///////////////////////////////////////////////////////////////////////////////
//
// remap register
//
	reg		prefix_flash;
	always @(posedge sys_wb_clk or posedge sys_wb_res)
		if (sys_wb_res)                                                                   prefix_flash <= #1 1'b1;
		else if (wb_rim_cyc_o &&(wb_rim_adr_o[31:32-`APP_ADDR_DEC_W] == `APP_ADDR_FLASH)) prefix_flash <= #1 1'b0;
// re-map Control(for Instraction Address)
// prefix = 1, 0x00xx_xxxx -> 0x04xx_xxxx
// prefix = 0, through
	wire	[31:0]	wb_rif_adr;
	assign wb_rif_adr = prefix_flash ? {`APP_ADDR_FLASH, wb_rim_adr_o[31-`APP_ADDR_DEC_W:0]}: wb_rim_adr_o;
//
// FAKEMC
//
	wire		wb_rdm_ack;
	assign wb_rdm_ack_i = (wb_rdm_adr_o[31:28] == `APP_ADDR_FAKEMC) && wb_rdm_cyc_o && wb_rdm_stb_o ? 1'b1 : wb_rdm_ack;
///////////////////////////////////////////////////////////////////////////////
// WishBone Master&Slave Device
///////////////////////////////////////////////////////////////////////////////
//
// or1200
//
	assign wb_rim_rty_i = 1'b0; // not support
	assign wb_rdm_rty_i = 1'b0; // not support
	or1200_top i_or1200_top (
		// system
		.rst_i(		sys_or1200_res),
		.clk_i(		sys_or1200_clk),
		.clmode_i(	sys_clmode),
		.iwb_clk_i(	sys_wb_clk),
		.iwb_rst_i(	sys_wb_res),
		// wishbone instruction
		.iwb_cyc_o(	wb_rim_cyc_o),
		.iwb_adr_o(	wb_rim_adr_o),
		.iwb_dat_i(	wb_rim_dat_i),
		.iwb_dat_o(	wb_rim_dat_o),
		.iwb_sel_o(	wb_rim_sel_o),
		.iwb_ack_i(	wb_rim_ack_i),
		.iwb_err_i(	wb_rim_err_i),
		.iwb_rty_i(	wb_rim_rty_i),
		.iwb_we_o(	wb_rim_we_o),
		.iwb_stb_o(	wb_rim_stb_o),
		.iwb_cab_o(	wb_rim_cab_o),
		// wishbone data
		.dwb_clk_i(	sys_wb_clk),
		.dwb_rst_i(	sys_wb_res),
		.dwb_cyc_o(	wb_rdm_cyc_o),
		.dwb_adr_o(	wb_rdm_adr_o),
		.dwb_dat_i(	wb_rdm_dat_i),
		.dwb_dat_o(	wb_rdm_dat_o),
		.dwb_sel_o(	wb_rdm_sel_o),
		.dwb_ack_i(	wb_rdm_ack_i),
		.dwb_err_i(	wb_rdm_err_i),
		.dwb_rty_i(	wb_rdm_rty_i),
		.dwb_we_o(	wb_rdm_we_o),
		.dwb_stb_o(	wb_rdm_stb_o),
		.dwb_cab_o(	wb_rdm_cab_o),
		// debug
		.dbg_stall_i(	dbg_stall),
		.dbg_dat_i(	dbg_dat_dbg),
		.dbg_adr_i(	dbg_adr),
		.dbg_ewt_i(	1'b0),
		.dbg_lss_o(	dbg_lss),
		.dbg_is_o(	dbg_is),
		.dbg_wp_o(	dbg_wp),
		.dbg_bp_o(	dbg_bp),
		.dbg_dat_o(	dbg_dat_risc),
		.dbg_ack_o(	),// not used
		.dbg_stb_i(	dbg_op[2]),
		.dbg_we_i(	dbg_op[0]),
		// power management
		.pm_clksd_o( 	),// not used
		.pm_cpustall_i(	1'b0),
		.pm_dc_gate_o(	),// not used
		.pm_ic_gate_o(	),// not used
		.pm_dmmu_gate_o(),// not used
		.pm_immu_gate_o(),// not used
		.pm_tt_gate_o(	),// not used
		.pm_cpu_gate_o(	),// not used
		.pm_wakeup_o(	),// not used
		.pm_lvolt_o(	),// not used
		// interrupts
		.pic_ints_i(	pic_ints)
	);
//
// debug controller
//
`ifdef DBG_IF_MODEL
	assign jtag_tdo_oe = 1'b1;
	dbg_if_model i_dbg_if_model  (
		// JTAG pins
		.tms_pad_i(	jtag_tms),
		.tck_pad_i(	jtag_tck),
		.trst_pad_i(	jtag_trst),
		.tdi_pad_i(	jtag_tdi),
		.tdo_pad_o(	jtag_tdo), 
		// Boundary Scan signals
		.capture_dr_o(	),// not used 
		.shift_dr_o(	),// not used
		.update_dr_o(	),// not used
		.extest_selected_o(),// not used
		.bs_chain_i(	1'b0 ),
		// RISC signals
		.risc_clk_i(	sys_or1200_clk),// wb_clk?
		.risc_data_i(	dbg_dat_risc ),
		.risc_data_o(	dbg_dat_dbg ),
		.risc_addr_o(	dbg_adr ),
		.wp_i(		dbg_wp ),
		.bp_i(		dbg_bp ),
		.opselect_o(	dbg_op ),
		.lsstatus_i(	dbg_lss ),
		.istatus_i(	dbg_is ),
		.risc_stall_o(	dbg_stall ),
		.reset_o(	),// not used
		// WISHBONE common
		.wb_clk_i(	sys_wb_clk ),
		.wb_rst_i(	sys_wb_res ),
		// WISHBONE master interface
		.wb_adr_o(	wb_dm_adr_o ),
		.wb_dat_i(	wb_dm_dat_i ),
		.wb_dat_o(	wb_dm_dat_o ),
		.wb_sel_o(	wb_dm_sel_o ),
		.wb_we_o(	wb_dm_we_o  ),
		.wb_stb_o(	wb_dm_stb_o ),
		.wb_cyc_o(	wb_dm_cyc_o ),
		.wb_cab_o(	wb_dm_cab_o ),
		.wb_ack_i(	wb_dm_ack_i ),
		.wb_err_i(	wb_dm_err_i )
	);
`else
	dbg_top i_dbg_top  (
		// JTAG pins
		.tms_pad_i(	jtag_tms),
		.tck_pad_i(	jtag_tck),
		.trst_pad_i(	jtag_trst),
		.tdi_pad_i(	jtag_tdi),
		.tdo_pad_o(	jtag_tdo_o),
		.tdo_padoen_o(	jtag_tdo_oe),
		// Boundary Scan signals
		.capture_dr_o(	),// not used 
		.shift_dr_o(	),// not used
		.update_dr_o(	),// not used
		.extest_selected_o(),// not used
		.bs_chain_i(	1'b0),
		.bs_chain_o(	),// not used
		// RISC signals
		.risc_clk_i(	sys_or1200_clk),// wb_clk
		.risc_addr_o(	dbg_adr),
		.risc_data_i(	dbg_dat_risc),
		.risc_data_o(	dbg_dat_dbg),
		.wp_i(		dbg_wp),
		.bp_i(		dbg_bp),
		.opselect_o(	dbg_op),
		.lsstatus_i(	dbg_lss),
		.istatus_i(	dbg_is),
		.risc_stall_o(	dbg_stall),
		.reset_o(	), // not used
		// WISHBONE common
		.wb_clk_i(	sys_wb_clk),
		.wb_rst_i(	sys_wb_res),
		// WISHBONE master interface
		.wb_adr_o(	wb_dm_adr_o),
		.wb_dat_i(	wb_dm_dat_i),
		.wb_dat_o(	wb_dm_dat_o),
		.wb_sel_o(	wb_dm_sel_o),
		.wb_we_o(	wb_dm_we_o),
		.wb_stb_o(	wb_dm_stb_o),
		.wb_cyc_o(	wb_dm_cyc_o),
		.wb_cab_o(	wb_dm_cab_o),
		.wb_ack_i(	wb_dm_ack_i),
		.wb_err_i(	wb_dm_err_i)
	);
`endif
//
// tic controller
//
	assign wb_ticm_rty_i = 1'b0; // not support rty
	tessera_tic i_tessera_tic (
		.wb_rst(	sys_wb_res),
		.wb_clk(	sys_wb_clk),
		.wb_cyc_o(	wb_ticm_cyc_o),
		.wb_adr_o(	wb_ticm_adr_o),
		.wb_dat_i(	wb_ticm_dat_i),
		.wb_dat_o(	wb_ticm_dat_o),
		.wb_sel_o(	wb_ticm_sel_o),
		.wb_ack_i(	wb_ticm_ack_i),
		.wb_err_i(	wb_ticm_err_i),
		.wb_rty_i(	wb_ticm_rty_i),
		.wb_we_o(	wb_ticm_we_o),
		.wb_stb_o(	wb_ticm_stb_o),
		.wb_cab_o(	wb_ticm_cab_o)
	);
//
// DMA controler(only use softDMA)
//
	assign wb_dma0m_rty_i = 1'b0; /* not support singal */
	//assign wb_dma1m_rty_i = 1'b0; /* not support singal */
	assign wb_dma0m_cab_o = 1'b0; /* not support singal */
	//assign wb_dma1m_cab_o = 1'b0; /* not support singal */
	wb_dma_top #(
		// rf_addr:integer
		4'h9, // modify WDMA_REG_SEL(wb_dma_defines.v),so always select register_file to not-use pass-through mode.
		// pri_sel:2'
		2'd0,
		// ch_count:integer
		1,
		// chX_conf(0-30)
		4'h1,4'h0,4'h0,4'h0,4'h0,4'h0,4'h0,4'h0,4'h0,4'h0,
		4'h0,4'h0,4'h0,4'h0,4'h0,4'h0,4'h0,4'h0,4'h0,4'h0,
		4'h0,4'h0,4'h0,4'h0,4'h0,4'h0,4'h0,4'h0,4'h0,4'h0,
		4'h0
	) i_wb_dma_top (
		//
		.clk_i(		sys_wb_clk),
		.rst_i(		sys_wb_res),
	// Slave0
		.wb0m_data_i(	wb_dma0s_dat_i),	// this is slave port
		.wb0m_data_o(	wb_dma0s_dat_o),	// this is slave port
		.wb0_addr_i(	wb_dma0s_adr_i),
		.wb0_sel_i(	wb_dma0s_sel_i),
		.wb0_we_i(	wb_dma0s_we_i),
		.wb0_cyc_i(	wb_dma0s_cyc_i),
		.wb0_stb_i(	wb_dma0s_stb_i),
		.wb0_ack_o(	wb_dma0s_ack_o),
		.wb0_err_o(	wb_dma0s_err_o),
		.wb0_rty_o(	/* open */),
	// Master0
		.wb0s_data_i(	wb_dma0m_dat_i),	 // this is master port 
		.wb0s_data_o(	wb_dma0m_dat_o),	 // this is master port
		.wb0_addr_o(	wb_dma0m_adr_o),
		.wb0_sel_o(	wb_dma0m_sel_o),
		.wb0_we_o(	wb_dma0m_we_o),
		.wb0_cyc_o(	wb_dma0m_cyc_o),
		.wb0_stb_o(	wb_dma0m_stb_o),
		.wb0_ack_i(	wb_dma0m_ack_i),
		.wb0_err_i(	wb_dma0m_err_i),
		.wb0_rty_i(	wb_dma0m_rty_i),
	// Slave1(not-used)
		.wb1m_data_i(	32'h0000_0000),		// this is slave port
		.wb1m_data_o(	/* open */),		// this is slave port
		.wb1_addr_i(	32'h0000_0000),
		.wb1_sel_i(	4'b0000),
		.wb1_we_i(	1'b0),
		.wb1_cyc_i(	1'b0),
		.wb1_stb_i(	1'b0),
		.wb1_ack_o(	/* open */),
		.wb1_err_o(	/* open */),
		.wb1_rty_o(	/* open */),
	// Master1
		//.wb1s_data_i(	wb_dma1m_dat_i),	// this is master port
		//.wb1s_data_o(	wb_dma1m_dat_o),	// this is master port
		//.wb1_addr_o(	wb_dma1m_adr_o),
		//.wb1_sel_o(	wb_dma1m_sel_o),
		//.wb1_we_o(	wb_dma1m_we_o),
		//.wb1_cyc_o(	wb_dma1m_cyc_o),
		//.wb1_stb_o(	wb_dma1m_stb_o),
		//.wb1_ack_i(	wb_dma1m_ack_i),
		//.wb1_err_i(	wb_dma1m_err_i),
		//.wb1_rty_i(	wb_dma1m_rty_i),
		.wb1s_data_i(	32'h0000_0000),		// this is master port
		.wb1s_data_o(	/* open */),		// this is master port
		.wb1_addr_o(	/* open */),
		.wb1_sel_o(	/* open */),
		.wb1_we_o(	/* open */),
		.wb1_cyc_o(	/* open */),
		.wb1_stb_o(	/* open */),
		.wb1_ack_i(	1'b1),
		.wb1_err_i(	1'b0),
		.wb1_rty_i(	1'b0),
	// RealDMA port(not-used)
		.dma_req_i(	1'b0),
		.dma_ack_o(	/* open */),
		.dma_nd_i(	1'b0),
		.dma_rest_i(	1'b0),
		//
		.inta_o(	dma_a_int),
		.intb_o(	dma_b_int)
	);
 
///////////////////////////////////////////////////////////////////////////////
// WishBone SlaveOnly Device
///////////////////////////////////////////////////////////////////////////////
//
// flash controller(WinshBoneSlave,LGPL)
//	flash_top i_flash_top (
//		// system
//		.wb_clk_i(	sys_wb_clk),
//		.wb_rst_i(	sys_wb_res),
//		// wishbone
//		.wb_dat_i(	wb_flashs_dat_i),
//		.wb_dat_o(	/*wb_flashs_dat_o*/),
//		.wb_adr_i(	wb_flashs_adr_i),
//		.wb_sel_i(	wb_flashs_sel_i),
//		.wb_we_i(	wb_flashs_we_i),
//		.wb_cyc_i(	wb_flashs_cyc_i),
//		.wb_stb_i(	wb_flashs_stb_i),
//		.wb_ack_o(	/*wb_flashs_ack_o*/),
//		.wb_err_o(	wb_flashs_err_o),
//		// external
//		.flash_rstn(	flash_rstn),
//		.cen(		/* flash_cen */),
//		.oen(		/* flash_oen */),
//		.wen(		/* flash_wen */),
//		.rdy(		flash_rdy),
//		.d(		flash_d),
//		.a(		/* flash_a */),
//		.a_oe(		flash_a_oe)
//	);
	tessera_mem i_tessera_mem (
		//
		.sys_wb_res(		sys_wb_res),
		.sys_wb_clk(		sys_wb_clk),
		//
		.sys_mem_res(		sys_mem_res),
		.sys_mem_clk(		sys_mem_clk),
		//
		.wb_cyc_i(		wb_flashs_cyc_i),
		.wb_stb_i(		wb_flashs_stb_i),
		.wb_adr_i(		wb_flashs_adr_i),
		.wb_sel_i(		wb_flashs_sel_i),
		.wb_we_i(		wb_flashs_we_i),
		.wb_dat_i(		wb_flashs_dat_i),
		.wb_cab_i(		wb_flashs_cab_i),
		.wb_dat_o(		wb_flashs_dat_o),
		.wb_ack_o(		wb_flashs_ack_o),
		.wb_err_o(		wb_flashs_err_o),
		//
		.mem_cs2_n(		mem_cs2_n),
		.mem_cs2_g_n(		mem_cs2_g_n),
		.mem_cs2_dir(		mem_cs2_dir),
		.mem_cs2_rstdrv(	mem_cs2_rstdrv),
		.mem_cs2_int(		mem_cs2_int),
		.mem_cs2_iochrdy(	mem_cs2_iochrdy),
		.mem_cs1_n(		mem_cs1_n),
		.mem_cs1_rst_n(		mem_cs1_rst_n),
		.mem_cs1_rdy(		mem_cs1_rdy),
		.mem_cs0_n(		mem_cs0_n),
		.mem_we_n(		mem_we_n),
		.mem_oe_n(		mem_oe_n),
		.mem_a(			mem_a),
		.mem_d_o(		mem_d_o),
		.mem_d_oe(		mem_d_oe),
		.mem_d_i(		mem_d_i)
	);
//
// sdram0 controller(WishBoneSlave,DMAport)
//
	tessera_sdram i0_tessera_sdram (
		// system
		.sys_wb_res(	sys_wb_res),
		.sys_wb_clk(	sys_wb_clk),
		.sys_sdram_res(	sys_sdram_res),
		.sys_sdram_clk(	sys_sdram_clk),
		// wishbone
		.wb_cyc_i(	wb_sdram0s_cyc_i),
		.wb_stb_i(	wb_sdram0s_stb_i),
		.wb_adr_i(	wb_sdram0s_adr_i),
		.wb_sel_i(	wb_sdram0s_sel_i),
		.wb_we_i(	wb_sdram0s_we_i),
		.wb_dat_i(	wb_sdram0s_dat_i),
		.wb_cab_i(	wb_sdram0s_cab_i),
		.wb_dat_o(	wb_sdram0s_dat_o),
		.wb_ack_o(	wb_sdram0s_ack_o),
		.wb_err_o(	wb_sdram0s_err_o),
		// DMA for Video
		.dma_req(	1'b0),
		.dma_address(	32'h0000_0000),
		.dma_ack(	/* open */),
		.dma_exist(	/* open */),
		.dma_data(	/* open */),
		//.dma_req(	vram_dma_req),
		//.dma_address(	vram_dma_address),
		//.dma_ack(	vram_dma_ack),
		//.dma_exist(	vram_dma_exist),
		//.dma_data(	vram_dma_data),
		// external
		.sdram_clk(	sdram0_clk),
		.sdram_cke(	sdram0_cke),
		.sdram_cs_n(	sdram0_cs_n),
		.sdram_ras_n(	sdram0_ras_n),
		.sdram_cas_n(	sdram0_cas_n),
		.sdram_we_n(	sdram0_we_n),
		.sdram_dqm(	sdram0_dqm),
		.sdram_ba(	sdram0_ba),
		.sdram_a(	sdram0_a),
		.sdram_d_i(	sdram0_d_i),
		.sdram_d_oe(	sdram0_d_oe),
		.sdram_d_o(	sdram0_d_o),
		//
		.option(	option)
	);
 
//
// sdram1 controller(WishBoneSlave,DMAport)
//
	//reg	[7:0]	sys_sdram_res_z;
	//always @(negedge sys_sdram_clk) sys_sdram_res_z <= {sys_sdram_res_z[6:0],sys_sdram_res};
	tessera_sdram i1_tessera_sdram (
		// system
		.sys_wb_res(	sys_wb_res),
		.sys_wb_clk(	sys_wb_clk),
		.sys_sdram_res(	sys_sdram_res),
		//.sys_sdram_res(	sys_sdram_res_z[7]),
		.sys_sdram_clk(	sys_sdram_clk),
		// wishbone 
		.wb_cyc_i(	wb_sdram1s_cyc_i),
		.wb_stb_i(	wb_sdram1s_stb_i),
		.wb_adr_i(	wb_sdram1s_adr_i),
		.wb_sel_i(	wb_sdram1s_sel_i),
		.wb_we_i(	wb_sdram1s_we_i),
		.wb_dat_i(	wb_sdram1s_dat_i),
		.wb_cab_i(	wb_sdram1s_cab_i),
		.wb_dat_o(	wb_sdram1s_dat_o),
		.wb_ack_o(	wb_sdram1s_ack_o),
		.wb_err_o(	wb_sdram1s_err_o),
		// DMA for Video
		//.dma_req(	1'b0),
		//.dma_address(	32'h0000_0000),
		//.dma_ack(	/* open */),
		//.dma_exist(	/* open */),
		//.dma_data(	/* open */),
		.dma_req(	vram_dma_req),
		.dma_address(	vram_dma_address),
		.dma_ack(	vram_dma_ack),
		.dma_exist(	vram_dma_exist),
		.dma_data(	vram_dma_data),
		// external
		.sdram_clk(	sdram1_clk),
		.sdram_cke(	sdram1_cke),
		.sdram_cs_n(	sdram1_cs_n),
		.sdram_ras_n(	sdram1_ras_n),
		.sdram_cas_n(	sdram1_cas_n),
		.sdram_we_n(	sdram1_we_n),
		.sdram_dqm(	sdram1_dqm),
		.sdram_ba(	sdram1_ba),
		.sdram_a(	sdram1_a),
		.sdram_d_i(	sdram1_d_i),
		.sdram_d_oe(	sdram1_d_oe),
		.sdram_d_o(	sdram1_d_o),
		//
		.option(	option)
	);
//
// sram internal(WishBoneSlave)
//
//	tessera_ram_vect i0_tessra_ram_int( // exception&.icm
//		// system
//		.sys_wb_res(	sys_wb_res),
//		.sys_wb_clk(	sys_wb_clk),
//		// wishbone
//		.wb_cyc_i(	wb_ram0s_cyc_i),
//		.wb_stb_i(	wb_ram0s_stb_i),
//		.wb_adr_i(	wb_ram0s_adr_i),
//		.wb_sel_i(	wb_ram0s_sel_i),
//		.wb_we_i(	wb_ram0s_we_i),
//		.wb_dat_i(	wb_ram0s_dat_i),
//		.wb_cab_i(	wb_ram0s_cab_i),
//		.wb_dat_o(	wb_ram0s_dat_o),
//		.wb_ack_o(	wb_ram0s_ack_o),
//		.wb_err_o(	wb_ram0s_err_o)
//	);
	tessera_ram_tiny i0_tessra_ram_int( // only exception
		// system
		.sys_wb_res(	sys_wb_res),
		.sys_wb_clk(	sys_wb_clk),
		// wishbone
		.wb_cyc_i(	wb_ram0s_cyc_i),
		.wb_stb_i(	wb_ram0s_stb_i),
		.wb_adr_i(	wb_ram0s_adr_i),
		.wb_sel_i(	wb_ram0s_sel_i),
		.wb_we_i(	wb_ram0s_we_i),
		.wb_dat_i(	wb_ram0s_dat_i),
		.wb_cab_i(	wb_ram0s_cab_i),
		.wb_dat_o(	wb_ram0s_dat_o),
		.wb_ack_o(	wb_ram0s_ack_o),
		.wb_err_o(	wb_ram0s_err_o)
	);
 
//
// sram internal(WishBoneSlave)
//
//	tessera_ram_data i1_tessra_ram_int( // data&bss
//		// system
//		.sys_wb_res(	sys_wb_res),
//		.sys_wb_clk(	sys_wb_clk),
//		// wishbone
//		.wb_cyc_i(	wb_ram1s_cyc_i),
//		.wb_stb_i(	wb_ram1s_stb_i),
//		.wb_adr_i(	wb_ram1s_adr_i),
//		.wb_sel_i(	wb_ram1s_sel_i),
//		.wb_we_i(	wb_ram1s_we_i),
//		.wb_dat_i(	wb_ram1s_dat_i),
//		.wb_cab_i(	wb_ram1s_cab_i),
//		.wb_dat_o(	wb_ram1s_dat_o),
//		.wb_ack_o(	wb_ram1s_ack_o),
//		.wb_err_o(	wb_ram1s_err_o)
//	);
	assign wb_ram1s_dat_o	= 32'h0000_0000;
	assign wb_ram1s_ack_o	= 1'b0;
	assign wb_ram1s_err_o	= 1'b0;
 
// uart(WishBoneSlave,interrupt,LGPL)
//
	assign wb_uarts_err_o = 1'b0; // not support signal
	uart_top #(
		32,	// 32bit data width(bigendian byte access)
		5	// address width
	) i_uart_top (
		// system
		.wb_clk_i(	sys_wb_clk), 
		.wb_rst_i(	sys_wb_res),
		// wishbone
		.wb_adr_i(	wb_uarts_adr_i[4:0]),
		.wb_dat_i(	wb_uarts_dat_i),
		.wb_dat_o(	wb_uarts_dat_o),
		.wb_we_i(	wb_uarts_we_i),
		.wb_stb_i(	wb_uarts_stb_i),
		.wb_cyc_i(	wb_uarts_cyc_i),
		.wb_ack_o(	wb_uarts_ack_o),
		.wb_sel_i(	wb_uarts_sel_i),
		// interrupt
		.int_o(		uart_int),
		// external
		.stx_pad_o(	uart_stx),
		.srx_pad_i(	uart_srx),
		.rts_pad_o(	uart_rts),
		.cts_pad_i(	uart_cts),
		.dtr_pad_o(	uart_dtr),
		.dsr_pad_i(	uart_dsr),
		.ri_pad_i(	uart_ri),
		.dcd_pad_i(	uart_dcd)
	);
//
// vga controller(WishBoneSlave,DMAport)
//
	wire		testtest;
	tessera_vga i_tessera_vga (
		// system
		.sys_wb_res(	sys_wb_res),
		.sys_wb_clk(	sys_wb_clk),
		.sys_dma_res(	sys_sdram_res),
		.sys_dma_clk(	sys_sdram_clk),
		.sys_vga_res(	sys_vga_res),
		.sys_vga_clk(	sys_vga_clk),
		// wishbone
		.wb_cyc_i(	wb_vgas_cyc_i),
		.wb_stb_i(	wb_vgas_stb_i),
		.wb_adr_i(	wb_vgas_adr_i),
		.wb_sel_i(	wb_vgas_sel_i),
		.wb_we_i(	wb_vgas_we_i),
		.wb_dat_i(	wb_vgas_dat_i),
		.wb_cab_i(	wb_vgas_cab_i),
		.wb_dat_o(	wb_vgas_dat_o),
		.wb_ack_o(	wb_vgas_ack_o),
		.wb_err_o(	wb_vgas_err_o),
		.wb_busy(	testtest),
		// dma
		.dma_req(	vram_dma_req),
		.dma_address(	vram_dma_address),
		.dma_ack(	vram_dma_ack),
		.dma_exist(	vram_dma_exist),
		.dma_data(	vram_dma_data),
		// vga
		.vga_clk(	vga_clk),
		.vga_hsync(	vga_hsync),
		.vga_vsync(	vga_vsync),
		.vga_blank(	vga_blank),
		.vga_rgb(	vga_d)
	);
///////////////////////////////////////////////////////////////////////////////
// WishBone Switcher
///////////////////////////////////////////////////////////////////////////////
//
// Instantiation of the Traffic COP
//
	tc_top #(
		8,			//
		8'h00,			// bound target0a(InternalRAM0)
		8,			//
		8'h01,			// bound target0b(InternalRAM1)
		8,			//
		8'h02,			// bound target0c(SDRAM)
		8,			//
		8'h03,			// bound target0d(SDRAM)
		8,			//
		8'h04,			// swB->swC1 bound target1(FLASH)
		4,			//
		4'h9,			//
		8,			//
		8'h97,			// swB->swC2 bound target2(VGA)
		8'h92,			// swB->swC3 bound target3(Reserved:ETH)
		8'h9d,			// swB->swC4 bound target4(Reserved:AUDIO)
		8'h90,			// swB->swC5 bound target5(UART0)
		8'h94,			// swB->swC6 bound target6(Reserved:PS2)
		8'h9e,			// swB->swC7 bound target7(Reserved)
		8'h9f			// swB->swC8 bound target8(Reserved)
	) i_tc_top (
		// WISHBONE common
		.wb_clk_i(	sys_wb_clk),
		.wb_rst_i(	sys_wb_res),
	// Master ports
		// WISHBONE Initiator 0(park,why is ?????)
		.i0_wb_cyc_i(	1'b0),
		.i0_wb_stb_i(	1'b0),
		.i0_wb_cab_i(	1'b0),
		.i0_wb_adr_i(	32'h0000_0000),
		.i0_wb_sel_i(	4'b0000),
		.i0_wb_we_i(	1'b0),
		.i0_wb_dat_i(	32'h0000_0000),
		.i0_wb_dat_o(	/* open */),
		.i0_wb_ack_o(	/* open */),
		.i0_wb_err_o(	/* open */),
		// WISHBONE Initiator 1			DMA0
		.i1_wb_cyc_i(	wb_dma0m_cyc_o),
		.i1_wb_stb_i(	wb_dma0m_stb_o),
		.i1_wb_cab_i(	wb_dma0m_cab_o),
		.i1_wb_adr_i(	wb_dma0m_adr_o),
		.i1_wb_sel_i(	wb_dma0m_sel_o),
		.i1_wb_we_i(	wb_dma0m_we_o),
		.i1_wb_dat_i(	wb_dma0m_dat_o),
		.i1_wb_dat_o(	wb_dma0m_dat_i),
		.i1_wb_ack_o(	wb_dma0m_ack_i),
		.i1_wb_err_o(	wb_dma0m_err_i),
		// WISHBONE Initiator 2			DMA1
		//.i2_wb_cyc_i(	wb_dma1m_cyc_o),
		//.i2_wb_stb_i(	wb_dma1m_stb_o),
		//.i2_wb_cab_i(	wb_dma1m_cab_o),
		//.i2_wb_adr_i(	wb_dma1m_adr_o),
		//.i2_wb_sel_i(	wb_dma1m_sel_o),
		//.i2_wb_we_i(	wb_dma1m_we_o),
		//.i2_wb_dat_i(	wb_dma1m_dat_o),
		//.i2_wb_dat_o(	wb_dma1m_dat_i),
		//.i2_wb_ack_o(	wb_dma1m_ack_i),
		//.i2_wb_err_o(	wb_dma1m_err_i),
		.i2_wb_cyc_i(	1'b0),
		.i2_wb_stb_i(	1'b0),
		.i2_wb_cab_i(	1'b0),
		.i2_wb_adr_i(	32'h0000_0000),
		.i2_wb_sel_i(	4'b0000),
		.i2_wb_we_i(	1'b0),
		.i2_wb_dat_i(	32'h0000_0000),
		.i2_wb_dat_o(	/* open */),
		.i2_wb_ack_o(	/* open */),
		.i2_wb_err_o(	/* open */),
		// WISHBONE Initiator 3			Debug
		.i3_wb_cyc_i(	wb_dm_cyc_o),
		.i3_wb_stb_i(	wb_dm_stb_o),
		.i3_wb_cab_i(	wb_dm_cab_o),
		.i3_wb_adr_i(	wb_dm_adr_o),
		.i3_wb_sel_i(	wb_dm_sel_o),
		.i3_wb_we_i(	wb_dm_we_o),
		.i3_wb_dat_i(	wb_dm_dat_o),
		.i3_wb_dat_o(	wb_dm_dat_i),
		.i3_wb_ack_o(	wb_dm_ack_i),
		.i3_wb_err_o(	wb_dm_err_i),
		// WISHBONE Initiator 4			RiscData
		.i4_wb_cyc_i(	wb_rdm_cyc_o),
		.i4_wb_stb_i(	wb_rdm_stb_o),
		.i4_wb_cab_i(	wb_rdm_cab_o),
		.i4_wb_adr_i(	wb_rdm_adr_o),
		.i4_wb_sel_i(	wb_rdm_sel_o),
		.i4_wb_we_i(	wb_rdm_we_o),
		.i4_wb_dat_i(	wb_rdm_dat_o),
		.i4_wb_dat_o(	wb_rdm_dat_i),
		.i4_wb_ack_o(	wb_rdm_ack),	// triger FAKEMC control signal
		.i4_wb_err_o(	wb_rdm_err_i),
		// WISHBONE Initiator 5			RiscInstraction			
		.i5_wb_cyc_i(	wb_rim_cyc_o),
		.i5_wb_stb_i(	wb_rim_stb_o),
		.i5_wb_cab_i(	wb_rim_cab_o),
		.i5_wb_adr_i(	wb_rif_adr),	// triger remap control signal
		.i5_wb_sel_i(	wb_rim_sel_o),
		.i5_wb_we_i(	wb_rim_we_o),
		.i5_wb_dat_i(	wb_rim_dat_o),
		.i5_wb_dat_o(	wb_rim_dat_i),
		.i5_wb_ack_o(	wb_rim_ack_i),
		.i5_wb_err_o(	wb_rim_err_i),
		// WISHBONE Initiator 6			(Reserved)
		.i6_wb_cyc_i(	1'b0),
		.i6_wb_stb_i(	1'b0),
		.i6_wb_cab_i(	1'b0),
		.i6_wb_adr_i(	32'h0000_0000),
		.i6_wb_sel_i(	4'b0000),
		.i6_wb_we_i(	1'b0),
		.i6_wb_dat_i(	32'h0000_0000),
		.i6_wb_dat_o(	/* open */),
		.i6_wb_ack_o(	/* open */),
		.i6_wb_err_o(	/* open */),
		// WISHBONE Initiator 7			Tic
		.i7_wb_cyc_i(	wb_ticm_cyc_o),
		.i7_wb_stb_i(	wb_ticm_stb_o),
		.i7_wb_cab_i(	wb_ticm_cab_o),
		.i7_wb_adr_i(	wb_ticm_adr_o),
		.i7_wb_sel_i(	wb_ticm_sel_o),
		.i7_wb_we_i(	wb_ticm_we_o),
		.i7_wb_dat_i(	wb_ticm_dat_o),
		.i7_wb_dat_o(	wb_ticm_dat_i),
		.i7_wb_ack_o( 	wb_ticm_ack_i),
		.i7_wb_err_o(	wb_ticm_err_i),
	// Slave ports
		// WISHBONE Target 0c(HighPriority)	ram0
		.t0_wb_cyc_o(	wb_ram0s_cyc_i),
		.t0_wb_stb_o(	wb_ram0s_stb_i),
		.t0_wb_cab_o(	wb_ram0s_cab_i),
		.t0_wb_adr_o(	wb_ram0s_adr_i),
		.t0_wb_sel_o(	wb_ram0s_sel_i),
		.t0_wb_we_o(	wb_ram0s_we_i),
		.t0_wb_dat_o(	wb_ram0s_dat_i),
		.t0_wb_dat_i(	wb_ram0s_dat_o),
		.t0_wb_ack_i(	wb_ram0s_ack_o),
		.t0_wb_err_i(	wb_ram0s_err_o),
		// WISHBONE Target 0d(HighPriority)	ram1
		.t0b_wb_cyc_o(	wb_ram1s_cyc_i),
		.t0b_wb_stb_o(	wb_ram1s_stb_i),
		.t0b_wb_cab_o(	wb_ram1s_cab_i),
		.t0b_wb_adr_o(	wb_ram1s_adr_i),
		.t0b_wb_sel_o(	wb_ram1s_sel_i),
		.t0b_wb_we_o(	wb_ram1s_we_i),
		.t0b_wb_dat_o(	wb_ram1s_dat_i),
		.t0b_wb_dat_i(	wb_ram1s_dat_o),
		.t0b_wb_ack_i(	wb_ram1s_ack_o),
		.t0b_wb_err_i(	wb_ram1s_err_o),
		// WISHBONE Target 0a(HighPriority)	sdram0
		.t0c_wb_cyc_o(	wb_sdram0s_cyc_i),
		.t0c_wb_stb_o(	wb_sdram0s_stb_i),
		.t0c_wb_cab_o(	wb_sdram0s_cab_i),
		.t0c_wb_adr_o(	wb_sdram0s_adr_i),
		.t0c_wb_sel_o(	wb_sdram0s_sel_i),
		.t0c_wb_we_o(	wb_sdram0s_we_i),
		.t0c_wb_dat_o(	wb_sdram0s_dat_i),
		.t0c_wb_dat_i(	wb_sdram0s_dat_o),
		.t0c_wb_ack_i(	wb_sdram0s_ack_o),
		.t0c_wb_err_i(	wb_sdram0s_err_o),
		// WISHBONE Target 0b(HighPriority)	sdram1
		.t0d_wb_cyc_o(	wb_sdram1s_cyc_i),
		.t0d_wb_stb_o(	wb_sdram1s_stb_i),
		.t0d_wb_cab_o(	wb_sdram1s_cab_i),
		.t0d_wb_adr_o(	wb_sdram1s_adr_i),
		.t0d_wb_sel_o(	wb_sdram1s_sel_i),
		.t0d_wb_we_o(	wb_sdram1s_we_i),
		.t0d_wb_dat_o(	wb_sdram1s_dat_i),
		.t0d_wb_dat_i(	wb_sdram1s_dat_o),
		.t0d_wb_ack_i(	wb_sdram1s_ack_o),
		.t0d_wb_err_i(	wb_sdram1s_err_o),
		// WISHBONE Target 1			rom
		.t1_wb_cyc_o(	wb_flashs_cyc_i),
		.t1_wb_stb_o(	wb_flashs_stb_i),
		.t1_wb_cab_o(	wb_flashs_cab_i),
		.t1_wb_adr_o(	wb_flashs_adr_i),
		.t1_wb_sel_o(	wb_flashs_sel_i),
		.t1_wb_we_o(	wb_flashs_we_i),
		.t1_wb_dat_o(	wb_flashs_dat_i),
		.t1_wb_dat_i(	wb_flashs_dat_o),
		.t1_wb_ack_i(	wb_flashs_ack_o),
		.t1_wb_err_i(	wb_flashs_err_o),
		// WISHBONE Target 2			vga
		.t2_wb_cyc_o(	wb_vgas_cyc_i),
		.t2_wb_stb_o(	wb_vgas_stb_i),
		.t2_wb_cab_o(	wb_vgas_cab_i),
		.t2_wb_adr_o(	wb_vgas_adr_i),
		.t2_wb_sel_o(	wb_vgas_sel_i),
		.t2_wb_we_o(	wb_vgas_we_i),
		.t2_wb_dat_o(	wb_vgas_dat_i),
		.t2_wb_dat_i(	wb_vgas_dat_o),
		.t2_wb_ack_i(	wb_vgas_ack_o),
		.t2_wb_err_i(	wb_vgas_err_o),
		// WISHBONE Target 3			(EtherMAC-reserved)
		.t3_wb_cyc_o(	/* open */),
		.t3_wb_stb_o(	/* open */),
		.t3_wb_cab_o(	/* open */),
		.t3_wb_adr_o(	/* open */),
		.t3_wb_sel_o(	/* open */),
		.t3_wb_we_o(	/* open */),
		.t3_wb_dat_o(	/* open */),
		.t3_wb_dat_i(	32'h0000_0000),
		.t3_wb_ack_i(	1'b0),
		.t3_wb_err_i(	1'b1),
		// WISHBONE Target 4			(AUDIO-reserved)
		.t4_wb_cyc_o(	/* open */),
		.t4_wb_stb_o(	/* open */),
		.t4_wb_cab_o(	/* open */),
		.t4_wb_adr_o(	/* open */),
		.t4_wb_sel_o(	/* open */),
		.t4_wb_we_o(	/* open */),
		.t4_wb_dat_o(	/* open */),
		.t4_wb_dat_i(	32'h0000_0000),
		.t4_wb_ack_i(	1'b0),
		.t4_wb_err_i(	1'b1),
		// WISHBONE Target 5			UART
		.t5_wb_cyc_o(	wb_uarts_cyc_i),
		.t5_wb_stb_o(	wb_uarts_stb_i),
		.t5_wb_cab_o(	wb_uarts_cab_i),
		.t5_wb_adr_o(	wb_uarts_adr_i),
		.t5_wb_sel_o(	wb_uarts_sel_i),
		.t5_wb_we_o(	wb_uarts_we_i),
		.t5_wb_dat_o(	wb_uarts_dat_i),
		.t5_wb_dat_i(	wb_uarts_dat_o),
		.t5_wb_ack_i(	wb_uarts_ack_o),
		.t5_wb_err_i(	wb_uarts_err_o),
		// WISHBONE Target 6			(PS2-reserved)
		.t6_wb_cyc_o(	/* open */),
		.t6_wb_stb_o(	/* open */),
		.t6_wb_cab_o(	/* open */),
		.t6_wb_adr_o(	/* open */),
		.t6_wb_sel_o(	/* open */),
		.t6_wb_we_o(	/* open */),
		.t6_wb_dat_o(	/* open */),
		.t6_wb_dat_i(	32'h0000_0000),
		.t6_wb_ack_i(	1'b0),
		.t6_wb_err_i(	1'b1),
		// WISHBONE Target 7			(reserved)
		.t7_wb_cyc_o(	/* open */),
		.t7_wb_stb_o(	/* open */),
		.t7_wb_cab_o(	/* open */),
		.t7_wb_adr_o(	/* open */),
		.t7_wb_sel_o(	/* open */),
		.t7_wb_we_o(	/* open */),
		.t7_wb_dat_o(	/* open */),
		.t7_wb_dat_i(	32'h0000_0000),
		.t7_wb_ack_i(	1'b0),
		.t7_wb_err_i(	1'b1),
		// WISHBONE Target 8			DMA
		.t8_wb_cyc_o(	wb_dma0s_cyc_i),
		.t8_wb_stb_o(	wb_dma0s_stb_i),
		.t8_wb_cab_o(	wb_dma0s_cab_i),
		.t8_wb_adr_o(	wb_dma0s_adr_i),
		.t8_wb_sel_o(	wb_dma0s_sel_i),
		.t8_wb_we_o(	wb_dma0s_we_i),
		.t8_wb_dat_o(	wb_dma0s_dat_i),
		.t8_wb_dat_i(	wb_dma0s_dat_o),
		.t8_wb_ack_i(	wb_dma0s_ack_o),
		.t8_wb_err_i(	wb_dma0s_err_o)
	);
 
endmodule
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.