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 148175

Article: 148175
Subject: Re: fooling the compiler
From: John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com>
Date: Fri, 25 Jun 2010 06:53:08 -0700
Links: << >>  << T >>  << A >>
On Fri, 25 Jun 2010 15:34:20 +1000, Sylvia Else
<sylvia@not.here.invalid> wrote:

>On 25/06/2010 3:09 PM, John Larkin wrote:
>
>> Rob has a better idea, just make a 16-bit SR that generates a
>> thermometer code on powerup, namely walk a 1 into it, and have the sr
>> output bits un-clear the i/o flops sequentially. The compiler isn't
>> smart enough catch onto that, and we don't need to ground a pin.
>
>The compiler isn't smart enough in its current version. You may be 
>laying a trap for the future if you use a technique that relies on the 
>compiler not performing an analysis that it could perform in principle, 
>but just doesn't at the moment.
>
>I suppose it doesn't matter if you sure that neither this circuit, nor 
>any variant of it, will ever be processed by a newer version of the 
>compiler.
>
>Sylvia.

This design builds under v11 of the Xilinx software, but won't build
under v12, the "Spartan 6 optimized" version. So there's apparently no
worry that we'll ever compile it under more advanced compilers; they
seem to be getting worse, not better.

John


Article: 148176
Subject: Re: fooling the compiler
From: John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com>
Date: Fri, 25 Jun 2010 07:00:00 -0700
Links: << >>  << T >>  << A >>
On Fri, 25 Jun 2010 08:46:30 +0000 (UTC), Uwe Bonnes
<bon@elektron.ikp.physik.tu-darmstadt.de> wrote:

>In comp.arch.fpga John Larkin 
><jjlarkin@highnotlandthistechnologypart.com> wrote:
>
>
>> We have a Spartan6/45 that's talking to 16 separate SPI A/D
>> converters. The data we get back is different, but the clock and chip
>> select timings are the same. To get the timing right, avoiding routing
>> delays, we need our outgoing stuff to be reclocked by i/o cell
>> flipflops.
>
>> So what happens is that we have one state machine running all 16 SPI
>> interfaces. We tell the software that we want the adc chip select
>> flops in i/o cells. The compiler decides that all are seeing the same
>> input signal, so reduces them to one flipflop. Then it concludes that
>> that flipflop can't be in an i/o block, and builds it that way. The
>> resulting routing delays are deadly.
>
>> We couldn't find a way to force these 16 flops into IOBs. Really.
>
>> The fix is to fool the compiler into thinking the flipflop states are
>> not the same. Turns out the the synchronous clear inputs to the flops
>> are unused in our design. My suggestion was to ground an input pin,
>> run that into the serial input of a 16-bit shift register, and route
>> the sr taps to the clears of the 16 output flops. The compiler can't
>> know that these levels are in fact always low, so has to gen 16
>> different flops. *Then* it allows the flops to be forced into IOBs.
>
>> Rob has a better idea, just make a 16-bit SR that generates a
>> thermometer code on powerup, namely walk a 1 into it, and have the sr
>> output bits un-clear the i/o flops sequentially. The compiler isn't
>> smart enough catch onto that, and we don't need to ground a pin.
>
>> It works.
>
>> Isn't that all perfectly stupid?
>
>Did you try to attach a 
>(* KEEP = "TRUE" *)
>attribute to the registers in question?
>
>I had a similar problem with registers meant to get places in an IOB
>absorbed by the feeding BRAM

My Xilinx guy, a real pro at this sort of thing, tried everything,
"keeps" and "forces" and such. He thought my suggestion was
disgusting, which it certainly is, but it broke the logjam and let us
get on with our lives.

The real figure of merit of any fpga is a mimimal value of 

K = A/R

where A is the actual time you spend downloading, installing,
patching, and fighting with the tools, and R is a reasonable
design/sim/test time for the project. Xilinx's K value increases
steadily over time, and is now roughly 4.

John


Article: 148177
Subject: Re: fooling the compiler
From: Gabor <gabor@alacron.com>
Date: Fri, 25 Jun 2010 07:54:00 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Jun 25, 8:26=A0am, Philipp Klaus Krause <p...@spth.de> wrote:
> Am 25.06.2010 12:31, schrieb John_H:
>
> > On Jun 25, 1:09 am, John Larkin
> > <jjlar...@highNOTlandTHIStechnologyPART.com> wrote:
>
> >> We couldn't find a way to force these 16 flops into IOBs. Really.
>
> > In Synplify, this common type of situation is easily handled with the
> > "syn_preserve" directive which is different than Synplify's "keep"
> > used for wires in my Verilog code.
>
> Hmm, but is there a portable way to do these things? Something like C's
> "volatile"?
>
> Philipp

