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 37975

Article: 37975
Subject: Re: Innoveda Speedwave vs. Modelsim?
From: Rick Filipkiewicz <rick@algor.co.uk>
Date: Fri, 28 Dec 2001 12:11:30 +0000
Links: << >>  << T >>  << A >>



> That explains it! Going in the right direction apparently. :-) That
> said,
> I'll also start off with the Windoze version, and see where that goes.
>

The only thing here, if you're not already aware of it, is that the full-fat
Linux -SE version is many $$$ more expensive than the -PE.  In UK terms we paid ~
£4500 for the PE edition and to upgrade to the -SE Linux would cost another
£14000 !

(wishing & hoping) Maybe ModelTech/Mentor will come out with a -PE on Linux.

Just one note of gloom. There's a thread on CAF sometime back where ``Rickman''
was saying that he experienced the -PE edition crashing fairly frequently IIRC he
was claiming something pretty bad like one time in 4 or 5. BUT, again IIRC, he
was doing his sims in the ``compile & simulate'' mode whereas I've always
compiled the source files into separate libraries - design code, my testbench
models, Vendor libs, etc. - and then run vsim with a bunch of `-L' flags to pull
in the pre-compiled code at run time.

Also: There are two irritations with ModelSim & maybe you could join my one man
campaign to persuade ModelTech to eliminate them :-)

1. If ModelSim cannot find a way to satisfy an instantiation there's no way to
send a Ctrl-C to the console to stop vsim. If the missing entry is used several
thousand times in a post-synth or post-route simulation, all you see is a never
ending stream of error messages.  The best thing I can do is kill ModelSim
completely & start again.

2. If there's a port mis-match where an instantiation has more ports then the
module definition ModelSim doesn't tell you the name of the ``extra'' port in the
error message. Sometimes needs a binary chop to find the error.

That said I'm still using 5.4c (no real reason to upgrade to 5.5+ yet) so they
might have been fixed.



Article: 37976
Subject: Re: Atmel FPSLIC - Problem with concurrent statements
From: jetmarc@hotmail.com (jetmarc)
Date: 28 Dec 2001 05:18:09 -0800
Links: << >>  << T >>  << A >>
Thank you for your follow-up!

The modified design (according to your tips and hours of experiments)
now works in the silicon.  However, I do not (yet) have the feeling that
it works "by design" rather than for being lucky.



> What synthesis tool are you using??  And are you simulating?  Burn-and-crash debugging is little more than a time-waster, especially when you are new to a design tool.

I use Atmel System Designer 2.1 which comes with Leonardo Spectrum
(Atmel OEM) and Atmel IDS Figaro place & route.  The simulator is from
Modeltech.  I'm not simulating because I'm not a friend of simulators
and because it is not easy to get the FPGA and microcontroller to
simulate both at the same time (the FPSLIC contains an AT40K FPGA and
an AT90 AVR microcontroller).

However, after reading your follow-up I modeled the microcontroller
read/write accesses separately and simulated the FPGA alone.  It worked
fine, even before applying the changes that finally made it work in the
silicon.

I see an inherent problem of simulators in the fact that they are based
on interpreters.  For example: If the compiler doesn't generate the
error that you expected after reading my source, the simulator probably
won't generate it either.  The simulation does not bring this problem
to the light.



> 3) If you're looking for the edge of a non-clock signal, you'll need to 
> write edge-detector code.  You might think that rising_edge() and 
> falling_edge() do that, but you'd be wrong.  And it's not obvious.

I don't understand this comment.  Isn't rising_edge() exactly for this
purpose?   I do understand that the signal must be on the sensitivity
list for it to work.


> > 	sh0 : PROCESS (XTAL,shift,val_in)
> 
> What's happening here is that you're trying to build a shift register 
> out of purely combinatorial logic.  You have XTAL (assuming that's your 
> clock) on the sensitivity list, yet you don't use it in the process. 
> Oversight?  Again, the only thing you want in the sensitivity list for 
> your flops are the clock and reset.  You should read your synth tool's 
> manual.

It is meant to be purely combinatorial.  I added XTAL for testing,
because the design didn't work as expected, and later forgot to remove
it.

I expected the combinatorial logic to settle after 5*X ns, where X is
in the range of 10ns or so.  The microcontroller has a cycle time of
>50ns and I can specify to insert a NOP instruction before reading back
the result.  However, I do not want to specify 32 NOPs to rotate the
value bit by bit with every XTAL cycle. (the design is intended to
speed up RC5 encryption where 32-bit ADD, XOR and ROTATE are used as
mathematical primitives).




Two general questions:


Is there any way to control the compiler output?  With ANSI-C I can look
at the assembler output to verify that it is correct, and to learn how
to write efficient ANSI-C code.  Can I look at the output of a VHDL
compiler?  I used ABEL-HDL earlier with Lattice Synario and there it
was possible to view the final logic equations that are burned into
the GAL.  Is this possible with Atmel System Designer, too?



And, can you recommend a good book about VHDL?  I have plenty of formal
language spec documents but still haven't found a book that shows how
to do real world designs with tips that come from experience rather than
theory.

Marc

Article: 37977
Subject: Re: ALTERA's Mercury CDR
From: "RR" <randyr1@indra.com>
Date: Fri, 28 Dec 2001 08:25:13 -0700
Links: << >>  << T >>  << A >>
To carry forward this spirit of honesty, let me clarify point #4.  While
VirtexE did require the external resistor network for LVDS outputs, Virtex2
does not.  The external termination resistor for the LVDS receiver input is
required in both cases.

R

"Stuart Moses" <mostuus@yahoo.com> wrote in message
news:99d0603.0112271646.78c1888b@posting.google.com...
> FYI,
>
> Th Xilinx FAE who blasted Altera's Mercury CDR later realized his
> mistake and apologized, but with a new posting, not as a response to
> any posting in this thread.  See below:
>
> "I am sorry to have made a basic mistake, and I apologize if I have
> mislead
> anybody. The question was about Mercury, and I answered it as if it
> were about
> APEX-II."
>
> ====================================================
>
> So for the real scoop:
>
> 1. Mercury CDR DOES NOT require a training pattern.  This is a true
> Clock-Data recovery circuit.
>
> 2. At 1.25Gbps the clock granularity is 14 ps, not the ridiculous
> 300ps Peter claims.
>
> 3. As for driver power consumption, Altera's Quartus provides a
> simulation-based power estimator.  Try it youself & see the output
> power consumption for 1 bit at 1.25Gbps LVDS.
>
> Note: While APEX and Mercury provide true LVDS drivers and receivers,
> Xilinx uses an external resistor network (in addition to the
> termination resistor) to generate LVDS levels and a voltage-referenced
> input with the LVDS -channel tied to the reference pin for receivers.


Article: 37978
Subject: Re: The speedest FPGA
From: "Falk Brunner" <Falk.Brunner@gmx.de>
Date: Fri, 28 Dec 2001 18:24:44 +0100
Links: << >>  << T >>  << A >>
"Stuart Moses" <mostuus@yahoo.com> schrieb im Newsbeitrag
news:99d0603.0112271555.2803a21d@posting.google.com...

> > Virtex-E is faster (and cheaper).
> > Virtex-II is even more faster.
>
> Have you looked at Altera's Mercury devices?  They're an all-copper

No.

> performance-optimized architecture.  Altera claims ~40% performance
> increase over Virtex-II and 150MHz non-pipelined 16x16 multipliers.  I

;-)))
Reading the datasheets is not enought. Its a nice new marketing word,
all-copper-performance-optimized-architecture. WOW.

> think the largest part in this family is slightly smaller than the
> XCV1000, but would be worth looking at.

Sure, the Altera parts are also worth looking at (no kidding here). But its
more or less useless just to compare datasheets.

--
MfG
Falk





Article: 37979
Subject: Re: Innoveda Speedwave vs. Modelsim?
From: newman5382@aol.com (newman)
Date: 28 Dec 2001 10:13:38 -0800
Links: << >>  << T >>  << A >>
Rick Filipkiewicz <rick@algor.co.uk> wrote in message 
> Just one note of gloom. There's a thread on CAF sometime back where ``Rickman''
> was saying that he experienced the -PE edition crashing fairly frequently IIRC he
> was claiming something pretty bad like one time in 4 or 5. BUT, again IIRC, he
> was doing his sims in the ``compile & simulate'' mode whereas I've always
> compiled the source files into separate libraries - design code, my testbench
> models, Vendor libs, etc. - and then run vsim with a bunch of `-L' flags to pull
> 

