Site Home   Archive Home   FAQ Home   How to search the Archive   How to Navigate the Archive   
Compare FPGA features and resources   

Threads starting:
1994JulAugSepOctNovDec1994
1995JanFebMarAprMayJunJulAugSepOctNovDec1995
1996JanFebMarAprMayJunJulAugSepOctNovDec1996
1997JanFebMarAprMayJunJulAugSepOctNovDec1997
1998JanFebMarAprMayJunJulAugSepOctNovDec1998
1999JanFebMarAprMayJunJulAugSepOctNovDec1999
2000JanFebMarAprMayJunJulAugSepOctNovDec2000
2001JanFebMarAprMayJunJulAugSepOctNovDec2001
2002JanFebMarAprMayJunJulAugSepOctNovDec2002
2003JanFebMarAprMayJunJulAugSepOctNovDec2003
2004JanFebMarAprMayJunJulAugSepOctNovDec2004
2005JanFebMarAprMayJunJulAugSepOctNovDec2005
2006JanFebMarAprMayJunJulAugSepOctNovDec2006
2007JanFebMarAprMayJunJulAugSepOctNovDec2007
2008JanFebMarAprMayJunJulAugSepOctNovDec2008
2009JanFebMarAprMayJunJulAugSepOctNovDec2009
2010JanFebMarAprMayJunJulAugSepOctNovDec2010
2011JanFebMarAprMayJunJulAugSepOctNovDec2011
2012JanFebMarAprMayJunJulAugSepOctNovDec2012
2013JanFebMarAprMayJunJulAugSepOctNovDec2013
2014JanFebMarAprMayJunJulAugSepOctNovDec2014
2015JanFebMarAprMayJunJulAugSepOctNovDec2015
2016JanFebMarAprMayJunJulAugSepOctNovDec2016
2017JanFebMarAprMayJunJulAugSepOctNovDec2017
2018JanFebMarAprMayJunJulAugSepOctNovDec2018
2019JanFebMarAprMayJunJulAugSepOctNovDec2019
2020JanFebMarAprMay2020

Authors:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Custom Search

Messages from 118050

Article: 118050
Subject: Re: PLB Master
From: Jeff Cunningham <jcc@sover.net>
Date: Mon, 16 Apr 2007 22:12:26 -0400
Links: << >>  << T >>  << A >>
Eli Hughes wrote:
> I had to implement a PLB master the other year for a project.  To be 
> honest, it is actually easier if you just get the core connect spec and 
> write it your self.
> 
> In my case, I was only doing 64-bit transfers.  The logic was actually 
> pretty simple.  I spent a week with the IPIF and it never really worked 
> right.   I told a co-worker that I did not think they ever tested the 
> IPIF master operation.
> 
> My own implementation only took a day or 2.  Believe it or not the state 
> machine to do is pretty small.

Eli,
Just curious, did you debug it with HDL simulation or chipscope?

Article: 118051
Subject: Re: FPGA High speed Transceivers for source synchronus bus application
From: Jeff Cunningham <jcc@sover.net>
Date: Mon, 16 Apr 2007 22:48:18 -0400
Links: << >>  << T >>  << A >>
cpandya@yahoo.com wrote:
> I would like to know if you have used the High speed FPGA Tranceivers
> for source synchronous bus application.  In my application, I have 20
> bit outgoing and 20 bit incoming bus.  Is it possible to do bit to
> forwarded clock alignement, I was thinking about using precision delay
> element of 5 ns resolutoin with dynamic range of 3 ns.  The data rate
> I am trying to reach is 6.375 Gbps.  Altera Stratix2 GX supports 20
> transceivers at 6.375 Gbps.
> 
> I would like to get your feedback and share your experience
> 

You might check out xilinx app notes xapp265, xapp622 among others.
-Jeff

Article: 118052
Subject: Re: EDK and Custom Peripheral: error occur when generating bitstream
From: John McCaskill <junkmail@fastertechnology.com>
Date: 16 Apr 2007 20:23:20 -0700
Links: << >>  << T >>  << A >>
On Apr 11, 2:12 am, "Allen" <lphp...@gmail.com> wrote:
> On Mar 29, 10:52 pm, "John McCaskill" <junkm...@fastertechnology.com>
> wrote:
>
>
>
> > On Mar 29, 12:45 am, "Allen" <lphp...@gmail.com> wrote:
>
> > > On Mar 25, 8:39 pm, "John McCaskill" <junkm...@fastertechnology.com>
> > > wrote:
>
> > > > On Mar 25, 12:32 am, "Allen" <lphp...@gmail.com> wrote:
>
> > > > > On Mar 23, 8:33 pm, Zara <me_z...@dea.spamcon.org> wrote:
>
> > > > > > On 23 Mar 2007 05:13:46 -0700, "Allen" <lphp...@gmail.com> wrote:
>
> > > > > > >hi all,
>
> > > > > > >first, i am sorry for my poor English.
>
> > > > > > >i use EDK 7.1i and ISE 7.1i.
>
> > > > > > >imported custom peripheral with PLB Master Interface ( not from IFIP )
> > > > > > >into my .xps project after overcame several problems.
>
> > > > > > >In the step " generate netlist " there has no error or warning.
>
> > > > > > >but in the step "Generate Bitstream",i got a error message "ERROR!!
> > > > > > >NgdBuild:455 plb_M_ABUS<62> has multiple driver(s)": return code 2
> > > > > > >abort.
>
> > > > > > >already search this problem in xilix's answer database and tried
> > > > > > >modify the parameter of C_BaseAddr, but it is still stuck here.
>
> > > > > > >does anyone meet this problem before?
>
> > > > > > >thanks in advance.
>
> > > > > > I always got that messaghe when I had some signal with two outputs
> > > > > > connected to it. That seems your case, in your plb address bus, master
> > > > > > interface.
>
> > > > > > Best regards,
>
> > > > > > Zara- Hide quoted text -
>
> > > > > > - Show quoted text -
>
> > > > > Thanks for your reply.
>
> > > > > so it might mean something wrong during import of custom peripheral?
>
> > > > > but in 64-bit PLB protocol, the address width is 32-bit.
>
> > > > > i already use (C_PLB_AWIDTH-1) to replace with constant "31" in my
> > > > > port declaration.
>
> > > > > do anything i could try to solve this problem?
>
> > > > > thank you :-)
>
> > > > The PLB address width is 32 bits.  However, the way that all the bus
> > > > signals are connected to the PLB IP is that they are concatenated
> > > > together. So if you look at the MPD file for the PLB you will see that
> > > > it defines the bus width to be 32 bits times the number of masters:
>
> > > > PORT M_ABus = M_ABus, DIR = I, VEC = [0:
> > > > (C_PLB_NUM_MASTERS*C_PLB_AWIDTH)-1]
>
> > > > So the signal plb_M_ABUS<62> is bit 30 of the second master.  Look to
> > > > see if your core has been assigned the second master slot on the PLB
> > > > bus.  Assuming that is the case, find what two sources are driving bit
> > > > 30 of the address.
>
> > > > Assuming that you left the name of your EDK project as system.xmp,
> > > > when you tell EDK to generate a netlist it will create a top level hdl
> > > > file named either system.vhd or system.v depending on your tool
> > > > settings.  You can look at this file to see how EDK has connected the
> > > > cores to the PLB.
>
> > > > It has been a while since I had to find a multi source signal, but I
> > > > think that XST will produce a warning about it in its report and tell
> > > > you what the multiple soures are. Look in the synthesis report file
> > > > for the appropriate core and see if it tells you what the source of
> > > > the problem is.
>
> > > > Since you are creating your own interface design instead of using the
> > > > IPIF, are you using the bus functional models in your simulations?  I
> > > > use these, and they make the job much easier.  I think it was not
> > > > until EDK 8.1 that they were integrated into EDK itself, but I was
> > > > able to use the CoreConnect tool kit directly from IBM in some of our
> > > > early stuff.  The bus monitors will tell you as soon as your core has
> > > > done something wrong, so you do not have to track the source of the
> > > > problem back from when the symptoms show up.
>
> > > > Regards,
>
> > > > John McCaskillwww.fastertechnology.com-Hidequotedtext -
>
> > > > - Show quoted text -
>
> > > Thanks for your reply. :-)
>
> > > Where i could see the second master is who( power pc or custom
> > > peripheral ... etc)?
> > > I don't know where to check this.
>
> > While there may be an easier way, you can just look at a PLB master
> > signal that is not a vector.  For example, if you look at plb_M_RNW in
> > your system.vhd you will see that it is defined as:
>
> > signal plb_M_RNW : std_logic_vector(0 to 2)
>
> > The entire vector is an input to the plb_wrapper. plb_M_RNW(0) will go
> > to PLB master 0, plb_M_RNW(1) will go to PLB master 1, etc.
>
> > > I opened the system.vhd to see who connect to the plb_M_Abus.
> > > "PowerPC" have 2 ports and Custom peripheral has 1 port connect to the
> > > plb_M_ABus.
> > > Next step, I am going to find the XST report file to see who drive the
> > > plb_M_ABUS<62>.
>
> > No offense intended, but with just the PowerPC, and your new custom
> > peripheral on the PLB bus the odds are that your peripheral is the
> > source of the problem.  Take a look at the synthesis report for it.
> > In EDK, in the "Project Information Area" pane, and the Project tab,
> > expand the "Report Files" selection.  Find the one for your peripheral
> > and look through it.  I think there should be a warning about multiple
> > sources driving a destination at this point. If you do not see it
> > there, try looking through the implementation/xflow.log file in the
> > "Log Files" section.
>
> > > I didn't run the simulation of this platform. I heard the "bus
> > > functional model" before, but I don't understand how to use it. Would
> > > you like to give any information about this one?
>
> > Take a look at:
>
> >http://www.xilinx.com/ise/embedded/edk6_3docs/bfm_simulation.pdf
>
> > This link is for the EDK 6.3 version of the documentation, but you
> > should have a more recent version in your EDK distribution at $EDK/doc/
> > bfm_simulation.pdf.
>
> > One of the main things that I like about using the bus functional
> > models is that the bus monitors tell you when a error occurred in the
> > simulation, and what the error was.  This saves you the effort of
> > having to search backwards from where the symptoms of the error show
> > up to figure our what has gone wrong.
>
> > > In addition the error"NgdBuild 455", there are several warnings "SFF
> > > Primitive", i didn't find this on the Xilinx answer database.. maybe
> > > this warning has something to do with the error.
>
> > > Thank you very much~
>
> > Regards,
>
> > John McCaskillwww.fastertechnology.com-Hide quoted text -
>
> > - Show quoted text -
>
> Thank in advance.
>
> I check the synthesis report and I found something in implementation/
> xflow.log file
>
> ERROR:NgdBuild:455 - logical net 'plb_M_ABus<62>' has multiple
> driver(s):
>      pin G on block ppc405_0/XST_GND with type GND,
>      pin G on block dma_mci_top_0/XST_GND with type GND,
>      pin P on block ppc405_0/XST_VCC with type VCC,
>      pin G on block plb2opb/XST_GND with type GND,
>      pin O on block plb2opb/plb2opb/I_BGO_addrAck with type LUT4,
>      pin G on block plb_bram_if_cntlr_1/XST_GND with type GND,
>      pin P on block plb_bram_if_cntlr_1/XST_VCC with type VCC
>
> There are 7 driver to drive this node and the dma_mci_top is the
> custom peripheral.
>
> I have no idea about this situation. how come does it?  I only import
> the custom peripheral and create a platform.
>
> Does it any problem happend at the process of "Import Custom
> Peripheral" ?
> 'cause, during the import procedure, I need to set some bus parameter,
> like C_PLB_NUM_MASTER...etc.
> I try to find document on the Xilinx website, but I didn't find any
> tutorail about the Import procedure.
>
> Would you like to give me any hints for solving this problem.
>
> Thank you very much.