I haven't done this recently, but in the previous versions of XST I
found you had to shut off "equivalent register removal" AND "resource
sharing" in the Synthesis properties, and also "equivalent register
removal" in the Map properties to fix the issue.  I have also used
the shift register start-up approach to make the registers non-
equivalent, but I didn't need to do that with all the switches
set properly.

HTH,
Gabor

Article: 148178
Subject: Re: fooling the compiler
From: John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com>
Date: Fri, 25 Jun 2010 08:00:54 -0700
Links: << >>  << T >>  << A >>
On Fri, 25 Jun 2010 07:54:00 -0700 (PDT), Gabor <gabor@alacron.com>
wrote:

>On Jun 25, 8:26 am, Philipp Klaus Krause <p...@spth.de> wrote:
>> Am 25.06.2010 12:31, schrieb John_H:
>>
>> > On Jun 25, 1:09 am, John Larkin
>> > <jjlar...@highNOTlandTHIStechnologyPART.com> wrote:
>>
>> >> We couldn't find a way to force these 16 flops into IOBs. Really.
>>
>> > In Synplify, this common type of situation is easily handled with the
>> > "syn_preserve" directive which is different than Synplify's "keep"
>> > used for wires in my Verilog code.
>>
>> Hmm, but is there a portable way to do these things? Something like C's
>> "volatile"?
>>
>> Philipp
>
>I haven't done this recently, but in the previous versions of XST I
>found you had to shut off "equivalent register removal" AND "resource
>sharing" in the Synthesis properties, and also "equivalent register
>removal" in the Map properties to fix the issue.

Those setting become global to the design. If you use sensible HDL
structures, that explodes the number of CLBs, so the cure is worse
than the disease.

John



Article: 148179
Subject: Re: fooling the compiler
From: Tim Wescott <tim@seemywebsite.now>
Date: Fri, 25 Jun 2010 08:30:04 -0700
Links: << >>  << T >>  << A >>
On 06/25/2010 07:00 AM, John Larkin wrote:
> On Fri, 25 Jun 2010 08:46:30 +0000 (UTC), Uwe Bonnes
> <bon@elektron.ikp.physik.tu-darmstadt.de>  wrote:
>
>> In comp.arch.fpga John Larkin
>> <jjlarkin@highnotlandthistechnologypart.com>  wrote:
>>
>>
>>> We have a Spartan6/45 that's talking to 16 separate SPI A/D
>>> converters. The data we get back is different, but the clock and chip
>>> select timings are the same. To get the timing right, avoiding routing
>>> delays, we need our outgoing stuff to be reclocked by i/o cell
>>> flipflops.
>>
>>> So what happens is that we have one state machine running all 16 SPI
>>> interfaces. We tell the software that we want the adc chip select
>>> flops in i/o cells. The compiler decides that all are seeing the same
>>> input signal, so reduces them to one flipflop. Then it concludes that
>>> that flipflop can't be in an i/o block, and builds it that way. The
>>> resulting routing delays are deadly.
>>
>>> We couldn't find a way to force these 16 flops into IOBs. Really.
>>
>>> The fix is to fool the compiler into thinking the flipflop states are
>>> not the same. Turns out the the synchronous clear inputs to the flops
>>> are unused in our design. My suggestion was to ground an input pin,
>>> run that into the serial input of a 16-bit shift register, and route
>>> the sr taps to the clears of the 16 output flops. The compiler can't
>>> know that these levels are in fact always low, so has to gen 16
>>> different flops. *Then* it allows the flops to be forced into IOBs.
>>
>>> Rob has a better idea, just make a 16-bit SR that generates a
>>> thermometer code on powerup, namely walk a 1 into it, and have the sr
>>> output bits un-clear the i/o flops sequentially. The compiler isn't
>>> smart enough catch onto that, and we don't need to ground a pin.
>>
>>> It works.
>>
>>> Isn't that all perfectly stupid?
>>
>> Did you try to attach a
>> (* KEEP = "TRUE" *)
>> attribute to the registers in question?
>>
>> I had a similar problem with registers meant to get places in an IOB
>> absorbed by the feeding BRAM
>
> My Xilinx guy, a real pro at this sort of thing, tried everything,
> "keeps" and "forces" and such. He thought my suggestion was
> disgusting, which it certainly is, but it broke the logjam and let us
> get on with our lives.
>
> The real figure of merit of any fpga is a mimimal value of
>
> K = A/R
>
> where A is the actual time you spend downloading, installing,
> patching, and fighting with the tools, and R is a reasonable
> design/sim/test time for the project. Xilinx's K value increases
> steadily over time, and is now roughly 4.

