HierarchyFilesModulesSignalsTasksFunctionsHelp

/******************************************************************************/ 
/*                                                                            */ 
/* Copyright (c) 1999 Sun Microsystems, Inc. All rights reserved.             */ 
/*                                                                            */ 
/* The contents of this file are subject to the current version of the Sun    */ 
/* Community Source License, microSPARCII ("the License"). You may not use    */ 
/* this file except in compliance with the License.  You may obtain a copy    */ 
/* of the License by searching for "Sun Community Source License" on the      */ 
/* World Wide Web at http://www.sun.com. See the License for the rights,      */ 
/* obligations, and limitations governing use of the contents of this file.   */ 
/*                                                                            */ 
/* Sun Microsystems, Inc. has intellectual property rights relating to the    */ 
/* technology embodied in these files. In particular, and without limitation, */ 
/* these intellectual property rights may include one or more U.S. patents,   */ 
/* foreign patents, or pending applications.                                  */ 
/*                                                                            */ 
/* Sun, Sun Microsystems, the Sun logo, all Sun-based trademarks and logos,   */ 
/* Solaris, Java and all Java-based trademarks and logos are trademarks or    */ 
/* registered trademarks of Sun Microsystems, Inc. in the United States and   */ 
/* other countries. microSPARC is a trademark or registered trademark of      */ 
/* SPARC International, Inc. All SPARC trademarks are used under license and  */ 
/* are trademarks or registered trademarks of SPARC International, Inc. in    */ 
/* the United States and other countries. Products bearing SPARC trademarks   */ 
/* are based upon an architecture developed by Sun Microsystems, Inc.         */ 
/*                                                                            */ 
/******************************************************************************/ 
/***************************************************************************
****************************************************************************
***
***  Program File:  @(#)afx_slave.v
***
***  Description:
***    Implements the top level afx slave in the pcic for IIEP.
*** 
****************************************************************************
****************************************************************************/