I used the import wizard just a few times to see what it did, then I
started creating all my peripherals by hand, so I do not remember how
it works very well. But, C_PLB_NUM_MASTER is a parameter/generic that
needs to be set by EDK when it creates all the wrapper files for the
PLB peripherals. Did you set it to a numeric value?

EDK includes the source code and support files for the cores that it
comes with. Look through them for examples of how to create a PLB
slave.  If I remember correctly, the multi port memory controller
reference design also has a PLB slave that is not based on the IPIF,
and is simpler.

Regards,

John McCaskill
www.fastertechnology.com


Article: 118053
Subject: Re: dual port memory from single port RAM.
From: vlsi_learner <bajajk@gmail.com>
Date: 16 Apr 2007 22:04:51 -0700
Links: << >>  << T >>  << A >>
Hi Petter,

I was trying to do the same, using 2 SPRAM's & writing to both of them
simultaneouly using same address & data.

addr_0 = ~pa_rwb ? pa_wraddr : pa_rdaddr;    (port A is R/W port)

addr_1 = ~pa_rwb ? pa_wraddr : (pb_rwb ? pb_rdaddr : 8'b0);    (port B
is read only port)

In this case , if there is a write from port A then we cannot read
from the other port.Is this dual port
functionality?

Petter Gustad wrote:
> "vlsi_learner" <bajajk@gmail.com> writes:
>
> > My ASIC design requires dual port memories(one port R/W other port
> > only read) but there is a constraint on using it.
> > Instead I am planning to create this memory using single port RAM's.
>
> You an use two RAMs if you have enough RAM availabe in your
> ASIC. Simply write into both RAMs using the same address and data.
>
> Petter
> --
> A: Because it messes up the order in which people normally read text.
> Q: Why is top-posting such a bad thing?
> A: Top-posting.
> Q: What is the most annoying thing on usenet and in e-mail?


Article: 118054
Subject: Re: dual port memory from single port RAM.
From: Peter Alfke <alfke@sbcglobal.net>
Date: 16 Apr 2007 22:20:56 -0700
Links: << >>  << T >>  << A >>
In a dual-ported RAM, you have two independent access mechanism to the
common data, so you can read while you are writing. (In a "true dual-
ported RAM" you can also have two independent write, or two
independent read opertions going on simultaneously) But you still have
to avoid simultaneous read and write to the same location.
(Contention)
You avoid (almost) all these problem with Time-Division Multiplexing,
as I mentioned in my previous post.
Given your extremely slow speed, that's the way to go!
Peter Alfke


On Apr 16, 10:04 pm, vlsi_learner <baj...@gmail.com> wrote:
> Hi Petter,
>
> I was trying to do the same, using 2 SPRAM's & writing to both of them
> simultaneouly using same address & data.
>
> addr_0 = ~pa_rwb ? pa_wraddr : pa_rdaddr;    (port A is R/W port)
>
> addr_1 = ~pa_rwb ? pa_wraddr : (pb_rwb ? pb_rdaddr : 8'b0);    (port B
> is read only port)
>
> In this case , if there is a write from port A then we cannot read
> from the other port.Is this dual port
> functionality?
>

> Petter Gustad wrote:
> > "vlsi_learner" <baj...@gmail.com> writes:
>
> > > My ASIC design requires dual port memories(one port R/W other port
> > > only read) but there is a constraint on using it.
> > > Instead I am planning to create this memory using single port RAM's.
>
> > You an use two RAMs if you have enough RAM availabe in your
> > ASIC. Simply write into both RAMs using the same address and data.
>
> > Petter
> > --
> > A: Because it messes up the order in which people normally read text.
> > Q: Why is top-posting such a bad thing?
> > A: Top-posting.
> > Q: What is the most annoying thing on usenet and in e-mail?



Article: 118055
Subject: Re: PLB Master
From: LilacSkin <lpaulo07@iseb.fr>
Date: 17 Apr 2007 00:19:55 -0700
Links: << >>  << T >>  << A >>


Hum, you had to write a plb arbiter ?
Can you share your HDL code ?

thanks a lot !