I had some crashes when I upgraded to PE v5.5a.  From what I've been
able to gather, there was a memory leak in v5.5a, and it was fixed in
v5.5b.  I have not really had a crash since.  It was interesting that
you mentioned that development is done in a Linux environment.  The
Modelsim editor on NT feels like an X-Window.  The Modelsim editor is
kindof weak, and I only use it if I have to, like setting breakpoints,
and to quickly goto errors identified in the transcript window.  I
likewise agree with you on your port mismatch complaint.  I cringe
when I see that error/warning at load time, cause I know it will be
tedious to track down.  But overall, Modelsim allows me to quickly
identify problems in my code,  and correct the problems.

Newman

Article: 37980
Subject: Re: Atmel FPSLIC - Problem with concurrent statements
From: Andy Peters <andy@exponentmedia.nospam.com>
Date: Fri, 28 Dec 2001 19:30:27 GMT
Links: << >>  << T >>  << A >>
jetmarc wrote:

> Thank you for your follow-up!
> 
> The modified design (according to your tips and hours of experiments)
> now works in the silicon.  However, I do not (yet) have the feeling that
> it works "by design" rather than for being lucky.


That's one Very Good Reason for simulating -- and verifying -- your design.


> 
>>What synthesis tool are you using??  And are you simulating?  Burn-and-crash debugging is little more than a time-waster, especially when you are new to a design tool.
>>
> 
> I use Atmel System Designer 2.1 which comes with Leonardo Spectrum
> (Atmel OEM) and Atmel IDS Figaro place & route.  The simulator is from
> Modeltech.  I'm not simulating because I'm not a friend of simulators
> and because it is not easy to get the FPGA and microcontroller to
> simulate both at the same time (the FPSLIC contains an AT40K FPGA and
> an AT90 AVR microcontroller).


I strongly encourage you to be a friend of simulators.  Your problem of 
connecting the microcontroller to the FPGA is a common one.  In the "it 
would be really nice" category, it would be really nice if Atmel (or any 
other microcontroller/microprocessor/DSP/PCI-interface/etc chip vendor) 
would provide bus-functionals model of their chips.  I mean, I've 
written maybe a dozen of these sorts of models.  From your FPGA's point 
of view, all you care about are transactions on the processor's bus. 
The op-codes the processor is executing don't matter.

[From a system simulation point of view, it's way cool indeed to have 
the micro fetch, decode and execute instructions, which maybe results in 
a bus transaction, which your FPGA deals with.  However, that's a lot of 
work -- which you may need to do.]


> However, after reading your follow-up I modeled the microcontroller
> read/write accesses separately and simulated the FPGA alone. 