Funny, that's my figure of merit for an embedded processor, too!

It's much better these days than it was 20 years ago, although I admit 
that I've managed to shove it way up recently by deciding to build my 
own open-source tools.  But that's for play, not for money, so it's 
different.

-- 
Tim Wescott
Control system and signal processing consulting
www.wescottdesign.com

Article: 148180
Subject: Re: fooling the compiler
From: John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com>
Date: Fri, 25 Jun 2010 08:55:15 -0700
Links: << >>  << T >>  << A >>
On Fri, 25 Jun 2010 08:30:04 -0700, Tim Wescott <tim@seemywebsite.now>
wrote:

>On 06/25/2010 07:00 AM, John Larkin wrote:
>> On Fri, 25 Jun 2010 08:46:30 +0000 (UTC), Uwe Bonnes
>> <bon@elektron.ikp.physik.tu-darmstadt.de>  wrote:
>>
>>> In comp.arch.fpga John Larkin
>>> <jjlarkin@highnotlandthistechnologypart.com>  wrote:
>>>
>>>
>>>> We have a Spartan6/45 that's talking to 16 separate SPI A/D
>>>> converters. The data we get back is different, but the clock and chip
>>>> select timings are the same. To get the timing right, avoiding routing
>>>> delays, we need our outgoing stuff to be reclocked by i/o cell
>>>> flipflops.
>>>
>>>> So what happens is that we have one state machine running all 16 SPI
>>>> interfaces. We tell the software that we want the adc chip select
>>>> flops in i/o cells. The compiler decides that all are seeing the same
>>>> input signal, so reduces them to one flipflop. Then it concludes that
>>>> that flipflop can't be in an i/o block, and builds it that way. The
>>>> resulting routing delays are deadly.
>>>
>>>> We couldn't find a way to force these 16 flops into IOBs. Really.
>>>
>>>> The fix is to fool the compiler into thinking the flipflop states are
>>>> not the same. Turns out the the synchronous clear inputs to the flops
>>>> are unused in our design. My suggestion was to ground an input pin,
>>>> run that into the serial input of a 16-bit shift register, and route
>>>> the sr taps to the clears of the 16 output flops. The compiler can't
>>>> know that these levels are in fact always low, so has to gen 16
>>>> different flops. *Then* it allows the flops to be forced into IOBs.
>>>
>>>> Rob has a better idea, just make a 16-bit SR that generates a
>>>> thermometer code on powerup, namely walk a 1 into it, and have the sr
>>>> output bits un-clear the i/o flops sequentially. The compiler isn't
>>>> smart enough catch onto that, and we don't need to ground a pin.
>>>
>>>> It works.
>>>
>>>> Isn't that all perfectly stupid?
>>>
>>> Did you try to attach a
>>> (* KEEP = "TRUE" *)
>>> attribute to the registers in question?
>>>
>>> I had a similar problem with registers meant to get places in an IOB
>>> absorbed by the feeding BRAM
>>
>> My Xilinx guy, a real pro at this sort of thing, tried everything,
>> "keeps" and "forces" and such. He thought my suggestion was
>> disgusting, which it certainly is, but it broke the logjam and let us
>> get on with our lives.
>>
>> The real figure of merit of any fpga is a mimimal value of
>>
>> K = A/R
>>
>> where A is the actual time you spend downloading, installing,
>> patching, and fighting with the tools, and R is a reasonable
>> design/sim/test time for the project. Xilinx's K value increases
>> steadily over time, and is now roughly 4.
>
>Funny, that's my figure of merit for an embedded processor, too!
>
>It's much better these days than it was 20 years ago, although I admit 
>that I've managed to shove it way up recently by deciding to build my 
>own open-source tools.  But that's for play, not for money, so it's 
>different.

I'm still programming embedded stuff in 68K assembly. Dyno mode. The
thing is, I finish a typical instrument's firmware in a week or two
and have zero problems with the assembly and debug tools. And rarely
find a bug in shipped products. I can archive the source *and all the
tools* on one floppy. A lot of people nowadays can't even install and
run tool chains that they used a few years ago.

Sometimes just grunting it out with simple tools is the best way to
get something done. A lot of fancy labor-saving, abstraction-for-reuse
stuff is actually game-playing and counter-productive.

John


Article: 148181
Subject: Binary integer to ASCII string in HDL?
From: "John Speth" <johnspeth@yahoo.com>
Date: Fri, 25 Jun 2010 09:19:06 -0700
Links: << >>  << T >>  << A >>
I need to do some fast (<5 usec) conversions of binary integer to ASCII 
string in HDL (NIOS, FPGA, etc) - basically a fast substitute for 
sprintf(s,"%d",n);