Article: 118056
Subject: Interfacing FPGA with TTL
From: "Jalen.Ong@gmail.com" <Jalen.Ong@gmail.com>
Date: 17 Apr 2007 01:07:29 -0700
Links: << >>  << T >>  << A >>
Hi,

I am using the UP2 development board from Altera. I have programmed a
simple ALU in it. I have done some hardware tests on it through its
expansion slots but the results are inconsistent. To perform the
tests, I connect the expansion slots with IDE cables to a verabod in
which i have soldered many switches and LEDs. However the results were
inconsistent, sometimes I couldn't load the the values into the bus at
load at all. Other times when i load the upper bits, the lower bits
get erased. Any inputs on this? I was also thinking of interfacing it
with a control card made entirely of TTL chips. Power source is taken
from the TTL control card. Any inputs on the potential problems I
might face? Thanks!

Jalen


Article: 118057
Subject: plb_tft_cntlr_ref for an ML405 EDK Project
From: Peter Mendham <petermendham@NOCANNEDMEAT.computing.dundee.ac.uk>
Date: Tue, 17 Apr 2007 09:07:39 +0100
Links: << >>  << T >>  << A >>
Dear all,

I am working with an ML405 and trying to put together a project of my 
own that uses the plb_tft_cntlr_ref IP from the example project.  I 
tried to import the IP using the "Create or Import Peripheral" wizard 
but it complains that there are a bunch of signals missing that are 
needed by the PLB.  I've taken a look at the source and it certainly 
appears to be the case (caveat: I'm very inexperienced with this and I 
don't pretend to understand the PLB).  What do I need to do to get this 
IP up and running in my project in the exact same way it was in the 
example?  What am I doing wrong?  This is all in EDK 8.2i BTW.

Thanks in advance,
-- Peter

Article: 118058
Subject: Re: EDK and Custom Peripheral: error occur when generating bitstream
From: Allen <lphplab@gmail.com>
Date: 17 Apr 2007 01:27:50 -0700
Links: << >>  << T >>  << A >>
On Apr 17, 11:23 am, John McCaskill <junkm...@fastertechnology.com>
wrote:
> On Apr 11, 2:12 am, "Allen" <lphp...@gmail.com> wrote:
>
>
>
>
>
> > On Mar 29, 10:52 pm, "John McCaskill" <junkm...@fastertechnology.com>
> > wrote:
>
> > > On Mar 29, 12:45 am, "Allen" <lphp...@gmail.com> wrote:
>
> > > > On Mar 25, 8:39 pm, "John McCaskill" <junkm...@fastertechnology.com>
> > > > wrote:
>
> > > > > On Mar 25, 12:32 am, "Allen" <lphp...@gmail.com> wrote:
>
> > > > > > On Mar 23, 8:33 pm, Zara <me_z...@dea.spamcon.org> wrote:
>
> > > > > > > On 23 Mar 2007 05:13:46 -0700, "Allen" <lphp...@gmail.com> wrote:
>
> > > > > > > >hi all,
>
> > > > > > > >first, i am sorry for my poor English.
>
> > > > > > > >i use EDK 7.1i and ISE 7.1i.
>
> > > > > > > >imported custom peripheral with PLB Master Interface ( not from IFIP )
> > > > > > > >into my .xps project after overcame several problems.
>
> > > > > > > >In the step " generate netlist " there has no error or warning.
>
> > > > > > > >but in the step "Generate Bitstream",i got a error message "ERROR!!
> > > > > > > >NgdBuild:455 plb_M_ABUS<62> has multiple driver(s)": return code 2
> > > > > > > >abort.
>
> > > > > > > >already search this problem in xilix's answer database and tried
> > > > > > > >modify the parameter of C_BaseAddr, but it is still stuck here.
>
> > > > > > > >does anyone meet this problem before?
>
> > > > > > > >thanks in advance.
>
> > > > > > > I always got that messaghe when I had some signal with two outputs
> > > > > > > connected to it. That seems your case, in your plb address bus, master
> > > > > > > interface.
>
> > > > > > > Best regards,
>
> > > > > > > Zara- Hide quoted text -
>
> > > > > > > - Show quoted text -
>
> > > > > > Thanks for your reply.
>
> > > > > > so it might mean something wrong during import of custom peripheral?
>
> > > > > > but in 64-bit PLB protocol, the address width is 32-bit.
>
> > > > > > i already use (C_PLB_AWIDTH-1) to replace with constant "31" in my
> > > > > > port declaration.
>
> > > > > > do anything i could try to solve this problem?
>
> > > > > > thank you :-)
>
> > > > > The PLB address width is 32 bits.  However, the way that all the bus
> > > > > signals are connected to the PLB IP is that they are concatenated
> > > > > together. So if you look at the MPD file for the PLB you will see that
> > > > > it defines the bus width to be 32 bits times the number of masters:
>
> > > > > PORT M_ABus = M_ABus, DIR = I, VEC = [0:
> > > > > (C_PLB_NUM_MASTERS*C_PLB_AWIDTH)-1]
>
> > > > > So the signal plb_M_ABUS<62> is bit 30 of the second master.  Look to
> > > > > see if your core has been assigned the second master slot on the PLB
> > > > > bus.  Assuming that is the case, find what two sources are driving bit
> > > > > 30 of the address.
>
> > > > > Assuming that you left the name of your EDK project as system.xmp,
> > > > > when you tell EDK to generate a netlist it will create a top level hdl
> > > > > file named either system.vhd or system.v depending on your tool
> > > > > settings.  You can look at this file to see how EDK has connected the
> > > > > cores to the PLB.
>
> > > > > It has been a while since I had to find a multi source signal, but I
> > > > > think that XST will produce a warning about it in its report and tell
> > > > > you what the multiple soures are. Look in the synthesis report file
> > > > > for the appropriate core and see if it tells you what the source of
> > > > > the problem is.
>
> > > > > Since you are creating your own interface design instead of using the
> > > > > IPIF, are you using the bus functional models in your simulations?  I
> > > > > use these, and they make the job much easier.  I think it was not
> > > > > until EDK 8.1 that they were integrated into EDK itself, but I was
> > > > > able to use the CoreConnect tool kit directly from IBM in some of our
> > > > > early stuff.  The bus monitors will tell you as soon as your core has
> > > > > done something wrong, so you do not have to track the source of the
> > > > > problem back from when the symptoms show up.
>
> > > > > Regards,
>
> > > > > John McCaskillwww.fastertechnology.com-Hidequotedtext-
>
> > > > > - Show quoted text -
>
> > > > Thanks for your reply. :-)
>
> > > > Where i could see the second master is who( power pc or custom
> > > > peripheral ... etc)?
> > > > I don't know where to check this.
>
> > > While there may be an easier way, you can just look at a PLB master
> > > signal that is not a vector.  For example, if you look at plb_M_RNW in
> > > your system.vhd you will see that it is defined as:
>
> > > signal plb_M_RNW : std_logic_vector(0 to 2)
>
> > > The entire vector is an input to the plb_wrapper. plb_M_RNW(0) will go
> > > to PLB master 0, plb_M_RNW(1) will go to PLB master 1, etc.
>
> > > > I opened the system.vhd to see who connect to the plb_M_Abus.
> > > > "PowerPC" have 2 ports and Custom peripheral has 1 port connect to the
> > > > plb_M_ABus.
> > > > Next step, I am going to find the XST report file to see who drive the
> > > > plb_M_ABUS<62>.
>
> > > No offense intended, but with just the PowerPC, and your new custom
> > > peripheral on the PLB bus the odds are that your peripheral is the
> > > source of the problem.  Take a look at the synthesis report for it.
> > > In EDK, in the "Project Information Area" pane, and the Project tab,
> > > expand the "Report Files" selection.  Find the one for your peripheral
> > > and look through it.  I think there should be a warning about multiple
> > > sources driving a destination at this point. If you do not see it
> > > there, try looking through the implementation/xflow.log file in the
> > > "Log Files" section.
>
> > > > I didn't run the simulation of this platform. I heard the "bus
> > > > functional model" before, but I don't understand how to use it. Would
> > > > you like to give any information about this one?
>
> > > Take a look at:
>
> > >http://www.xilinx.com/ise/embedded/edk6_3docs/bfm_simulation.pdf
>
> > > This link is for the EDK 6.3 version of the documentation, but you
> > > should have a more recent version in your EDK distribution at $EDK/doc/
> > > bfm_simulation.pdf.
>
> > > One of the main things that I like about using the bus functional
> > > models is that the bus monitors tell you when a error occurred in the
> > > simulation, and what the error was.  This saves you the effort of
> > > having to search backwards from where the symptoms of the error show
> > > up to figure our what has gone wrong.
>
> > > > In addition the error"NgdBuild 455", there are several warnings "SFF
> > > > Primitive", i didn't find this on the Xilinx answer database.. maybe
> > > > this warning has something to do with the error.
>
> > > > Thank you very much~
>
> > > Regards,
>
> > > John McCaskillwww.fastertechnology.com-Hidequoted text -
>
> > > - Show quoted text -
>
> > Thank in advance.
>
> > I check the synthesis report and I found something in implementation/
> > xflow.log file
>
> > ERROR:NgdBuild:455 - logical net 'plb_M_ABus<62>' has multiple
> > driver(s):
> >      pin G on block ppc405_0/XST_GND with type GND,
> >      pin G on block dma_mci_top_0/XST_GND with type GND,
> >      pin P on block ppc405_0/XST_VCC with type VCC,
> >      pin G on block plb2opb/XST_GND with type GND,
> >      pin O on block plb2opb/plb2opb/I_BGO_addrAck with type LUT4,
> >      pin G on block plb_bram_if_cntlr_1/XST_GND with type GND,
> >      pin P on block plb_bram_if_cntlr_1/XST_VCC with type VCC
>
> > There are 7 driver to drive this node and the dma_mci_top is the
> > custom peripheral.
>
> > I have no idea about this situation. how come does it?  I only import
> > the custom peripheral and create a platform.
>
> > Does it any problem happend at the process of "Import Custom
> > Peripheral" ?
> > 'cause, during the import procedure, I need to set some bus parameter,
> > like C_PLB_NUM_MASTER...etc.
> > I try to find document on the Xilinx website, but I didn't find any
> > tutorail about the Import procedure.
>
> > Would you like to give me any hints for solving this problem.
>
> > Thank you very much.
>
> I used the import wizard just a few times to see what it did, then I
> started creating all my peripherals by hand, so I do not remember how
> it works very well. But, C_PLB_NUM_MASTER is a parameter/generic that
> needs to be set by EDK when it creates all the wrapper files for the
> PLB peripherals. Did you set it to a numeric value?
>
> EDK includes the source code and support files for the cores that it
> comes with. Look through them for examples of how to create a PLB
> slave.  If I remember correctly, the multi port memory controller
> reference design also has a PLB slave that is not based on the IPIF,
> and is simpler.
>
> Regards,
>
> John McCaskillwww.fastertechnology.com- Hide quoted text -
>
> - Show quoted text -