Ah -- very good.  That's exactly the point I make above.

> It worked
> fine, even before applying the changes that finally made it work in the
> silicon.
> 
> I see an inherent problem of simulators in the fact that they are based
> on interpreters.  For example: If the compiler doesn't generate the
> error that you expected after reading my source, the simulator probably
> won't generate it either.  The simulation does not bring this problem
> to the light.


The problem here is that HDLs (much the same way that C or whatever) let 
you write code that is sytactically correct (in other words, it'll 
compile) but functionally wrong.  A further problem is that when writing 
code that'll be implemented in a chip, you have to restrict yourself to 
a "synthesizable subset" of the language.  This is where your synth 
tool's reference and user manuals are valuable: they'll tell you what 
sort of code -- or template -- to write to get a specific sort of logic.


>>3) If you're looking for the edge of a non-clock signal, you'll need to 
>>write edge-detector code.  You might think that rising_edge() and 
>>falling_edge() do that, but you'd be wrong.  And it's not obvious.



> I don't understand this comment.  Isn't rising_edge() exactly for this
> purpose?   I do understand that the signal must be on the sensitivity
> list for it to work.


For simulation purposes, rising_edge(foo) and falling_edge(bar) indeed 
trigger when the signal foo or bar rise or fall.  Foo and bar can be any 
signal at all.

However, in the synthesis world -- the real world of actual hardware -- 
rising_edge() and falling_edge() are part of the template that tells the 
synth "edge-triggered flip flop."  In this case, foo and bar must be 
clock signals.  (They could be global clocks, or clocks divided down, or 
even the combinatorial function of two or more signals.  This last type 
is the so-called "gated clock," which you don't want to even consider 
using, especially in an FPGA, unless you really know what you are doing, 
and even then, you don't want to use them.)

It looks as if you wanted to use XTAL as a clock in your original code. 
  Your synth manual will tell you what the code for a flip-flop should 
look like.


>>>	sh0 : PROCESS (XTAL,shift,val_in)
>>>
>>What's happening here is that you're trying to build a shift register 
>>out of purely combinatorial logic.  You have XTAL (assuming that's your 
>>clock) on the sensitivity list, yet you don't use it in the process. 
>>Oversight?  Again, the only thing you want in the sensitivity list for 
>>your flops are the clock and reset.  You should read your synth tool's 
>>manual.
>>
> 
> It is meant to be purely combinatorial.  I added XTAL for testing,
> because the design didn't work as expected, and later forgot to remove
> it.


Why a combinatorial shift register?  You DO have a clock available?


> I expected the combinatorial logic to settle after 5*X ns, where X is
> in the range of 10ns or so.  The microcontroller has a cycle time of
>>50ns and I can specify to insert a NOP instruction before reading back
> the result.  However, I do not want to specify 32 NOPs to rotate the
> value bit by bit with every XTAL cycle. (the design is intended to
> speed up RC5 encryption where 32-bit ADD, XOR and ROTATE are used as
> mathematical primitives).


You may want to read up on static timing analysis.  You don't want to 
hope and pray that your logic settles in time.

Sounds like your particular problem needs to be pipelined.


> Two general questions:
> 
> Is there any way to control the compiler output?  With ANSI-C I can look
> at the assembler output to verify that it is correct, and to learn how
> to write efficient ANSI-C code.


There are various compiler pragmas that control how logic is created and 
optimized.  All of these are compiler-specific, so crack open the book.

> Can I look at the output of a VHDL
> compiler?  


There should be a compiler option (either from command-line or in the 
GUI) to turn on the logic-equation output report.

>I used ABEL-HDL earlier with Lattice Synario and there it
> was possible to view the final logic equations that are burned into
> the GAL.  Is this possible with Atmel System Designer, too?


You may want to read that manual, too, as I've never used Atmel parts.


> And, can you recommend a good book about VHDL?  I have plenty of formal

> language spec documents but still haven't found a book that shows how
> to do real world designs with tips that come from experience rather than
> theory.


Bhasker's synthesis book is very good for its discussion of 
synthesizable coding techniques.  Ashenden's book is very good for an 
overall user's guide to VHDL, but it's not syhnthesis-specific. 
Bergeron's "Writing Test Benches" is excellent if you are trying to 
learn how to test and verify your code.

--a


Article: 37981
Subject: Re: How to set block ram contents ?
From: Ryan Laity <laity@xilinx.com>
Date: Fri, 28 Dec 2001 13:41:51 -0700
Links: << >>  << T >>  << A >>
Hi Rob,
  You can use FPGA Editor to do this.  
Here are the steps:
1) open design in FED
2) change edit mode to read-write
3) find the block ram in question and double-click on it to bring into view
4) click the "begin editing" button (looks like a little pencil writing 
on paper)
5) click "attributes" button (looks like F=)
6) fill in the particular "Init" values that you want to take place
7) click the "apply" button (looks like a down arrow)
8) close the RAM window
9) save the .ncd file
10) rerun bitgen on new .ncd file (you can do this from FED's Probes 
menu or by running command line)

Bam! you've changed the initialization values for your block RAM without 
ever thinking of running PAR.  Hope that helps.

Cheers,

Ryan Laity
Xilinx Applications

Rob Finch wrote:

>How do I set block ram contents without going through the PAR process ? Can
>someone point me to more info ?
>
>Thanks
>Rob
>
>
>


Article: 37982
Subject: Re: How to generate .edn in Webpack ?
From: Ryan Laity <laity@xilinx.com>
Date: Fri, 28 Dec 2001 13:53:46 -0700
Links: << >>  << T >>  << A >>
Rob,
  As of 4.1i, XST no longer produces an edif netlist.  Since you don't 