Does anyone know if:

1. It's practical to make an effort to do it in HDL or will it be an endless 
rats hole?
2. Is there an IP vendor that can sell it to me?

If neither, can anyone offer any suggestion on which direction to proceed?

Thanks, JJS



--- news://freenews.netfront.net/ - complaints: news@netfront.net ---

Article: 148182
Subject: Re: Binary integer to ASCII string in HDL?
From: Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
Date: Fri, 25 Jun 2010 16:43:47 +0000 (UTC)
Links: << >>  << T >>  << A >>
John Speth <johnspeth@yahoo.com> wrote:
> I need to do some fast (<5 usec) conversions of binary integer to ASCII 
> string in HDL (NIOS, FPGA, etc) - basically a fast substitute for 
> sprintf(s,"%d",n);

> Does anyone know if:

> 1. It's practical to make an effort to do it in HDL or will it 
> be an endless rats hole?
> 2. Is there an IP vendor that can sell it to me?

> If neither, can anyone offer any suggestion on which direction
> to proceed?

Look for binary_to_bcd.v on opencores.

I used it successfull for some design.
-- 
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------

Article: 148183
Subject: Re: fooling the compiler
From: Tim Wescott <tim@seemywebsite.now>
Date: Fri, 25 Jun 2010 10:03:09 -0700
Links: << >>  << T >>  << A >>
On 06/25/2010 08:55 AM, John Larkin wrote:
> On Fri, 25 Jun 2010 08:30:04 -0700, Tim Wescott<tim@seemywebsite.now>
> wrote:
>
>> On 06/25/2010 07:00 AM, John Larkin wrote:
>>> On Fri, 25 Jun 2010 08:46:30 +0000 (UTC), Uwe Bonnes
>>> <bon@elektron.ikp.physik.tu-darmstadt.de>   wrote:
>>>
>>>> In comp.arch.fpga John Larkin
>>>> <jjlarkin@highnotlandthistechnologypart.com>   wrote:
>>>>
>>>>
>>>>> We have a Spartan6/45 that's talking to 16 separate SPI A/D
>>>>> converters. The data we get back is different, but the clock and chip
>>>>> select timings are the same. To get the timing right, avoiding routing
>>>>> delays, we need our outgoing stuff to be reclocked by i/o cell
>>>>> flipflops.
>>>>
>>>>> So what happens is that we have one state machine running all 16 SPI
>>>>> interfaces. We tell the software that we want the adc chip select
>>>>> flops in i/o cells. The compiler decides that all are seeing the same
>>>>> input signal, so reduces them to one flipflop. Then it concludes that
>>>>> that flipflop can't be in an i/o block, and builds it that way. The
>>>>> resulting routing delays are deadly.
>>>>
>>>>> We couldn't find a way to force these 16 flops into IOBs. Really.
>>>>
>>>>> The fix is to fool the compiler into thinking the flipflop states are
>>>>> not the same. Turns out the the synchronous clear inputs to the flops
>>>>> are unused in our design. My suggestion was to ground an input pin,
>>>>> run that into the serial input of a 16-bit shift register, and route
>>>>> the sr taps to the clears of the 16 output flops. The compiler can't
>>>>> know that these levels are in fact always low, so has to gen 16
>>>>> different flops. *Then* it allows the flops to be forced into IOBs.
>>>>
>>>>> Rob has a better idea, just make a 16-bit SR that generates a
>>>>> thermometer code on powerup, namely walk a 1 into it, and have the sr
>>>>> output bits un-clear the i/o flops sequentially. The compiler isn't
>>>>> smart enough catch onto that, and we don't need to ground a pin.
>>>>
>>>>> It works.
>>>>
>>>>> Isn't that all perfectly stupid?
>>>>
>>>> Did you try to attach a
>>>> (* KEEP = "TRUE" *)
>>>> attribute to the registers in question?
>>>>
>>>> I had a similar problem with registers meant to get places in an IOB
>>>> absorbed by the feeding BRAM
>>>
>>> My Xilinx guy, a real pro at this sort of thing, tried everything,
>>> "keeps" and "forces" and such. He thought my suggestion was
>>> disgusting, which it certainly is, but it broke the logjam and let us
>>> get on with our lives.
>>>
>>> The real figure of merit of any fpga is a mimimal value of
>>>
>>> K = A/R
>>>
>>> where A is the actual time you spend downloading, installing,
>>> patching, and fighting with the tools, and R is a reasonable
>>> design/sim/test time for the project. Xilinx's K value increases
>>> steadily over time, and is now roughly 4.
>>
>> Funny, that's my figure of merit for an embedded processor, too!
>>
>> It's much better these days than it was 20 years ago, although I admit
>> that I've managed to shove it way up recently by deciding to build my
>> own open-source tools.  But that's for play, not for money, so it's
>> different.
>
> I'm still programming embedded stuff in 68K assembly. Dyno mode. The
> thing is, I finish a typical instrument's firmware in a week or two
> and have zero problems with the assembly and debug tools. And rarely
> find a bug in shipped products. I can archive the source *and all the
> tools* on one floppy. A lot of people nowadays can't even install and
> run tool chains that they used a few years ago.