Thank you very much.

I set C_PLB_NUM_MASTER=2 in the verilog design. Does EDK change this
parameter during creating platform?


I wil go to check the examples.

Besides, I saw an example that the custom peripheral is imported inot
EDK without bus interface. How could I do this? I search several
document, I don't see something to do with it.

Thanks again

Sincerely.


Article: 118059
Subject: Re: PLB Master
From: LilacSkin <lpaulo07@iseb.fr>
Date: 17 Apr 2007 01:36:12 -0700
Links: << >>  << T >>  << A >>
To build my PLB master, I only need that ports ???


PLB Master n Interface

PLB-to-Master N

PLB_MnWrDAck
PLB_MnRdAck
PLB_MnAddrAck
PLB_MnRearbitrate
PLB_MnTimeout

Master n-to-PLB

Mn_request
Mn_priority(0:1)
Mn_RNW
Mn_size(0:3)
Mn_rdBurst
Mn_abort
Mn_wrBurst
Mn_ABus(0:31)
Mn_UABus(0:31)


PLB Slave n Interfaces

PLB-to-slave n

PLB_RNW
PLB_abort
PLB_wrBurst
PLB_rdBurst
PLB_masterID(0:2)
PLB_PAValid
PLB_SAValid
PLB_ABus(0:31)
PLB_UABus(0:31)

Slave n-to-PLB PLB

Sln_wait
Sln_AddrAck
Sln_rearbitrate
Sln_rdComp
Sln_rdDAck
Sln_wrComp
Sln_wrDAck

Where are the ports in the IBM datasheet ?

PLB_pendpri
PLB_penreq
PLB_reqpri
PLB_size
PLB_type
PLB_rdPrim
PLB_abort
PLB_buslocked
PLB_masterID
PLB_MSize
PLB_compress
PLB_guarded
PLB_lockerrr
PLB_MErr,
PLB_MBusy.......