`timescale 1ns/100ps

[Up: pcic f_afx_slave]
module f_afx_slave(
		pcim_big_endian,
		little_endian,
		fast_gclk,
		clock,
		pci_clk,
		pci_clk_sync,
		pci_clk_sync_,
		gclk_sync,
		gclk_sync_,
		reset,

// Configuration register signals
		smbar0,			// relocation reg 0,			
		smbar1,			// relocation reg 1
		sibar,			// io relocation reg
		msize0,
		msize1,
		pmbar0,
		pmbar1,
		pibar,
		isize,
		burst_enable,		// mem write burst enable
		prefetch_enable,	// read prefetch enable
		pci_config_wdata,	// config reg data in
		pci_config_wbe_l,	// config reg byte marks
// add to support pci config accesses
		pci_config_wbe,		// config reg byte marks to config only
		pci_config_wadd,	// config reg write address
		pci_config_radd,	// config reg read address
		pci_config_we,		// config reg write enable
		pci_config_rdata,	// config reg read data

// add to support pci config writes
		config_wbe,		// config write byte enables from pci
		config_add,		// 
		config_data_in,		
		host_config_access_busy,
		pci_config_access_busy,
		config_write,

		afx_mast_error_address,
		afx_mast_error_cmd,
		afx_mast_error,
		sm_idle,		// afx slave state machine idle

		
// AFX BUS signals
		aen,			// AFX address enable
		ab,			// AFX address bus
		db,			// AFX data bus (in only)
		s_reply,		// AFX s_reply
		write_l,		// AFX valid data, active low
		lo_addr,		// AFX 2nd address, active low
		p_reply,		// AFX p_reply
		afx_slave_read_data,	// afx slave read data for db
		afx_slave_read_data_parity,
		afx_slave_drive_db,	// afx slave drive the data bus

// PCI core signals
		pci_req,		// PCI start core
		pci_complete,		// PCI core done (pci_clk)
		pci_error,		// PCI error	 (pci_clk)
		pci_perror,		// PCI parity error (pci_clk)
		pci_async_perror,	// PCI parity error (pci_clk)
		pci_address,		// PCI dma address
		pci_wcount,		// PCI dma word count
		pci_command,		// PCI command
		pci_last,		// PCI last dw data flag
		pci_mast_fifo_write_lo,	// PCI master fifo write
		pci_mast_fifo_write_hi,	// PCI master fifo write
		pci_mast_xmit_fifo_flush,// PCI master xmit fifo flush 
		pci_mast_rcv_fifo_flush,// PCI master rcv fifo flush 
		pci_mast_rcv_fifo_empty_lo,// PCI master rcv fifo empty 
		pci_mast_rcv_fifo_empty_hi,// PCI master rcv fifo empty 
    		pci_mast_rcv_fifo_read_lo,// read mas rcv lo word
        	pci_mast_rcv_fifo_read_hi,// read mas rcv lo word

		pci_data_out,		// PCI data from afx 64 bits
		pci_bm_out_lo_l,	// PCI byte mask from afx
		pci_bm_out_hi_l,	// PCI byte mask from afx
		mas_rcv1_dataout,	// PCI ls word read data
		mas_rcv2_dataout,	// PCI ms word read data
		boot_mode,		// host is in boot mode
		bm_sel,			// 2 bit boot sel field
		mas_start_dma,		// PCI core has started handshake
		select_falcon_data	// single gclk cycle pulse for read 
					//   or write from afx bus
		);

input		pcim_big_endian;
input		little_endian;
input		reset;
input		fast_gclk;
input		clock;
input		pci_clk;
input		pci_clk_sync;
input		pci_clk_sync_;
input		gclk_sync;
input		gclk_sync_;

input	[3:0]	smbar0;
input	[3:0]	smbar1;
input	[3:0]	sibar;
input	[3:0]	msize0;
input	[3:0]	msize1;
input	[7:0]	pmbar0;
input	[7:0]	pmbar1;
input	[7:0]	pibar;
input	[3:0]	isize;
input		burst_enable;
input		prefetch_enable;
input		boot_mode;
wire		boot_mode_hold;
input	[1:0]	bm_sel;

// bm_sel 00 = afx flash prom
// bm_sel 01 = afx flash prom ( 8 bit)
// bm_sel 10 = pci boot from cheerio f000.0000 to f0ff.ffff
// bm_sel 11 = pci boot from super io fffe.0000 to ffff.ffff

output  [31:0]  pci_config_wdata;
output	[3:0]	pci_config_wbe_l;
output	[3:0]	pci_config_wbe;
output	[7:0]	pci_config_wadd;
wire	[7:0]	pci_config_wadd;
wire    [4:0]   pci_config_wadd_ms;
wire    [2:0]   pci_config_wadd_ls;

assign pci_config_wadd = {pci_config_wadd_ms, pci_config_wadd_ls};

output	[7:0]	pci_config_radd;
wire	[7:0]	pci_config_radd;
wire    [4:0]   pci_config_radd_ms;
wire    [2:0]   pci_config_radd_ls;

assign pci_config_radd = {pci_config_radd_ms, pci_config_radd_ls};


output		pci_config_we;
input	[31:0]  pci_config_rdata;
output  [31:0]  afx_mast_error_address;
wire  	[31:0]  afx_mast_error_address;
output	[3:0]	afx_mast_error_cmd;
wire	[3:0]	afx_mast_error_cmd;
output		afx_mast_error;
wire		afx_mast_error;

// add for 2.0
input   [3:0] 	config_wbe;
input   [7:0]	config_add;
input   [31:0]  config_data_in;
input		pci_config_access_busy;
output		host_config_access_busy;
input		config_write;

input 		aen;
input	[14:0]	ab;
input	[63:0]	db;
input	[1:0]	s_reply;
input		write_l;
input		lo_addr;
output	[1:0]	p_reply;
output	[63:0]	afx_slave_read_data;
output	[1:0]	afx_slave_read_data_parity;
output		afx_slave_drive_db;
output		sm_idle;

output		pci_req;
input		pci_complete;
input		pci_error;
input		pci_perror;
input		pci_async_perror;
output	[31:0]	pci_address;
output	[7:0]	pci_wcount;
output	[3:0]	pci_command;
output		pci_last;
output		pci_mast_fifo_write_lo;
output		pci_mast_fifo_write_hi;
output		pci_mast_xmit_fifo_flush;
output		pci_mast_rcv_fifo_flush;
input		pci_mast_rcv_fifo_empty_lo;
input		pci_mast_rcv_fifo_empty_hi;
output		pci_mast_rcv_fifo_read_lo;
output		pci_mast_rcv_fifo_read_hi;
output		select_falcon_data;	// pulse for read or write.

output  [63:0]  pci_data_out;		//
output  [3:0]   pci_bm_out_lo_l;		//
output  [3:0]   pci_bm_out_hi_l;		//
input	[31:0]	mas_rcv1_dataout;
input	[31:0]	mas_rcv2_dataout;
input		mas_start_dma;

wire		select_falcon_data;
wire	[63:0]	afx_slave_read_data;
wire	[1:0]	afx_slave_read_data_parity;

wire 	[27:3]	pa_hold;
wire 	[3:0]	bm_hold;
wire 	[31:3]  pci_addr;
wire    [63:0]  afx_write_data;
 
wire    [63:0]  db;
 
wire    [7:0]   byte_mask;
 
wire 	[3:0] 	fifo_cmd_in;
 
wire    [31:0]  pci_address;
wire    [7:0]   pci_wcount;
wire    [1:0]   p_reply;
wire    [3:0]   cmd_out;
wire    [3:0]   next_cmd_out;
wire    [28:0]  addr_out;
wire    [28:0]  next_addr_out;
wire    [3:0]   pci_bm_out_lo_l;
wire    [3:0]   pci_bm_out_hi_l;
wire	[3:0]   fifo_bm_out;
wire    [63:0]  pci_data_out;
wire    [2:0]   cmd_fifo_full_count;
wire    [2:0]   data_fifo_full_count;
 
wire    [31:0]  configure_add;
wire    [31:0]  config_add_pci;
 


addr_reg addr_reg(
                clock,
                lo_addr,
                aen,
                ab,
                s_reply,
                reset,
		p_reply,
                pa_hold,
                bm_hold,
                afx_write,
                load_addr_fifo,
                load_bm_fifo,
                load_cmd_fifo,
		afx_slave_drive_db,
                low_word_en,
		boot_mode,
		boot_mode_hold,
                any_hi_word_en
                );


addr_tlb addr_tlb(
                pa_hold,
                smbar0,
                smbar1,
                sibar,
                msize0,
                msize1,
                pmbar0,
                pmbar1,
                pibar,
                isize,
                low_word_en,
                any_hi_word_en,
                config_add_31,
                io_space_en,
		mem_space_en,
                config_add_en,
                config_data_en,
                falcon_reg_en,
                special_cycle_en,
                interrupt_ack_en,
		boot_mode_hold,
		bm_sel,
                pci_addr
		);



write_data write_data(
		pcim_big_endian,
		little_endian,		// processor little endian
                reset,                  //reset
                clock,                  //fifo clock
                db,                     //AFX data bus (big endian)
                afx_write,              //afx_write signal latched
                write_l,                //valid data on afx data bus, active lo
 
                load_data_fifo,         //load fifo to pci write data
                afx_write_data);        //data out
 

read_data read_data(
		pcim_big_endian,
		little_endian,		//processor little endian
		fifo_bm_out,
                reset,                  //reset
                clock,                  //clock
                load_afx_read_data_lo,     //
                load_afx_read_data_hi,     //
                select_config_add,      // selects config address for
		select_falcon_data,	// selects pci_config_rdata
                                        // afx reads
		select_error,		// select all f's for error data
                mas_rcv1_dataout,       // ls word from pci
                mas_rcv2_dataout,       // ms word from pci
                configure_add,             // configuration address
		pci_config_rdata,	// configuration read data
		afx_slave_read_data_parity,
                afx_slave_read_data);   //AFX data bus (big endian)
 



bm_decode bm_decode (
// add to support pci config operations 
		pci_config_access_busy,
		config_wbe,
		config_add[2:0],
		
		pcim_big_endian,
                fifo_bm_out,
                pci_bm_out_lo_l,
		pci_bm_out_hi_l,
		pci_config_wadd_ls,
		pci_config_radd_ls,
		pci_config_wbe_l,
		pci_config_wbe
                 ) ;


cmd_map cmd_map(
                afx_write,              // afx write command
                io_space_en,            // io space decode
		mem_space_en,		// mem space decode
                config_add_en,          // configuration address decode
                config_data_en,         // configuration data decode
                falcon_reg_en,          // falcon registers decode
                special_cycle_en,       // special cycle decode
                                        // except for decode of address reg
		special_cycle_decode,	// special cycle from config reg
                interrupt_ack_en,       // interrupt ack decode
		boot_mode_hold,		// boot mode
		bm_sel,			// boot mode select; non-zero is pci
                fifo_cmd_in              // encoded command
 
                );

afx_slave_sm afx_slave_sm(
        reset,                  // reset
	fast_gclk,		// fast gclk for p_reply timing
        clock,                  // afx g clock
        pci_clk,                // pci clock
	pci_clk_sync,		// pci clock for sync cells
	pci_clk_sync_,		// pci clock for sync cells
	gclk_sync,		// gclk for sync cells
	gclk_sync_,		// gclk for sync cells
 
        cmd_out,                // afx fifo command
        next_cmd_out,           // afx fifo next command
        addr_out,               // afx fifo address
        next_addr_out,          // afx fifo next address
        pci_bm_out_lo_l,        // afx fifo bm out for bm, address 2:0, wc
        pci_bm_out_hi_l,        // afx fifo bm out for bm, address 2:0, wc
        cmd_fifo_full_count,    // afx command fifo full count
        data_fifo_full_count,   // afx data fifo full count
        burst_enable,           // burst enable from configuration
	prefetch_enable,	// mem read prefetch enable
 
        config_add_pci,         // configuration address
 
        read_cmd_fifo,          // read the afx command fifo
        read_addr_fifo,         // read the afx address fifo
        read_bm_fifo,           // read the afx byte mark fifo
        read_data_fifo,         // read the afx data fifo
 
        sm_idle,                // signal to enable power down when idle
        pci_req,                // start the pci core, must be synched to pci
        pci_complete,           // pci core complete must be synched back
                              // to clock
	mas_start_dma,		
        pci_error,              // pci core error, must be synched back
                                // to clock
        pci_perror,              // pci core error, must be synched back
        pci_async_perror,              // pci core error, must be synched back
                                // to clock
        pci_address,            // pci core starting address latched at pci_req
        pci_wcount,             // pci word count latched at pci_req
	pci_command,
 
        pci_last,               // last xfer flag to pci core data fifo
        pci_mast_fifo_write_lo,    // write into pci master fifo
        pci_mast_fifo_write_hi,    // write into pci master fifo
        pci_mast_xmit_fifo_flush,// flush pci core master xmit fifo (ERRORS)
        pci_mast_rcv_fifo_flush,// flush pci core master rcv fifo 
	pci_mast_rcv_fifo_empty_lo,	// receive fifo empty
	pci_mast_rcv_fifo_empty_hi,	// receive fifo empty
    	pci_mast_rcv_fifo_read_lo,// read mas rcv lo word
        pci_mast_rcv_fifo_read_hi,// read mas rcv lo word


	load_afx_read_data_lo,
	load_afx_read_data_hi,
	select_config_add,
	select_error,		
	load_config_add,
	select_falcon_data,
	pci_config_we,
// add to support pci configuration writes
        pci_config_access_busy,
	host_config_access_busy,
	config_write,
 
        p_reply,
	afx_mast_error_address,		// error address to config
	afx_mast_error_cmd,		// error command to config
	afx_mast_error   		// error to config
 
);


afx_slave_fifo afx_slave_fifo (
                clock,
                reset,
                load_cmd_fifo,          // load the command fifo
                load_addr_fifo,         // load address fifo from afx holding
                load_bm_fifo,           // load byte marks fifo from afx holding
                load_data_fifo,         // load data from afx holding
                fifo_cmd_in,            // command fifo data into fifo
                pci_addr,               // address in from afx holding
                bm_hold,               // byte marks in from afx
                afx_write_data,         // data in from afx holding
                read_cmd_fifo,          // read the command fifo to pci
                read_addr_fifo,         // read the address to pci
                read_bm_fifo,           // read the byte marks to pci
                read_data_fifo,         // read data to pci
 
                cmd_out,                // command out to pci
                next_cmd_out,           // command + 1 out to control logic
                addr_out,               // address out to pci
  		next_addr_out,          // address + 1 out to control logic
                fifo_bm_out,            // byte marks out to bm_decoder
                pci_data_out,           // data out to pci
                cmd_fifo_full_count,    // command fifo full status to control
                data_fifo_full_count,   // data fifo full status to control
// add to support pci configuration operations
		pci_config_access_busy,
		config_add[7:3],
		config_data_in,

		pci_config_wdata,
		pci_config_wadd_ms,
		pci_config_radd_ms
                );

 
config_addr config_addr(
                reset,                  // reset
                clock,                  // clock
                pci_data_out[31:0],     // data in -even word only!
                load_config_add,        // configuration address enable
                special_cycle_decode,   // special cycle decode
                                        // converts config data writes to
                                        // special cycle
                config_add_31,          // config_data control bit
                configure_add,             // config address for afx reads
                config_add_pci);        // config add to pci bus
 

endmodule
HierarchyFilesModulesSignalsTasksFunctionsHelp

This page: Created:Thu Aug 19 12:00:50 1999
From: ../../../sparc_v8/ssparc/pcic/afx_slave/rtl/afx_slave.v

Verilog converted to html by v2html 5.0 (written by Costas Calamvokis).Help