Good for you.

> Sometimes just grunting it out with simple tools is the best way to
> get something done. A lot of fancy labor-saving, abstraction-for-reuse
> stuff is actually game-playing and counter-productive.

It can be.  It works well when you have a large group and a product line 
with lots of components that have both similarities and differences.

I worked on a product that had over a dozen CAN-enabled processors roped 
together on a CAN bus.  We had a _lot_ of common code that was reused 
among all the processors.  We also had a lot of code that was individual 
to each processor.

Just handing out specifications for the CAN protocol to a dozen 
developers and telling them "go" would have been a nightmare.  Instead 
we got the CAN stuff going with just two guys, and used it everywhere. 
Ditto for a bunch of motor control stuff that was used everywhere, as 
well as some generic ADC-reading infrastructure and other bits and pieces.

But I've seen code reuse turn into a disaster in the hands of someone 
who's not as smart as they think they are.

-- 
Tim Wescott
Control system and signal processing consulting
www.wescottdesign.com

Article: 148184
Subject: Re: Why is Google so F****** dense about SPAM?
From: martin_05 <martin_05@rocketmail.com>
Date: Fri, 25 Jun 2010 10:20:09 -0700 (PDT)
Links: << >>  << T >>  << A >>
> Yet another way Google can make money from spam.
>
> "We are not evil" - yeah, right.

Just a quick comment to the above.

Do you have any sense of what it costs to devise, create, maintain and
support infrastructures such as Google's?  And, if you do, would you
really propose that this ought to be offered for free and yet not try
to generate revenue in any way?

Unless you don't understand the basic business equation I would
suspect that upon reflection you might ultimately realize that Google
--and lots of other internet companies-- need to make money in order
to offer what they offer the world FOR FREE.

Just look at something like Google Earth or Google maps.  Amazing
stuff.  Free for you to use.  Sure, they monetize whatever they can.
And, they should as these are not cheap products to produce (they
literally have cars driving every road in the world with cameras to
give you street view).

Anyhow, my point is that the vilification of a company like Google is
grossly unfounded and is probably a knee-jerk reaction rather than a
well thought-out position.  Try this:  Work your tail off for a year --
seven days a week-- to create a great product without pay.  They put
it on the web  for everyone to use for free.  Then read a post from a
guy who says you are evil for trying to monetize your creation with
paid ads and such things.

-Martin


Article: 148185
Subject: Re: fooling the compiler
From: nico@puntnl.niks (Nico Coesel)
Date: Fri, 25 Jun 2010 17:20:21 GMT
Links: << >>  << T >>  << A >>
John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

>
>
>We have a Spartan6/45 that's talking to 16 separate SPI A/D
>converters. The data we get back is different, but the clock and chip
>select timings are the same. To get the timing right, avoiding routing
>delays, we need our outgoing stuff to be reclocked by i/o cell
>flipflops.
>
>So what happens is that we have one state machine running all 16 SPI
>interfaces. We tell the software that we want the adc chip select
>flops in i/o cells. The compiler decides that all are seeing the same
>input signal, so reduces them to one flipflop. Then it concludes that
>that flipflop can't be in an i/o block, and builds it that way. The
>resulting routing delays are deadly.
>
>We couldn't find a way to force these 16 flops into IOBs. Really.

Constraints usually help. In that case it should duplicate logic (if
this option is on) to meet timing specifications.

-- 
Failure does not prove something is impossible, failure simply
indicates you are not using the right tools...
nico@nctdevpuntnl (punt=.)
--------------------------------------------------------------