Article: 118060
Subject: Re: Spartan 3E Not enough block ram.
From: "Ken Soon" <csoon@xilinx.com>
Date: Tue, 17 Apr 2007 16:51:03 +0800
Links: << >>  << T >>  << A >>
> You probably do not want to put the delays within your enable block... and
> like the write, you probably want one register level on the address. With
> both tweaks, the process should look like this:
>
> process (rd_clk)
> begin
>    if (rd_clk'event and rd_clk = '1') then
>      if (ce = '1') then
>        rd_en1   <= rd_en;
>        rd_addr1 <= rd_addr;
>      else
>        rd_en1   <= '0';
>      end if;
>
>      if (rd_en1 = '1') then
>        dout2 <= mem_array(conv_integer('0' & rd_addr1));
>      end if;
>
>      dout1 <= dout2;
>      dout  <= dout1;
>    end if;
> end process;
>
>
Hmm why in this case the
      dout1 <= dout2;
      dout  <= dout1;
is being placed outside the enable block then? Because I do not want any
latency when retrieving data?
I hope this does not add on any timing delay, if not I could be keeping on
adding register level in vain.

> Since you are new to FPGAs, it is normal that you are not (yet) familiar
> with the fundamentals of working around common design issues... but most
> of these you should be able to deduce by reading your static timing 
> analysis
> and thinking about the simplest ways to fix the problems it reveals.

Hmm yah, well I really still have alot to learn in the future. Well, really
happy now at least I have learnt something about adding register levels to
solve timing issue problems.

And really thanks alot for the code, it was spot on. I guess I could never
figured the part about the address and enable needing to be delayed myself.
Hmm come to think of it, it looks kind of stupid to do reassignment of
signals in the same block.
From there on, I found out that I need to select register balancing => Yes
in synthesis option.
After doing so, the timing code really dropped by more significant amounts.

Oh btw I have then tried to add on more register levels.
Have tried some structures, and I deduce this coding should be logical.
Wonder if there is anything wrong. The lowest I have brought the timing down
is a slack of about 1ns

architecture rtl of dp2_bram is
type     mem_array_type    is array (0 to (mem_size - 1)) of
std_logic_vector((data_width - 1) downto 0);
signal   mem_array         :  mem_array_type;
attribute   ram_style      :  string;
attribute   ram_style      of mem_array : signal is "pipe_distributed";
signal wr_en1 : std_logic;
signal wr_addr1 : std_logic_vector((LOG2_BASE(mem_size) - 1) downto 0);
signal din1 : std_logic_vector((data_width - 1) downto 0);

signal wr_en2 : std_logic;
signal wr_addr2 : std_logic_vector((LOG2_BASE(mem_size) - 1) downto 0);
signal din2 : std_logic_vector((data_width - 1) downto 0);

signal wr_en3 : std_logic;
signal wr_addr3 : std_logic_vector((LOG2_BASE(mem_size) - 1) downto 0);
signal din3 : std_logic_vector((data_width - 1) downto 0);

signal rd_en1 : std_logic;
signal rd_addr1 : std_logic_vector((LOG2_BASE(mem_size) - 1) downto 0);

signal rd_en2 : std_logic;
signal rd_addr2 : std_logic_vector((LOG2_BASE(mem_size) - 1) downto 0);

signal rd_en3 : std_logic;
signal rd_addr3 : std_logic_vector((LOG2_BASE(mem_size) - 1) downto 0);

signal dout2 : std_logic_vector((data_width - 1) downto 0);
signal dout1 : std_logic_vector((data_width - 1) downto 0);
signal dout3 : std_logic_vector((data_width - 1) downto 0);

signal ce2 : std_logic;
signal ce3 : std_logic;

begin

   process (wr_clk)
   begin
      if (wr_clk'event and wr_clk = '1') then
         if (ce = '1') then
    ce2 <= '1';
    wr_en1 <= wr_en;
    wr_addr1 <= wr_addr;
    din1 <= din;
   else
    ce2 <= '0';
   end if;

   if (ce2 = '1') then
      ce3 <= '1';
    wr_en2 <= wr_en1;
    wr_addr2 <= wr_addr1;
    din2 <= din1;
   else
    ce3 <= '0';
   end if;

   if (ce3 = '1') then
      wr_en3 <= wr_en2;
    wr_addr3 <= wr_addr2;
    din3 <= din2;
   else
    wr_en3 <= '0';
   end if;

         if (wr_en3 = '1') then
               mem_array(conv_integer('0' & wr_addr3)) <= din3;
         end if;
      end if;
   end process;

   process (rd_clk)
   begin
      if (rd_clk'event and rd_clk = '1') then
         if (ce = '1') then
    ce2 <= '1';
    rd_en1 <= rd_en;
    rd_addr1 <= rd_addr;
   else
    ce2 <= '0';
   end if;

   if (ce2 = '1') then
    ce3 <= '1';
    rd_en2 <= rd_en1;
    rd_addr2 <= rd_addr1;
   else
    ce3 <= '0';
   end if;

   if (ce3 = '1') then
    rd_en3 <= rd_en2;
    rd_addr3 <= rd_addr2;
   else
    rd_en3 <= '0';
   end if;

         if (rd_en3 = '1') then
               dout3 <= mem_array(conv_integer('0' & rd_addr3));
         end if;
   dout2 <= dout3;
   dout1 <= dout2;
   dout <= dout1;
      end if;
   end process;

end rtl;

sorry a bit long to be posted though



Article: 118061
Subject: define variable in ISE9.1 Tcl scripts
From: michel.talon@gmail.com
Date: 17 Apr 2007 02:03:38 -0700
Links: << >>  << T >>  << A >>
Hi,

I've a question about ISE9.1 Tcl scripts. Is it possible to include
`define in Tcl project scripts to determine module to synthesize
according to `ifdef... `endif placed in the verilog sources ?

Thank you by advance,

Bests regards. Michel.


Article: 118062
Subject: Re: define variable in ISE9.1 Tcl scripts
From: Andreas Ehliar <ehliar@lysator.liu.se>
Date: Tue, 17 Apr 2007 09:13:46 +0000 (UTC)
Links: << >>  << T >>  << A >>
On 2007-04-17, michel.talon@gmail.com <michel.talon@gmail.com> wrote:
> Hi,
>
> I've a question about ISE9.1 Tcl scripts. Is it possible to include
> `define in Tcl project scripts to determine module to synthesize
> according to `ifdef... `endif placed in the verilog sources ?

I don't think xst accepts anything like -DCLOCKED=1 (as you can do in
the command line of most C-compilers). However, there are other ways
to do it. Lets say that you have a file test.v which contains the
following:

`ifdef CLOCKED
   always  @(posedge clk)  b <= a;
`else
   always @* b = a;
`endif

If you now want CLOCKED to be defined in test.v you can write a file
defines.v that contains `define CLOCKED and make sure that xst reads it
before any other file. CLOCKED will now be defined in all Verilog files
that are read after defines.v. (Unless it is explicitly undefined.)
Personally I think this behaviour of Verilog synthesizers is a bit
non-intuitive but IIRC it is specified that way in the Verilog standard.

You are going to have to think about how to keep your design and your
simulation in sync if you are going to do something like this though.

/Andreas

Article: 118063
Subject: Re: type/subtype definition in entity
From: Alan Fitch <alan.fitch@spamtrap.com>
Date: Tue, 17 Apr 2007 10:46:39 +0100
Links: << >>  << T >>  << A >>
zhangpei@gmail.com wrote:
> I want to define a type related to entity generics, like an array in
> the following codes. But It seems I have no places to put those
> subtype/type statements in the entity. I can not use package to define
> those subtype/type since there are related to entity generics.
> 
> Any solution or idea?
> 
> Thanks a lot,
> 
> Z
> 04/16/07
> 
> ===============
> library IEEE;
> use IEEE.std_logic_1164.all;
> use IEEE.std_logic_arith.all;
> use IEEE.std_logic_unsigned.all;
> 
> entity ir is
> --   Here is not correct
> --   subtype MY_UNSIGNED is unsigned(EL_SIZE-1 downto 0);
> --   type    MY_UNSIGNED_VECTOR is array(natural range<>) of
> MY_UNSIGNED;
>    generic (
>       EL_SIZE  : POSITIVE := 16;
>       EL_COUNT : POSITIVE := 8
>    );
> --   Here is not correct either
> --   subtype MY_UNSIGNED is unsigned(EL_SIZE-1 downto 0);
> --   type    MY_UNSIGNED_VECTOR is array(natural range<>) of
> MY_UNSIGNED;
>    port (
>       val_b : out MY_UNSIGNED_VECTOR (0 to EL_COUNT-1);
>       clk_i : in std_logic
>       ...
>    );
> end ir;
> 

Hi Z,

   you must put the declarations in a package, e.g.

library ieee;
use ieee.std_logic_arith.all; -- prefer numeric_std, it's a standard
  package mytypes is
      subtype MY_UNSIGNED is unsigned(EL_SIZE-1 downto 0);
      type    MY_UNSIGNED_VECTOR is array(natural range<>) of MY_UNSIGNED;

   end package mytypes;


Of course you then don't have access to the generic. So you need to
fix the generic size using a constant or the subtype itself, e.g.

  package mytypes is
      constant EL_SIZE : positive := 10;
      subtype MY_UNSIGNED is unsigned(EL_SIZE-1 downto 0);
      type    MY_UNSIGNED_VECTOR is array(natural range<>) of MY_UNSIGNED;

   end package mytypes;

You must make the package visible in front of the entity of course, e.g.

library mylib;
use mylib.mytypes.all;
library ieee;
...

entity...

assuming you compiled the package into library 'mytypes'

Does that help?

In Accellera VHDL2006 you can have package generics, which would be a
neater solution - but your tools must have 2006 support.

regards
Alan

-- 
Alan Fitch
Doulos
http://www.doulos.com

Article: 118064
Subject: Re: Safety of bidirectional lines
From: Sebastien Bourdeauducq <sebastien.bourdeauducq@gmail.com>
Date: 17 Apr 2007 03:07:15 -0700
Links: << >>  << T >>  << A >>
Ok, thanks :)

But why is slew rate related to resistance to short-circuits ?


Article: 118065
Subject: Re: PLB Master
From: Guru <ales.gorkic@email.si>
Date: 17 Apr 2007 03:27:18 -0700
Links: << >>  << T >>  << A >>
I had about the same experience with an OPB master peripheral - the
IPIF implementation did not work properly so I build my own.
The PLB SG/DMA IPIF implementation probably works, but you do not
access it properly.
Read SG/DMA datasheet for register definitions. At first you need a
reliable read/writes to registers; I sugesst you use XIo_In32 and
XIo_Out32 functions to manipulate with memory mapped peripherals to
avoid any errors. You also consider disabling PPC cache to avoid
reading cached data instead of RAM contents.
If you consider building a PLB DMA peripheral you first need a slave
pripheral (i prefer the simplest DCR bus) for register access. Then
you add a PLB bus connection to incorporate your PLB DMA engine. If
you want to succeed you better read througly the PLB specification:
http://www-306.ibm.com/chips/techlib/techlib.nsf/techdocs/3BBB27E5BCC165BA87256A2B0064FFB4
To implement what you want and to remove all the bugs I think it is
more than a 2 days job.

Cheers,

Guru





Article: 118066
Subject: Re: Safety of bidirectional lines
From: "Symon" <symon_brewer@hotmail.com>
Date: Tue, 17 Apr 2007 11:32:52 +0100
Links: << >>  << T >>  << A >>
"Sebastien Bourdeauducq" <sebastien.bourdeauducq@gmail.com> wrote in message 
news:1176730853.436614.116100@b75g2000hsg.googlegroups.com...
> Hi,
>
> I intend to wire up an Altera Cyclone 2 to a NET2272 USB controller.
> The bus of the NET2272 is similar to that of a parallel RAM, with
> address lines, bidirectional data bus, and read/write strobe signals.
>
> I'm concerned about the electrical safety of the bidirectional data
> lines. If I mess up the FPGA program and assert the read strobe signal
> while the data lines are set as outputs, this may damage (expensive)
> parts, right ? Do you know of a simple way to avoid this ? Putting
> resistors in series on the data lines ?
>
> Regards,
>
> Sebastien
>
Hi Sebastien,
Normally, contention will not break the part. AFAICR, I've never damaged a 
part this way in the (far too) many years I've been playing this game. The 
I/O pins can withstand a short to ground or short to Vdd, so contention 
isn't going to permanently damage anything, especially if you don't leave 
anything long enough to get too hot. Anyway, you'll have simulated 
everything first, so there'll be no problem, right? ;-)
I'm not entirely convinced that Daniel's suggestion will make much 
difference to the reliability. The current drive is set by turning on more 
or fewer drive transistors. By setting the part to 4-8mA, most of the drive 
transistors are off, but the ones that are on will still be taking the same 
individual current as when they are all on, so are just as likely to locally 
overheat. In fact, setting the drive current to a high value may protect the 
FPGA better as the IC it's contending against might be the current limiting 
device and this current will be spread over more drive transistors. Of 
course, the other part will then be stressed more. OTOH, the FPGA will, 
overall, warm up more with more power being dissipated.
All in all, you're very unlikely to break anything. Whatever, simulate your 
design, and avoid the situation altogether!
HTH, Syms. 



Article: 118067
Subject: Re: plb_tft_cntlr_ref for an ML405 EDK Project
From: "Ben Jones" <ben.jones@xilinx.com>
Date: Tue, 17 Apr 2007 11:36:22 +0100
Links: << >>  << T >>  << A >>

"Peter Mendham" <petermendham@NOCANNEDMEAT.computing.dundee.ac.uk> wrote in 
message news:f01v8b$r5q$1@dux.dundee.ac.uk...
> Dear all,
>
> I am working with an ML405 and trying to put together a project of my own 
> that uses the plb_tft_cntlr_ref IP from the example project.  I tried to 
> import the IP using the "Create or Import Peripheral" wizard but it 
> complains that there are a bunch of signals missing that are needed by the 
> PLB.

You don't need to do that. All you need to do is drop the plb_tft_cntlr_ref 
pcore into the "pcores" directory in your project. Then (once you've closed 
and re-opened the project so XPS re-reads the directory) you'll see it in 
the peripheral repository and you can just add it to the project like any 
other piece of IP in the library.

Cheers,

    -Ben- 



Article: 118068
Subject: Re: dual port memory from single port RAM.
From: vlsi_learner <bajajk@gmail.com>
Date: 17 Apr 2007 03:59:39 -0700
Links: << >>  << T >>  << A >>
Hi peter,

If I understand correctly, you are saying that I should use double
clock rate & then time multiplex the ports i.e
write on even clock into a single port RAM & read on the odd clock
from the SPRAM.
But what about reads at varying freq ( 5 - 30 Mhz)

Peter Alfke wrote:
> In a dual-ported RAM, you have two independent access mechanism to the
> common data, so you can read while you are writing. (In a "true dual-
> ported RAM" you can also have two independent write, or two
> independent read opertions going on simultaneously) But you still have
> to avoid simultaneous read and write to the same location.
> (Contention)
> You avoid (almost) all these problem with Time-Division Multiplexing,
> as I mentioned in my previous post.
> Given your extremely slow speed, that's the way to go!
> Peter Alfke
>
>
> On Apr 16, 10:04 pm, vlsi_learner <baj...@gmail.com> wrote:
> > Hi Petter,
> >
> > I was trying to do the same, using 2 SPRAM's & writing to both of them
> > simultaneouly using same address & data.
> >
> > addr_0 = ~pa_rwb ? pa_wraddr : pa_rdaddr;    (port A is R/W port)
> >
> > addr_1 = ~pa_rwb ? pa_wraddr : (pb_rwb ? pb_rdaddr : 8'b0);    (port B
> > is read only port)
> >
> > In this case , if there is a write from port A then we cannot read
> > from the other port.Is this dual port
> > functionality?
> >
>
> > Petter Gustad wrote:
> > > "vlsi_learner" <baj...@gmail.com> writes:
> >
> > > > My ASIC design requires dual port memories(one port R/W other port
> > > > only read) but there is a constraint on using it.
> > > > Instead I am planning to create this memory using single port RAM's.
> >
> > > You an use two RAMs if you have enough RAM availabe in your
> > > ASIC. Simply write into both RAMs using the same address and data.
> >
> > > Petter
> > > --
> > > A: Because it messes up the order in which people normally read text.
> > > Q: Why is top-posting such a bad thing?
> > > A: Top-posting.
> > > Q: What is the most annoying thing on usenet and in e-mail?


Article: 118069
Subject: Re: dual port memory from single port RAM.
From: vlsi_learner <bajajk@gmail.com>
Date: 17 Apr 2007 04:08:14 -0700
Links: << >>  << T >>  << A >>
Hi Peter,

Another thing, what if I dont have the double clock available in the
design?

Thanks in advance for your help

vlsi_learner wrote:
> Hi peter,
>
> If I understand correctly, you are saying that I should use double
> clock rate & then time multiplex the ports i.e
> write on even clock into a single port RAM & read on the odd clock
> from the SPRAM.
> But what about reads at varying freq ( 5 - 30 Mhz)
>
> Peter Alfke wrote:
> > In a dual-ported RAM, you have two independent access mechanism to the
> > common data, so you can read while you are writing. (In a "true dual-
> > ported RAM" you can also have two independent write, or two
> > independent read opertions going on simultaneously) But you still have
> > to avoid simultaneous read and write to the same location.
> > (Contention)
> > You avoid (almost) all these problem with Time-Division Multiplexing,
> > as I mentioned in my previous post.
> > Given your extremely slow speed, that's the way to go!
> > Peter Alfke
> >
> >
> > On Apr 16, 10:04 pm, vlsi_learner <baj...@gmail.com> wrote:
> > > Hi Petter,
> > >
> > > I was trying to do the same, using 2 SPRAM's & writing to both of them
> > > simultaneouly using same address & data.
> > >
> > > addr_0 = ~pa_rwb ? pa_wraddr : pa_rdaddr;    (port A is R/W port)
> > >
> > > addr_1 = ~pa_rwb ? pa_wraddr : (pb_rwb ? pb_rdaddr : 8'b0);    (port B
> > > is read only port)
> > >
> > > In this case , if there is a write from port A then we cannot read
> > > from the other port.Is this dual port
> > > functionality?
> > >
> >
> > > Petter Gustad wrote:
> > > > "vlsi_learner" <baj...@gmail.com> writes:
> > >
> > > > > My ASIC design requires dual port memories(one port R/W other port
> > > > > only read) but there is a constraint on using it.
> > > > > Instead I am planning to create this memory using single port RAM's.
> > >
> > > > You an use two RAMs if you have enough RAM availabe in your
> > > > ASIC. Simply write into both RAMs using the same address and data.
> > >
> > > > Petter
> > > > --
> > > > A: Because it messes up the order in which people normally read text.
> > > > Q: Why is top-posting such a bad thing?
> > > > A: Top-posting.
> > > > Q: What is the most annoying thing on usenet and in e-mail?


Article: 118070
Subject: xilinx unused I/O state
From: "Steve" <eejju@polyu.edu.hk>
Date: Tue, 17 Apr 2007 19:09:57 +0800
Links: << >>  << T >>  << A >>
Hi,

What is the default state of the unused I/O pins for Xilinx FPGA (Spartan 
3E)? For Altera FPGA, it can be set as input tri-stated or as output driving 
gnd, etc. Is there any counterpart operation in Xilinx  ISE to set the 
unused I/O pins?

Thanks,
JJ 



Article: 118071
Subject: Re: xilinx unused I/O state
From: "Symon" <symon_brewer@hotmail.com>
Date: Tue, 17 Apr 2007 12:18:48 +0100
Links: << >>  << T >>  << A >>
"Steve" <eejju@polyu.edu.hk> wrote in message 
news:1176808198.147633@nsserver1.polyu.edu.hk...
> Hi,
>
> What is the default state of the unused I/O pins for Xilinx FPGA (Spartan 
> 3E)? For Altera FPGA, it can be set as input tri-stated or as output 
> driving gnd, etc. Is there any counterpart operation in Xilinx  ISE to set 
> the unused I/O pins?
>
> Thanks,
> JJ
>
Google this.
unused I/O pins site:xilinx.com

HTH, Syms. 



Article: 118072
Subject: Re: vpw/pwm controller
From: Jonathan Bromley <jonathan.bromley@MYCOMPANY.com>
Date: Tue, 17 Apr 2007 07:29:59 -0400
Links: << >>  << T >>  << A >>
On 16 Apr 2007 01:56:48 -0700, 
ashasravanthi@gmail.com wrote:

>hi all,
>        can anyone tell me where i can get a free vpw/pwm controller
>either in vhdl or verilog according to j1850 standards.

Sounds like we don't know what "j1850" is.  Could you point 
us at a reference somewhere?

Generally, PWM or other pulse generators are so easy to write
in HDLs that I build them afresh each time I need one, using
a few standard arrangements that I've used in the past.
Input register, counter, comparator, output register...
-- 
Jonathan Bromley, Consultant

DOULOS - Developing Design Know-how
VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services

Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK
jonathan.bromley@MYCOMPANY.com
http://www.MYCOMPANY.com

The contents of this message may contain personal views which 
are not the views of Doulos Ltd., unless specifically stated.

Article: 118073
Subject: Re: EDK and Custom Peripheral: error occur when generating bitstream
From: John McCaskill <junkmail@fastertechnology.com>
Date: 17 Apr 2007 04:43:34 -0700
Links: << >>  << T >>  << A >>
On Apr 17, 3:27 am, Allen <lphp...@gmail.com> wrote:
> On Apr 17, 11:23 am, John McCaskill <junkm...@fastertechnology.com>
> wrote:
>
>
>
> > On Apr 11, 2:12 am, "Allen" <lphp...@gmail.com> wrote:
>
> > > On Mar 29, 10:52 pm, "John McCaskill" <junkm...@fastertechnology.com>
> > > wrote:
>
> > > > On Mar 29, 12:45 am, "Allen" <lphp...@gmail.com> wrote:
>
> > > > > On Mar 25, 8:39 pm, "John McCaskill" <junkm...@fastertechnology.com>
> > > > > wrote:
>
> > > > > > On Mar 25, 12:32 am, "Allen" <lphp...@gmail.com> wrote:
>
> > > > > > > On Mar 23, 8:33 pm, Zara <me_z...@dea.spamcon.org> wrote:
>
> > > > > > > > On 23 Mar 2007 05:13:46 -0700, "Allen" <lphp...@gmail.com> wrote:
>
> > > > > > > > >hi all,
>
> > > > > > > > >first, i am sorry for my poor English.
>
> > > > > > > > >i use EDK 7.1i and ISE 7.1i.
>
> > > > > > > > >imported custom peripheral with PLB Master Interface ( not from IFIP )
> > > > > > > > >into my .xps project after overcame several problems.
>
> > > > > > > > >In the step " generate netlist " there has no error or warning.
>
> > > > > > > > >but in the step "Generate Bitstream",i got a error message "ERROR!!
> > > > > > > > >NgdBuild:455 plb_M_ABUS<62> has multiple driver(s)": return code 2
> > > > > > > > >abort.
>
> > > > > > > > >already search this problem in xilix's answer database and tried
> > > > > > > > >modify the parameter of C_BaseAddr, but it is still stuck here.
>
> > > > > > > > >does anyone meet this problem before?
>
> > > > > > > > >thanks in advance.
>
> > > > > > > > I always got that messaghe when I had some signal with two outputs
> > > > > > > > connected to it. That seems your case, in your plb address bus, master
> > > > > > > > interface.
>
> > > > > > > > Best regards,
>
> > > > > > > > Zara- Hide quoted text -
>
> > > > > > > > - Show quoted text -
>
> > > > > > > Thanks for your reply.
>
> > > > > > > so it might mean something wrong during import of custom peripheral?
>
> > > > > > > but in 64-bit PLB protocol, the address width is 32-bit.
>
> > > > > > > i already use (C_PLB_AWIDTH-1) to replace with constant "31" in my
> > > > > > > port declaration.
>
> > > > > > > do anything i could try to solve this problem?
>
> > > > > > > thank you :-)
>
> > > > > > The PLB address width is 32 bits.  However, the way that all the bus
> > > > > > signals are connected to the PLB IP is that they are concatenated
> > > > > > together. So if you look at the MPD file for the PLB you will see that
> > > > > > it defines the bus width to be 32 bits times the number of masters:
>
> > > > > > PORT M_ABus = M_ABus, DIR = I, VEC = [0:
> > > > > > (C_PLB_NUM_MASTERS*C_PLB_AWIDTH)-1]
>
> > > > > > So the signal plb_M_ABUS<62> is bit 30 of the second master.  Look to
> > > > > > see if your core has been assigned the second master slot on the PLB
> > > > > > bus.  Assuming that is the case, find what two sources are driving bit
> > > > > > 30 of the address.
>
> > > > > > Assuming that you left the name of your EDK project as system.xmp,
> > > > > > when you tell EDK to generate a netlist it will create a top level hdl
> > > > > > file named either system.vhd or system.v depending on your tool
> > > > > > settings.  You can look at this file to see how EDK has connected the
> > > > > > cores to the PLB.
>
> > > > > > It has been a while since I had to find a multi source signal, but I
> > > > > > think that XST will produce a warning about it in its report and tell
> > > > > > you what the multiple soures are. Look in the synthesis report file
> > > > > > for the appropriate core and see if it tells you what the source of
> > > > > > the problem is.
>
> > > > > > Since you are creating your own interface design instead of using the
> > > > > > IPIF, are you using the bus functional models in your simulations?  I
> > > > > > use these, and they make the job much easier.  I think it was not
> > > > > > until EDK 8.1 that they were integrated into EDK itself, but I was
> > > > > > able to use the CoreConnect tool kit directly from IBM in some of our
> > > > > > early stuff.  The bus monitors will tell you as soon as your core has
> > > > > > done something wrong, so you do not have to track the source of the
> > > > > > problem back from when the symptoms show up.
>
> > > > > > Regards,
>
> > > > > > John McCaskillwww.fastertechnology.com-Hidequotedtext-
>
> > > > > > - Show quoted text -
>
> > > > > Thanks for your reply. :-)
>
> > > > > Where i could see the second master is who( power pc or custom
> > > > > peripheral ... etc)?
> > > > > I don't know where to check this.
>
> > > > While there may be an easier way, you can just look at a PLB master
> > > > signal that is not a vector.  For example, if you look at plb_M_RNW in
> > > > your system.vhd you will see that it is defined as:
>
> > > > signal plb_M_RNW : std_logic_vector(0 to 2)
>
> > > > The entire vector is an input to the plb_wrapper. plb_M_RNW(0) will go
> > > > to PLB master 0, plb_M_RNW(1) will go to PLB master 1, etc.
>
> > > > > I opened the system.vhd to see who connect to the plb_M_Abus.
> > > > > "PowerPC" have 2 ports and Custom peripheral has 1 port connect to the
> > > > > plb_M_ABus.
> > > > > Next step, I am going to find the XST report file to see who drive the
> > > > > plb_M_ABUS<62>.
>
> > > > No offense intended, but with just the PowerPC, and your new custom
> > > > peripheral on the PLB bus the odds are that your peripheral is the
> > > > source of the problem.  Take a look at the synthesis report for it.
> > > > In EDK, in the "Project Information Area" pane, and the Project tab,
> > > > expand the "Report Files" selection.  Find the one for your peripheral
> > > > and look through it.  I think there should be a warning about multiple
> > > > sources driving a destination at this point. If you do not see it
> > > > there, try looking through the implementation/xflow.log file in the
> > > > "Log Files" section.
>
> > > > > I didn't run the simulation of this platform. I heard the "bus
> > > > > functional model" before, but I don't understand how to use it. Would
> > > > > you like to give any information about this one?
>
> > > > Take a look at:
>
> > > >http://www.xilinx.com/ise/embedded/edk6_3docs/bfm_simulation.pdf
>
> > > > This link is for the EDK 6.3 version of the documentation, but you
> > > > should have a more recent version in your EDK distribution at $EDK/doc/
> > > > bfm_simulation.pdf.
>
> > > > One of the main things that I like about using the bus functional
> > > > models is that the bus monitors tell you when a error occurred in the
> > > > simulation, and what the error was.  This saves you the effort of
> > > > having to search backwards from where the symptoms of the error show
> > > > up to figure our what has gone wrong.
>
> > > > > In addition the error"NgdBuild 455", there are several warnings "SFF
> > > > > Primitive", i didn't find this on the Xilinx answer database.. maybe
> > > > > this warning has something to do with the error.
>
> > > > > Thank you very much~
>
> > > > Regards,
>
> > > > John McCaskillwww.fastertechnology.com-Hidequotedtext -
>
> > > > - Show quoted text -
>
> > > Thank in advance.
>
> > > I check the synthesis report and I found something in implementation/
> > > xflow.log file
>
> > > ERROR:NgdBuild:455 - logical net 'plb_M_ABus<62>' has multiple
> > > driver(s):
> > >      pin G on block ppc405_0/XST_GND with type GND,
> > >      pin G on block dma_mci_top_0/XST_GND with type GND,
> > >      pin P on block ppc405_0/XST_VCC with type VCC,
> > >      pin G on block plb2opb/XST_GND with type GND,
> > >      pin O on block plb2opb/plb2opb/I_BGO_addrAck with type LUT4,
> > >      pin G on block plb_bram_if_cntlr_1/XST_GND with type GND,
> > >      pin P on block plb_bram_if_cntlr_1/XST_VCC with type VCC
>
> > > There are 7 driver to drive this node and the dma_mci_top is the
> > > custom peripheral.
>
> > > I have no idea about this situation. how come does it?  I only import
> > > the custom peripheral and create a platform.
>
> > > Does it any problem happend at the process of "Import Custom
> > > Peripheral" ?
> > > 'cause, during the import procedure, I need to set some bus parameter,
> > > like C_PLB_NUM_MASTER...etc.
> > > I try to find document on the Xilinx website, but I didn't find any
> > > tutorail about the Import procedure.
>
> > > Would you like to give me any hints for solving this problem.
>
> > > Thank you very much.
>
> > I used the import wizard just a few times to see what it did, then I
> > started creating all my peripherals by hand, so I do not remember how
> > it works very well. But, C_PLB_NUM_MASTER is a parameter/generic that
> > needs to be set by EDK when it creates all the wrapper files for the
> > PLB peripherals. Did you set it to a numeric value?
>
> > EDK includes the source code and support files for the cores that it
> > comes with. Look through them for examples of how to create a PLB
> > slave.  If I remember correctly, the multi port memory controller
> > reference design also has a PLB slave that is not based on the IPIF,
> > and is simpler.
>
> > Regards,
>
> > John McCaskillwww.fastertechnology.com-Hide quoted text -
>
> > - Show quoted text -
>
> Thank you very much.
>
> I set C_PLB_NUM_MASTER=2 in the verilog design. Does EDK change this
> parameter during creating platform?
>
> I wil go to check the examples.
>
> Besides, I saw an example that the custom peripheral is imported inot
> EDK without bus interface. How could I do this? I search several
> document, I don't see something to do with it.
>
> Thanks again
>
> Sincerely.