get Express with Webpack, you can't get an edif from Webpack 4.1i. 
 However, you can still download Webpack 3.1 WP8 from the web site (same 
place, just change the pulldown menu) from which you can get an edif 
netlist.  That's the only supported way to go at this point.  Sorry for 
the inconvenience, I'm told that the optimization that comes from the 
elimination of the netlist is a huge advantage that XST now has.

Happy new year,

Ryan

Rob Finch wrote:

>How do I generate a .edn file in Webpack ?
>
>Thanks
>Rob
>
>
>


Article: 37983
Subject: Spartan LUT question
From: brad@tinyboot.com (Brad Eckert)
Date: 28 Dec 2001 13:39:39 -0800
Links: << >>  << T >>  << A >>
I want to use LUTs as 16x1 RAM, but the data sheet isn't clear about
writing to the LUT. Does input data show up on the output as long as
the write strobe is active, or only after the trailing edge?

My application would use 8 CLBs to store an array of 16 16-bit
counters. A counter would be incremented by selecting it and clocking
the LUT's write line. The output would be routed back to the input
through a +1 adder.

--
Brad Eckert

Article: 37984
Subject: Re: How to set block ram contents ?
From: "Rob Finch" <robfinch@sympatico.ca>
Date: Fri, 28 Dec 2001 16:40:37 -0500
Links: << >>  << T >>  << A >>
1) Is FPGA editor available as a free tool ?
2) Actually I should have given more detail what I'm trying to do. I
generate code from an assembler that's then run through a little utility to
create a series of "INIT_xx=" attributes. Is it possible to script the
update so that I don't have to key anything ? I think I have seen posted
before that it's possible to modify the bitstream (using a program) to do
this. I'd like to automate the whole thing if possible. (My coding skills
are expert C/C++ preferred and I'm not afraid to hack things as long as I
have the info..).

Rob

"Ryan Laity" <laity@xilinx.com> wrote in message
news:3C2CD90F.1010708@xilinx.com...
> Hi Rob,
>   You can use FPGA Editor to do this.
> Here are the steps:
> 1) open design in FED
> 2) change edit mode to read-write
> 3) find the block ram in question and double-click on it to bring into
view
> 4) click the "begin editing" button (looks like a little pencil writing
> on paper)
> 5) click "attributes" button (looks like F=)
> 6) fill in the particular "Init" values that you want to take place
> 7) click the "apply" button (looks like a down arrow)
> 8) close the RAM window
> 9) save the .ncd file
> 10) rerun bitgen on new .ncd file (you can do this from FED's Probes
> menu or by running command line)
>
> Bam! you've changed the initialization values for your block RAM without
> ever thinking of running PAR.  Hope that helps.
>
> Cheers,
>
> Ryan Laity
> Xilinx Applications
>
> Rob Finch wrote:
>
> >How do I set block ram contents without going through the PAR process ?
Can
> >someone point me to more info ?
> >
> >Thanks
> >Rob
> >
> >
> >
>



Article: 37985
Subject: instruction processor
From: msachemo@aol.com (M. Sachemo)
Date: 28 Dec 2001 16:09:35 -0800
Links: << >>  << T >>  << A >>
can some body help me understand what an instruction processor is?
thanks for your reply
newbie

Article: 37986
Subject: Re: Spartan LUT question
From: "S. Ramirez" <sramirez@cfl.rr.com>
Date: Sat, 29 Dec 2001 01:14:10 GMT
Links: << >>  << T >>  << A >>

"Brad Eckert" <brad@tinyboot.com> wrote in message
news:4da09e32.0112281339.5bcddebc@posting.google.com...
> I want to use LUTs as 16x1 RAM, but the data sheet isn't clear about
> writing to the LUT. Does input data show up on the output as long as
> the write strobe is active, or only after the trailing edge?
>
> My application would use 8 CLBs to store an array of 16 16-bit
> counters. A counter would be incremented by selecting it and clocking
> the LUT's write line. The output would be routed back to the input
> through a +1 adder.
>
> --
> Brad Eckert

Brad,
     Look at the following link, which is the Spartan XL data sheet, page
13, Distributed RAM.  Now I am assuming that you really mean a Spartan XL,
not a Spartan II, because they work differently.

             http://support.xilinx.com/partinfo/ds060.pdf

     The Spartan XL has edge triggered synchronous RAM implemented in its
CLB LUTs.  The section called Memory Configuration Overview says that for
both single-port and dual-port (my favorite!), write operations are
synchronous (edge-triggered), while read operations are asynchronous.  This
means that as soon as a write occurs on the edge, the data can be seen at
the output port after a delay t-sub_WOS or t-sub-WODS, assuming that the
read address is the same as the write address. The two delays above are for
single-port and dual-port (my favorite!), respectively, and are depicted on
page 57.  The actual values are given in the table preceding the timing
diagrams.
     If you read the data sheets enough, you will eventually find everything
you need.  It is rare to have to go to Xilinx on something missing in the
data sheets, and even then, they have a great deal of literature that is
searchable at:

            http://support.xilinx.com

    Good luck with your application and use of Xilinx FPGAs.
Simon Ramirez, Consultant
Synchronous Design, Inc.
Oviedo, FL  USA



Article: 37987
Subject: Re: How to generate .edn in Webpack ?
From: Rick Filipkiewicz <rick@algor.co.uk>
Date: Sat, 29 Dec 2001 01:24:23 +0000
Links: << >>  << T >>  << A >>