Article: 148186
Subject: Re: fooling the compiler
From: "langwadt@fonz.dk" <langwadt@fonz.dk>
Date: Fri, 25 Jun 2010 10:27:08 -0700 (PDT)
Links: << >>  << T >>  << A >>
On 25 Jun., 07:09, John Larkin
<jjlar...@highNOTlandTHIStechnologyPART.com> wrote:
> We have a Spartan6/45 that's talking to 16 separate SPI A/D
> converters. The data we get back is different, but the clock and chip
> select timings are the same. To get the timing right, avoiding routing
> delays, we need our outgoing stuff to be reclocked by i/o cell
> flipflops.
>
> So what happens is that we have one state machine running all 16 SPI
> interfaces. We tell the software that we want the adc chip select
> flops in i/o cells. The compiler decides that all are seeing the same
> input signal, so reduces them to one flipflop. Then it concludes that
> that flipflop can't be in an i/o block, and builds it that way. The
> resulting routing delays are deadly.
>
> We couldn't find a way to force these 16 flops into IOBs. Really.
>

you don't happen to use the output of that flop somewhere in the
design?

you can't directly instantiate an output FF, but you can instantiate
a
DDR output FF, OFDDRCPE, with C1 tied low it might work.

-Lasse

Article: 148187
Subject: Re: fooling the compiler
From: ghelbig <ghelbig@lycos.com>
Date: Fri, 25 Jun 2010 11:08:24 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Jun 24, 10:09=A0pm, John Larkin
<jjlar...@highNOTlandTHIStechnologyPART.com> wrote:
> We have a Spartan6/45 that's talking to 16 separate SPI A/D
> converters. The data we get back is different, but the clock and chip
> select timings are the same. To get the timing right, avoiding routing
> delays, we need our outgoing stuff to be reclocked by i/o cell
> flipflops.
>
> So what happens is that we have one state machine running all 16 SPI
> interfaces. We tell the software that we want the adc chip select
> flops in i/o cells. The compiler decides that all are seeing the same
> input signal, so reduces them to one flipflop. Then it concludes that
> that flipflop can't be in an i/o block, and builds it that way. The
> resulting routing delays are deadly.
>
> We couldn't find a way to force these 16 flops into IOBs. Really.
>
> The fix is to fool the compiler into thinking the flipflop states are
> not the same. Turns out the the synchronous clear inputs to the flops
> are unused in our design. My suggestion was to ground an input pin,
> run that into the serial input of a 16-bit shift register, and route
> the sr taps to the clears of the 16 output flops. The compiler can't
> know that these levels are in fact always low, so has to gen 16
> different flops. *Then* it allows the flops to be forced into IOBs.
>
> Rob has a better idea, just make a 16-bit SR that generates a
> thermometer code on powerup, namely walk a 1 into it, and have the sr
> output bits un-clear the i/o flops sequentially. The compiler isn't
> smart enough catch onto that, and we don't need to ground a pin.
>
> It works.
>
> Isn't that all perfectly stupid?
>
> The Altera folks are coming to make their pitch tomorrow. This story
> may amuse them.
>
> John


I understand your pain.

<vent>
My gripe is that the tool views constraints as "suggestions".  I place
a CLB, I see the message "resolved that xxx is at yyy", it doesn't
meet timing, and viewing the routed chip in PlanAhead reveals that
'xxx' is NOT at 'yyy'.

Hello?  I wouldn't have created the constraint if it wasn't
important!  Getting documentation on what the tool actually does with
constraints is like pulling teeth from a chicken!

I recently worked on a project where the design "just doesn't work"
with ISE-11 and ISE-12.  Works "just fine" with ISE-10, provided the
"luck of the Irish" has the CLBs falling where I constrained them to
be placed.