EDK automatically sets the values of many parameters/generics when it
creates the wrapper files. C_PLB_NUM_MASERS is one of the ones that
EDK sets.

I would recomend that you read the "Platform Specification Format
Reference Manual" which defines the contents of the data files that
describes pcores to EDK. It is located in the EDK install directory at
$EDK/doc/psf_rm.pdf.  These files are being created for you by the
import wizard.  While reading this, look at some of the cores in EDK
for examples.  The EDK cores are located at $EDK/hw/
XilinxProcessorIPLib/pcores for the hardware parts, and at $EDK/hw/
XilinxProcessorIPLib/drivers for the software parts.

For what you are doing, you probably want to focus on examining the
MPD file for your core.  The MPD file contains the information that
EDK uses to figure out how to connect a pcore to the rest of the
system.  It also defines the parameters/generics for a pcore.

Regards,

John McCaskill
www.fastertechnology.com


Article: 118074
Subject: Re: PLB Master
From: LilacSkin <lpaulo07@iseb.fr>
Date: 17 Apr 2007 04:55:31 -0700
Links: << >>  << T >>  << A >>
more than 2 days..... more than 2 years perhaps




Site Home   Archive Home   FAQ Home   How to search the Archive   How to Navigate the Archive   
Compare FPGA features and resources   