Ryan Laity wrote:

> Rob,
>   As of 4.1i, XST no longer produces an edif netlist.  Since you don't
> get Express with Webpack, you can't get an edif from Webpack 4.1i.
>  However, you can still download Webpack 3.1 WP8 from the web site (same
> place, just change the pulldown menu) from which you can get an edif
> netlist.  That's the only supported way to go at this point.  Sorry for
> the inconvenience, I'm told that the optimization that comes from the
> elimination of the netlist is a huge advantage that XST now has.
>
> Happy new year,
>
> Ryan

I'm really not ready to buy the ``huge advantage ...''. Running edif2ngd to
create a .ngo file from a .edf takes hardly any time at all.



Article: 37988
Subject: Re: Spartan LUT question
From: Philip Freidin <philip@fliptronics.com>
Date: Sat, 29 Dec 2001 04:49:35 GMT
Links: << >>  << T >>  << A >>
Hi Brad,

Simon has pointed you to the info that I think you need, and I will
just add a few comments of my own.

1) LUT RAM reads are asynchronous. There is just a delay from
   stable address to valid data out. This is identical to when
   the LUT is being used as a ROM or for gates (assumng no writes
are occuring).

2) In the Spartan parts (and Spartan XL, Spartan-II, Virtex,
   and Virtex-2, and Virtex-II-Pro, and 4000E, 4000EX, 4000XL, 4000XV)
   the LUT RAMs ALL work the same way. (Simon indicated that
   Spartan-XL and Spartan-II are different, but this is not true for
   LUT RAMs).

   Assuming you have selected the default rising edge clock
   mode for the LUT RAM, the write occurs immediately after the
   rising edge of the clock, assuming the WE is asserted. I.E.
   fully synchronous, just like a flip-flop. The output of the
   LUT RAM continues to follow the address, so when you do a
   write, and just hold the address stable, you will see the new
   data just written, a short async time after the write's rising
   clock edge. If WE is not asserted, then data is not written, and
   the old data will continue to be on the output.

3) You can think of the WE signal as a RAM equiv of the CE for the
   flipflops.


On Sat, 29 Dec 2001 01:14:10 GMT,   SIMON   wrote:

>
>"Brad Eckert" <brad@tinyboot.com> wrote in message
>news:4da09e32.0112281339.5bcddebc@posting.google.com...
>> I want to use LUTs as 16x1 RAM, but the data sheet isn't clear about
>> writing to the LUT. Does input data show up on the output as long as
>> the write strobe is active, or only after the trailing edge?

See above: Output tracks address, write occurs on rising edge.

>> My application would use 8 CLBs to store an array of 16 16-bit
>> counters. A counter would be incremented by selecting it and clocking
>> the LUT's write line. The output would be routed back to the input
>> through a +1 adder.

This can be an extremely efficient structure. Because the write occurs
on a clock edge, you can use the edge to also change the address to
the next counter to be incremented. It goes something like this:

The address is held in a register (ADDR), clocked on rising edge.
On a rising edge of clock, the ADDR is updated to a new value, and
the WE (also in a reg) is asserted (may have already been asserted,
if we have back to back increments of either the same or different
counters).

Since the address has changed, the LUT output will be the current
value in that location. This goes through your +1 circuit (incrementor)
and its output goes to the LUT RAM data input. On the following
rising clock edge, the D input has the new counter value, the
address ADDR is still pointing at the location we want to increment,
and WE is asserted. A new address is waiting on the input of ADDR.

On the rising edge, we write the updated value to the LUT RAM, and
the ADDR changes to the new value, and we fetch the current value of
the counter at address ADDR.

Philip Freidin

>>
>> --
>> Brad Eckert
>
>Brad,
>     Look at the following link, which is the Spartan XL data sheet, page
>13, Distributed RAM.  Now I am assuming that you really mean a Spartan XL,
>not a Spartan II, because they work differently.
>
>             http://support.xilinx.com/partinfo/ds060.pdf
>
>     The Spartan XL has edge triggered synchronous RAM implemented in its
>CLB LUTs.  The section called Memory Configuration Overview says that for
>both single-port and dual-port (my favorite!), write operations are
>synchronous (edge-triggered), while read operations are asynchronous.  This
>means that as soon as a write occurs on the edge, the data can be seen at
>the output port after a delay t-sub_WOS or t-sub-WODS, assuming that the
>read address is the same as the write address. The two delays above are for
>single-port and dual-port (my favorite!), respectively, and are depicted on
>page 57.  The actual values are given in the table preceding the timing
>diagrams.
>     If you read the data sheets enough, you will eventually find everything
>you need.  It is rare to have to go to Xilinx on something missing in the
>data sheets, and even then, they have a great deal of literature that is
>searchable at:
>
>            http://support.xilinx.com
>
>    Good luck with your application and use of Xilinx FPGAs.
>Simon Ramirez, Consultant
>Synchronous Design, Inc.
>Oviedo, FL  USA
>

Philip Freidin
Fliptronics

Article: 37989
Subject: Re: Look for FPGA Starterkit
From: rashidk@home.net (Rashid Karimov)
Date: 28 Dec 2001 20:59:30 -0800
Links: << >>  << T >>  << A >>
XESS is the best as far as support and finished designs go, but it is 
rather pricey for what you want (Ethernet/USB) etc.
As a matter of fact they killed their Virtex line
that comes with lotsa interfaces integrated, a while
back but are now bringing it back by popular demand.

I personally got a Digilab 2 (in stock, a family-ran
shop ... very personal :) and their IO board (LCD/7seg/keyboard),
for something like $150 . It also has integrated PS2/VGA, Serial
and parallel ports. I wanted to get Burch's design, but
couldnt wait for them to deliver the superpack (sorry Tony :)

