URL
https://opencores.org/ocsvn/plbv46_to_wb_bridge/plbv46_to_wb_bridge/trunk
Subversion Repositories plbv46_to_wb_bridge
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 9 to Rev 10
- ↔ Reverse comparison
Rev 9 → Rev 10
/tags/initial/doc/src/plbv46_2_wb.doc
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
tags/initial/doc/src/plbv46_2_wb.doc
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: tags/initial/doc/plbv46_2_wb.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: tags/initial/doc/plbv46_2_wb.pdf
===================================================================
--- tags/initial/doc/plbv46_2_wb.pdf (revision 9)
+++ tags/initial/doc/plbv46_2_wb.pdf (nonexistent)
tags/initial/doc/plbv46_2_wb.pdf
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: tags/initial/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/plbv46_2_wb.vhd
===================================================================
--- tags/initial/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/plbv46_2_wb.vhd (revision 9)
+++ tags/initial/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/plbv46_2_wb.vhd (nonexistent)
@@ -1,367 +0,0 @@
-------------------------------------------------------------------------------
---
--- ***************************************************************************
--- ** Copyright (c) 1995-2008 Xilinx, Inc. All rights reserved. **
--- ** **
--- ** Xilinx, Inc. **
--- ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" **
--- ** AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND **
--- ** SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, **
--- ** OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, **
--- ** APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION **
--- ** THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, **
--- ** AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE **
--- ** FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY **
--- ** WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE **
--- ** IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR **
--- ** REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF **
--- ** INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS **
--- ** FOR A PARTICULAR PURPOSE. **
--- ** **
--- ***************************************************************************
---
-------------------------------------------------------------------------------
--- Filename: plbv46_2_wb.vhd
--- Version: 1.10.a
--- Creation Date: Tue Jul 15, 2008
--- Description: PLB version 4.6 to Wishbone B3 Bridge
--- Simple non-bursting bridge interface from Xilinx-derivative
--- PLB Bus for Microblaze/PowerPC to OpenCores.org Wishbone
--- bridge standard.
---
--- File Revisions:
--- 7/15/08 - mds : Initial version
--- 7/25/08 - mds : Added retry and bus error detection.
---
-------------------------------------------------------------------------------
-library ieee;
-use ieee.std_logic_1164.all;
-use ieee.std_logic_arith.all;
-use ieee.std_logic_unsigned.all;
-
-library proc_common_v2_00_a;
-use proc_common_v2_00_a.proc_common_pkg.all;
-use proc_common_v2_00_a.ipif_pkg.all;
-
-library plbv46_slave_single_v1_00_a;
-use plbv46_slave_single_v1_00_a.plbv46_slave_single;
-
-library plbv46_2_wb_v1_10_a;
-use plbv46_2_wb_v1_10_a.user_logic;
-
-------------------------------------------------------------------------------
--- Entity section
-------------------------------------------------------------------------------
-entity plbv46_2_wb is
- generic
- (
- -- ADD USER GENERICS BELOW THIS LINE ---------------
- C_WB_DBUS_SIZE : integer := 32; -- Constant
- C_WB_ACCESS_TIMEOUT : integer := 16; -- Ranges from 1 to 256
- C_WB_RETRY_TIMEOUT : integer := 64; -- Ranges from 1 to 256
- C_WB_ACCESS_RETRIES : integer := 4; -- Ranges from 1 to 4
- -- ADD USER GENERICS ABOVE THIS LINE ---------------
-
- -- DO NOT EDIT BELOW THIS LINE ---------------------
- -- Bus protocol parameters, do not add to or delete
- C_SPLB_AWIDTH : integer := 32;
- C_SPLB_DWIDTH : integer := 128;
- C_SPLB_NUM_MASTERS : integer := 8;
- C_SPLB_MID_WIDTH : integer := 3;
- C_SPLB_NATIVE_DWIDTH : integer := 32;
- C_SPLB_P2P : integer := 0;
- C_SPLB_SUPPORT_BURSTS : integer := 0;
- C_SPLB_SMALLEST_MASTER : integer := 32;
- C_SPLB_CLK_PERIOD_PS : integer := 10000;
- C_INCLUDE_DPHASE_TIMER : integer := 0;
- C_FAMILY : string := "virtex5";
- C_MEM0_BASEADDR : std_logic_vector := X"FFFFFFFF";
- C_MEM0_HIGHADDR : std_logic_vector := X"00000000"
- -- DO NOT EDIT ABOVE THIS LINE ---------------------
- );
- port
- (
- -- ADD USER PORTS BELOW THIS LINE ------------------
- WB_CLK_O : out std_logic;
- WB_RST_O : out std_logic;
- WB_ADR_O : out std_logic_vector(31 downto 0);
- WB_DAT_O : out std_logic_vector(C_WB_DBUS_SIZE-1 downto 0);
- WB_SEL_O : out std_logic_vector((C_WB_DBUS_SIZE/8)-1 downto 0);
- WB_CYC_O : out std_logic;
- WB_LOCK_O : out std_logic;
- WB_STB_O : out std_logic;
- WB_WE_O : out std_logic;
- WB_DAT_I : in std_logic_vector(C_WB_DBUS_SIZE-1 downto 0);
- WB_ACK_I : in std_logic;
- WB_ERR_I : in std_logic;
- WB_RTY_I : in std_logic;
- -- ADD USER PORTS ABOVE THIS LINE ------------------
-
- -- DO NOT EDIT BELOW THIS LINE ---------------------
- -- Bus protocol ports, do not add to or delete
- SPLB_Clk : in std_logic;
- SPLB_Rst : in std_logic;
- PLB_ABus : in std_logic_vector(0 to 31);
- PLB_UABus : in std_logic_vector(0 to 31);
- PLB_PAValid : in std_logic;
- PLB_SAValid : in std_logic;
- PLB_rdPrim : in std_logic;
- PLB_wrPrim : in std_logic;
- PLB_masterID : in std_logic_vector(0 to C_SPLB_MID_WIDTH-1);
- PLB_abort : in std_logic;
- PLB_busLock : in std_logic;
- PLB_RNW : in std_logic;
- PLB_BE : in std_logic_vector(0 to C_SPLB_DWIDTH/8-1);
- PLB_MSize : in std_logic_vector(0 to 1);
- PLB_size : in std_logic_vector(0 to 3);
- PLB_type : in std_logic_vector(0 to 2);
- PLB_lockErr : in std_logic;
- PLB_wrDBus : in std_logic_vector(0 to C_SPLB_DWIDTH-1);
- PLB_wrBurst : in std_logic;
- PLB_rdBurst : in std_logic;
- PLB_wrPendReq : in std_logic;
- PLB_rdPendReq : in std_logic;
- PLB_wrPendPri : in std_logic_vector(0 to 1);
- PLB_rdPendPri : in std_logic_vector(0 to 1);
- PLB_reqPri : in std_logic_vector(0 to 1);
- PLB_TAttribute : in std_logic_vector(0 to 15);
- Sl_addrAck : out std_logic;
- Sl_SSize : out std_logic_vector(0 to 1);
- Sl_wait : out std_logic;
- Sl_rearbitrate : out std_logic;
- Sl_wrDAck : out std_logic;
- Sl_wrComp : out std_logic;
- Sl_wrBTerm : out std_logic;
- Sl_rdDBus : out std_logic_vector(0 to C_SPLB_DWIDTH-1);
- Sl_rdWdAddr : out std_logic_vector(0 to 3);
- Sl_rdDAck : out std_logic;
- Sl_rdComp : out std_logic;
- Sl_rdBTerm : out std_logic;
- Sl_MBusy : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
- Sl_MWrErr : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
- Sl_MRdErr : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
- Sl_MIRQ : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1)
- -- DO NOT EDIT ABOVE THIS LINE ---------------------
- );
-
- attribute SIGIS : string;
- attribute SIGIS of SPLB_Clk : signal is "CLK";
- attribute SIGIS of SPLB_Rst : signal is "RST";
-
-end entity plbv46_2_wb;
-
-------------------------------------------------------------------------------
--- Architecture section
-------------------------------------------------------------------------------
-
-architecture IMP of plbv46_2_wb is
-
- ------------------------------------------
- -- Array of base/high address pairs for each address range
- ------------------------------------------
- constant ZERO_ADDR_PAD : std_logic_vector(0 to 31) := (others => '0');
-
- constant IPIF_ARD_ADDR_RANGE_ARRAY : SLV64_ARRAY_TYPE :=
- (
- ZERO_ADDR_PAD & C_MEM0_BASEADDR, -- user logic memory space 0 base address
- ZERO_ADDR_PAD & C_MEM0_HIGHADDR -- user logic memory space 0 high address
- );
-
- ------------------------------------------
- -- Array of desired number of chip enables for each address range
- ------------------------------------------
- constant USER_NUM_MEM : integer := 1;
-
- constant IPIF_ARD_NUM_CE_ARRAY : INTEGER_ARRAY_TYPE :=
- (
- 0 => 1 -- number of ce for user logic memory space 0 (always 1 chip enable)
- );
-
- ------------------------------------------
- -- Ratio of bus clock to core clock (for use in dual clock systems)
- -- 1 = ratio is 1:1
- -- 2 = ratio is 2:1
- ------------------------------------------
- constant IPIF_BUS2CORE_CLK_RATIO : integer := 1;
-
- ------------------------------------------
- -- Width of the slave data bus (32 only)
- ------------------------------------------
- constant USER_SLV_DWIDTH : integer := C_SPLB_NATIVE_DWIDTH;
-
- constant IPIF_SLV_DWIDTH : integer := C_SPLB_NATIVE_DWIDTH;
-
- ------------------------------------------
- -- Width of the slave address bus (32 only)
- ------------------------------------------
- constant USER_SLV_AWIDTH : integer := C_SPLB_AWIDTH;
-
- ------------------------------------------
- -- Index for CS/CE
- ------------------------------------------
- constant USER_MEM0_CS_INDEX : integer := 0;
-
- constant USER_CS_INDEX : integer := USER_MEM0_CS_INDEX;
-
- ------------------------------------------
- -- IP Interconnect (IPIC) signal declarations
- ------------------------------------------
- signal ipif_Bus2IP_Clk : std_logic;
- signal ipif_Bus2IP_Reset : std_logic;
- signal ipif_IP2Bus_Data : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);
- signal ipif_IP2Bus_WrAck : std_logic;
- signal ipif_IP2Bus_RdAck : std_logic;
- signal ipif_IP2Bus_Error : std_logic;
- signal ipif_Bus2IP_Addr : std_logic_vector(0 to C_SPLB_AWIDTH-1);
- signal ipif_Bus2IP_Data : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);
- signal ipif_Bus2IP_RNW : std_logic;
- signal ipif_Bus2IP_BE : std_logic_vector(0 to IPIF_SLV_DWIDTH/8-1);
- signal ipif_Bus2IP_CS : std_logic_vector(0 to ((IPIF_ARD_ADDR_RANGE_ARRAY'length)/2)-1);
- signal ipif_Bus2IP_RdCE : std_logic_vector(0 to calc_num_ce(IPIF_ARD_NUM_CE_ARRAY)-1);
- signal ipif_Bus2IP_WrCE : std_logic_vector(0 to calc_num_ce(IPIF_ARD_NUM_CE_ARRAY)-1);
- signal user_IP2Bus_Data : std_logic_vector(0 to USER_SLV_DWIDTH-1);
- signal user_IP2Bus_RdAck : std_logic;
- signal user_IP2Bus_WrAck : std_logic;
- signal user_IP2Bus_Error : std_logic;
-
-begin
-
- ------------------------------------------
- -- instantiate plbv46_slave_single
- ------------------------------------------
- PLBV46_SLAVE_SINGLE_I : entity plbv46_slave_single_v1_00_a.plbv46_slave_single
- generic map
- (
- C_ARD_ADDR_RANGE_ARRAY => IPIF_ARD_ADDR_RANGE_ARRAY,
- C_ARD_NUM_CE_ARRAY => IPIF_ARD_NUM_CE_ARRAY,
- C_SPLB_P2P => C_SPLB_P2P,
- C_BUS2CORE_CLK_RATIO => IPIF_BUS2CORE_CLK_RATIO,
- C_SPLB_MID_WIDTH => C_SPLB_MID_WIDTH,
- C_SPLB_NUM_MASTERS => C_SPLB_NUM_MASTERS,
- C_SPLB_AWIDTH => C_SPLB_AWIDTH,
- C_SPLB_DWIDTH => C_SPLB_DWIDTH,
- C_SIPIF_DWIDTH => IPIF_SLV_DWIDTH,
- C_INCLUDE_DPHASE_TIMER => C_INCLUDE_DPHASE_TIMER,
- C_FAMILY => C_FAMILY
- )
- port map
- (
- SPLB_Clk => SPLB_Clk,
- SPLB_Rst => SPLB_Rst,
- PLB_ABus => PLB_ABus,
- PLB_UABus => PLB_UABus,
- PLB_PAValid => PLB_PAValid,
- PLB_SAValid => PLB_SAValid,
- PLB_rdPrim => PLB_rdPrim,
- PLB_wrPrim => PLB_wrPrim,
- PLB_masterID => PLB_masterID,
- PLB_abort => PLB_abort,
- PLB_busLock => PLB_busLock,
- PLB_RNW => PLB_RNW,
- PLB_BE => PLB_BE,
- PLB_MSize => PLB_MSize,
- PLB_size => PLB_size,
- PLB_type => PLB_type,
- PLB_lockErr => PLB_lockErr,
- PLB_wrDBus => PLB_wrDBus,
- PLB_wrBurst => PLB_wrBurst,
- PLB_rdBurst => PLB_rdBurst,
- PLB_wrPendReq => PLB_wrPendReq,
- PLB_rdPendReq => PLB_rdPendReq,
- PLB_wrPendPri => PLB_wrPendPri,
- PLB_rdPendPri => PLB_rdPendPri,
- PLB_reqPri => PLB_reqPri,
- PLB_TAttribute => PLB_TAttribute,
- Sl_addrAck => Sl_addrAck,
- Sl_SSize => Sl_SSize,
- Sl_wait => Sl_wait,
- Sl_rearbitrate => Sl_rearbitrate,
- Sl_wrDAck => Sl_wrDAck,
- Sl_wrComp => Sl_wrComp,
- Sl_wrBTerm => Sl_wrBTerm,
- Sl_rdDBus => Sl_rdDBus,
- Sl_rdWdAddr => Sl_rdWdAddr,
- Sl_rdDAck => Sl_rdDAck,
- Sl_rdComp => Sl_rdComp,
- Sl_rdBTerm => Sl_rdBTerm,
- Sl_MBusy => Sl_MBusy,
- Sl_MWrErr => Sl_MWrErr,
- Sl_MRdErr => Sl_MRdErr,
- Sl_MIRQ => Sl_MIRQ,
- Bus2IP_Clk => ipif_Bus2IP_Clk,
- Bus2IP_Reset => ipif_Bus2IP_Reset,
- IP2Bus_Data => ipif_IP2Bus_Data,
- IP2Bus_WrAck => ipif_IP2Bus_WrAck,
- IP2Bus_RdAck => ipif_IP2Bus_RdAck,
- IP2Bus_Error => ipif_IP2Bus_Error,
- Bus2IP_Addr => ipif_Bus2IP_Addr,
- Bus2IP_Data => ipif_Bus2IP_Data,
- Bus2IP_RNW => ipif_Bus2IP_RNW,
- Bus2IP_BE => ipif_Bus2IP_BE,
- Bus2IP_CS => ipif_Bus2IP_CS,
- Bus2IP_RdCE => ipif_Bus2IP_RdCE,
- Bus2IP_WrCE => ipif_Bus2IP_WrCE
- );
-
- ------------------------------------------
- -- instantiate User Logic
- ------------------------------------------
- USER_LOGIC_I : entity plbv46_2_wb_v1_00_a.user_logic
- generic map
- (
- -- MAP USER GENERICS BELOW THIS LINE ---------------
- C_WB_DBUS_SIZE => C_WB_DBUS_SIZE,
- C_WB_ACCESS_TIMEOUT => C_WB_ACCESS_TIMEOUT,
- C_WB_RETRY_TIMEOUT => C_WB_RETRY_TIMEOUT,
- C_WB_ACCESS_RETRIES => C_WB_ACCESS_RETRIES,
- -- MAP USER GENERICS ABOVE THIS LINE ---------------
-
- C_SLV_AWIDTH => USER_SLV_AWIDTH,
- C_SLV_DWIDTH => USER_SLV_DWIDTH,
- C_NUM_MEM => USER_NUM_MEM
- )
- port map
- (
- -- MAP USER PORTS BELOW THIS LINE ------------------
-
- WB_CLK_O => WB_CLK_O ,
- WB_RST_O => WB_RST_O ,
- WB_ADR_O => WB_ADR_O ,
- WB_DAT_O => WB_DAT_O ,
- WB_SEL_O => WB_SEL_O ,
- WB_CYC_O => WB_CYC_O ,
- WB_STB_O => WB_STB_O ,
- WB_WE_O => WB_WE_O ,
- WB_DAT_I => WB_DAT_I ,
- WB_ACK_I => WB_ACK_I ,
- WB_ERR_I => WB_ERR_I ,
- WB_RTY_I => WB_RTY_I ,
-
-
- --USER ports mapped here
- -- MAP USER PORTS ABOVE THIS LINE ------------------
-
- Bus2IP_Clk => ipif_Bus2IP_Clk,
- Bus2IP_Reset => ipif_Bus2IP_Reset,
- Bus2IP_Addr => ipif_Bus2IP_Addr,
- Bus2IP_CS => ipif_Bus2IP_CS(USER_CS_INDEX to USER_CS_INDEX+USER_NUM_MEM-1),
- Bus2IP_RNW => ipif_Bus2IP_RNW,
- Bus2IP_Data => ipif_Bus2IP_Data,
- Bus2IP_BE => ipif_Bus2IP_BE,
- IP2Bus_Data => user_IP2Bus_Data,
- IP2Bus_RdAck => user_IP2Bus_RdAck,
- IP2Bus_WrAck => user_IP2Bus_WrAck,
- IP2Bus_Error => user_IP2Bus_Error
- );
-
- ------------------------------------------
- -- connect internal signals
- ------------------------------------------
- WB_LOCK_O <= '0';
-
- ipif_IP2Bus_Data <= user_IP2Bus_Data;
- ipif_IP2Bus_WrAck <= user_IP2Bus_WrAck;
- ipif_IP2Bus_RdAck <= user_IP2Bus_RdAck;
- ipif_IP2Bus_Error <= user_IP2Bus_Error;
-
-end IMP;
Index: tags/initial/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/user_logic.vhd
===================================================================
--- tags/initial/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/user_logic.vhd (revision 9)
+++ tags/initial/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/user_logic.vhd (nonexistent)
@@ -1,278 +0,0 @@
-------------------------------------------------------------------------------
---
--- ***************************************************************************
--- ** Copyright (c) 1995-2008 Xilinx, Inc. All rights reserved. **
--- ** **
--- ** Xilinx, Inc. **
--- ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" **
--- ** AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND **
--- ** SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, **
--- ** OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, **
--- ** APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION **
--- ** THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, **
--- ** AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE **
--- ** FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY **
--- ** WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE **
--- ** IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR **
--- ** REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF **
--- ** INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS **
--- ** FOR A PARTICULAR PURPOSE. **
--- ** **
--- ***************************************************************************
---
-------------------------------------------------------------------------------
--- Filename: user_logic.vhd
--- Version: 1.10.a
--- Description: User logic.
-------------------------------------------------------------------------------
-
--- DO NOT EDIT BELOW THIS LINE --------------------
-library ieee;
-use ieee.std_logic_1164.all;
-use ieee.std_logic_arith.all;
-use ieee.std_logic_unsigned.all;
-
-library proc_common_v2_00_a;
-use proc_common_v2_00_a.proc_common_pkg.all;
-
-
-------------------------------------------------------------------------------
--- Entity section
-------------------------------------------------------------------------------
-
-entity user_logic is
- generic
- (
- -- ADD USER GENERICS BELOW THIS LINE ---------------
- C_WB_DBUS_SIZE : integer := 32;
- C_WB_ACCESS_TIMEOUT : integer := 16;
- C_WB_RETRY_TIMEOUT : integer := 256;
- C_WB_ACCESS_RETRIES : integer := 4;
- -- ADD USER GENERICS ABOVE THIS LINE ---------------
-
- -- DO NOT EDIT BELOW THIS LINE ---------------------
- -- Bus protocol parameters, do not add to or delete
- C_SLV_AWIDTH : integer := 32;
- C_SLV_DWIDTH : integer := 32;
- C_NUM_MEM : integer := 1
- -- DO NOT EDIT ABOVE THIS LINE ---------------------
- );
- port
- (
- -- ADD USER PORTS BELOW THIS LINE ------------------
- WB_CLK_O : out std_logic;
- WB_RST_O : out std_logic;
- WB_ADR_O : out std_logic_vector(31 downto 0);
- WB_DAT_O : out std_logic_vector(C_WB_DBUS_SIZE-1 downto 0);
- WB_SEL_O : out std_logic_vector((C_WB_DBUS_SIZE/8)-1 downto 0);
- WB_CYC_O : out std_logic;
- WB_STB_O : out std_logic;
- WB_WE_O : out std_logic;
- WB_DAT_I : in std_logic_vector(C_WB_DBUS_SIZE-1 downto 0);
- WB_ACK_I : in std_logic;
- WB_ERR_I : in std_logic;
- WB_RTY_I : in std_logic;
- -- ADD USER PORTS ABOVE THIS LINE ------------------
-
- -- DO NOT EDIT BELOW THIS LINE ---------------------
- -- Bus protocol ports, do not add to or delete
- Bus2IP_Clk : in std_logic;
- Bus2IP_Reset : in std_logic;
- Bus2IP_Addr : in std_logic_vector(0 to C_SLV_AWIDTH-1);
- Bus2IP_CS : in std_logic_vector(0 to C_NUM_MEM-1);
- Bus2IP_RNW : in std_logic;
- Bus2IP_Data : in std_logic_vector(0 to C_SLV_DWIDTH-1);
- Bus2IP_BE : in std_logic_vector(0 to C_SLV_DWIDTH/8-1);
- IP2Bus_Data : out std_logic_vector(0 to C_SLV_DWIDTH-1);
- IP2Bus_RdAck : out std_logic;
- IP2Bus_WrAck : out std_logic;
- IP2Bus_Error : out std_logic
- -- DO NOT EDIT ABOVE THIS LINE ---------------------
- );
-
- attribute SIGIS : string;
- attribute SIGIS of Bus2IP_Clk : signal is "CLK";
- attribute SIGIS of Bus2IP_Reset : signal is "RST";
-
-end entity user_logic;
-
-------------------------------------------------------------------------------
--- Architecture section
-------------------------------------------------------------------------------
-architecture IMP of user_logic is
-
- -- State Machine Declarations
- type state_type is (ST_IDLE, ST_ACCESS, ST_RETRY_STROBE, ST_RETRY, ST_ERROR, ST_DONE);
- signal curr_st : state_type;
- signal next_st : state_type;
- -- Bus Ack Decode
- signal wb_rdack : std_logic;
- signal wb_wrack : std_logic;
- -- Timer used to track bus error condition and retry timouts.
- signal timer_en : std_logic;
- signal timer_cnt : std_logic_vector(0 to 7);
- -- Counter used to track number of retry attempts
- signal retry_iter : std_logic_vector(0 to 1);
- signal retry_iter_rst : std_logic;
- signal retry_iter_en : std_logic;
- -- Status Signals
- signal retry_expire : std_logic; -- Maximum Retries exceeded
- signal access_to : std_logic; -- Bus Error Detected
- signal retry_to : std_logic; -- Retry cycle completed
-
-begin
-
- --
- -- We are not buffering these signals to the WB Bus.
- -- Nor are we running the clock at a slower rate than the PLB Bus.
- WB_CLK_O <= Bus2IP_Clk;
- WB_RST_O <= Bus2IP_Reset;
-
- -- These can probably be treated as multi-cycle paths
- -- Possibly will add in a Pipeline stage (user selectable?)
- WB_ADR_O <= Bus2IP_Addr;
- WB_DAT_O <= Bus2IP_Data;
- WB_SEL_O <= Bus2IP_BE;
- WB_WE_O <= not Bus2IP_RNW;
-
- --
- -- Number of retry attempts
- --
- process(Bus2IP_Clk) begin
- if (rising_edge(Bus2IP_Clk)) then
- if (retry_iter_rst = '1') then
- retry_iter <= (others=>'0');
- elsif (retry_iter_en = '1') then
- retry_iter <= retry_iter + 1;
- end if;
-
- retry_expire <= '0';
- if (retry_iter = conv_std_logic_vector(C_WB_ACCESS_RETRIES-1,2)) then
- retry_expire <= '1';
- end if;
- end if;
- end process;
-
- --
- -- Retry Wait Counter
- --
- process(Bus2IP_Clk) begin
- if (rising_edge(Bus2IP_Clk)) then
- if (timer_en = '0') then
- timer_cnt <= (others => '0');
- else
- timer_cnt <= timer_cnt + 1;
- end if;
-
- retry_to <= '0';
- if (timer_cnt = conv_std_logic_vector(C_WB_RETRY_TIMEOUT-1, 8)) then
- retry_to <= '1';
- end if;
-
- if (timer_cnt = conv_std_logic_vector(C_WB_ACCESS_TIMEOUT-1, 8)) then
- access_to <= '1';
- end if;
-
- end if;
- end process;
-
- --
- --
- -- WB Bridge State Machine (Next State Logic)
- --
- --
- process(curr_st, Bus2IP_CS ,WB_RTY_I ,WB_ACK_I, retry_to, access_to) begin
-
- next_st <= curr_st;
- timer_en <= '0';
- retry_iter_rst <= '0';
- retry_iter_en <= '0';
- WB_STB_O <= '0';
- WB_CYC_O <= '0';
- IP2Bus_RdAck <= '0';
- IP2Bus_WrAck <= '0';
- IP2Bus_Error <= '0';
-
- case (curr_st) is
-
-
- when ST_IDLE =>
- retry_iter_rst <= '1';
- if (Bus2IP_CS(0) = '1') then
- next_st <= ST_ACCESS;
- end if;
-
- -- Access State
- -- Completes when we receive either a RETRY, ACK or we timeout of the transaction.
- -- Transaction timeout is setup by the user.
- when ST_ACCESS =>
- WB_STB_O <= '1';
- WB_CYC_O <= '1';
- timer_en <= '1';
- if (WB_RTY_I = '1') then
- next_st <= ST_RETRY_STROBE;
- elsif (WB_ACK_I = '1') then
- next_st <= ST_DONE;
- elsif (access_to = '1') then
- next_st <= ST_ERROR;
- end if;
-
- -- Retry Strobe
- -- Simply used to reset timer and increment our retries.
- -- We will also check to see if we have reached out limit of retries.
- when ST_RETRY_STROBE =>
- retry_iter_en <= '1';
- if (retry_expire = '1') then
- next_st <= ST_ERROR;
- else
- next_st <= ST_RETRY;
- end if;
-
- -- Retry
- -- Sit here and wait until we issues a WB Retry
- when ST_RETRY =>
- timer_en <= '1';
- if (retry_to = '1') then
- next_st <= ST_ACCESS;
- end if;
-
- -- Error
- -- Issue PLB Error
- when ST_ERROR =>
- IP2Bus_Error <= '1';
- IP2Bus_WrAck <= not Bus2IP_RNW;
- IP2Bus_RdAck <= Bus2IP_RNW;
- next_st <= ST_IDLE;
-
- when ST_DONE =>
- IP2Bus_RdAck <= Bus2IP_RNW;
- IP2Bus_WrAck <= not Bus2IP_RNW;
- next_st <= ST_IDLE;
-
-
- end case;
-
- end process;
-
- --
- --
- -- WB Bridge State Machine (Current State Logic)
- --
- --
- process(Bus2IP_Clk) begin
- if (rising_edge(Bus2IP_Clk)) then
- if (Bus2IP_Reset = '1') then
- curr_st <= ST_IDLE;
- else
- curr_st <= next_st;
- end if;
- end if;
- end process;
-
- ------------------------------------------
- -- Example code to drive IP to Bus signals
- ------------------------------------------
- IP2Bus_Data <= WB_DAT_I when wb_rdack = '1' else
- (others => '0');
-
-end IMP;
Index: tags/initial/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.pao
===================================================================
--- tags/initial/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.pao (revision 9)
+++ tags/initial/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.pao (nonexistent)
@@ -1,16 +0,0 @@
-##############################################################################
-## Description: Peripheral Analysis Order
-##############################################################################
-
-lib proc_common_v2_00_a proc_common_pkg vhdl
-lib proc_common_v2_00_a ipif_pkg vhdl
-lib proc_common_v2_00_a or_muxcy vhdl
-lib proc_common_v2_00_a or_gate128 vhdl
-lib proc_common_v2_00_a family_support vhdl
-lib proc_common_v2_00_a pselect_f vhdl
-lib proc_common_v2_00_a counter_f vhdl
-lib plbv46_slave_single_v1_00_a plb_address_decoder vhdl
-lib plbv46_slave_single_v1_00_a plb_slave_attachment vhdl
-lib plbv46_slave_single_v1_00_a plbv46_slave_single vhdl
-lib plbv46_2_wb_v1_10_a user_logic vhdl
-lib plbv46_2_wb_v1_10_a plbv46_2_wb vhdl
Index: tags/initial/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.mpd
===================================================================
--- tags/initial/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.mpd (revision 9)
+++ tags/initial/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.mpd (nonexistent)
@@ -1,111 +0,0 @@
-###################################################################
-##
-## Name : plbv46_2_wb
-## Desc : Microprocessor Peripheral Description
-## : Automatically generated by PsfUtility
-##
-###################################################################
-
-BEGIN plbv46_2_wb
-
-## Peripheral Options
-OPTION IPTYPE = PERIPHERAL
-OPTION IMP_NETLIST = TRUE
-OPTION HDL = VHDL
-OPTION ARCH_SUPPORT_MAP = (OTHERS=DEVELOPMENT)
-OPTION IP_GROUP = MICROBLAZE:PPC:Bus and Bridge
-OPTION DESC = PLBv46 to Wishbone B3 Bridge
-
-
-## Bus Interfaces
-BUS_INTERFACE BUS = SPLB, BUS_TYPE = SLAVE, BUS_STD = PLBV46
-
-## Generics for VHDL or Parameters for Verilog
-PARAMETER C_SPLB_AWIDTH = 32, DT = INTEGER, BUS = SPLB, ASSIGNMENT = CONSTANT
-PARAMETER C_SPLB_DWIDTH = 128, DT = INTEGER, BUS = SPLB, RANGE = (32, 64, 128)
-PARAMETER C_SPLB_NUM_MASTERS = 8, DT = INTEGER, BUS = SPLB, RANGE = (1:16)
-PARAMETER C_SPLB_MID_WIDTH = 3, DT = INTEGER, BUS = SPLB, RANGE = (1:4)
-PARAMETER C_SPLB_NATIVE_DWIDTH = 32, DT = INTEGER, BUS = SPLB, RANGE = (32, 64, 128), ASSIGNMENT = CONSTANT
-PARAMETER C_SPLB_P2P = 0, DT = INTEGER, BUS = SPLB, RANGE = (0, 1)
-PARAMETER C_SPLB_SUPPORT_BURSTS = 0, DT = INTEGER, BUS = SPLB, RANGE = (0, 1), ASSIGNMENT = CONSTANT
-PARAMETER C_SPLB_SMALLEST_MASTER = 32, DT = INTEGER, BUS = SPLB, RANGE = (32, 64, 128)
-PARAMETER C_SPLB_CLK_PERIOD_PS = 10000, DT = INTEGER, BUS = SPLB
-PARAMETER C_INCLUDE_DPHASE_TIMER = 0, DT = INTEGER, RANGE = (0, 1)
-PARAMETER C_FAMILY = virtex5, DT = STRING
-PARAMETER C_MEM0_BASEADDR = 0xffffffff, DT = std_logic_vector, BUS = SPLB, ADDRESS = BASE, PAIR = C_MEM0_HIGHADDR
-PARAMETER C_MEM0_HIGHADDR = 0x00000000, DT = std_logic_vector, BUS = SPLB, ADDRESS = HIGH, PAIR = C_MEM0_BASEADDR
-
-PARAMETER C_WB_ACCESS_TIMEOUT = 16, DT = INTEGER, RANGE = (1:256)
-PARAMETER C_WB_RETRY_TIMEOUT = 256, DT = INTEGER, RANGE = (1:256)
-PARAMETER C_WB_ACCESS_RETRIES = 4, DT = INTEGER, RANGE = (1:4)
-PARAMETER C_WB_DBUS_SIZE = 32, DT = INTEGER, ASSIGNMENT = CONSTANT
-
-## Ports
-PORT SPLB_Clk = "", DIR = I, SIGIS = CLK, BUS = SPLB
-PORT SPLB_Rst = SPLB_Rst, DIR = I, SIGIS = RST, BUS = SPLB
-PORT PLB_ABus = PLB_ABus, DIR = I, VEC = [0:31], BUS = SPLB
-PORT PLB_UABus = PLB_UABus, DIR = I, VEC = [0:31], BUS = SPLB
-PORT PLB_PAValid = PLB_PAValid, DIR = I, BUS = SPLB
-PORT PLB_SAValid = PLB_SAValid, DIR = I, BUS = SPLB
-PORT PLB_rdPrim = PLB_rdPrim, DIR = I, BUS = SPLB
-PORT PLB_wrPrim = PLB_wrPrim, DIR = I, BUS = SPLB
-PORT PLB_masterID = PLB_masterID, DIR = I, VEC = [0:(C_SPLB_MID_WIDTH-1)], BUS = SPLB
-PORT PLB_abort = PLB_abort, DIR = I, BUS = SPLB
-PORT PLB_busLock = PLB_busLock, DIR = I, BUS = SPLB
-PORT PLB_RNW = PLB_RNW, DIR = I, BUS = SPLB
-PORT PLB_BE = PLB_BE, DIR = I, VEC = [0:((C_SPLB_DWIDTH/8)-1)], BUS = SPLB
-PORT PLB_MSize = PLB_MSize, DIR = I, VEC = [0:1], BUS = SPLB
-PORT PLB_size = PLB_size, DIR = I, VEC = [0:3], BUS = SPLB
-PORT PLB_type = PLB_type, DIR = I, VEC = [0:2], BUS = SPLB
-PORT PLB_lockErr = PLB_lockErr, DIR = I, BUS = SPLB
-PORT PLB_wrDBus = PLB_wrDBus, DIR = I, VEC = [0:(C_SPLB_DWIDTH-1)], BUS = SPLB
-PORT PLB_wrBurst = PLB_wrBurst, DIR = I, BUS = SPLB
-PORT PLB_rdBurst = PLB_rdBurst, DIR = I, BUS = SPLB
-PORT PLB_wrPendReq = PLB_wrPendReq, DIR = I, BUS = SPLB
-PORT PLB_rdPendReq = PLB_rdPendReq, DIR = I, BUS = SPLB
-PORT PLB_wrPendPri = PLB_wrPendPri, DIR = I, VEC = [0:1], BUS = SPLB
-PORT PLB_rdPendPri = PLB_rdPendPri, DIR = I, VEC = [0:1], BUS = SPLB
-PORT PLB_reqPri = PLB_reqPri, DIR = I, VEC = [0:1], BUS = SPLB
-PORT PLB_TAttribute = PLB_TAttribute, DIR = I, VEC = [0:15], BUS = SPLB
-PORT Sl_addrAck = Sl_addrAck, DIR = O, BUS = SPLB
-PORT Sl_SSize = Sl_SSize, DIR = O, VEC = [0:1], BUS = SPLB
-PORT Sl_wait = Sl_wait, DIR = O, BUS = SPLB
-PORT Sl_rearbitrate = Sl_rearbitrate, DIR = O, BUS = SPLB
-PORT Sl_wrDAck = Sl_wrDAck, DIR = O, BUS = SPLB
-PORT Sl_wrComp = Sl_wrComp, DIR = O, BUS = SPLB
-PORT Sl_wrBTerm = Sl_wrBTerm, DIR = O, BUS = SPLB
-PORT Sl_rdDBus = Sl_rdDBus, DIR = O, VEC = [0:(C_SPLB_DWIDTH-1)], BUS = SPLB
-PORT Sl_rdWdAddr = Sl_rdWdAddr, DIR = O, VEC = [0:3], BUS = SPLB
-PORT Sl_rdDAck = Sl_rdDAck, DIR = O, BUS = SPLB
-PORT Sl_rdComp = Sl_rdComp, DIR = O, BUS = SPLB
-PORT Sl_rdBTerm = Sl_rdBTerm, DIR = O, BUS = SPLB
-PORT Sl_MBusy = Sl_MBusy, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
-PORT Sl_MWrErr = Sl_MWrErr, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
-PORT Sl_MRdErr = Sl_MRdErr, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
-PORT Sl_MIRQ = Sl_MIRQ, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
-
-
-
-
-PORT WB_CLK_O = "", DIR = O
-PORT WB_RST_O = "", DIR = O
-PORT WB_ADR_O = "", DIR = O, VEC = [31:0]
-PORT WB_DAT_O = "", DIR = O, VEC = [C_WB_DBUS_SIZE-1:0]
-PORT WB_SEL_O = "", DIR = O, VEC = [(C_WB_DBUS_SIZE/8)-1:0]
-PORT WB_CYC_O = "", DIR = O
-PORT WB_LOCK_O = "", DIR = O
-PORT WB_STB_O = "", DIR = O
-PORT WB_WE_O = "", DIR = O
-PORT WB_DAT_I = "", DIR = I, VEC = [C_WB_DBUS_SIZE-1:0]
-PORT WB_ACK_I = "", DIR = I
-PORT WB_ERR_I = "", DIR = I
-PORT WB_RTY_I = "", DIR = I
-
-
-
-
-
-
-
-
-END
Index: trunk/doc/plbv46_2_wb.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: trunk/doc/plbv46_2_wb.pdf
===================================================================
--- trunk/doc/plbv46_2_wb.pdf (revision 9)
+++ trunk/doc/plbv46_2_wb.pdf (nonexistent)
trunk/doc/plbv46_2_wb.pdf
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/doc/src/plbv46_2_wb.doc
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: trunk/doc/src/plbv46_2_wb.doc
===================================================================
--- trunk/doc/src/plbv46_2_wb.doc (revision 9)
+++ trunk/doc/src/plbv46_2_wb.doc (nonexistent)
trunk/doc/src/plbv46_2_wb.doc
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/plbv46_2_wb.vhd
===================================================================
--- trunk/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/plbv46_2_wb.vhd (revision 9)
+++ trunk/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/plbv46_2_wb.vhd (nonexistent)
@@ -1,367 +0,0 @@
-------------------------------------------------------------------------------
---
--- ***************************************************************************
--- ** Copyright (c) 1995-2008 Xilinx, Inc. All rights reserved. **
--- ** **
--- ** Xilinx, Inc. **
--- ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" **
--- ** AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND **
--- ** SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, **
--- ** OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, **
--- ** APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION **
--- ** THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, **
--- ** AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE **
--- ** FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY **
--- ** WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE **
--- ** IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR **
--- ** REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF **
--- ** INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS **
--- ** FOR A PARTICULAR PURPOSE. **
--- ** **
--- ***************************************************************************
---
-------------------------------------------------------------------------------
--- Filename: plbv46_2_wb.vhd
--- Version: 1.10.a
--- Creation Date: Tue Jul 15, 2008
--- Description: PLB version 4.6 to Wishbone B3 Bridge
--- Simple non-bursting bridge interface from Xilinx-derivative
--- PLB Bus for Microblaze/PowerPC to OpenCores.org Wishbone
--- bridge standard.
---
--- File Revisions:
--- 7/15/08 - mds : Initial version
--- 7/25/08 - mds : Added retry and bus error detection.
---
-------------------------------------------------------------------------------
-library ieee;
-use ieee.std_logic_1164.all;
-use ieee.std_logic_arith.all;
-use ieee.std_logic_unsigned.all;
-
-library proc_common_v2_00_a;
-use proc_common_v2_00_a.proc_common_pkg.all;
-use proc_common_v2_00_a.ipif_pkg.all;
-
-library plbv46_slave_single_v1_00_a;
-use plbv46_slave_single_v1_00_a.plbv46_slave_single;
-
-library plbv46_2_wb_v1_10_a;
-use plbv46_2_wb_v1_10_a.user_logic;
-
-------------------------------------------------------------------------------
--- Entity section
-------------------------------------------------------------------------------
-entity plbv46_2_wb is
- generic
- (
- -- ADD USER GENERICS BELOW THIS LINE ---------------
- C_WB_DBUS_SIZE : integer := 32; -- Constant
- C_WB_ACCESS_TIMEOUT : integer := 16; -- Ranges from 1 to 256
- C_WB_RETRY_TIMEOUT : integer := 64; -- Ranges from 1 to 256
- C_WB_ACCESS_RETRIES : integer := 4; -- Ranges from 1 to 4
- -- ADD USER GENERICS ABOVE THIS LINE ---------------
-
- -- DO NOT EDIT BELOW THIS LINE ---------------------
- -- Bus protocol parameters, do not add to or delete
- C_SPLB_AWIDTH : integer := 32;
- C_SPLB_DWIDTH : integer := 128;
- C_SPLB_NUM_MASTERS : integer := 8;
- C_SPLB_MID_WIDTH : integer := 3;
- C_SPLB_NATIVE_DWIDTH : integer := 32;
- C_SPLB_P2P : integer := 0;
- C_SPLB_SUPPORT_BURSTS : integer := 0;
- C_SPLB_SMALLEST_MASTER : integer := 32;
- C_SPLB_CLK_PERIOD_PS : integer := 10000;
- C_INCLUDE_DPHASE_TIMER : integer := 0;
- C_FAMILY : string := "virtex5";
- C_MEM0_BASEADDR : std_logic_vector := X"FFFFFFFF";
- C_MEM0_HIGHADDR : std_logic_vector := X"00000000"
- -- DO NOT EDIT ABOVE THIS LINE ---------------------
- );
- port
- (
- -- ADD USER PORTS BELOW THIS LINE ------------------
- WB_CLK_O : out std_logic;
- WB_RST_O : out std_logic;
- WB_ADR_O : out std_logic_vector(0 to 31);
- WB_DAT_O : out std_logic_vector(0 to C_WB_DBUS_SIZE-1);
- WB_SEL_O : out std_logic_vector(0 to (C_WB_DBUS_SIZE/8)-1);
- WB_CYC_O : out std_logic;
- WB_LOCK_O : out std_logic;
- WB_STB_O : out std_logic;
- WB_WE_O : out std_logic;
- WB_DAT_I : in std_logic_vector(0 to C_WB_DBUS_SIZE-1);
- WB_ACK_I : in std_logic;
- WB_ERR_I : in std_logic;
- WB_RTY_I : in std_logic;
- -- ADD USER PORTS ABOVE THIS LINE ------------------
-
- -- DO NOT EDIT BELOW THIS LINE ---------------------
- -- Bus protocol ports, do not add to or delete
- SPLB_Clk : in std_logic;
- SPLB_Rst : in std_logic;
- PLB_ABus : in std_logic_vector(0 to 31);
- PLB_UABus : in std_logic_vector(0 to 31);
- PLB_PAValid : in std_logic;
- PLB_SAValid : in std_logic;
- PLB_rdPrim : in std_logic;
- PLB_wrPrim : in std_logic;
- PLB_masterID : in std_logic_vector(0 to C_SPLB_MID_WIDTH-1);
- PLB_abort : in std_logic;
- PLB_busLock : in std_logic;
- PLB_RNW : in std_logic;
- PLB_BE : in std_logic_vector(0 to C_SPLB_DWIDTH/8-1);
- PLB_MSize : in std_logic_vector(0 to 1);
- PLB_size : in std_logic_vector(0 to 3);
- PLB_type : in std_logic_vector(0 to 2);
- PLB_lockErr : in std_logic;
- PLB_wrDBus : in std_logic_vector(0 to C_SPLB_DWIDTH-1);
- PLB_wrBurst : in std_logic;
- PLB_rdBurst : in std_logic;
- PLB_wrPendReq : in std_logic;
- PLB_rdPendReq : in std_logic;
- PLB_wrPendPri : in std_logic_vector(0 to 1);
- PLB_rdPendPri : in std_logic_vector(0 to 1);
- PLB_reqPri : in std_logic_vector(0 to 1);
- PLB_TAttribute : in std_logic_vector(0 to 15);
- Sl_addrAck : out std_logic;
- Sl_SSize : out std_logic_vector(0 to 1);
- Sl_wait : out std_logic;
- Sl_rearbitrate : out std_logic;
- Sl_wrDAck : out std_logic;
- Sl_wrComp : out std_logic;
- Sl_wrBTerm : out std_logic;
- Sl_rdDBus : out std_logic_vector(0 to C_SPLB_DWIDTH-1);
- Sl_rdWdAddr : out std_logic_vector(0 to 3);
- Sl_rdDAck : out std_logic;
- Sl_rdComp : out std_logic;
- Sl_rdBTerm : out std_logic;
- Sl_MBusy : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
- Sl_MWrErr : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
- Sl_MRdErr : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
- Sl_MIRQ : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1)
- -- DO NOT EDIT ABOVE THIS LINE ---------------------
- );
-
- attribute SIGIS : string;
- attribute SIGIS of SPLB_Clk : signal is "CLK";
- attribute SIGIS of SPLB_Rst : signal is "RST";
-
-end entity plbv46_2_wb;
-
-------------------------------------------------------------------------------
--- Architecture section
-------------------------------------------------------------------------------
-
-architecture IMP of plbv46_2_wb is
-
- ------------------------------------------
- -- Array of base/high address pairs for each address range
- ------------------------------------------
- constant ZERO_ADDR_PAD : std_logic_vector(0 to 31) := (others => '0');
-
- constant IPIF_ARD_ADDR_RANGE_ARRAY : SLV64_ARRAY_TYPE :=
- (
- ZERO_ADDR_PAD & C_MEM0_BASEADDR, -- user logic memory space 0 base address
- ZERO_ADDR_PAD & C_MEM0_HIGHADDR -- user logic memory space 0 high address
- );
-
- ------------------------------------------
- -- Array of desired number of chip enables for each address range
- ------------------------------------------
- constant USER_NUM_MEM : integer := 1;
-
- constant IPIF_ARD_NUM_CE_ARRAY : INTEGER_ARRAY_TYPE :=
- (
- 0 => 1 -- number of ce for user logic memory space 0 (always 1 chip enable)
- );
-
- ------------------------------------------
- -- Ratio of bus clock to core clock (for use in dual clock systems)
- -- 1 = ratio is 1:1
- -- 2 = ratio is 2:1
- ------------------------------------------
- constant IPIF_BUS2CORE_CLK_RATIO : integer := 1;
-
- ------------------------------------------
- -- Width of the slave data bus (32 only)
- ------------------------------------------
- constant USER_SLV_DWIDTH : integer := C_SPLB_NATIVE_DWIDTH;
-
- constant IPIF_SLV_DWIDTH : integer := C_SPLB_NATIVE_DWIDTH;
-
- ------------------------------------------
- -- Width of the slave address bus (32 only)
- ------------------------------------------
- constant USER_SLV_AWIDTH : integer := C_SPLB_AWIDTH;
-
- ------------------------------------------
- -- Index for CS/CE
- ------------------------------------------
- constant USER_MEM0_CS_INDEX : integer := 0;
-
- constant USER_CS_INDEX : integer := USER_MEM0_CS_INDEX;
-
- ------------------------------------------
- -- IP Interconnect (IPIC) signal declarations
- ------------------------------------------
- signal ipif_Bus2IP_Clk : std_logic;
- signal ipif_Bus2IP_Reset : std_logic;
- signal ipif_IP2Bus_Data : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);
- signal ipif_IP2Bus_WrAck : std_logic;
- signal ipif_IP2Bus_RdAck : std_logic;
- signal ipif_IP2Bus_Error : std_logic;
- signal ipif_Bus2IP_Addr : std_logic_vector(0 to C_SPLB_AWIDTH-1);
- signal ipif_Bus2IP_Data : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);
- signal ipif_Bus2IP_RNW : std_logic;
- signal ipif_Bus2IP_BE : std_logic_vector(0 to IPIF_SLV_DWIDTH/8-1);
- signal ipif_Bus2IP_CS : std_logic_vector(0 to ((IPIF_ARD_ADDR_RANGE_ARRAY'length)/2)-1);
- signal ipif_Bus2IP_RdCE : std_logic_vector(0 to calc_num_ce(IPIF_ARD_NUM_CE_ARRAY)-1);
- signal ipif_Bus2IP_WrCE : std_logic_vector(0 to calc_num_ce(IPIF_ARD_NUM_CE_ARRAY)-1);
- signal user_IP2Bus_Data : std_logic_vector(0 to USER_SLV_DWIDTH-1);
- signal user_IP2Bus_RdAck : std_logic;
- signal user_IP2Bus_WrAck : std_logic;
- signal user_IP2Bus_Error : std_logic;
-
-begin
-
- ------------------------------------------
- -- instantiate plbv46_slave_single
- ------------------------------------------
- PLBV46_SLAVE_SINGLE_I : entity plbv46_slave_single_v1_00_a.plbv46_slave_single
- generic map
- (
- C_ARD_ADDR_RANGE_ARRAY => IPIF_ARD_ADDR_RANGE_ARRAY,
- C_ARD_NUM_CE_ARRAY => IPIF_ARD_NUM_CE_ARRAY,
- C_SPLB_P2P => C_SPLB_P2P,
- C_BUS2CORE_CLK_RATIO => IPIF_BUS2CORE_CLK_RATIO,
- C_SPLB_MID_WIDTH => C_SPLB_MID_WIDTH,
- C_SPLB_NUM_MASTERS => C_SPLB_NUM_MASTERS,
- C_SPLB_AWIDTH => C_SPLB_AWIDTH,
- C_SPLB_DWIDTH => C_SPLB_DWIDTH,
- C_SIPIF_DWIDTH => IPIF_SLV_DWIDTH,
- C_INCLUDE_DPHASE_TIMER => C_INCLUDE_DPHASE_TIMER,
- C_FAMILY => C_FAMILY
- )
- port map
- (
- SPLB_Clk => SPLB_Clk,
- SPLB_Rst => SPLB_Rst,
- PLB_ABus => PLB_ABus,
- PLB_UABus => PLB_UABus,
- PLB_PAValid => PLB_PAValid,
- PLB_SAValid => PLB_SAValid,
- PLB_rdPrim => PLB_rdPrim,
- PLB_wrPrim => PLB_wrPrim,
- PLB_masterID => PLB_masterID,
- PLB_abort => PLB_abort,
- PLB_busLock => PLB_busLock,
- PLB_RNW => PLB_RNW,
- PLB_BE => PLB_BE,
- PLB_MSize => PLB_MSize,
- PLB_size => PLB_size,
- PLB_type => PLB_type,
- PLB_lockErr => PLB_lockErr,
- PLB_wrDBus => PLB_wrDBus,
- PLB_wrBurst => PLB_wrBurst,
- PLB_rdBurst => PLB_rdBurst,
- PLB_wrPendReq => PLB_wrPendReq,
- PLB_rdPendReq => PLB_rdPendReq,
- PLB_wrPendPri => PLB_wrPendPri,
- PLB_rdPendPri => PLB_rdPendPri,
- PLB_reqPri => PLB_reqPri,
- PLB_TAttribute => PLB_TAttribute,
- Sl_addrAck => Sl_addrAck,
- Sl_SSize => Sl_SSize,
- Sl_wait => Sl_wait,
- Sl_rearbitrate => Sl_rearbitrate,
- Sl_wrDAck => Sl_wrDAck,
- Sl_wrComp => Sl_wrComp,
- Sl_wrBTerm => Sl_wrBTerm,
- Sl_rdDBus => Sl_rdDBus,
- Sl_rdWdAddr => Sl_rdWdAddr,
- Sl_rdDAck => Sl_rdDAck,
- Sl_rdComp => Sl_rdComp,
- Sl_rdBTerm => Sl_rdBTerm,
- Sl_MBusy => Sl_MBusy,
- Sl_MWrErr => Sl_MWrErr,
- Sl_MRdErr => Sl_MRdErr,
- Sl_MIRQ => Sl_MIRQ,
- Bus2IP_Clk => ipif_Bus2IP_Clk,
- Bus2IP_Reset => ipif_Bus2IP_Reset,
- IP2Bus_Data => ipif_IP2Bus_Data,
- IP2Bus_WrAck => ipif_IP2Bus_WrAck,
- IP2Bus_RdAck => ipif_IP2Bus_RdAck,
- IP2Bus_Error => ipif_IP2Bus_Error,
- Bus2IP_Addr => ipif_Bus2IP_Addr,
- Bus2IP_Data => ipif_Bus2IP_Data,
- Bus2IP_RNW => ipif_Bus2IP_RNW,
- Bus2IP_BE => ipif_Bus2IP_BE,
- Bus2IP_CS => ipif_Bus2IP_CS,
- Bus2IP_RdCE => ipif_Bus2IP_RdCE,
- Bus2IP_WrCE => ipif_Bus2IP_WrCE
- );
-
- ------------------------------------------
- -- instantiate User Logic
- ------------------------------------------
- USER_LOGIC_I : entity plbv46_2_wb_v1_10_a.user_logic
- generic map
- (
- -- MAP USER GENERICS BELOW THIS LINE ---------------
- C_WB_DBUS_SIZE => C_WB_DBUS_SIZE,
- C_WB_ACCESS_TIMEOUT => C_WB_ACCESS_TIMEOUT,
- C_WB_RETRY_TIMEOUT => C_WB_RETRY_TIMEOUT,
- C_WB_ACCESS_RETRIES => C_WB_ACCESS_RETRIES,
- -- MAP USER GENERICS ABOVE THIS LINE ---------------
-
- C_SLV_AWIDTH => USER_SLV_AWIDTH,
- C_SLV_DWIDTH => USER_SLV_DWIDTH,
- C_NUM_MEM => USER_NUM_MEM
- )
- port map
- (
- -- MAP USER PORTS BELOW THIS LINE ------------------
-
- WB_CLK_O => WB_CLK_O ,
- WB_RST_O => WB_RST_O ,
- WB_ADR_O => WB_ADR_O ,
- WB_DAT_O => WB_DAT_O ,
- WB_SEL_O => WB_SEL_O ,
- WB_CYC_O => WB_CYC_O ,
- WB_STB_O => WB_STB_O ,
- WB_WE_O => WB_WE_O ,
- WB_DAT_I => WB_DAT_I ,
- WB_ACK_I => WB_ACK_I ,
- WB_ERR_I => WB_ERR_I ,
- WB_RTY_I => WB_RTY_I ,
-
-
- --USER ports mapped here
- -- MAP USER PORTS ABOVE THIS LINE ------------------
-
- Bus2IP_Clk => ipif_Bus2IP_Clk,
- Bus2IP_Reset => ipif_Bus2IP_Reset,
- Bus2IP_Addr => ipif_Bus2IP_Addr,
- Bus2IP_CS => ipif_Bus2IP_CS(USER_CS_INDEX to USER_CS_INDEX+USER_NUM_MEM-1),
- Bus2IP_RNW => ipif_Bus2IP_RNW,
- Bus2IP_Data => ipif_Bus2IP_Data,
- Bus2IP_BE => ipif_Bus2IP_BE,
- IP2Bus_Data => user_IP2Bus_Data,
- IP2Bus_RdAck => user_IP2Bus_RdAck,
- IP2Bus_WrAck => user_IP2Bus_WrAck,
- IP2Bus_Error => user_IP2Bus_Error
- );
-
- ------------------------------------------
- -- connect internal signals
- ------------------------------------------
- WB_LOCK_O <= '0';
-
- ipif_IP2Bus_Data <= user_IP2Bus_Data;
- ipif_IP2Bus_WrAck <= user_IP2Bus_WrAck;
- ipif_IP2Bus_RdAck <= user_IP2Bus_RdAck;
- ipif_IP2Bus_Error <= user_IP2Bus_Error;
-
-end IMP;
Index: trunk/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/user_logic.vhd
===================================================================
--- trunk/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/user_logic.vhd (revision 9)
+++ trunk/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/user_logic.vhd (nonexistent)
@@ -1,282 +0,0 @@
-------------------------------------------------------------------------------
---
--- ***************************************************************************
--- ** Copyright (c) 1995-2008 Xilinx, Inc. All rights reserved. **
--- ** **
--- ** Xilinx, Inc. **
--- ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" **
--- ** AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND **
--- ** SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, **
--- ** OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, **
--- ** APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION **
--- ** THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, **
--- ** AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE **
--- ** FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY **
--- ** WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE **
--- ** IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR **
--- ** REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF **
--- ** INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS **
--- ** FOR A PARTICULAR PURPOSE. **
--- ** **
--- ***************************************************************************
---
-------------------------------------------------------------------------------
--- Filename: user_logic.vhd
--- Version: 1.10.a
--- Description: User logic.
-------------------------------------------------------------------------------
-
--- DO NOT EDIT BELOW THIS LINE --------------------
-library ieee;
-use ieee.std_logic_1164.all;
-use ieee.std_logic_arith.all;
-use ieee.std_logic_unsigned.all;
-
-library proc_common_v2_00_a;
-use proc_common_v2_00_a.proc_common_pkg.all;
-
-
-------------------------------------------------------------------------------
--- Entity section
-------------------------------------------------------------------------------
-
-entity user_logic is
- generic
- (
- -- ADD USER GENERICS BELOW THIS LINE ---------------
- C_WB_DBUS_SIZE : integer := 32;
- C_WB_ACCESS_TIMEOUT : integer := 16;
- C_WB_RETRY_TIMEOUT : integer := 256;
- C_WB_ACCESS_RETRIES : integer := 4;
- -- ADD USER GENERICS ABOVE THIS LINE ---------------
-
- -- DO NOT EDIT BELOW THIS LINE ---------------------
- -- Bus protocol parameters, do not add to or delete
- C_SLV_AWIDTH : integer := 32;
- C_SLV_DWIDTH : integer := 32;
- C_NUM_MEM : integer := 1
- -- DO NOT EDIT ABOVE THIS LINE ---------------------
- );
- port
- (
- -- ADD USER PORTS BELOW THIS LINE ------------------
- WB_CLK_O : out std_logic;
- WB_RST_O : out std_logic;
- WB_ADR_O : out std_logic_vector(0 to 31);
- WB_DAT_O : out std_logic_vector(0 to C_WB_DBUS_SIZE-1);
- WB_SEL_O : out std_logic_vector(0 to (C_WB_DBUS_SIZE/8)-1);
- WB_CYC_O : out std_logic;
- WB_STB_O : out std_logic;
- WB_WE_O : out std_logic;
- WB_DAT_I : in std_logic_vector(0 to C_WB_DBUS_SIZE-1);
- WB_ACK_I : in std_logic;
- WB_ERR_I : in std_logic;
- WB_RTY_I : in std_logic;
- -- ADD USER PORTS ABOVE THIS LINE ------------------
-
- -- DO NOT EDIT BELOW THIS LINE ---------------------
- -- Bus protocol ports, do not add to or delete
- Bus2IP_Clk : in std_logic;
- Bus2IP_Reset : in std_logic;
- Bus2IP_Addr : in std_logic_vector(0 to C_SLV_AWIDTH-1);
- Bus2IP_CS : in std_logic_vector(0 to C_NUM_MEM-1);
- Bus2IP_RNW : in std_logic;
- Bus2IP_Data : in std_logic_vector(0 to C_SLV_DWIDTH-1);
- Bus2IP_BE : in std_logic_vector(0 to C_SLV_DWIDTH/8-1);
- IP2Bus_Data : out std_logic_vector(0 to C_SLV_DWIDTH-1);
- IP2Bus_RdAck : out std_logic;
- IP2Bus_WrAck : out std_logic;
- IP2Bus_Error : out std_logic
- -- DO NOT EDIT ABOVE THIS LINE ---------------------
- );
-
- attribute SIGIS : string;
- attribute SIGIS of Bus2IP_Clk : signal is "CLK";
- attribute SIGIS of Bus2IP_Reset : signal is "RST";
-
-end entity user_logic;
-
-------------------------------------------------------------------------------
--- Architecture section
-------------------------------------------------------------------------------
-architecture IMP of user_logic is
-
- -- State Machine Declarations
- type state_type is (ST_IDLE, ST_ACCESS, ST_RETRY_STROBE, ST_RETRY, ST_ERROR, ST_DONE);
- signal curr_st : state_type;
- signal next_st : state_type;
- -- Bus Ack Decode
- signal wb_rdack : std_logic;
- signal wb_wrack : std_logic;
- -- Timer used to track bus error condition and retry timouts.
- signal timer_en : std_logic;
- signal timer_cnt : std_logic_vector(0 to 7);
- -- Counter used to track number of retry attempts
- signal retry_iter : std_logic_vector(0 to 1);
- signal retry_iter_rst : std_logic;
- signal retry_iter_en : std_logic;
- -- Status Signals
- signal retry_expire : std_logic; -- Maximum Retries exceeded
- signal access_to : std_logic; -- Bus Error Detected
- signal retry_to : std_logic; -- Retry cycle completed
-
-begin
-
- --
- -- We are not buffering these signals to the WB Bus.
- -- Nor are we running the clock at a slower rate than the PLB Bus.
- WB_CLK_O <= Bus2IP_Clk;
- WB_RST_O <= Bus2IP_Reset;
-
- -- These can probably be treated as multi-cycle paths
- -- Possibly will add in a Pipeline stage (user selectable?)
- WB_ADR_O <= Bus2IP_Addr;
- WB_DAT_O <= Bus2IP_Data;
- WB_SEL_O <= Bus2IP_BE;
- WB_WE_O <= not Bus2IP_RNW;
-
- --
- -- Number of retry attempts
- --
- process(Bus2IP_Clk) begin
- if (rising_edge(Bus2IP_Clk)) then
- if (retry_iter_rst = '1') then
- retry_iter <= (others=>'0');
- elsif (retry_iter_en = '1') then
- retry_iter <= retry_iter + 1;
- end if;
-
- retry_expire <= '0';
- if (retry_iter = conv_std_logic_vector(C_WB_ACCESS_RETRIES-1,2)) then
- retry_expire <= '1';
- end if;
- end if;
- end process;
-
- --
- -- Retry Wait Counter
- --
- process(Bus2IP_Clk) begin
- if (rising_edge(Bus2IP_Clk)) then
- if (timer_en = '0') then
- timer_cnt <= (others => '0');
- else
- timer_cnt <= timer_cnt + 1;
- end if;
-
- retry_to <= '0';
- if (timer_cnt = conv_std_logic_vector(C_WB_RETRY_TIMEOUT-1, 8)) then
- retry_to <= '1';
- end if;
-
- if (timer_cnt = conv_std_logic_vector(C_WB_ACCESS_TIMEOUT-1, 8)) then
- access_to <= '1';
- end if;
-
- end if;
- end process;
-
- --
- --
- -- WB Bridge State Machine (Next State Logic)
- --
- --
-
- IP2Bus_RdAck <= wb_rdack;
- IP2Bus_WrAck <= wb_wrack;
-
- process(curr_st, Bus2IP_CS ,WB_RTY_I ,WB_ACK_I, retry_to, access_to) begin
-
- next_st <= curr_st;
- timer_en <= '0';
- retry_iter_rst <= '0';
- retry_iter_en <= '0';
- WB_STB_O <= '0';
- WB_CYC_O <= '0';
- wb_rdack <= '0';
- wb_wrack <= '0';
- IP2Bus_Error <= '0';
-
- case (curr_st) is
-
-
- when ST_IDLE =>
- retry_iter_rst <= '1';
- if (Bus2IP_CS(0) = '1') then
- next_st <= ST_ACCESS;
- end if;
-
- -- Access State
- -- Completes when we receive either a RETRY, ACK or we timeout of the transaction.
- -- Transaction timeout is setup by the user.
- when ST_ACCESS =>
- WB_STB_O <= '1';
- WB_CYC_O <= '1';
- timer_en <= '1';
- if (WB_RTY_I = '1') then
- next_st <= ST_RETRY_STROBE;
- elsif (WB_ACK_I = '1') then
- next_st <= ST_DONE;
- elsif (access_to = '1') then
- next_st <= ST_ERROR;
- end if;
-
- -- Retry Strobe
- -- Simply used to reset timer and increment our retries.
- -- We will also check to see if we have reached out limit of retries.
- when ST_RETRY_STROBE =>
- retry_iter_en <= '1';
- if (retry_expire = '1') then
- next_st <= ST_ERROR;
- else
- next_st <= ST_RETRY;
- end if;
-
- -- Retry
- -- Sit here and wait until we issues a WB Retry
- when ST_RETRY =>
- timer_en <= '1';
- if (retry_to = '1') then
- next_st <= ST_ACCESS;
- end if;
-
- -- Error
- -- Issue PLB Error
- when ST_ERROR =>
- IP2Bus_Error <= '1';
- wb_wrack <= not Bus2IP_RNW;
- wb_rdack <= Bus2IP_RNW;
- next_st <= ST_IDLE;
-
- when ST_DONE =>
- wb_rdack <= Bus2IP_RNW;
- wb_wrack <= not Bus2IP_RNW;
- next_st <= ST_IDLE;
-
-
- end case;
-
- end process;
-
- --
- --
- -- WB Bridge State Machine (Current State Logic)
- --
- --
- process(Bus2IP_Clk) begin
- if (rising_edge(Bus2IP_Clk)) then
- if (Bus2IP_Reset = '1') then
- curr_st <= ST_IDLE;
- else
- curr_st <= next_st;
- end if;
- end if;
- end process;
-
- ------------------------------------------
- -- Example code to drive IP to Bus signals
- ------------------------------------------
- IP2Bus_Data <= WB_DAT_I when wb_rdack = '1' else
- (others => '0');
-
-end IMP;
Index: trunk/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.pao
===================================================================
--- trunk/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.pao (revision 9)
+++ trunk/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.pao (nonexistent)
@@ -1,16 +0,0 @@
-##############################################################################
-## Description: Peripheral Analysis Order
-##############################################################################
-
-lib proc_common_v2_00_a proc_common_pkg vhdl
-lib proc_common_v2_00_a ipif_pkg vhdl
-lib proc_common_v2_00_a or_muxcy vhdl
-lib proc_common_v2_00_a or_gate128 vhdl
-lib proc_common_v2_00_a family_support vhdl
-lib proc_common_v2_00_a pselect_f vhdl
-lib proc_common_v2_00_a counter_f vhdl
-lib plbv46_slave_single_v1_00_a plb_address_decoder vhdl
-lib plbv46_slave_single_v1_00_a plb_slave_attachment vhdl
-lib plbv46_slave_single_v1_00_a plbv46_slave_single vhdl
-lib plbv46_2_wb_v1_10_a user_logic vhdl
-lib plbv46_2_wb_v1_10_a plbv46_2_wb vhdl
Index: trunk/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.mpd
===================================================================
--- trunk/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.mpd (revision 9)
+++ trunk/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.mpd (nonexistent)
@@ -1,111 +0,0 @@
-###################################################################
-##
-## Name : plbv46_2_wb
-## Desc : Microprocessor Peripheral Description
-## : Automatically generated by PsfUtility
-##
-###################################################################
-
-BEGIN plbv46_2_wb
-
-## Peripheral Options
-OPTION IPTYPE = PERIPHERAL
-OPTION IMP_NETLIST = TRUE
-OPTION HDL = VHDL
-OPTION ARCH_SUPPORT_MAP = (OTHERS=DEVELOPMENT)
-OPTION IP_GROUP = MICROBLAZE:PPC:Bus and Bridge
-OPTION DESC = PLBv46 to Wishbone B3 Bridge
-
-
-## Bus Interfaces
-BUS_INTERFACE BUS = SPLB, BUS_TYPE = SLAVE, BUS_STD = PLBV46
-
-## Generics for VHDL or Parameters for Verilog
-PARAMETER C_SPLB_AWIDTH = 32, DT = INTEGER, BUS = SPLB, ASSIGNMENT = CONSTANT
-PARAMETER C_SPLB_DWIDTH = 128, DT = INTEGER, BUS = SPLB, RANGE = (32, 64, 128)
-PARAMETER C_SPLB_NUM_MASTERS = 8, DT = INTEGER, BUS = SPLB, RANGE = (1:16)
-PARAMETER C_SPLB_MID_WIDTH = 3, DT = INTEGER, BUS = SPLB, RANGE = (1:4)
-PARAMETER C_SPLB_NATIVE_DWIDTH = 32, DT = INTEGER, BUS = SPLB, RANGE = (32, 64, 128), ASSIGNMENT = CONSTANT
-PARAMETER C_SPLB_P2P = 0, DT = INTEGER, BUS = SPLB, RANGE = (0, 1)
-PARAMETER C_SPLB_SUPPORT_BURSTS = 0, DT = INTEGER, BUS = SPLB, RANGE = (0, 1), ASSIGNMENT = CONSTANT
-PARAMETER C_SPLB_SMALLEST_MASTER = 32, DT = INTEGER, BUS = SPLB, RANGE = (32, 64, 128)
-PARAMETER C_SPLB_CLK_PERIOD_PS = 10000, DT = INTEGER, BUS = SPLB
-PARAMETER C_INCLUDE_DPHASE_TIMER = 0, DT = INTEGER, RANGE = (0, 1)
-PARAMETER C_FAMILY = virtex5, DT = STRING
-PARAMETER C_MEM0_BASEADDR = 0xffffffff, DT = std_logic_vector, BUS = SPLB, ADDRESS = BASE, PAIR = C_MEM0_HIGHADDR
-PARAMETER C_MEM0_HIGHADDR = 0x00000000, DT = std_logic_vector, BUS = SPLB, ADDRESS = HIGH, PAIR = C_MEM0_BASEADDR
-
-PARAMETER C_WB_ACCESS_TIMEOUT = 16, DT = INTEGER, RANGE = (1:256)
-PARAMETER C_WB_RETRY_TIMEOUT = 256, DT = INTEGER, RANGE = (1:256)
-PARAMETER C_WB_ACCESS_RETRIES = 4, DT = INTEGER, RANGE = (1:4)
-PARAMETER C_WB_DBUS_SIZE = 32, DT = INTEGER, ASSIGNMENT = CONSTANT
-
-## Ports
-PORT SPLB_Clk = "", DIR = I, SIGIS = CLK, BUS = SPLB
-PORT SPLB_Rst = SPLB_Rst, DIR = I, SIGIS = RST, BUS = SPLB
-PORT PLB_ABus = PLB_ABus, DIR = I, VEC = [0:31], BUS = SPLB
-PORT PLB_UABus = PLB_UABus, DIR = I, VEC = [0:31], BUS = SPLB
-PORT PLB_PAValid = PLB_PAValid, DIR = I, BUS = SPLB
-PORT PLB_SAValid = PLB_SAValid, DIR = I, BUS = SPLB
-PORT PLB_rdPrim = PLB_rdPrim, DIR = I, BUS = SPLB
-PORT PLB_wrPrim = PLB_wrPrim, DIR = I, BUS = SPLB
-PORT PLB_masterID = PLB_masterID, DIR = I, VEC = [0:(C_SPLB_MID_WIDTH-1)], BUS = SPLB
-PORT PLB_abort = PLB_abort, DIR = I, BUS = SPLB
-PORT PLB_busLock = PLB_busLock, DIR = I, BUS = SPLB
-PORT PLB_RNW = PLB_RNW, DIR = I, BUS = SPLB
-PORT PLB_BE = PLB_BE, DIR = I, VEC = [0:((C_SPLB_DWIDTH/8)-1)], BUS = SPLB
-PORT PLB_MSize = PLB_MSize, DIR = I, VEC = [0:1], BUS = SPLB
-PORT PLB_size = PLB_size, DIR = I, VEC = [0:3], BUS = SPLB
-PORT PLB_type = PLB_type, DIR = I, VEC = [0:2], BUS = SPLB
-PORT PLB_lockErr = PLB_lockErr, DIR = I, BUS = SPLB
-PORT PLB_wrDBus = PLB_wrDBus, DIR = I, VEC = [0:(C_SPLB_DWIDTH-1)], BUS = SPLB
-PORT PLB_wrBurst = PLB_wrBurst, DIR = I, BUS = SPLB
-PORT PLB_rdBurst = PLB_rdBurst, DIR = I, BUS = SPLB
-PORT PLB_wrPendReq = PLB_wrPendReq, DIR = I, BUS = SPLB
-PORT PLB_rdPendReq = PLB_rdPendReq, DIR = I, BUS = SPLB
-PORT PLB_wrPendPri = PLB_wrPendPri, DIR = I, VEC = [0:1], BUS = SPLB
-PORT PLB_rdPendPri = PLB_rdPendPri, DIR = I, VEC = [0:1], BUS = SPLB
-PORT PLB_reqPri = PLB_reqPri, DIR = I, VEC = [0:1], BUS = SPLB
-PORT PLB_TAttribute = PLB_TAttribute, DIR = I, VEC = [0:15], BUS = SPLB
-PORT Sl_addrAck = Sl_addrAck, DIR = O, BUS = SPLB
-PORT Sl_SSize = Sl_SSize, DIR = O, VEC = [0:1], BUS = SPLB
-PORT Sl_wait = Sl_wait, DIR = O, BUS = SPLB
-PORT Sl_rearbitrate = Sl_rearbitrate, DIR = O, BUS = SPLB
-PORT Sl_wrDAck = Sl_wrDAck, DIR = O, BUS = SPLB
-PORT Sl_wrComp = Sl_wrComp, DIR = O, BUS = SPLB
-PORT Sl_wrBTerm = Sl_wrBTerm, DIR = O, BUS = SPLB
-PORT Sl_rdDBus = Sl_rdDBus, DIR = O, VEC = [0:(C_SPLB_DWIDTH-1)], BUS = SPLB
-PORT Sl_rdWdAddr = Sl_rdWdAddr, DIR = O, VEC = [0:3], BUS = SPLB
-PORT Sl_rdDAck = Sl_rdDAck, DIR = O, BUS = SPLB
-PORT Sl_rdComp = Sl_rdComp, DIR = O, BUS = SPLB
-PORT Sl_rdBTerm = Sl_rdBTerm, DIR = O, BUS = SPLB
-PORT Sl_MBusy = Sl_MBusy, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
-PORT Sl_MWrErr = Sl_MWrErr, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
-PORT Sl_MRdErr = Sl_MRdErr, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
-PORT Sl_MIRQ = Sl_MIRQ, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
-
-
-
-
-PORT WB_CLK_O = "", DIR = O
-PORT WB_RST_O = "", DIR = O
-PORT WB_ADR_O = "", DIR = O, VEC = [0:31]
-PORT WB_DAT_O = "", DIR = O, VEC = [0:C_WB_DBUS_SIZE-1]
-PORT WB_SEL_O = "", DIR = O, VEC = [0:(C_WB_DBUS_SIZE/8)-1]
-PORT WB_CYC_O = "", DIR = O
-PORT WB_LOCK_O = "", DIR = O
-PORT WB_STB_O = "", DIR = O
-PORT WB_WE_O = "", DIR = O
-PORT WB_DAT_I = "", DIR = I, VEC = [0:C_WB_DBUS_SIZE-1]
-PORT WB_ACK_I = "", DIR = I
-PORT WB_ERR_I = "", DIR = I
-PORT WB_RTY_I = "", DIR = I
-
-
-
-
-
-
-
-
-END
Index: plbv46_to_wb_bridge/trunk/doc/plbv46_2_wb.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: plbv46_to_wb_bridge/trunk/doc/plbv46_2_wb.pdf
===================================================================
--- plbv46_to_wb_bridge/trunk/doc/plbv46_2_wb.pdf (nonexistent)
+++ plbv46_to_wb_bridge/trunk/doc/plbv46_2_wb.pdf (revision 10)
plbv46_to_wb_bridge/trunk/doc/plbv46_2_wb.pdf
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: plbv46_to_wb_bridge/trunk/doc/src/plbv46_2_wb.doc
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: plbv46_to_wb_bridge/trunk/doc/src/plbv46_2_wb.doc
===================================================================
--- plbv46_to_wb_bridge/trunk/doc/src/plbv46_2_wb.doc (nonexistent)
+++ plbv46_to_wb_bridge/trunk/doc/src/plbv46_2_wb.doc (revision 10)
plbv46_to_wb_bridge/trunk/doc/src/plbv46_2_wb.doc
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: plbv46_to_wb_bridge/trunk/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/plbv46_2_wb.vhd
===================================================================
--- plbv46_to_wb_bridge/trunk/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/plbv46_2_wb.vhd (nonexistent)
+++ plbv46_to_wb_bridge/trunk/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/plbv46_2_wb.vhd (revision 10)
@@ -0,0 +1,367 @@
+------------------------------------------------------------------------------
+--
+-- ***************************************************************************
+-- ** Copyright (c) 1995-2008 Xilinx, Inc. All rights reserved. **
+-- ** **
+-- ** Xilinx, Inc. **
+-- ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" **
+-- ** AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND **
+-- ** SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, **
+-- ** OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, **
+-- ** APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION **
+-- ** THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, **
+-- ** AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE **
+-- ** FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY **
+-- ** WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE **
+-- ** IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR **
+-- ** REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF **
+-- ** INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS **
+-- ** FOR A PARTICULAR PURPOSE. **
+-- ** **
+-- ***************************************************************************
+--
+------------------------------------------------------------------------------
+-- Filename: plbv46_2_wb.vhd
+-- Version: 1.10.a
+-- Creation Date: Tue Jul 15, 2008
+-- Description: PLB version 4.6 to Wishbone B3 Bridge
+-- Simple non-bursting bridge interface from Xilinx-derivative
+-- PLB Bus for Microblaze/PowerPC to OpenCores.org Wishbone
+-- bridge standard.
+--
+-- File Revisions:
+-- 7/15/08 - mds : Initial version
+-- 7/25/08 - mds : Added retry and bus error detection.
+--
+------------------------------------------------------------------------------
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_arith.all;
+use ieee.std_logic_unsigned.all;
+
+library proc_common_v2_00_a;
+use proc_common_v2_00_a.proc_common_pkg.all;
+use proc_common_v2_00_a.ipif_pkg.all;
+
+library plbv46_slave_single_v1_00_a;
+use plbv46_slave_single_v1_00_a.plbv46_slave_single;
+
+library plbv46_2_wb_v1_10_a;
+use plbv46_2_wb_v1_10_a.user_logic;
+
+------------------------------------------------------------------------------
+-- Entity section
+------------------------------------------------------------------------------
+entity plbv46_2_wb is
+ generic
+ (
+ -- ADD USER GENERICS BELOW THIS LINE ---------------
+ C_WB_DBUS_SIZE : integer := 32; -- Constant
+ C_WB_ACCESS_TIMEOUT : integer := 16; -- Ranges from 1 to 256
+ C_WB_RETRY_TIMEOUT : integer := 64; -- Ranges from 1 to 256
+ C_WB_ACCESS_RETRIES : integer := 4; -- Ranges from 1 to 4
+ -- ADD USER GENERICS ABOVE THIS LINE ---------------
+
+ -- DO NOT EDIT BELOW THIS LINE ---------------------
+ -- Bus protocol parameters, do not add to or delete
+ C_SPLB_AWIDTH : integer := 32;
+ C_SPLB_DWIDTH : integer := 128;
+ C_SPLB_NUM_MASTERS : integer := 8;
+ C_SPLB_MID_WIDTH : integer := 3;
+ C_SPLB_NATIVE_DWIDTH : integer := 32;
+ C_SPLB_P2P : integer := 0;
+ C_SPLB_SUPPORT_BURSTS : integer := 0;
+ C_SPLB_SMALLEST_MASTER : integer := 32;
+ C_SPLB_CLK_PERIOD_PS : integer := 10000;
+ C_INCLUDE_DPHASE_TIMER : integer := 0;
+ C_FAMILY : string := "virtex5";
+ C_MEM0_BASEADDR : std_logic_vector := X"FFFFFFFF";
+ C_MEM0_HIGHADDR : std_logic_vector := X"00000000"
+ -- DO NOT EDIT ABOVE THIS LINE ---------------------
+ );
+ port
+ (
+ -- ADD USER PORTS BELOW THIS LINE ------------------
+ WB_CLK_O : out std_logic;
+ WB_RST_O : out std_logic;
+ WB_ADR_O : out std_logic_vector(0 to 31);
+ WB_DAT_O : out std_logic_vector(0 to C_WB_DBUS_SIZE-1);
+ WB_SEL_O : out std_logic_vector(0 to (C_WB_DBUS_SIZE/8)-1);
+ WB_CYC_O : out std_logic;
+ WB_LOCK_O : out std_logic;
+ WB_STB_O : out std_logic;
+ WB_WE_O : out std_logic;
+ WB_DAT_I : in std_logic_vector(0 to C_WB_DBUS_SIZE-1);
+ WB_ACK_I : in std_logic;
+ WB_ERR_I : in std_logic;
+ WB_RTY_I : in std_logic;
+ -- ADD USER PORTS ABOVE THIS LINE ------------------
+
+ -- DO NOT EDIT BELOW THIS LINE ---------------------
+ -- Bus protocol ports, do not add to or delete
+ SPLB_Clk : in std_logic;
+ SPLB_Rst : in std_logic;
+ PLB_ABus : in std_logic_vector(0 to 31);
+ PLB_UABus : in std_logic_vector(0 to 31);
+ PLB_PAValid : in std_logic;
+ PLB_SAValid : in std_logic;
+ PLB_rdPrim : in std_logic;
+ PLB_wrPrim : in std_logic;
+ PLB_masterID : in std_logic_vector(0 to C_SPLB_MID_WIDTH-1);
+ PLB_abort : in std_logic;
+ PLB_busLock : in std_logic;
+ PLB_RNW : in std_logic;
+ PLB_BE : in std_logic_vector(0 to C_SPLB_DWIDTH/8-1);
+ PLB_MSize : in std_logic_vector(0 to 1);
+ PLB_size : in std_logic_vector(0 to 3);
+ PLB_type : in std_logic_vector(0 to 2);
+ PLB_lockErr : in std_logic;
+ PLB_wrDBus : in std_logic_vector(0 to C_SPLB_DWIDTH-1);
+ PLB_wrBurst : in std_logic;
+ PLB_rdBurst : in std_logic;
+ PLB_wrPendReq : in std_logic;
+ PLB_rdPendReq : in std_logic;
+ PLB_wrPendPri : in std_logic_vector(0 to 1);
+ PLB_rdPendPri : in std_logic_vector(0 to 1);
+ PLB_reqPri : in std_logic_vector(0 to 1);
+ PLB_TAttribute : in std_logic_vector(0 to 15);
+ Sl_addrAck : out std_logic;
+ Sl_SSize : out std_logic_vector(0 to 1);
+ Sl_wait : out std_logic;
+ Sl_rearbitrate : out std_logic;
+ Sl_wrDAck : out std_logic;
+ Sl_wrComp : out std_logic;
+ Sl_wrBTerm : out std_logic;
+ Sl_rdDBus : out std_logic_vector(0 to C_SPLB_DWIDTH-1);
+ Sl_rdWdAddr : out std_logic_vector(0 to 3);
+ Sl_rdDAck : out std_logic;
+ Sl_rdComp : out std_logic;
+ Sl_rdBTerm : out std_logic;
+ Sl_MBusy : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
+ Sl_MWrErr : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
+ Sl_MRdErr : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
+ Sl_MIRQ : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1)
+ -- DO NOT EDIT ABOVE THIS LINE ---------------------
+ );
+
+ attribute SIGIS : string;
+ attribute SIGIS of SPLB_Clk : signal is "CLK";
+ attribute SIGIS of SPLB_Rst : signal is "RST";
+
+end entity plbv46_2_wb;
+
+------------------------------------------------------------------------------
+-- Architecture section
+------------------------------------------------------------------------------
+
+architecture IMP of plbv46_2_wb is
+
+ ------------------------------------------
+ -- Array of base/high address pairs for each address range
+ ------------------------------------------
+ constant ZERO_ADDR_PAD : std_logic_vector(0 to 31) := (others => '0');
+
+ constant IPIF_ARD_ADDR_RANGE_ARRAY : SLV64_ARRAY_TYPE :=
+ (
+ ZERO_ADDR_PAD & C_MEM0_BASEADDR, -- user logic memory space 0 base address
+ ZERO_ADDR_PAD & C_MEM0_HIGHADDR -- user logic memory space 0 high address
+ );
+
+ ------------------------------------------
+ -- Array of desired number of chip enables for each address range
+ ------------------------------------------
+ constant USER_NUM_MEM : integer := 1;
+
+ constant IPIF_ARD_NUM_CE_ARRAY : INTEGER_ARRAY_TYPE :=
+ (
+ 0 => 1 -- number of ce for user logic memory space 0 (always 1 chip enable)
+ );
+
+ ------------------------------------------
+ -- Ratio of bus clock to core clock (for use in dual clock systems)
+ -- 1 = ratio is 1:1
+ -- 2 = ratio is 2:1
+ ------------------------------------------
+ constant IPIF_BUS2CORE_CLK_RATIO : integer := 1;
+
+ ------------------------------------------
+ -- Width of the slave data bus (32 only)
+ ------------------------------------------
+ constant USER_SLV_DWIDTH : integer := C_SPLB_NATIVE_DWIDTH;
+
+ constant IPIF_SLV_DWIDTH : integer := C_SPLB_NATIVE_DWIDTH;
+
+ ------------------------------------------
+ -- Width of the slave address bus (32 only)
+ ------------------------------------------
+ constant USER_SLV_AWIDTH : integer := C_SPLB_AWIDTH;
+
+ ------------------------------------------
+ -- Index for CS/CE
+ ------------------------------------------
+ constant USER_MEM0_CS_INDEX : integer := 0;
+
+ constant USER_CS_INDEX : integer := USER_MEM0_CS_INDEX;
+
+ ------------------------------------------
+ -- IP Interconnect (IPIC) signal declarations
+ ------------------------------------------
+ signal ipif_Bus2IP_Clk : std_logic;
+ signal ipif_Bus2IP_Reset : std_logic;
+ signal ipif_IP2Bus_Data : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);
+ signal ipif_IP2Bus_WrAck : std_logic;
+ signal ipif_IP2Bus_RdAck : std_logic;
+ signal ipif_IP2Bus_Error : std_logic;
+ signal ipif_Bus2IP_Addr : std_logic_vector(0 to C_SPLB_AWIDTH-1);
+ signal ipif_Bus2IP_Data : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);
+ signal ipif_Bus2IP_RNW : std_logic;
+ signal ipif_Bus2IP_BE : std_logic_vector(0 to IPIF_SLV_DWIDTH/8-1);
+ signal ipif_Bus2IP_CS : std_logic_vector(0 to ((IPIF_ARD_ADDR_RANGE_ARRAY'length)/2)-1);
+ signal ipif_Bus2IP_RdCE : std_logic_vector(0 to calc_num_ce(IPIF_ARD_NUM_CE_ARRAY)-1);
+ signal ipif_Bus2IP_WrCE : std_logic_vector(0 to calc_num_ce(IPIF_ARD_NUM_CE_ARRAY)-1);
+ signal user_IP2Bus_Data : std_logic_vector(0 to USER_SLV_DWIDTH-1);
+ signal user_IP2Bus_RdAck : std_logic;
+ signal user_IP2Bus_WrAck : std_logic;
+ signal user_IP2Bus_Error : std_logic;
+
+begin
+
+ ------------------------------------------
+ -- instantiate plbv46_slave_single
+ ------------------------------------------
+ PLBV46_SLAVE_SINGLE_I : entity plbv46_slave_single_v1_00_a.plbv46_slave_single
+ generic map
+ (
+ C_ARD_ADDR_RANGE_ARRAY => IPIF_ARD_ADDR_RANGE_ARRAY,
+ C_ARD_NUM_CE_ARRAY => IPIF_ARD_NUM_CE_ARRAY,
+ C_SPLB_P2P => C_SPLB_P2P,
+ C_BUS2CORE_CLK_RATIO => IPIF_BUS2CORE_CLK_RATIO,
+ C_SPLB_MID_WIDTH => C_SPLB_MID_WIDTH,
+ C_SPLB_NUM_MASTERS => C_SPLB_NUM_MASTERS,
+ C_SPLB_AWIDTH => C_SPLB_AWIDTH,
+ C_SPLB_DWIDTH => C_SPLB_DWIDTH,
+ C_SIPIF_DWIDTH => IPIF_SLV_DWIDTH,
+ C_INCLUDE_DPHASE_TIMER => C_INCLUDE_DPHASE_TIMER,
+ C_FAMILY => C_FAMILY
+ )
+ port map
+ (
+ SPLB_Clk => SPLB_Clk,
+ SPLB_Rst => SPLB_Rst,
+ PLB_ABus => PLB_ABus,
+ PLB_UABus => PLB_UABus,
+ PLB_PAValid => PLB_PAValid,
+ PLB_SAValid => PLB_SAValid,
+ PLB_rdPrim => PLB_rdPrim,
+ PLB_wrPrim => PLB_wrPrim,
+ PLB_masterID => PLB_masterID,
+ PLB_abort => PLB_abort,
+ PLB_busLock => PLB_busLock,
+ PLB_RNW => PLB_RNW,
+ PLB_BE => PLB_BE,
+ PLB_MSize => PLB_MSize,
+ PLB_size => PLB_size,
+ PLB_type => PLB_type,
+ PLB_lockErr => PLB_lockErr,
+ PLB_wrDBus => PLB_wrDBus,
+ PLB_wrBurst => PLB_wrBurst,
+ PLB_rdBurst => PLB_rdBurst,
+ PLB_wrPendReq => PLB_wrPendReq,
+ PLB_rdPendReq => PLB_rdPendReq,
+ PLB_wrPendPri => PLB_wrPendPri,
+ PLB_rdPendPri => PLB_rdPendPri,
+ PLB_reqPri => PLB_reqPri,
+ PLB_TAttribute => PLB_TAttribute,
+ Sl_addrAck => Sl_addrAck,
+ Sl_SSize => Sl_SSize,
+ Sl_wait => Sl_wait,
+ Sl_rearbitrate => Sl_rearbitrate,
+ Sl_wrDAck => Sl_wrDAck,
+ Sl_wrComp => Sl_wrComp,
+ Sl_wrBTerm => Sl_wrBTerm,
+ Sl_rdDBus => Sl_rdDBus,
+ Sl_rdWdAddr => Sl_rdWdAddr,
+ Sl_rdDAck => Sl_rdDAck,
+ Sl_rdComp => Sl_rdComp,
+ Sl_rdBTerm => Sl_rdBTerm,
+ Sl_MBusy => Sl_MBusy,
+ Sl_MWrErr => Sl_MWrErr,
+ Sl_MRdErr => Sl_MRdErr,
+ Sl_MIRQ => Sl_MIRQ,
+ Bus2IP_Clk => ipif_Bus2IP_Clk,
+ Bus2IP_Reset => ipif_Bus2IP_Reset,
+ IP2Bus_Data => ipif_IP2Bus_Data,
+ IP2Bus_WrAck => ipif_IP2Bus_WrAck,
+ IP2Bus_RdAck => ipif_IP2Bus_RdAck,
+ IP2Bus_Error => ipif_IP2Bus_Error,
+ Bus2IP_Addr => ipif_Bus2IP_Addr,
+ Bus2IP_Data => ipif_Bus2IP_Data,
+ Bus2IP_RNW => ipif_Bus2IP_RNW,
+ Bus2IP_BE => ipif_Bus2IP_BE,
+ Bus2IP_CS => ipif_Bus2IP_CS,
+ Bus2IP_RdCE => ipif_Bus2IP_RdCE,
+ Bus2IP_WrCE => ipif_Bus2IP_WrCE
+ );
+
+ ------------------------------------------
+ -- instantiate User Logic
+ ------------------------------------------
+ USER_LOGIC_I : entity plbv46_2_wb_v1_10_a.user_logic
+ generic map
+ (
+ -- MAP USER GENERICS BELOW THIS LINE ---------------
+ C_WB_DBUS_SIZE => C_WB_DBUS_SIZE,
+ C_WB_ACCESS_TIMEOUT => C_WB_ACCESS_TIMEOUT,
+ C_WB_RETRY_TIMEOUT => C_WB_RETRY_TIMEOUT,
+ C_WB_ACCESS_RETRIES => C_WB_ACCESS_RETRIES,
+ -- MAP USER GENERICS ABOVE THIS LINE ---------------
+
+ C_SLV_AWIDTH => USER_SLV_AWIDTH,
+ C_SLV_DWIDTH => USER_SLV_DWIDTH,
+ C_NUM_MEM => USER_NUM_MEM
+ )
+ port map
+ (
+ -- MAP USER PORTS BELOW THIS LINE ------------------
+
+ WB_CLK_O => WB_CLK_O ,
+ WB_RST_O => WB_RST_O ,
+ WB_ADR_O => WB_ADR_O ,
+ WB_DAT_O => WB_DAT_O ,
+ WB_SEL_O => WB_SEL_O ,
+ WB_CYC_O => WB_CYC_O ,
+ WB_STB_O => WB_STB_O ,
+ WB_WE_O => WB_WE_O ,
+ WB_DAT_I => WB_DAT_I ,
+ WB_ACK_I => WB_ACK_I ,
+ WB_ERR_I => WB_ERR_I ,
+ WB_RTY_I => WB_RTY_I ,
+
+
+ --USER ports mapped here
+ -- MAP USER PORTS ABOVE THIS LINE ------------------
+
+ Bus2IP_Clk => ipif_Bus2IP_Clk,
+ Bus2IP_Reset => ipif_Bus2IP_Reset,
+ Bus2IP_Addr => ipif_Bus2IP_Addr,
+ Bus2IP_CS => ipif_Bus2IP_CS(USER_CS_INDEX to USER_CS_INDEX+USER_NUM_MEM-1),
+ Bus2IP_RNW => ipif_Bus2IP_RNW,
+ Bus2IP_Data => ipif_Bus2IP_Data,
+ Bus2IP_BE => ipif_Bus2IP_BE,
+ IP2Bus_Data => user_IP2Bus_Data,
+ IP2Bus_RdAck => user_IP2Bus_RdAck,
+ IP2Bus_WrAck => user_IP2Bus_WrAck,
+ IP2Bus_Error => user_IP2Bus_Error
+ );
+
+ ------------------------------------------
+ -- connect internal signals
+ ------------------------------------------
+ WB_LOCK_O <= '0';
+
+ ipif_IP2Bus_Data <= user_IP2Bus_Data;
+ ipif_IP2Bus_WrAck <= user_IP2Bus_WrAck;
+ ipif_IP2Bus_RdAck <= user_IP2Bus_RdAck;
+ ipif_IP2Bus_Error <= user_IP2Bus_Error;
+
+end IMP;
Index: plbv46_to_wb_bridge/trunk/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/user_logic.vhd
===================================================================
--- plbv46_to_wb_bridge/trunk/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/user_logic.vhd (nonexistent)
+++ plbv46_to_wb_bridge/trunk/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/user_logic.vhd (revision 10)
@@ -0,0 +1,282 @@
+------------------------------------------------------------------------------
+--
+-- ***************************************************************************
+-- ** Copyright (c) 1995-2008 Xilinx, Inc. All rights reserved. **
+-- ** **
+-- ** Xilinx, Inc. **
+-- ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" **
+-- ** AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND **
+-- ** SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, **
+-- ** OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, **
+-- ** APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION **
+-- ** THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, **
+-- ** AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE **
+-- ** FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY **
+-- ** WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE **
+-- ** IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR **
+-- ** REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF **
+-- ** INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS **
+-- ** FOR A PARTICULAR PURPOSE. **
+-- ** **
+-- ***************************************************************************
+--
+------------------------------------------------------------------------------
+-- Filename: user_logic.vhd
+-- Version: 1.10.a
+-- Description: User logic.
+------------------------------------------------------------------------------
+
+-- DO NOT EDIT BELOW THIS LINE --------------------
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_arith.all;
+use ieee.std_logic_unsigned.all;
+
+library proc_common_v2_00_a;
+use proc_common_v2_00_a.proc_common_pkg.all;
+
+
+------------------------------------------------------------------------------
+-- Entity section
+------------------------------------------------------------------------------
+
+entity user_logic is
+ generic
+ (
+ -- ADD USER GENERICS BELOW THIS LINE ---------------
+ C_WB_DBUS_SIZE : integer := 32;
+ C_WB_ACCESS_TIMEOUT : integer := 16;
+ C_WB_RETRY_TIMEOUT : integer := 256;
+ C_WB_ACCESS_RETRIES : integer := 4;
+ -- ADD USER GENERICS ABOVE THIS LINE ---------------
+
+ -- DO NOT EDIT BELOW THIS LINE ---------------------
+ -- Bus protocol parameters, do not add to or delete
+ C_SLV_AWIDTH : integer := 32;
+ C_SLV_DWIDTH : integer := 32;
+ C_NUM_MEM : integer := 1
+ -- DO NOT EDIT ABOVE THIS LINE ---------------------
+ );
+ port
+ (
+ -- ADD USER PORTS BELOW THIS LINE ------------------
+ WB_CLK_O : out std_logic;
+ WB_RST_O : out std_logic;
+ WB_ADR_O : out std_logic_vector(0 to 31);
+ WB_DAT_O : out std_logic_vector(0 to C_WB_DBUS_SIZE-1);
+ WB_SEL_O : out std_logic_vector(0 to (C_WB_DBUS_SIZE/8)-1);
+ WB_CYC_O : out std_logic;
+ WB_STB_O : out std_logic;
+ WB_WE_O : out std_logic;
+ WB_DAT_I : in std_logic_vector(0 to C_WB_DBUS_SIZE-1);
+ WB_ACK_I : in std_logic;
+ WB_ERR_I : in std_logic;
+ WB_RTY_I : in std_logic;
+ -- ADD USER PORTS ABOVE THIS LINE ------------------
+
+ -- DO NOT EDIT BELOW THIS LINE ---------------------
+ -- Bus protocol ports, do not add to or delete
+ Bus2IP_Clk : in std_logic;
+ Bus2IP_Reset : in std_logic;
+ Bus2IP_Addr : in std_logic_vector(0 to C_SLV_AWIDTH-1);
+ Bus2IP_CS : in std_logic_vector(0 to C_NUM_MEM-1);
+ Bus2IP_RNW : in std_logic;
+ Bus2IP_Data : in std_logic_vector(0 to C_SLV_DWIDTH-1);
+ Bus2IP_BE : in std_logic_vector(0 to C_SLV_DWIDTH/8-1);
+ IP2Bus_Data : out std_logic_vector(0 to C_SLV_DWIDTH-1);
+ IP2Bus_RdAck : out std_logic;
+ IP2Bus_WrAck : out std_logic;
+ IP2Bus_Error : out std_logic
+ -- DO NOT EDIT ABOVE THIS LINE ---------------------
+ );
+
+ attribute SIGIS : string;
+ attribute SIGIS of Bus2IP_Clk : signal is "CLK";
+ attribute SIGIS of Bus2IP_Reset : signal is "RST";
+
+end entity user_logic;
+
+------------------------------------------------------------------------------
+-- Architecture section
+------------------------------------------------------------------------------
+architecture IMP of user_logic is
+
+ -- State Machine Declarations
+ type state_type is (ST_IDLE, ST_ACCESS, ST_RETRY_STROBE, ST_RETRY, ST_ERROR, ST_DONE);
+ signal curr_st : state_type;
+ signal next_st : state_type;
+ -- Bus Ack Decode
+ signal wb_rdack : std_logic;
+ signal wb_wrack : std_logic;
+ -- Timer used to track bus error condition and retry timouts.
+ signal timer_en : std_logic;
+ signal timer_cnt : std_logic_vector(0 to 7);
+ -- Counter used to track number of retry attempts
+ signal retry_iter : std_logic_vector(0 to 1);
+ signal retry_iter_rst : std_logic;
+ signal retry_iter_en : std_logic;
+ -- Status Signals
+ signal retry_expire : std_logic; -- Maximum Retries exceeded
+ signal access_to : std_logic; -- Bus Error Detected
+ signal retry_to : std_logic; -- Retry cycle completed
+
+begin
+
+ --
+ -- We are not buffering these signals to the WB Bus.
+ -- Nor are we running the clock at a slower rate than the PLB Bus.
+ WB_CLK_O <= Bus2IP_Clk;
+ WB_RST_O <= Bus2IP_Reset;
+
+ -- These can probably be treated as multi-cycle paths
+ -- Possibly will add in a Pipeline stage (user selectable?)
+ WB_ADR_O <= Bus2IP_Addr;
+ WB_DAT_O <= Bus2IP_Data;
+ WB_SEL_O <= Bus2IP_BE;
+ WB_WE_O <= not Bus2IP_RNW;
+
+ --
+ -- Number of retry attempts
+ --
+ process(Bus2IP_Clk) begin
+ if (rising_edge(Bus2IP_Clk)) then
+ if (retry_iter_rst = '1') then
+ retry_iter <= (others=>'0');
+ elsif (retry_iter_en = '1') then
+ retry_iter <= retry_iter + 1;
+ end if;
+
+ retry_expire <= '0';
+ if (retry_iter = conv_std_logic_vector(C_WB_ACCESS_RETRIES-1,2)) then
+ retry_expire <= '1';
+ end if;
+ end if;
+ end process;
+
+ --
+ -- Retry Wait Counter
+ --
+ process(Bus2IP_Clk) begin
+ if (rising_edge(Bus2IP_Clk)) then
+ if (timer_en = '0') then
+ timer_cnt <= (others => '0');
+ else
+ timer_cnt <= timer_cnt + 1;
+ end if;
+
+ retry_to <= '0';
+ if (timer_cnt = conv_std_logic_vector(C_WB_RETRY_TIMEOUT-1, 8)) then
+ retry_to <= '1';
+ end if;
+
+ if (timer_cnt = conv_std_logic_vector(C_WB_ACCESS_TIMEOUT-1, 8)) then
+ access_to <= '1';
+ end if;
+
+ end if;
+ end process;
+
+ --
+ --
+ -- WB Bridge State Machine (Next State Logic)
+ --
+ --
+
+ IP2Bus_RdAck <= wb_rdack;
+ IP2Bus_WrAck <= wb_wrack;
+
+ process(curr_st, Bus2IP_CS ,WB_RTY_I ,WB_ACK_I, retry_to, access_to) begin
+
+ next_st <= curr_st;
+ timer_en <= '0';
+ retry_iter_rst <= '0';
+ retry_iter_en <= '0';
+ WB_STB_O <= '0';
+ WB_CYC_O <= '0';
+ wb_rdack <= '0';
+ wb_wrack <= '0';
+ IP2Bus_Error <= '0';
+
+ case (curr_st) is
+
+
+ when ST_IDLE =>
+ retry_iter_rst <= '1';
+ if (Bus2IP_CS(0) = '1') then
+ next_st <= ST_ACCESS;
+ end if;
+
+ -- Access State
+ -- Completes when we receive either a RETRY, ACK or we timeout of the transaction.
+ -- Transaction timeout is setup by the user.
+ when ST_ACCESS =>
+ WB_STB_O <= '1';
+ WB_CYC_O <= '1';
+ timer_en <= '1';
+ if (WB_RTY_I = '1') then
+ next_st <= ST_RETRY_STROBE;
+ elsif (WB_ACK_I = '1') then
+ next_st <= ST_DONE;
+ elsif (access_to = '1') then
+ next_st <= ST_ERROR;
+ end if;
+
+ -- Retry Strobe
+ -- Simply used to reset timer and increment our retries.
+ -- We will also check to see if we have reached out limit of retries.
+ when ST_RETRY_STROBE =>
+ retry_iter_en <= '1';
+ if (retry_expire = '1') then
+ next_st <= ST_ERROR;
+ else
+ next_st <= ST_RETRY;
+ end if;
+
+ -- Retry
+ -- Sit here and wait until we issues a WB Retry
+ when ST_RETRY =>
+ timer_en <= '1';
+ if (retry_to = '1') then
+ next_st <= ST_ACCESS;
+ end if;
+
+ -- Error
+ -- Issue PLB Error
+ when ST_ERROR =>
+ IP2Bus_Error <= '1';
+ wb_wrack <= not Bus2IP_RNW;
+ wb_rdack <= Bus2IP_RNW;
+ next_st <= ST_IDLE;
+
+ when ST_DONE =>
+ wb_rdack <= Bus2IP_RNW;
+ wb_wrack <= not Bus2IP_RNW;
+ next_st <= ST_IDLE;
+
+
+ end case;
+
+ end process;
+
+ --
+ --
+ -- WB Bridge State Machine (Current State Logic)
+ --
+ --
+ process(Bus2IP_Clk) begin
+ if (rising_edge(Bus2IP_Clk)) then
+ if (Bus2IP_Reset = '1') then
+ curr_st <= ST_IDLE;
+ else
+ curr_st <= next_st;
+ end if;
+ end if;
+ end process;
+
+ ------------------------------------------
+ -- Example code to drive IP to Bus signals
+ ------------------------------------------
+ IP2Bus_Data <= WB_DAT_I when wb_rdack = '1' else
+ (others => '0');
+
+end IMP;
Index: plbv46_to_wb_bridge/trunk/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.mpd
===================================================================
--- plbv46_to_wb_bridge/trunk/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.mpd (nonexistent)
+++ plbv46_to_wb_bridge/trunk/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.mpd (revision 10)
@@ -0,0 +1,111 @@
+###################################################################
+##
+## Name : plbv46_2_wb
+## Desc : Microprocessor Peripheral Description
+## : Automatically generated by PsfUtility
+##
+###################################################################
+
+BEGIN plbv46_2_wb
+
+## Peripheral Options
+OPTION IPTYPE = PERIPHERAL
+OPTION IMP_NETLIST = TRUE
+OPTION HDL = VHDL
+OPTION ARCH_SUPPORT_MAP = (OTHERS=DEVELOPMENT)
+OPTION IP_GROUP = MICROBLAZE:PPC:Bus and Bridge
+OPTION DESC = PLBv46 to Wishbone B3 Bridge
+
+
+## Bus Interfaces
+BUS_INTERFACE BUS = SPLB, BUS_TYPE = SLAVE, BUS_STD = PLBV46
+
+## Generics for VHDL or Parameters for Verilog
+PARAMETER C_SPLB_AWIDTH = 32, DT = INTEGER, BUS = SPLB, ASSIGNMENT = CONSTANT
+PARAMETER C_SPLB_DWIDTH = 128, DT = INTEGER, BUS = SPLB, RANGE = (32, 64, 128)
+PARAMETER C_SPLB_NUM_MASTERS = 8, DT = INTEGER, BUS = SPLB, RANGE = (1:16)
+PARAMETER C_SPLB_MID_WIDTH = 3, DT = INTEGER, BUS = SPLB, RANGE = (1:4)
+PARAMETER C_SPLB_NATIVE_DWIDTH = 32, DT = INTEGER, BUS = SPLB, RANGE = (32, 64, 128), ASSIGNMENT = CONSTANT
+PARAMETER C_SPLB_P2P = 0, DT = INTEGER, BUS = SPLB, RANGE = (0, 1)
+PARAMETER C_SPLB_SUPPORT_BURSTS = 0, DT = INTEGER, BUS = SPLB, RANGE = (0, 1), ASSIGNMENT = CONSTANT
+PARAMETER C_SPLB_SMALLEST_MASTER = 32, DT = INTEGER, BUS = SPLB, RANGE = (32, 64, 128)
+PARAMETER C_SPLB_CLK_PERIOD_PS = 10000, DT = INTEGER, BUS = SPLB
+PARAMETER C_INCLUDE_DPHASE_TIMER = 0, DT = INTEGER, RANGE = (0, 1)
+PARAMETER C_FAMILY = virtex5, DT = STRING
+PARAMETER C_MEM0_BASEADDR = 0xffffffff, DT = std_logic_vector, BUS = SPLB, ADDRESS = BASE, PAIR = C_MEM0_HIGHADDR
+PARAMETER C_MEM0_HIGHADDR = 0x00000000, DT = std_logic_vector, BUS = SPLB, ADDRESS = HIGH, PAIR = C_MEM0_BASEADDR
+
+PARAMETER C_WB_ACCESS_TIMEOUT = 16, DT = INTEGER, RANGE = (1:256)
+PARAMETER C_WB_RETRY_TIMEOUT = 256, DT = INTEGER, RANGE = (1:256)
+PARAMETER C_WB_ACCESS_RETRIES = 4, DT = INTEGER, RANGE = (1:4)
+PARAMETER C_WB_DBUS_SIZE = 32, DT = INTEGER, ASSIGNMENT = CONSTANT
+
+## Ports
+PORT SPLB_Clk = "", DIR = I, SIGIS = CLK, BUS = SPLB
+PORT SPLB_Rst = SPLB_Rst, DIR = I, SIGIS = RST, BUS = SPLB
+PORT PLB_ABus = PLB_ABus, DIR = I, VEC = [0:31], BUS = SPLB
+PORT PLB_UABus = PLB_UABus, DIR = I, VEC = [0:31], BUS = SPLB
+PORT PLB_PAValid = PLB_PAValid, DIR = I, BUS = SPLB
+PORT PLB_SAValid = PLB_SAValid, DIR = I, BUS = SPLB
+PORT PLB_rdPrim = PLB_rdPrim, DIR = I, BUS = SPLB
+PORT PLB_wrPrim = PLB_wrPrim, DIR = I, BUS = SPLB
+PORT PLB_masterID = PLB_masterID, DIR = I, VEC = [0:(C_SPLB_MID_WIDTH-1)], BUS = SPLB
+PORT PLB_abort = PLB_abort, DIR = I, BUS = SPLB
+PORT PLB_busLock = PLB_busLock, DIR = I, BUS = SPLB
+PORT PLB_RNW = PLB_RNW, DIR = I, BUS = SPLB
+PORT PLB_BE = PLB_BE, DIR = I, VEC = [0:((C_SPLB_DWIDTH/8)-1)], BUS = SPLB
+PORT PLB_MSize = PLB_MSize, DIR = I, VEC = [0:1], BUS = SPLB
+PORT PLB_size = PLB_size, DIR = I, VEC = [0:3], BUS = SPLB
+PORT PLB_type = PLB_type, DIR = I, VEC = [0:2], BUS = SPLB
+PORT PLB_lockErr = PLB_lockErr, DIR = I, BUS = SPLB
+PORT PLB_wrDBus = PLB_wrDBus, DIR = I, VEC = [0:(C_SPLB_DWIDTH-1)], BUS = SPLB
+PORT PLB_wrBurst = PLB_wrBurst, DIR = I, BUS = SPLB
+PORT PLB_rdBurst = PLB_rdBurst, DIR = I, BUS = SPLB
+PORT PLB_wrPendReq = PLB_wrPendReq, DIR = I, BUS = SPLB
+PORT PLB_rdPendReq = PLB_rdPendReq, DIR = I, BUS = SPLB
+PORT PLB_wrPendPri = PLB_wrPendPri, DIR = I, VEC = [0:1], BUS = SPLB
+PORT PLB_rdPendPri = PLB_rdPendPri, DIR = I, VEC = [0:1], BUS = SPLB
+PORT PLB_reqPri = PLB_reqPri, DIR = I, VEC = [0:1], BUS = SPLB
+PORT PLB_TAttribute = PLB_TAttribute, DIR = I, VEC = [0:15], BUS = SPLB
+PORT Sl_addrAck = Sl_addrAck, DIR = O, BUS = SPLB
+PORT Sl_SSize = Sl_SSize, DIR = O, VEC = [0:1], BUS = SPLB
+PORT Sl_wait = Sl_wait, DIR = O, BUS = SPLB
+PORT Sl_rearbitrate = Sl_rearbitrate, DIR = O, BUS = SPLB
+PORT Sl_wrDAck = Sl_wrDAck, DIR = O, BUS = SPLB
+PORT Sl_wrComp = Sl_wrComp, DIR = O, BUS = SPLB
+PORT Sl_wrBTerm = Sl_wrBTerm, DIR = O, BUS = SPLB
+PORT Sl_rdDBus = Sl_rdDBus, DIR = O, VEC = [0:(C_SPLB_DWIDTH-1)], BUS = SPLB
+PORT Sl_rdWdAddr = Sl_rdWdAddr, DIR = O, VEC = [0:3], BUS = SPLB
+PORT Sl_rdDAck = Sl_rdDAck, DIR = O, BUS = SPLB
+PORT Sl_rdComp = Sl_rdComp, DIR = O, BUS = SPLB
+PORT Sl_rdBTerm = Sl_rdBTerm, DIR = O, BUS = SPLB
+PORT Sl_MBusy = Sl_MBusy, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
+PORT Sl_MWrErr = Sl_MWrErr, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
+PORT Sl_MRdErr = Sl_MRdErr, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
+PORT Sl_MIRQ = Sl_MIRQ, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
+
+
+
+
+PORT WB_CLK_O = "", DIR = O
+PORT WB_RST_O = "", DIR = O
+PORT WB_ADR_O = "", DIR = O, VEC = [0:31]
+PORT WB_DAT_O = "", DIR = O, VEC = [0:C_WB_DBUS_SIZE-1]
+PORT WB_SEL_O = "", DIR = O, VEC = [0:(C_WB_DBUS_SIZE/8)-1]
+PORT WB_CYC_O = "", DIR = O
+PORT WB_LOCK_O = "", DIR = O
+PORT WB_STB_O = "", DIR = O
+PORT WB_WE_O = "", DIR = O
+PORT WB_DAT_I = "", DIR = I, VEC = [0:C_WB_DBUS_SIZE-1]
+PORT WB_ACK_I = "", DIR = I
+PORT WB_ERR_I = "", DIR = I
+PORT WB_RTY_I = "", DIR = I
+
+
+
+
+
+
+
+
+END
Index: plbv46_to_wb_bridge/trunk/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.pao
===================================================================
--- plbv46_to_wb_bridge/trunk/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.pao (nonexistent)
+++ plbv46_to_wb_bridge/trunk/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.pao (revision 10)
@@ -0,0 +1,16 @@
+##############################################################################
+## Description: Peripheral Analysis Order
+##############################################################################
+
+lib proc_common_v2_00_a proc_common_pkg vhdl
+lib proc_common_v2_00_a ipif_pkg vhdl
+lib proc_common_v2_00_a or_muxcy vhdl
+lib proc_common_v2_00_a or_gate128 vhdl
+lib proc_common_v2_00_a family_support vhdl
+lib proc_common_v2_00_a pselect_f vhdl
+lib proc_common_v2_00_a counter_f vhdl
+lib plbv46_slave_single_v1_00_a plb_address_decoder vhdl
+lib plbv46_slave_single_v1_00_a plb_slave_attachment vhdl
+lib plbv46_slave_single_v1_00_a plbv46_slave_single vhdl
+lib plbv46_2_wb_v1_10_a user_logic vhdl
+lib plbv46_2_wb_v1_10_a plbv46_2_wb vhdl
Index: plbv46_to_wb_bridge/trunk/pcore/plbv46_2_wb_v1_10_a/readme.txt
===================================================================
Index: plbv46_to_wb_bridge/trunk
===================================================================
--- plbv46_to_wb_bridge/trunk (nonexistent)
+++ plbv46_to_wb_bridge/trunk (revision 10)
plbv46_to_wb_bridge/trunk
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: plbv46_to_wb_bridge/web_uploads
===================================================================
--- plbv46_to_wb_bridge/web_uploads (nonexistent)
+++ plbv46_to_wb_bridge/web_uploads (revision 10)
plbv46_to_wb_bridge/web_uploads
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: plbv46_to_wb_bridge/branches
===================================================================
--- plbv46_to_wb_bridge/branches (nonexistent)
+++ plbv46_to_wb_bridge/branches (revision 10)
plbv46_to_wb_bridge/branches
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: plbv46_to_wb_bridge/tags/initial/doc/src/plbv46_2_wb.doc
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: plbv46_to_wb_bridge/tags/initial/doc/src/plbv46_2_wb.doc
===================================================================
--- plbv46_to_wb_bridge/tags/initial/doc/src/plbv46_2_wb.doc (nonexistent)
+++ plbv46_to_wb_bridge/tags/initial/doc/src/plbv46_2_wb.doc (revision 10)
plbv46_to_wb_bridge/tags/initial/doc/src/plbv46_2_wb.doc
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: plbv46_to_wb_bridge/tags/initial/doc/plbv46_2_wb.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: plbv46_to_wb_bridge/tags/initial/doc/plbv46_2_wb.pdf
===================================================================
--- plbv46_to_wb_bridge/tags/initial/doc/plbv46_2_wb.pdf (nonexistent)
+++ plbv46_to_wb_bridge/tags/initial/doc/plbv46_2_wb.pdf (revision 10)
plbv46_to_wb_bridge/tags/initial/doc/plbv46_2_wb.pdf
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: plbv46_to_wb_bridge/tags/initial/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/plbv46_2_wb.vhd
===================================================================
--- plbv46_to_wb_bridge/tags/initial/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/plbv46_2_wb.vhd (nonexistent)
+++ plbv46_to_wb_bridge/tags/initial/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/plbv46_2_wb.vhd (revision 10)
@@ -0,0 +1,367 @@
+------------------------------------------------------------------------------
+--
+-- ***************************************************************************
+-- ** Copyright (c) 1995-2008 Xilinx, Inc. All rights reserved. **
+-- ** **
+-- ** Xilinx, Inc. **
+-- ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" **
+-- ** AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND **
+-- ** SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, **
+-- ** OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, **
+-- ** APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION **
+-- ** THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, **
+-- ** AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE **
+-- ** FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY **
+-- ** WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE **
+-- ** IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR **
+-- ** REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF **
+-- ** INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS **
+-- ** FOR A PARTICULAR PURPOSE. **
+-- ** **
+-- ***************************************************************************
+--
+------------------------------------------------------------------------------
+-- Filename: plbv46_2_wb.vhd
+-- Version: 1.10.a
+-- Creation Date: Tue Jul 15, 2008
+-- Description: PLB version 4.6 to Wishbone B3 Bridge
+-- Simple non-bursting bridge interface from Xilinx-derivative
+-- PLB Bus for Microblaze/PowerPC to OpenCores.org Wishbone
+-- bridge standard.
+--
+-- File Revisions:
+-- 7/15/08 - mds : Initial version
+-- 7/25/08 - mds : Added retry and bus error detection.
+--
+------------------------------------------------------------------------------
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_arith.all;
+use ieee.std_logic_unsigned.all;
+
+library proc_common_v2_00_a;
+use proc_common_v2_00_a.proc_common_pkg.all;
+use proc_common_v2_00_a.ipif_pkg.all;
+
+library plbv46_slave_single_v1_00_a;
+use plbv46_slave_single_v1_00_a.plbv46_slave_single;
+
+library plbv46_2_wb_v1_10_a;
+use plbv46_2_wb_v1_10_a.user_logic;
+
+------------------------------------------------------------------------------
+-- Entity section
+------------------------------------------------------------------------------
+entity plbv46_2_wb is
+ generic
+ (
+ -- ADD USER GENERICS BELOW THIS LINE ---------------
+ C_WB_DBUS_SIZE : integer := 32; -- Constant
+ C_WB_ACCESS_TIMEOUT : integer := 16; -- Ranges from 1 to 256
+ C_WB_RETRY_TIMEOUT : integer := 64; -- Ranges from 1 to 256
+ C_WB_ACCESS_RETRIES : integer := 4; -- Ranges from 1 to 4
+ -- ADD USER GENERICS ABOVE THIS LINE ---------------
+
+ -- DO NOT EDIT BELOW THIS LINE ---------------------
+ -- Bus protocol parameters, do not add to or delete
+ C_SPLB_AWIDTH : integer := 32;
+ C_SPLB_DWIDTH : integer := 128;
+ C_SPLB_NUM_MASTERS : integer := 8;
+ C_SPLB_MID_WIDTH : integer := 3;
+ C_SPLB_NATIVE_DWIDTH : integer := 32;
+ C_SPLB_P2P : integer := 0;
+ C_SPLB_SUPPORT_BURSTS : integer := 0;
+ C_SPLB_SMALLEST_MASTER : integer := 32;
+ C_SPLB_CLK_PERIOD_PS : integer := 10000;
+ C_INCLUDE_DPHASE_TIMER : integer := 0;
+ C_FAMILY : string := "virtex5";
+ C_MEM0_BASEADDR : std_logic_vector := X"FFFFFFFF";
+ C_MEM0_HIGHADDR : std_logic_vector := X"00000000"
+ -- DO NOT EDIT ABOVE THIS LINE ---------------------
+ );
+ port
+ (
+ -- ADD USER PORTS BELOW THIS LINE ------------------
+ WB_CLK_O : out std_logic;
+ WB_RST_O : out std_logic;
+ WB_ADR_O : out std_logic_vector(31 downto 0);
+ WB_DAT_O : out std_logic_vector(C_WB_DBUS_SIZE-1 downto 0);
+ WB_SEL_O : out std_logic_vector((C_WB_DBUS_SIZE/8)-1 downto 0);
+ WB_CYC_O : out std_logic;
+ WB_LOCK_O : out std_logic;
+ WB_STB_O : out std_logic;
+ WB_WE_O : out std_logic;
+ WB_DAT_I : in std_logic_vector(C_WB_DBUS_SIZE-1 downto 0);
+ WB_ACK_I : in std_logic;
+ WB_ERR_I : in std_logic;
+ WB_RTY_I : in std_logic;
+ -- ADD USER PORTS ABOVE THIS LINE ------------------
+
+ -- DO NOT EDIT BELOW THIS LINE ---------------------
+ -- Bus protocol ports, do not add to or delete
+ SPLB_Clk : in std_logic;
+ SPLB_Rst : in std_logic;
+ PLB_ABus : in std_logic_vector(0 to 31);
+ PLB_UABus : in std_logic_vector(0 to 31);
+ PLB_PAValid : in std_logic;
+ PLB_SAValid : in std_logic;
+ PLB_rdPrim : in std_logic;
+ PLB_wrPrim : in std_logic;
+ PLB_masterID : in std_logic_vector(0 to C_SPLB_MID_WIDTH-1);
+ PLB_abort : in std_logic;
+ PLB_busLock : in std_logic;
+ PLB_RNW : in std_logic;
+ PLB_BE : in std_logic_vector(0 to C_SPLB_DWIDTH/8-1);
+ PLB_MSize : in std_logic_vector(0 to 1);
+ PLB_size : in std_logic_vector(0 to 3);
+ PLB_type : in std_logic_vector(0 to 2);
+ PLB_lockErr : in std_logic;
+ PLB_wrDBus : in std_logic_vector(0 to C_SPLB_DWIDTH-1);
+ PLB_wrBurst : in std_logic;
+ PLB_rdBurst : in std_logic;
+ PLB_wrPendReq : in std_logic;
+ PLB_rdPendReq : in std_logic;
+ PLB_wrPendPri : in std_logic_vector(0 to 1);
+ PLB_rdPendPri : in std_logic_vector(0 to 1);
+ PLB_reqPri : in std_logic_vector(0 to 1);
+ PLB_TAttribute : in std_logic_vector(0 to 15);
+ Sl_addrAck : out std_logic;
+ Sl_SSize : out std_logic_vector(0 to 1);
+ Sl_wait : out std_logic;
+ Sl_rearbitrate : out std_logic;
+ Sl_wrDAck : out std_logic;
+ Sl_wrComp : out std_logic;
+ Sl_wrBTerm : out std_logic;
+ Sl_rdDBus : out std_logic_vector(0 to C_SPLB_DWIDTH-1);
+ Sl_rdWdAddr : out std_logic_vector(0 to 3);
+ Sl_rdDAck : out std_logic;
+ Sl_rdComp : out std_logic;
+ Sl_rdBTerm : out std_logic;
+ Sl_MBusy : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
+ Sl_MWrErr : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
+ Sl_MRdErr : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
+ Sl_MIRQ : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1)
+ -- DO NOT EDIT ABOVE THIS LINE ---------------------
+ );
+
+ attribute SIGIS : string;
+ attribute SIGIS of SPLB_Clk : signal is "CLK";
+ attribute SIGIS of SPLB_Rst : signal is "RST";
+
+end entity plbv46_2_wb;
+
+------------------------------------------------------------------------------
+-- Architecture section
+------------------------------------------------------------------------------
+
+architecture IMP of plbv46_2_wb is
+
+ ------------------------------------------
+ -- Array of base/high address pairs for each address range
+ ------------------------------------------
+ constant ZERO_ADDR_PAD : std_logic_vector(0 to 31) := (others => '0');
+
+ constant IPIF_ARD_ADDR_RANGE_ARRAY : SLV64_ARRAY_TYPE :=
+ (
+ ZERO_ADDR_PAD & C_MEM0_BASEADDR, -- user logic memory space 0 base address
+ ZERO_ADDR_PAD & C_MEM0_HIGHADDR -- user logic memory space 0 high address
+ );
+
+ ------------------------------------------
+ -- Array of desired number of chip enables for each address range
+ ------------------------------------------
+ constant USER_NUM_MEM : integer := 1;
+
+ constant IPIF_ARD_NUM_CE_ARRAY : INTEGER_ARRAY_TYPE :=
+ (
+ 0 => 1 -- number of ce for user logic memory space 0 (always 1 chip enable)
+ );
+
+ ------------------------------------------
+ -- Ratio of bus clock to core clock (for use in dual clock systems)
+ -- 1 = ratio is 1:1
+ -- 2 = ratio is 2:1
+ ------------------------------------------
+ constant IPIF_BUS2CORE_CLK_RATIO : integer := 1;
+
+ ------------------------------------------
+ -- Width of the slave data bus (32 only)
+ ------------------------------------------
+ constant USER_SLV_DWIDTH : integer := C_SPLB_NATIVE_DWIDTH;
+
+ constant IPIF_SLV_DWIDTH : integer := C_SPLB_NATIVE_DWIDTH;
+
+ ------------------------------------------
+ -- Width of the slave address bus (32 only)
+ ------------------------------------------
+ constant USER_SLV_AWIDTH : integer := C_SPLB_AWIDTH;
+
+ ------------------------------------------
+ -- Index for CS/CE
+ ------------------------------------------
+ constant USER_MEM0_CS_INDEX : integer := 0;
+
+ constant USER_CS_INDEX : integer := USER_MEM0_CS_INDEX;
+
+ ------------------------------------------
+ -- IP Interconnect (IPIC) signal declarations
+ ------------------------------------------
+ signal ipif_Bus2IP_Clk : std_logic;
+ signal ipif_Bus2IP_Reset : std_logic;
+ signal ipif_IP2Bus_Data : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);
+ signal ipif_IP2Bus_WrAck : std_logic;
+ signal ipif_IP2Bus_RdAck : std_logic;
+ signal ipif_IP2Bus_Error : std_logic;
+ signal ipif_Bus2IP_Addr : std_logic_vector(0 to C_SPLB_AWIDTH-1);
+ signal ipif_Bus2IP_Data : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);
+ signal ipif_Bus2IP_RNW : std_logic;
+ signal ipif_Bus2IP_BE : std_logic_vector(0 to IPIF_SLV_DWIDTH/8-1);
+ signal ipif_Bus2IP_CS : std_logic_vector(0 to ((IPIF_ARD_ADDR_RANGE_ARRAY'length)/2)-1);
+ signal ipif_Bus2IP_RdCE : std_logic_vector(0 to calc_num_ce(IPIF_ARD_NUM_CE_ARRAY)-1);
+ signal ipif_Bus2IP_WrCE : std_logic_vector(0 to calc_num_ce(IPIF_ARD_NUM_CE_ARRAY)-1);
+ signal user_IP2Bus_Data : std_logic_vector(0 to USER_SLV_DWIDTH-1);
+ signal user_IP2Bus_RdAck : std_logic;
+ signal user_IP2Bus_WrAck : std_logic;
+ signal user_IP2Bus_Error : std_logic;
+
+begin
+
+ ------------------------------------------
+ -- instantiate plbv46_slave_single
+ ------------------------------------------
+ PLBV46_SLAVE_SINGLE_I : entity plbv46_slave_single_v1_00_a.plbv46_slave_single
+ generic map
+ (
+ C_ARD_ADDR_RANGE_ARRAY => IPIF_ARD_ADDR_RANGE_ARRAY,
+ C_ARD_NUM_CE_ARRAY => IPIF_ARD_NUM_CE_ARRAY,
+ C_SPLB_P2P => C_SPLB_P2P,
+ C_BUS2CORE_CLK_RATIO => IPIF_BUS2CORE_CLK_RATIO,
+ C_SPLB_MID_WIDTH => C_SPLB_MID_WIDTH,
+ C_SPLB_NUM_MASTERS => C_SPLB_NUM_MASTERS,
+ C_SPLB_AWIDTH => C_SPLB_AWIDTH,
+ C_SPLB_DWIDTH => C_SPLB_DWIDTH,
+ C_SIPIF_DWIDTH => IPIF_SLV_DWIDTH,
+ C_INCLUDE_DPHASE_TIMER => C_INCLUDE_DPHASE_TIMER,
+ C_FAMILY => C_FAMILY
+ )
+ port map
+ (
+ SPLB_Clk => SPLB_Clk,
+ SPLB_Rst => SPLB_Rst,
+ PLB_ABus => PLB_ABus,
+ PLB_UABus => PLB_UABus,
+ PLB_PAValid => PLB_PAValid,
+ PLB_SAValid => PLB_SAValid,
+ PLB_rdPrim => PLB_rdPrim,
+ PLB_wrPrim => PLB_wrPrim,
+ PLB_masterID => PLB_masterID,
+ PLB_abort => PLB_abort,
+ PLB_busLock => PLB_busLock,
+ PLB_RNW => PLB_RNW,
+ PLB_BE => PLB_BE,
+ PLB_MSize => PLB_MSize,
+ PLB_size => PLB_size,
+ PLB_type => PLB_type,
+ PLB_lockErr => PLB_lockErr,
+ PLB_wrDBus => PLB_wrDBus,
+ PLB_wrBurst => PLB_wrBurst,
+ PLB_rdBurst => PLB_rdBurst,
+ PLB_wrPendReq => PLB_wrPendReq,
+ PLB_rdPendReq => PLB_rdPendReq,
+ PLB_wrPendPri => PLB_wrPendPri,
+ PLB_rdPendPri => PLB_rdPendPri,
+ PLB_reqPri => PLB_reqPri,
+ PLB_TAttribute => PLB_TAttribute,
+ Sl_addrAck => Sl_addrAck,
+ Sl_SSize => Sl_SSize,
+ Sl_wait => Sl_wait,
+ Sl_rearbitrate => Sl_rearbitrate,
+ Sl_wrDAck => Sl_wrDAck,
+ Sl_wrComp => Sl_wrComp,
+ Sl_wrBTerm => Sl_wrBTerm,
+ Sl_rdDBus => Sl_rdDBus,
+ Sl_rdWdAddr => Sl_rdWdAddr,
+ Sl_rdDAck => Sl_rdDAck,
+ Sl_rdComp => Sl_rdComp,
+ Sl_rdBTerm => Sl_rdBTerm,
+ Sl_MBusy => Sl_MBusy,
+ Sl_MWrErr => Sl_MWrErr,
+ Sl_MRdErr => Sl_MRdErr,
+ Sl_MIRQ => Sl_MIRQ,
+ Bus2IP_Clk => ipif_Bus2IP_Clk,
+ Bus2IP_Reset => ipif_Bus2IP_Reset,
+ IP2Bus_Data => ipif_IP2Bus_Data,
+ IP2Bus_WrAck => ipif_IP2Bus_WrAck,
+ IP2Bus_RdAck => ipif_IP2Bus_RdAck,
+ IP2Bus_Error => ipif_IP2Bus_Error,
+ Bus2IP_Addr => ipif_Bus2IP_Addr,
+ Bus2IP_Data => ipif_Bus2IP_Data,
+ Bus2IP_RNW => ipif_Bus2IP_RNW,
+ Bus2IP_BE => ipif_Bus2IP_BE,
+ Bus2IP_CS => ipif_Bus2IP_CS,
+ Bus2IP_RdCE => ipif_Bus2IP_RdCE,
+ Bus2IP_WrCE => ipif_Bus2IP_WrCE
+ );
+
+ ------------------------------------------
+ -- instantiate User Logic
+ ------------------------------------------
+ USER_LOGIC_I : entity plbv46_2_wb_v1_00_a.user_logic
+ generic map
+ (
+ -- MAP USER GENERICS BELOW THIS LINE ---------------
+ C_WB_DBUS_SIZE => C_WB_DBUS_SIZE,
+ C_WB_ACCESS_TIMEOUT => C_WB_ACCESS_TIMEOUT,
+ C_WB_RETRY_TIMEOUT => C_WB_RETRY_TIMEOUT,
+ C_WB_ACCESS_RETRIES => C_WB_ACCESS_RETRIES,
+ -- MAP USER GENERICS ABOVE THIS LINE ---------------
+
+ C_SLV_AWIDTH => USER_SLV_AWIDTH,
+ C_SLV_DWIDTH => USER_SLV_DWIDTH,
+ C_NUM_MEM => USER_NUM_MEM
+ )
+ port map
+ (
+ -- MAP USER PORTS BELOW THIS LINE ------------------
+
+ WB_CLK_O => WB_CLK_O ,
+ WB_RST_O => WB_RST_O ,
+ WB_ADR_O => WB_ADR_O ,
+ WB_DAT_O => WB_DAT_O ,
+ WB_SEL_O => WB_SEL_O ,
+ WB_CYC_O => WB_CYC_O ,
+ WB_STB_O => WB_STB_O ,
+ WB_WE_O => WB_WE_O ,
+ WB_DAT_I => WB_DAT_I ,
+ WB_ACK_I => WB_ACK_I ,
+ WB_ERR_I => WB_ERR_I ,
+ WB_RTY_I => WB_RTY_I ,
+
+
+ --USER ports mapped here
+ -- MAP USER PORTS ABOVE THIS LINE ------------------
+
+ Bus2IP_Clk => ipif_Bus2IP_Clk,
+ Bus2IP_Reset => ipif_Bus2IP_Reset,
+ Bus2IP_Addr => ipif_Bus2IP_Addr,
+ Bus2IP_CS => ipif_Bus2IP_CS(USER_CS_INDEX to USER_CS_INDEX+USER_NUM_MEM-1),
+ Bus2IP_RNW => ipif_Bus2IP_RNW,
+ Bus2IP_Data => ipif_Bus2IP_Data,
+ Bus2IP_BE => ipif_Bus2IP_BE,
+ IP2Bus_Data => user_IP2Bus_Data,
+ IP2Bus_RdAck => user_IP2Bus_RdAck,
+ IP2Bus_WrAck => user_IP2Bus_WrAck,
+ IP2Bus_Error => user_IP2Bus_Error
+ );
+
+ ------------------------------------------
+ -- connect internal signals
+ ------------------------------------------
+ WB_LOCK_O <= '0';
+
+ ipif_IP2Bus_Data <= user_IP2Bus_Data;
+ ipif_IP2Bus_WrAck <= user_IP2Bus_WrAck;
+ ipif_IP2Bus_RdAck <= user_IP2Bus_RdAck;
+ ipif_IP2Bus_Error <= user_IP2Bus_Error;
+
+end IMP;
Index: plbv46_to_wb_bridge/tags/initial/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/user_logic.vhd
===================================================================
--- plbv46_to_wb_bridge/tags/initial/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/user_logic.vhd (nonexistent)
+++ plbv46_to_wb_bridge/tags/initial/pcore/plbv46_2_wb_v1_10_a/hdl/vhdl/user_logic.vhd (revision 10)
@@ -0,0 +1,278 @@
+------------------------------------------------------------------------------
+--
+-- ***************************************************************************
+-- ** Copyright (c) 1995-2008 Xilinx, Inc. All rights reserved. **
+-- ** **
+-- ** Xilinx, Inc. **
+-- ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" **
+-- ** AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND **
+-- ** SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, **
+-- ** OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, **
+-- ** APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION **
+-- ** THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, **
+-- ** AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE **
+-- ** FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY **
+-- ** WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE **
+-- ** IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR **
+-- ** REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF **
+-- ** INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS **
+-- ** FOR A PARTICULAR PURPOSE. **
+-- ** **
+-- ***************************************************************************
+--
+------------------------------------------------------------------------------
+-- Filename: user_logic.vhd
+-- Version: 1.10.a
+-- Description: User logic.
+------------------------------------------------------------------------------
+
+-- DO NOT EDIT BELOW THIS LINE --------------------
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.std_logic_arith.all;
+use ieee.std_logic_unsigned.all;
+
+library proc_common_v2_00_a;
+use proc_common_v2_00_a.proc_common_pkg.all;
+
+
+------------------------------------------------------------------------------
+-- Entity section
+------------------------------------------------------------------------------
+
+entity user_logic is
+ generic
+ (
+ -- ADD USER GENERICS BELOW THIS LINE ---------------
+ C_WB_DBUS_SIZE : integer := 32;
+ C_WB_ACCESS_TIMEOUT : integer := 16;
+ C_WB_RETRY_TIMEOUT : integer := 256;
+ C_WB_ACCESS_RETRIES : integer := 4;
+ -- ADD USER GENERICS ABOVE THIS LINE ---------------
+
+ -- DO NOT EDIT BELOW THIS LINE ---------------------
+ -- Bus protocol parameters, do not add to or delete
+ C_SLV_AWIDTH : integer := 32;
+ C_SLV_DWIDTH : integer := 32;
+ C_NUM_MEM : integer := 1
+ -- DO NOT EDIT ABOVE THIS LINE ---------------------
+ );
+ port
+ (
+ -- ADD USER PORTS BELOW THIS LINE ------------------
+ WB_CLK_O : out std_logic;
+ WB_RST_O : out std_logic;
+ WB_ADR_O : out std_logic_vector(31 downto 0);
+ WB_DAT_O : out std_logic_vector(C_WB_DBUS_SIZE-1 downto 0);
+ WB_SEL_O : out std_logic_vector((C_WB_DBUS_SIZE/8)-1 downto 0);
+ WB_CYC_O : out std_logic;
+ WB_STB_O : out std_logic;
+ WB_WE_O : out std_logic;
+ WB_DAT_I : in std_logic_vector(C_WB_DBUS_SIZE-1 downto 0);
+ WB_ACK_I : in std_logic;
+ WB_ERR_I : in std_logic;
+ WB_RTY_I : in std_logic;
+ -- ADD USER PORTS ABOVE THIS LINE ------------------
+
+ -- DO NOT EDIT BELOW THIS LINE ---------------------
+ -- Bus protocol ports, do not add to or delete
+ Bus2IP_Clk : in std_logic;
+ Bus2IP_Reset : in std_logic;
+ Bus2IP_Addr : in std_logic_vector(0 to C_SLV_AWIDTH-1);
+ Bus2IP_CS : in std_logic_vector(0 to C_NUM_MEM-1);
+ Bus2IP_RNW : in std_logic;
+ Bus2IP_Data : in std_logic_vector(0 to C_SLV_DWIDTH-1);
+ Bus2IP_BE : in std_logic_vector(0 to C_SLV_DWIDTH/8-1);
+ IP2Bus_Data : out std_logic_vector(0 to C_SLV_DWIDTH-1);
+ IP2Bus_RdAck : out std_logic;
+ IP2Bus_WrAck : out std_logic;
+ IP2Bus_Error : out std_logic
+ -- DO NOT EDIT ABOVE THIS LINE ---------------------
+ );
+
+ attribute SIGIS : string;
+ attribute SIGIS of Bus2IP_Clk : signal is "CLK";
+ attribute SIGIS of Bus2IP_Reset : signal is "RST";
+
+end entity user_logic;
+
+------------------------------------------------------------------------------
+-- Architecture section
+------------------------------------------------------------------------------
+architecture IMP of user_logic is
+
+ -- State Machine Declarations
+ type state_type is (ST_IDLE, ST_ACCESS, ST_RETRY_STROBE, ST_RETRY, ST_ERROR, ST_DONE);
+ signal curr_st : state_type;
+ signal next_st : state_type;
+ -- Bus Ack Decode
+ signal wb_rdack : std_logic;
+ signal wb_wrack : std_logic;
+ -- Timer used to track bus error condition and retry timouts.
+ signal timer_en : std_logic;
+ signal timer_cnt : std_logic_vector(0 to 7);
+ -- Counter used to track number of retry attempts
+ signal retry_iter : std_logic_vector(0 to 1);
+ signal retry_iter_rst : std_logic;
+ signal retry_iter_en : std_logic;
+ -- Status Signals
+ signal retry_expire : std_logic; -- Maximum Retries exceeded
+ signal access_to : std_logic; -- Bus Error Detected
+ signal retry_to : std_logic; -- Retry cycle completed
+
+begin
+
+ --
+ -- We are not buffering these signals to the WB Bus.
+ -- Nor are we running the clock at a slower rate than the PLB Bus.
+ WB_CLK_O <= Bus2IP_Clk;
+ WB_RST_O <= Bus2IP_Reset;
+
+ -- These can probably be treated as multi-cycle paths
+ -- Possibly will add in a Pipeline stage (user selectable?)
+ WB_ADR_O <= Bus2IP_Addr;
+ WB_DAT_O <= Bus2IP_Data;
+ WB_SEL_O <= Bus2IP_BE;
+ WB_WE_O <= not Bus2IP_RNW;
+
+ --
+ -- Number of retry attempts
+ --
+ process(Bus2IP_Clk) begin
+ if (rising_edge(Bus2IP_Clk)) then
+ if (retry_iter_rst = '1') then
+ retry_iter <= (others=>'0');
+ elsif (retry_iter_en = '1') then
+ retry_iter <= retry_iter + 1;
+ end if;
+
+ retry_expire <= '0';
+ if (retry_iter = conv_std_logic_vector(C_WB_ACCESS_RETRIES-1,2)) then
+ retry_expire <= '1';
+ end if;
+ end if;
+ end process;
+
+ --
+ -- Retry Wait Counter
+ --
+ process(Bus2IP_Clk) begin
+ if (rising_edge(Bus2IP_Clk)) then
+ if (timer_en = '0') then
+ timer_cnt <= (others => '0');
+ else
+ timer_cnt <= timer_cnt + 1;
+ end if;
+
+ retry_to <= '0';
+ if (timer_cnt = conv_std_logic_vector(C_WB_RETRY_TIMEOUT-1, 8)) then
+ retry_to <= '1';
+ end if;
+
+ if (timer_cnt = conv_std_logic_vector(C_WB_ACCESS_TIMEOUT-1, 8)) then
+ access_to <= '1';
+ end if;
+
+ end if;
+ end process;
+
+ --
+ --
+ -- WB Bridge State Machine (Next State Logic)
+ --
+ --
+ process(curr_st, Bus2IP_CS ,WB_RTY_I ,WB_ACK_I, retry_to, access_to) begin
+
+ next_st <= curr_st;
+ timer_en <= '0';
+ retry_iter_rst <= '0';
+ retry_iter_en <= '0';
+ WB_STB_O <= '0';
+ WB_CYC_O <= '0';
+ IP2Bus_RdAck <= '0';
+ IP2Bus_WrAck <= '0';
+ IP2Bus_Error <= '0';
+
+ case (curr_st) is
+
+
+ when ST_IDLE =>
+ retry_iter_rst <= '1';
+ if (Bus2IP_CS(0) = '1') then
+ next_st <= ST_ACCESS;
+ end if;
+
+ -- Access State
+ -- Completes when we receive either a RETRY, ACK or we timeout of the transaction.
+ -- Transaction timeout is setup by the user.
+ when ST_ACCESS =>
+ WB_STB_O <= '1';
+ WB_CYC_O <= '1';
+ timer_en <= '1';
+ if (WB_RTY_I = '1') then
+ next_st <= ST_RETRY_STROBE;
+ elsif (WB_ACK_I = '1') then
+ next_st <= ST_DONE;
+ elsif (access_to = '1') then
+ next_st <= ST_ERROR;
+ end if;
+
+ -- Retry Strobe
+ -- Simply used to reset timer and increment our retries.
+ -- We will also check to see if we have reached out limit of retries.
+ when ST_RETRY_STROBE =>
+ retry_iter_en <= '1';
+ if (retry_expire = '1') then
+ next_st <= ST_ERROR;
+ else
+ next_st <= ST_RETRY;
+ end if;
+
+ -- Retry
+ -- Sit here and wait until we issues a WB Retry
+ when ST_RETRY =>
+ timer_en <= '1';
+ if (retry_to = '1') then
+ next_st <= ST_ACCESS;
+ end if;
+
+ -- Error
+ -- Issue PLB Error
+ when ST_ERROR =>
+ IP2Bus_Error <= '1';
+ IP2Bus_WrAck <= not Bus2IP_RNW;
+ IP2Bus_RdAck <= Bus2IP_RNW;
+ next_st <= ST_IDLE;
+
+ when ST_DONE =>
+ IP2Bus_RdAck <= Bus2IP_RNW;
+ IP2Bus_WrAck <= not Bus2IP_RNW;
+ next_st <= ST_IDLE;
+
+
+ end case;
+
+ end process;
+
+ --
+ --
+ -- WB Bridge State Machine (Current State Logic)
+ --
+ --
+ process(Bus2IP_Clk) begin
+ if (rising_edge(Bus2IP_Clk)) then
+ if (Bus2IP_Reset = '1') then
+ curr_st <= ST_IDLE;
+ else
+ curr_st <= next_st;
+ end if;
+ end if;
+ end process;
+
+ ------------------------------------------
+ -- Example code to drive IP to Bus signals
+ ------------------------------------------
+ IP2Bus_Data <= WB_DAT_I when wb_rdack = '1' else
+ (others => '0');
+
+end IMP;
Index: plbv46_to_wb_bridge/tags/initial/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.pao
===================================================================
--- plbv46_to_wb_bridge/tags/initial/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.pao (nonexistent)
+++ plbv46_to_wb_bridge/tags/initial/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.pao (revision 10)
@@ -0,0 +1,16 @@
+##############################################################################
+## Description: Peripheral Analysis Order
+##############################################################################
+
+lib proc_common_v2_00_a proc_common_pkg vhdl
+lib proc_common_v2_00_a ipif_pkg vhdl
+lib proc_common_v2_00_a or_muxcy vhdl
+lib proc_common_v2_00_a or_gate128 vhdl
+lib proc_common_v2_00_a family_support vhdl
+lib proc_common_v2_00_a pselect_f vhdl
+lib proc_common_v2_00_a counter_f vhdl
+lib plbv46_slave_single_v1_00_a plb_address_decoder vhdl
+lib plbv46_slave_single_v1_00_a plb_slave_attachment vhdl
+lib plbv46_slave_single_v1_00_a plbv46_slave_single vhdl
+lib plbv46_2_wb_v1_10_a user_logic vhdl
+lib plbv46_2_wb_v1_10_a plbv46_2_wb vhdl
Index: plbv46_to_wb_bridge/tags/initial/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.mpd
===================================================================
--- plbv46_to_wb_bridge/tags/initial/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.mpd (nonexistent)
+++ plbv46_to_wb_bridge/tags/initial/pcore/plbv46_2_wb_v1_10_a/data/plbv46_2_wb_v2_1_0.mpd (revision 10)
@@ -0,0 +1,111 @@
+###################################################################
+##
+## Name : plbv46_2_wb
+## Desc : Microprocessor Peripheral Description
+## : Automatically generated by PsfUtility
+##
+###################################################################
+
+BEGIN plbv46_2_wb
+
+## Peripheral Options
+OPTION IPTYPE = PERIPHERAL
+OPTION IMP_NETLIST = TRUE
+OPTION HDL = VHDL
+OPTION ARCH_SUPPORT_MAP = (OTHERS=DEVELOPMENT)
+OPTION IP_GROUP = MICROBLAZE:PPC:Bus and Bridge
+OPTION DESC = PLBv46 to Wishbone B3 Bridge
+
+
+## Bus Interfaces
+BUS_INTERFACE BUS = SPLB, BUS_TYPE = SLAVE, BUS_STD = PLBV46
+
+## Generics for VHDL or Parameters for Verilog
+PARAMETER C_SPLB_AWIDTH = 32, DT = INTEGER, BUS = SPLB, ASSIGNMENT = CONSTANT
+PARAMETER C_SPLB_DWIDTH = 128, DT = INTEGER, BUS = SPLB, RANGE = (32, 64, 128)
+PARAMETER C_SPLB_NUM_MASTERS = 8, DT = INTEGER, BUS = SPLB, RANGE = (1:16)
+PARAMETER C_SPLB_MID_WIDTH = 3, DT = INTEGER, BUS = SPLB, RANGE = (1:4)
+PARAMETER C_SPLB_NATIVE_DWIDTH = 32, DT = INTEGER, BUS = SPLB, RANGE = (32, 64, 128), ASSIGNMENT = CONSTANT
+PARAMETER C_SPLB_P2P = 0, DT = INTEGER, BUS = SPLB, RANGE = (0, 1)
+PARAMETER C_SPLB_SUPPORT_BURSTS = 0, DT = INTEGER, BUS = SPLB, RANGE = (0, 1), ASSIGNMENT = CONSTANT
+PARAMETER C_SPLB_SMALLEST_MASTER = 32, DT = INTEGER, BUS = SPLB, RANGE = (32, 64, 128)
+PARAMETER C_SPLB_CLK_PERIOD_PS = 10000, DT = INTEGER, BUS = SPLB
+PARAMETER C_INCLUDE_DPHASE_TIMER = 0, DT = INTEGER, RANGE = (0, 1)
+PARAMETER C_FAMILY = virtex5, DT = STRING
+PARAMETER C_MEM0_BASEADDR = 0xffffffff, DT = std_logic_vector, BUS = SPLB, ADDRESS = BASE, PAIR = C_MEM0_HIGHADDR
+PARAMETER C_MEM0_HIGHADDR = 0x00000000, DT = std_logic_vector, BUS = SPLB, ADDRESS = HIGH, PAIR = C_MEM0_BASEADDR
+
+PARAMETER C_WB_ACCESS_TIMEOUT = 16, DT = INTEGER, RANGE = (1:256)
+PARAMETER C_WB_RETRY_TIMEOUT = 256, DT = INTEGER, RANGE = (1:256)
+PARAMETER C_WB_ACCESS_RETRIES = 4, DT = INTEGER, RANGE = (1:4)
+PARAMETER C_WB_DBUS_SIZE = 32, DT = INTEGER, ASSIGNMENT = CONSTANT
+
+## Ports
+PORT SPLB_Clk = "", DIR = I, SIGIS = CLK, BUS = SPLB
+PORT SPLB_Rst = SPLB_Rst, DIR = I, SIGIS = RST, BUS = SPLB
+PORT PLB_ABus = PLB_ABus, DIR = I, VEC = [0:31], BUS = SPLB
+PORT PLB_UABus = PLB_UABus, DIR = I, VEC = [0:31], BUS = SPLB
+PORT PLB_PAValid = PLB_PAValid, DIR = I, BUS = SPLB
+PORT PLB_SAValid = PLB_SAValid, DIR = I, BUS = SPLB
+PORT PLB_rdPrim = PLB_rdPrim, DIR = I, BUS = SPLB
+PORT PLB_wrPrim = PLB_wrPrim, DIR = I, BUS = SPLB
+PORT PLB_masterID = PLB_masterID, DIR = I, VEC = [0:(C_SPLB_MID_WIDTH-1)], BUS = SPLB
+PORT PLB_abort = PLB_abort, DIR = I, BUS = SPLB
+PORT PLB_busLock = PLB_busLock, DIR = I, BUS = SPLB
+PORT PLB_RNW = PLB_RNW, DIR = I, BUS = SPLB
+PORT PLB_BE = PLB_BE, DIR = I, VEC = [0:((C_SPLB_DWIDTH/8)-1)], BUS = SPLB
+PORT PLB_MSize = PLB_MSize, DIR = I, VEC = [0:1], BUS = SPLB
+PORT PLB_size = PLB_size, DIR = I, VEC = [0:3], BUS = SPLB
+PORT PLB_type = PLB_type, DIR = I, VEC = [0:2], BUS = SPLB
+PORT PLB_lockErr = PLB_lockErr, DIR = I, BUS = SPLB
+PORT PLB_wrDBus = PLB_wrDBus, DIR = I, VEC = [0:(C_SPLB_DWIDTH-1)], BUS = SPLB
+PORT PLB_wrBurst = PLB_wrBurst, DIR = I, BUS = SPLB
+PORT PLB_rdBurst = PLB_rdBurst, DIR = I, BUS = SPLB
+PORT PLB_wrPendReq = PLB_wrPendReq, DIR = I, BUS = SPLB
+PORT PLB_rdPendReq = PLB_rdPendReq, DIR = I, BUS = SPLB
+PORT PLB_wrPendPri = PLB_wrPendPri, DIR = I, VEC = [0:1], BUS = SPLB
+PORT PLB_rdPendPri = PLB_rdPendPri, DIR = I, VEC = [0:1], BUS = SPLB
+PORT PLB_reqPri = PLB_reqPri, DIR = I, VEC = [0:1], BUS = SPLB
+PORT PLB_TAttribute = PLB_TAttribute, DIR = I, VEC = [0:15], BUS = SPLB
+PORT Sl_addrAck = Sl_addrAck, DIR = O, BUS = SPLB
+PORT Sl_SSize = Sl_SSize, DIR = O, VEC = [0:1], BUS = SPLB
+PORT Sl_wait = Sl_wait, DIR = O, BUS = SPLB
+PORT Sl_rearbitrate = Sl_rearbitrate, DIR = O, BUS = SPLB
+PORT Sl_wrDAck = Sl_wrDAck, DIR = O, BUS = SPLB
+PORT Sl_wrComp = Sl_wrComp, DIR = O, BUS = SPLB
+PORT Sl_wrBTerm = Sl_wrBTerm, DIR = O, BUS = SPLB
+PORT Sl_rdDBus = Sl_rdDBus, DIR = O, VEC = [0:(C_SPLB_DWIDTH-1)], BUS = SPLB
+PORT Sl_rdWdAddr = Sl_rdWdAddr, DIR = O, VEC = [0:3], BUS = SPLB
+PORT Sl_rdDAck = Sl_rdDAck, DIR = O, BUS = SPLB
+PORT Sl_rdComp = Sl_rdComp, DIR = O, BUS = SPLB
+PORT Sl_rdBTerm = Sl_rdBTerm, DIR = O, BUS = SPLB
+PORT Sl_MBusy = Sl_MBusy, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
+PORT Sl_MWrErr = Sl_MWrErr, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
+PORT Sl_MRdErr = Sl_MRdErr, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
+PORT Sl_MIRQ = Sl_MIRQ, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
+
+
+
+
+PORT WB_CLK_O = "", DIR = O
+PORT WB_RST_O = "", DIR = O
+PORT WB_ADR_O = "", DIR = O, VEC = [31:0]
+PORT WB_DAT_O = "", DIR = O, VEC = [C_WB_DBUS_SIZE-1:0]
+PORT WB_SEL_O = "", DIR = O, VEC = [(C_WB_DBUS_SIZE/8)-1:0]
+PORT WB_CYC_O = "", DIR = O
+PORT WB_LOCK_O = "", DIR = O
+PORT WB_STB_O = "", DIR = O
+PORT WB_WE_O = "", DIR = O
+PORT WB_DAT_I = "", DIR = I, VEC = [C_WB_DBUS_SIZE-1:0]
+PORT WB_ACK_I = "", DIR = I
+PORT WB_ERR_I = "", DIR = I
+PORT WB_RTY_I = "", DIR = I
+
+
+
+
+
+
+
+
+END
Index: plbv46_to_wb_bridge/tags/initial/pcore/plbv46_2_wb_v1_10_a/readme.txt
===================================================================
Index: plbv46_to_wb_bridge/tags
===================================================================
--- plbv46_to_wb_bridge/tags (nonexistent)
+++ plbv46_to_wb_bridge/tags (revision 10)
plbv46_to_wb_bridge/tags
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##