Threads starting:
1994JulAugSepOctNovDec1994
1995JanFebMarAprMayJunJulAugSepOctNovDec1995
1996JanFebMarAprMayJunJulAugSepOctNovDec1996
1997JanFebMarAprMayJunJulAugSepOctNovDec1997
1998JanFebMarAprMayJunJulAugSepOctNovDec1998
1999JanFebMarAprMayJunJulAugSepOctNovDec1999
2000JanFebMarAprMayJunJulAugSepOctNovDec2000
2001JanFebMarAprMayJunJulAugSepOctNovDec2001
2002JanFebMarAprMayJunJulAugSepOctNovDec2002
2003JanFebMarAprMayJunJulAugSepOctNovDec2003
2004JanFebMarAprMayJunJulAugSepOctNovDec2004
2005JanFebMarAprMayJunJulAugSepOctNovDec2005
2006JanFebMarAprMayJunJulAugSepOctNovDec2006
2007JanFebMarAprMayJunJulAugSepOctNovDec2007
2008JanFebMarAprMayJunJulAugSepOctNovDec2008
2009JanFebMarAprMayJunJulAugSepOctNovDec2009
2010JanFebMarAprMayJunJulAugSepOctNovDec2010
2011JanFebMarAprMayJunJulAugSepOctNovDec2011
2012JanFebMarAprMayJunJulAugSepOctNovDec2012
2013JanFebMarAprMayJunJulAugSepOctNovDec2013
2014JanFebMarAprMayJunJulAugSepOctNovDec2014
2015JanFebMarAprMayJunJulAugSepOctNovDec2015
2016JanFebMarAprMayJunJulAugSepOctNovDec2016
2017JanFebMarAprMayJunJulAugSepOctNovDec2017
2018JanFebMarAprMayJunJulAugSepOctNovDec2018
2019JanFebMarAprMayJunJulAugSepOctNovDec2019
2020JanFebMarAprMay2020

Authors:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Custom Search