Almost all designs work with Xilinx Webpack and it's bigger
brother, ISE and include parallel cable so you don't need anything
extra to get you going. Some only give you JTAG pins, so you
need to buy/build your own Xilinx III cable ( $5 worth of 
parts @ your local RatShack).

Memec has a really interesting offer(take a look @ Xilinx eval
kits on their Website): ~$500 for Virtex II 1M gate setup, with
32Mb DDRAM. They also offer expansion cards ... including one with
Ethernet/USB etc ,not sure about the price.


You might quickly discover that Spartan IIs, even 200K gates ones,
put you just under needed capacity for complex designs, CPUs etc,
so ... if you wait a month or two, Spartan IIs with 300K gates will
become available. Or you might want to spring to something like 
the VII from Memec.

All the cards come with expansion sockets, that route out as many of 
the pins as possible. Connectors range from .100mil DIPs to 
impossible-to-find-high-density ones. Good cards also expose some
essential pins for LA/scope connection. Some give you tiny breadboard
area. 

Some cards provide you with a bank of pre-set refrence voltages, so
you can route them to Vcco pins to support various signalling
standards,
while other wire all the Vcco to 3.3v.

In any way, XESS is the site to go for tutorials and some easy (and
not so easy) designs, if you are just starting.  Xilinx has a wealth
of info on their site.

Article: 37990
Subject: Re: Innoveda Speedwave vs. Modelsim?
From: rickman <spamgoeshere4@yahoo.com>
Date: Sat, 29 Dec 2001 00:31:35 -0500
Links: << >>  << T >>  << A >>


Andy Hall wrote:
...snip...

> I have what
> appears to be an attractive offer from Model Tech, but only good till
> the end of the quarter, and for other reasons I need to make a
> decision this week.

... snip

>   Andy Hall
>   andy at gordian dot com
>   Gordian

I did not even get all the way through your message before I felt
compelled to respond. You should NEVER let a salesman rush you into a
decision to buy a product. That is a common technique to keep you from
making an informed decision. I expect that all of the tool vendors are
competing very heavily for sales to new customers, trying to lure away
the customers of their competitors. I find it hard to believe that if
you don't make a decision until January that they will not cut you a
deal of some kind. In fact, deadlines are often their way of saying, "we
want you to buy this package deal now because the price will be better
in a month and we want to close the deal before we drop the price". 

Everyone is getting hungry these days. Use time to your advantage. 


-- 

Rick "rickman" Collins

rick.collins@XYarius.com
Ignore the reply address. To email me use the above address with the XY
removed.

Arius - A Signal Processing Solutions Company
Specializing in DSP and FPGA design      URL http://www.arius.com
4 King Ave                               301-682-7772 Voice
Frederick, MD 21701-3110                 301-682-7666 FAX