Xilinx:  I know you keep asking me to open a web case, but I've never
gotten anything resolved that way.  This is a link to the design that
does not work with versions 11 and 12: <http://opencores.org/
project,aemb>  I've narrowed the failure to the synthesis of the
exception module.  Build, map, and par all seem OK (you're welcome).
</vent>

How did the meeting with Altera go?

Gary

Article: 148188
Subject: how to know that SRL16 was infered on xilinx?
From: "onkars" <onkars@n_o_s_p_a_m.n_o_s_p_a_m.winlab.rutgers.edu>
Date: Fri, 25 Jun 2010 14:53:54 -0500
Links: << >>  << T >>  << A >>
Hello,

I am implementing a core from xilinx (FFT) and wanted to know how the
feedback shift registers are implemented. 
The xilinx core manual says that the earlier stages that need large shift
registers uses Block RAM and other stages use distributed RAM. Does this
mean it used SRL16s?

How do the SRL16s show up in the MAP report if they are being used? Do they
show up under "Specific Feature utilization" or they are just under the
"Slices used as LUT (memory)"?

Thank you.	   
					
---------------------------------------		
Posted through http://www.FPGARelated.com

Article: 148189
Subject: Re: how to know that SRL16 was infered on xilinx?
From: John McCaskill <jhmccaskill@gmail.com>
Date: Fri, 25 Jun 2010 13:09:30 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Jun 25, 2:53=A0pm, "onkars"
<onkars@n_o_s_p_a_m.n_o_s_p_a_m.winlab.rutgers.edu> wrote:
> Hello,
>
> I am implementing a core from xilinx (FFT) and wanted to know how the
> feedback shift registers are implemented.
> The xilinx core manual says that the earlier stages that need large shift
> registers uses Block RAM and other stages use distributed RAM. Does this
> mean it used SRL16s?
>
> How do the SRL16s show up in the MAP report if they are being used? Do th=
ey
> show up under "Specific Feature utilization" or they are just under the
> "Slices used as LUT (memory)"?
>
> Thank you. =A0 =A0 =A0 =A0
>
> --------------------------------------- =A0 =A0 =A0 =A0
> Posted throughhttp://www.FPGARelated.com


SRL16s will be reported in the map report.  Here is a snippet from one
of mine:

  Total Number of 4 input LUTs:      24,429 out of  50,560   48%
    Number used as logic:            21,305
    Number used as a route-thru:      1,312
    Number used for Dual Port RAMs:     842
      (Two LUTs used per Dual Port RAM)
    Number used for 32x1 RAMs:          104
      (Two LUTs used per 32x1 RAM)
    Number used as Shift registers:     866

Regards,

John McCaskill
www.FasterTechnology.com

Article: 148190
Subject: Re: Binary integer to ASCII string in HDL?
From: Brian Drummond <brian_drummond@btconnect.com>
Date: Fri, 25 Jun 2010 22:45:49 +0100
Links: << >>  << T >>  << A >>
On Fri, 25 Jun 2010 09:19:06 -0700, "John Speth" <johnspeth@yahoo.com> wrote:

>I need to do some fast (<5 usec) conversions of binary integer to ASCII 
>string in HDL (NIOS, FPGA, etc) - basically a fast substitute for 
>sprintf(s,"%d",n);
>
>Does anyone know if:
>
>1. It's practical to make an effort to do it in HDL or will it be an endless 
>rats hole?

%x would be utterly trivial and damn fast; you'd probably meet 5 ns (not us) in
Virtex-5 (10ns in Spartan) provided you hold string "s" in registers. One clock
cycle and you're done.

%d reduces to bcd decoding, or successive division by 10 (which may be easiest
as multiplication by a reciprocal). A reasonable goal would be one digit per
clock cycle, so approx 10x slower than the above. Not very difficult.

If n is restricted (say, 16 or fewer bits) there will be simpler approaches.

>2. Is there an IP vendor that can sell it to me?
It's too trivial for any IP vendor though you may find something free on
opencores.org.

- Brian


Article: 148191
Subject: Re: fooling the compiler
From: Jeroen Belleman <jeroen@nospam.please>
Date: Fri, 25 Jun 2010 23:59:10 +0200
Links: << >>  << T >>  << A >>
On 06/25/2010 05:55 PM, John Larkin wrote:
>
> I'm still programming embedded stuff in 68K assembly. Dyno mode. The
> thing is, I finish a typical instrument's firmware in a week or two
> and have zero problems with the assembly and debug tools. And rarely
> find a bug in shipped products.[...]

That just confirms what I always say: A software tool is never
so reliable as after it has gone obsolete.

Jeroen Belleman

Article: 148192
Subject: Re: fooling the compiler
From: John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com>
Date: Fri, 25 Jun 2010 15:49:11 -0700
Links: << >>  << T >>  << A >>
On Fri, 25 Jun 2010 23:59:10 +0200, Jeroen Belleman
<jeroen@nospam.please> wrote:

>On 06/25/2010 05:55 PM, John Larkin wrote:
>>
>> I'm still programming embedded stuff in 68K assembly. Dyno mode. The
>> thing is, I finish a typical instrument's firmware in a week or two
>> and have zero problems with the assembly and debug tools. And rarely
>> find a bug in shipped products.[...]
>
>That just confirms what I always say: A software tool is never
>so reliable as after it has gone obsolete.
>
>Jeroen Belleman

That's a simple consequence of software tools getting less reliable
every generation.

John


Article: 148193
Subject: Free bitmap font
From: Giorgos Tzampanakis <gt67@hw.ac.uk>
Date: Sat, 26 Jun 2010 17:41:01 +0000 (UTC)
Links: << >>  << T >>  << A >>
I want a simple bitmap font to use in my project. I'm looking 
into using a 80x25 or 80x24 format. Where can I get a font like 
this in an easy format to incorporate into my project?

Article: 148194
Subject: Re: Free bitmap font
From: KJ <kkjennings@sbcglobal.net>
Date: Sat, 26 Jun 2010 11:40:30 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Jun 26, 1:41=A0pm, Giorgos Tzampanakis <g...@hw.ac.uk> wrote:
> I want a simple bitmap font to use in my project. I'm looking
> into using a 80x25 or 80x24 format. Where can I get a font like
> this in an easy format to incorporate into my project?

http://www.lmgtfy.com/?q=3Dfree+bitmap+font

KJ

Article: 148195
Subject: Re: Free bitmap font
From: hamilton <hamilton@nothere.com>
Date: Sat, 26 Jun 2010 13:08:44 -0600
Links: << >>  << T >>  << A >>
On 6/26/2010 11:41 AM, Giorgos Tzampanakis wrote:
> I want a simple bitmap font to use in my project. I'm looking
> into using a 80x25 or 80x24 format. Where can I get a font like
> this in an easy format to incorporate into my project?

Getting a font is easy.

Getting code that will move that font onto the display you are using is 
the hard part.

So, is 80x25 the LCD pixel H/V or is that the number of characters on 
the screen.

Are you using an FPGA to move the pixels to the screen or a cpu.

So many questions, no answers.

hamilton


Article: 148196
Subject: Re: Free bitmap font
From: Giorgos Tzampanakis <gt67@hw.ac.uk>
Date: Sat, 26 Jun 2010 19:26:22 +0000 (UTC)
Links: << >>  << T >>  << A >>
hamilton <hamilton@nothere.com> wrote in
news:i05j83$k53$1@news.eternal-september.org: 

> Getting a font is easy.
> 
> Getting code that will move that font onto the display you
> are using is the hard part.
> 
> So, is 80x25 the LCD pixel H/V or is that the number of
> characters on the screen.
> 
> Are you using an FPGA to move the pixels to the screen or a
> cpu. 
> 
> So many questions, no answers.
> 

I'm using a PC monitor. 80x25 is the number of characters on 
screen. I will use a CPU implemented on the FPGA to show the 
characters.

Article: 148197
Subject: Re: Free bitmap font
From: glen herrmannsfeldt <gah@ugcs.caltech.edu>
Date: Sat, 26 Jun 2010 21:25:37 +0000 (UTC)
Links: << >>  << T >>  << A >>
Giorgos Tzampanakis <gt67@hw.ac.uk> wrote:

> I want a simple bitmap font to use in my project. I'm looking 
> into using a 80x25 or 80x24 format. Where can I get a font like 
> this in an easy format to incorporate into my project?

What is the screen resolution or, in other words, the size of
the character cell.  If you want something like we had 30 years
ago, find the ROM patterns for the MCM6674 or MCM6675.

The data sheet is, for example, available from 
http://www.datasheetarchive.com, including bit pattens.
That is a 128 character, 9x7 with descenders.  If you are
short on memory store it the MCM6674 way, as 9x7 plus
one extra bit (see the triangle in the corner) to lower
the character by two rows.  Otherwise, store it as 11x7
or, to fit in a normal ROM, 16x8.  (It fits nicely in a 2716.)

-- glen

Article: 148198
Subject: Re: Free bitmap font
From: Frank Buss <fb@frank-buss.de>
Date: Sun, 27 Jun 2010 05:37:48 +0200
Links: << >>  << T >>  << A >>
Giorgos Tzampanakis wrote:

> I want a simple bitmap font to use in my project. I'm looking 
> into using a 80x25 or 80x24 format. Where can I get a font like 
> this in an easy format to incorporate into my project?

Some nice fonts are available on this page:

http://www.zee-3.com/pickfordbros/archive/bitmapfonts.php

I've used one of the fonts as an example for my acceleratec FPGA graphics
controller:

http://www.frank-buss.de/yagraphcon/index.html

-- 
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de

Article: 148199
Subject: Re: Free bitmap font
From: hamilton <hamilton@nothere.com>
Date: Sat, 26 Jun 2010 21:53:25 -0600
Links: << >>  << T >>  << A >>
On 6/26/2010 1:26 PM, Giorgos Tzampanakis wrote:
> hamilton<hamilton@nothere.com>  wrote in
> news:i05j83$k53$1@news.eternal-september.org:
>
>> Getting a font is easy.
>>
>> Getting code that will move that font onto the display you
>> are using is the hard part.
>>
>> So, is 80x25 the LCD pixel H/V or is that the number of
>> characters on the screen.
>>
>> Are you using an FPGA to move the pixels to the screen or a
>> cpu.
>>
>> So many questions, no answers.
>>
>
> I'm using a PC monitor. 80x25 is the number of characters on
> screen. I will use a CPU implemented on the FPGA to show the
> characters.

So, do you have a design for the VGA output from your FPGA ??

H



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