Article: 37991
Subject: Re: Innoveda Speedwave vs. Modelsim?
From: rickman <spamgoeshere4@yahoo.com>
Date: Sat, 29 Dec 2001 00:57:46 -0500
Links: << >>  << T >>  << A >>
Rick Filipkiewicz wrote:
> 
> > That explains it! Going in the right direction apparently. :-) That
> > said,
> > I'll also start off with the Windoze version, and see where that goes.
> >
> 
> The only thing here, if you're not already aware of it, is that the full-fat
> Linux -SE version is many $$$ more expensive than the -PE.  In UK terms we paid ~
> £4500 for the PE edition and to upgrade to the -SE Linux would cost another
> £14000 !
> 
> (wishing & hoping) Maybe ModelTech/Mentor will come out with a -PE on Linux.
> 
> Just one note of gloom. There's a thread on CAF sometime back where ``Rickman''
> was saying that he experienced the -PE edition crashing fairly frequently IIRC he
> was claiming something pretty bad like one time in 4 or 5. BUT, again IIRC, he
> was doing his sims in the ``compile & simulate'' mode whereas I've always
> compiled the source files into separate libraries - design code, my testbench
> models, Vendor libs, etc. - and then run vsim with a bunch of `-L' flags to pull
> in the pre-compiled code at run time.

My problem surfaced when I reloaded simulations from scratch repeatedly
without restarting Modelsim. Because there was no way to position and
size the windows on startup and I found it irritating to have to save
the waveform setups just because I added a couple of signals, I would
just reload the simulation and keep using my current window setups.
After 5 or so reloads Modelsim would crap out under NT. It never crashed
the machine, so it could be restarted. But it took a couple of minutes
to get everything organized again so I could see what I was looking for. 

This was reported to Mentor, so it may be fixed by now. 


> Also: There are two irritations with ModelSim & maybe you could join my one man
> campaign to persuade ModelTech to eliminate them :-)
> 
> 1. If ModelSim cannot find a way to satisfy an instantiation there's no way to
> send a Ctrl-C to the console to stop vsim. If the missing entry is used several
> thousand times in a post-synth or post-route simulation, all you see is a never
> ending stream of error messages.  The best thing I can do is kill ModelSim
> completely & start again.

I agree that is was annoying. I don't remember it often being a problem
though. 
 

> 2. If there's a port mis-match where an instantiation has more ports then the
> module definition ModelSim doesn't tell you the name of the ``extra'' port in the
> error message. Sometimes needs a binary chop to find the error.

I found this very annoying. I don't think we had to do the "binary chop"
but it can be a PITA to search and compare two long signal name lists
when the names change as they pass through your heirarchy. This was
modifications of OPC (Other People's Code). 


-- 

Rick "rickman" Collins

rick.collins@XYarius.com
Ignore the reply address. To email me use the above address with the XY
removed.

Arius - A Signal Processing Solutions Company
Specializing in DSP and FPGA design      URL http://www.arius.com
4 King Ave                               301-682-7772 Voice
Frederick, MD 21701-3110                 301-682-7666 FAX

Article: 37992
Subject: THE SIGNAL LIST IS NOT AVAILABLE TO SIMULATE
From: wacky_me@rediffmail.com (freny)
Date: 28 Dec 2001 22:20:24 -0800
Links: << >>  << T >>  << A >>
i am using xilinx foundation series . For some unknown reason i cant
view the  PROJECT MANAGER FLOWCHART . Hence i have to use the menu bar
. When i work on some other Pc i found that when i simulate using the
FLOWCHART icon i can access all the signals in the list . and when i
use the simulate option of the menu bar i cant...
kindly help  me

freny

Article: 37993
Subject: Re: CRC-32 verilog source code
From: Mardin <aiurh@iuehr.erug>
Date: Fri, 28 Dec 2001 22:27:35 -0800
Links: << >>  << T >>  << A >>
Thanks!
input data:2bit parallel
i want to make 32-bit CRC according to IEEE802.3 
Can you tell me?

Article: 37994
Subject: Re: Choice of Processor Cores in FPGAs - Both Embedded & Soft
From: "Victor Schutte" <victors@mweb.co.za>
Date: Sat, 29 Dec 2001 10:18:51 +0200
Links: << >>  << T >>  << A >>
Yesterday I got my small NIOS board functional. When I started out I wanted
to achieve a few things:
-Replace my 8051 (big board,large RAM/ROM) designs.
-Have something that can be upgraded.
-Have some useable tools.

I am not trying to plug an ad. for Altera but I am impressed. My entire PCB
is 120mm by 90mm, 32 bit NIOS, 64 I/Os, 6 serial ports (if I simplify the
UARTs), RTC , 256K RAM, 1Meg FLASH. I can configure from a single EPC1 or 2
or from flash, although I think the EPC1 is eventually cheaper/cost
effective and safer (if you consider that you might wipe your CPU design
configuration from flash). You still need to apply external power and
MAX232.

I wrote a small program to test memory copy to a port (at clk=20MHz). At
this speed, with a serializer, I will be able to transmit about 73megabits
per second. This small PCB is magnitudes faster than the 8051 (at whatever
speed you can buy .e.g. Dallas has produced a 50MIPS device). If Altera
discontinues the 20K100 (device that I am using at the moment) I can easily
migrate to other packages(The drawback is that you can only use it with
Altera devices (legally)). The tools are easy to use and free (GNU C/C++).
Plus, looking at NIOS ver2 more features can be packed into the FPGA.
Plus,plus... you don't need a killer heatsink and fan, everything runs
pretty cool.

Cost and effort wise it might not be an option for many people to develop
your own PCB. The development kit is $995. The components are hard to find
in small quantities and believe me it takes a bit more effort to get it
going than a simple 8051 design. I think Altera can supply more of the kit's
populated PCBs but these cost about $600 to $700 (correct me if I am wrong).

Now a plug for my business. I am using NIOS for my access control systems
and vehicle management systems. I am also situated in South Africa and for
those who watch the money markets you will notice that the South Africa Rand
is about 11 to 1 to the US dollar, which means we are dirt cheap. I can
supply small quantity populated PCBs, tested with all the software you need
for less than $300. I am also planning an ACEX1k100 NIOS which in large
quantities will be lots cheaper.  My PCB is not production ready yet but
email me (zerksus@mweb.co.za) is you have any questions.

Question: Does anybody know if MicroBlaze is a reality or not. For the last
year I have been reading specs of how much better and cheaper it is than
NIOS but nobody wants to sell anything to me. I always get responses that it
will be available later this year (Ray, any response ?)

Victor
Zerksus Engineering





"Stuart Moses" <mostuus@yahoo.com> wrote in message
news:99d0603.0112271625.5b56fdd1@posting.google.com...
> The biggest criteria is performance.   What performance do you need?
> A soft-core processor implemented in programmable logic will be slower
> than a hard-core processor.  There are several soft-cores available on
> the market, some of these are synthesizable Verilog and VHDL verions
> of 6502, 8051, etc. or architecture-specific soft-cores such as
> Altera's Nios. If you are replacing a 68000 micro in you system, a
> Nios will have more horsepower than you would need.
>
> Hard-Core processors in FPGAs include Altera's ARM9 implementation
> (@200MHz) and Triscend's ARM7 (@50MHz.)  In this case, the Altera and
> Triscend implementations have hard-wired processor bus interfaces,
> guaranteeing fast external memory bus speeds & allowing the processor
> to power-up and operate before the FPGA is configured (this allows the
> processor to configure the device.)  Xilinx had announced something in
> a hard-core processor, but I don't believe they're shipping these
> parts.
>
> Another important criteria is the S/W development tools and OS support
> (if you require an OS.)  Make certain that there are compilers and
> debug tools available.  On an ARM or MIPs, OS and tools support will
> not be a problem at all.  The Nios includes S/W tools and a debugger
> and has two RTOSes and a Linux port.
>
> Hope this helps.



Article: 37995
Subject: Re: Look for FPGA Starterkit
From: jmrice@ntlworld.com (Martin Rice)
Date: 29 Dec 2001 01:56:46 -0800
Links: << >>  << T >>  << A >>
"David G." <dgeerinck@yahoo.com> wrote in message news:<3c27e328$0$10318$ba620e4c@news.skynet.be>...
> Hi,
> I saw this year some basics of vhdl at school.
> I'm now looking for some kind of FPGA-starterkit who allows me
> to experiment on simple I/O like leds, LCD screens, com-ports,
> RAM, ETHERNET,etc that are accesible through a simple electronic board.
> 
> I heard of a Xilinx starterkit but found it a bit expesive
> for the pour student I am :-(
> 
> 
> Thanks.
> 
> David.

With the emphasis on *simple* you may find the hardware that
accompanies my text book Combinational and Sequential Logic of
interest.  If you are poor you can just buy the pcb and chip, or set
of parts, or you can buy built and tested.  The chip is a small CPLD
rather than FPGA, but you get input switches, clock, output LEDs and
seven-segment displays, and 11-way jumper connector to go off the
board.  Book takes you through standard digital electronics stuff up
to design of synchronous and asynchronous state machines, but with
emphasis on programmable logic.  Comes with Webpack and lots of
examples.  See www.Booksites.co.uk/rice

Best wishes,

Martin

Article: 37996
Subject: Re: Spartan LUT question
From: "S. Ramirez" <sramirez@cfl.rr.com>
Date: Sat, 29 Dec 2001 12:00:19 GMT
Links: << >>  << T >>  << A >>
"Philip Freidin" <philip@fliptronics.com> wrote in message
news:17hq2ug88cr6onmsofav2cpmlqp6kahd7b@4ax.com...

> 2) In the Spartan parts (and Spartan XL, Spartan-II, Virtex,
>    and Virtex-2, and Virtex-II-Pro, and 4000E, 4000EX, 4000XL, 4000XV)
>    the LUT RAMs ALL work the same way. (Simon indicated that
>    Spartan-XL and Spartan-II are different, but this is not true for
>    LUT RAMs).
> Philip Freidin
> Fliptronics

Phil,
     Thanks for the clarifications.  I went back to the Spartan II databook
and reread the section on CLBs, and you are correct!  Previously I was
reading in a hurry and confused the operation of the LUT RAMs with the
storage elements, i.e., the flip flops, and thought they were edge triggered
AND level sensitive.  Thanks for setting me straight!
Simon Ramirez, Consultant
Synchronous Design, Inc.
Oviedo, FL  USA



Article: 37997
Subject: How do I use Altera's PLL megafunction to multiply some frequency ?
From: "Dimitry Yegorov 1598864168" <dmyegorov@geolink-group.com>
Date: Sat, 29 Dec 2001 15:07:00 +0300
Links: << >>  << T >>  << A >>
I know that it must be an easy question, but I can't find the answer - it is
not published in the Help. Seems that some loop should be added to max2plus
PLL megafunction to implement the F*N multiplier.
Any comments are welcome, I am the beginner.
Thanks!




Article: 37998
Subject: Re: Spartan LUT question
From: Rick Filipkiewicz <rick@algor.co.uk>
Date: Sat, 29 Dec 2001 12:21:05 +0000
Links: << >>  << T >>  << A >>


Philip Freidin wrote:

> Hi Brad,
>
> Simon has pointed you to the info that I think you need, and I will
> just add a few comments of my own.
>
> 1) LUT RAM reads are asynchronous. There is just a delay from
>    stable address to valid data out. This is identical to when
>    the LUT is being used as a ROM or for gates (assumng no writes
> are occuring).
>
> 2) In the Spartan parts (and Spartan XL, Spartan-II, Virtex,
>    and Virtex-2, and Virtex-II-Pro, and 4000E, 4000EX, 4000XL, 4000XV)
>    the LUT RAMs ALL work the same way. (Simon indicated that
>    Spartan-XL and Spartan-II are different, but this is not true for
>    LUT RAMs).
>
>    Assuming you have selected the default rising edge clock
>    mode for the LUT RAM, the write occurs immediately after the
>    rising edge of the clock, assuming the WE is asserted. I.E.
>    fully synchronous, just like a flip-flop. The output of the
>    LUT RAM continues to follow the address, so when you do a
>    write, and just hold the address stable, you will see the new
>    data just written, a short async time after the write's rising
>    clock edge. If WE is not asserted, then data is not written, and
>    the old data will continue to be on the output.
>
> 3) You can think of the WE signal as a RAM equiv of the CE for the
>    flipflops.
>

Just to add, expanding on Simon's ``my favourite'' (my feeling as well) dual port
comment.

For the DP variants there are

o Separate read & write addresses.

o Two read data ports. One of them outputs the data pointed to by the read
address and so does not track new data as its written. The other outputs data
pointed to by the write address and so tracks in the same way the SP LUT RAM
does.

o 2 LUTs per DP RAM bit.

These are synthesisable, at least if you are using a decent synth tool, and so
give a nice way to make parametrisable MxN memories. The Verilog template goes
like this (assuming you don't need the ``write tracking'' read data port):

reg [N-1:0] ram [M-1:0];

always @(posedge ram_clk)
    if (ram_write_en)
        ram[ram_write_addr] <= data_in;

assign data_out = ram[ram_read_addr];

If you need the other read port as well then, for Synplify at least, this works:

assign other_data_out = ram[ram_write_addr];



Article: 37999
Subject: Re: How to set block ram contents ?
From: Eric Smith <eric-no-spam-for-me@brouhaha.com>
Date: 29 Dec 2001 09:23:11 -0800
Links: << >>  << T >>  << A >>
"Rob Finch" <robfinch@sympatico.ca> writes:
> 1) Is FPGA editor available as a free tool ?

No.  :-(



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