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 76325

Article: 76325
Subject: Re: 99% Utilisation !
From: rickman <spamgoeshere4@yahoo.com>
Date: Tue, 30 Nov 2004 12:40:45 -0500
Links: << >>  << T >>  << A >>
Adarsh Kumar Jain wrote:
> 
> Should we ever get to that ?
> I know typically A and X bother recommend 80-85% resource usage and so do a
> lot of others
> But besides having no provision for expansion of design and probably
> extremely long p&r times, what are the other dangers of such a high resource
> utilisation, if our clock is only 40 MHz.
> Also what if we are using all 8 Rocket IOs in a device ?

Most of the area of an FPGA is routing.  Maybe you should try to
maximize the useage of that.  Sounds like you could gain more efficiency
there than in the LUT usage.  

-- 

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: 76326
Subject: Re: Config Spartan3 in serial slave mode
From: hmurray@suespammers.org (Hal Murray)
Date: Tue, 30 Nov 2004 11:42:57 -0600
Links: << >>  << T >>  << A >>
>Do I have to add some CCLK cycles after I have sent the last data? I 
>recognized there are a bunch of new settings in the ISE6.3 in comparison 
>to the 4.1 which I used for the Spartan XL.

Try it.  Faster than waiting for answers from a newsgroup.

There have been (many?) problems in that area.  A few extra clocks
won't cost much.


-- 
The suespammers.org mail server is located in California.  So are all my
other mailboxes.  Please do not send unsolicited bulk e-mail or unsolicited
commercial e-mail to my suespammers.org address or any of my other addresses.
These are my opinions, not necessarily my employer's.  I hate spam.


Article: 76327
Subject: Re: 99% Utilisation !
From: nweaver@soda.csua.berkeley.edu (Nicholas Weaver)
Date: Tue, 30 Nov 2004 17:48:56 +0000 (UTC)
Links: << >>  << T >>  << A >>
In article <41ACB09D.75F34B34@yahoo.com>, rickman  <john@bluepal.net> wrote:
>Most of the area of an FPGA is routing.  Maybe you should try to
>maximize the useage of that.  Sounds like you could gain more efficiency
>there than in the LUT usage.  

Except that because of marketing and perception reasons (tehre's no
good way to say "routing utilization" that users currently
understand), the routing is significantly overprovisioned for most
designs to allow high chip utilization.

Running at high utilization is a LOT easier if a large amount of the
logic is floorplanned/placed, it makes both placement easier and
routing easier.
-- 
Nicholas C. Weaver.  to reply email to "nweaver" at the domain
icsi.berkeley.edu

Article: 76328
Subject: Re: CMOS capacitive loads, transition probabilities and FPGAs
From: Austin Lesea <austin@xilinx.com>
Date: Tue, 30 Nov 2004 09:53:37 -0800
Links: << >>  << T >>  << A >>
Ken,

A commont confusion is what dissipates power?

When you charge a node, you waste power in the resistance of the 
charging transistor.

When you discharge a node, you then waste power in the resistance of the 
discharging transistors (both generate heat).

If both edges generate heat, then you have to count them both.

The energy stored in a capacitor is 1/2 CV^2, but don't let that confuse 
you:  you have to put it in, and then take it out!  The devices that do 
the work dissipate the power.

Austin

Ken wrote:
> Hello folks,
> 
> I often see the following equation to define the dynamic power consumption 
> of a node in a CMOS circuit:
> 
> P = aCV^2F
> 
> where:
> 
> 
> P = dynamic power
> 
> a = ** average number of times in a clock cycle a node with capacitance C 
> will make a power consuming transition **
> 
> V= supply voltage
> 
> F = clock rate
> 
> 
> My question is related to the definition of 'a'.  In a CMOS related paper I 
> have seen 'a' defined as the average number of "0 to 1" transitions in a 
> clock cycle since that is when power is drawn from the supply (half being 
> stored in the cap and half being dissipated in the node).  The 1 to 0 
> transition does not draw power from the supply, only the power previously 
> stored in the cap on the 0 to 1 transition is dissipated.
> 
> However, in some FPGA related papers, I see 'a' being defined as the 
> probability of a 0 to 1 or a 1 to 0 transition during a clock cycle.
> 
> Hence my confusion...
> 
> Can anyone shed any light on why this might be (or are the FPGA papers I've 
> seen just wrong)?
> 
> Many thanks for your time,
> 
> Ken
> 
> 
> 

Article: 76329
Subject: Re: VGA signal generator using CPLD
From: RF <listacoESPAM@terra.es>
Date: Tue, 30 Nov 2004 17:59:38 +0000
Links: << >>  << T >>  << A >>


>> Hello,
>> 
>> I am new with CPLD and Verilog. I have made some code and posted
>> on comp.lang.verilog but nobody responded.
>> 
>> I need help. I don't know if this code works. I don't know how
>> to make a test module. (I am using ISE Webpack 4.2 and MXE).
>
> We have a simple VGA circuit that we implemented on XC9572 CPLDs and 
> XC4000 FPGAs described at http://www.xess.com/appnotes/vga.pdf.
> 
> We also have a newer VGA design for Spartan2/3 described at 
> http://www.xess.com/appnotes/an-101204-vgagen.pdf.  This one uses a FIFO 
> made from a BlockRAM as an input buffer, but you can strip that out and 
> use the VGA generator at its core.
> 
> The timing values for your horizontal and vertical sync look correct.  
> But your logic seems to increment both the Xcounter and Ycounter on each 
> clock edge.  (I'm not very conversant in Verilog, so I could be wrong.)  
> You need to increment the Ycounter only when the Xcounter is reset to 
> zero at the end of each scanline.  A clock enable is the best way to do 
> this.
> 
> Your state machine looks like it does the horizontal timing and then 
> tries to do the vertical timing after that.  These are not sequential 
> processes.  The horizontal and vertical timing proceed in parallel 
> together.  Your code looks like it outputs a single horizontal scanline 
> and then it waits for the Ycounter to increment and overflow to start a 
> new frame.  Probably not what you want.
> 
> Also, you need to set RGB to 1 (indicating active video, I guess) when 
> Xcounter is less than 800 and Ycounter is less than 600.  This is the 
> active video portion of the frame.  You don't want active video during 
> the vertical or horizontal retrace and it looks like you only test for 
> the horizontal.
> 
> As for testing, you only have two inputs: clock and reset.  Just give it 
> a clock in your simulator and see what the horizontal and vertical syncs 
> look like.  That will tell you immediately if you have a problem.  If you 
> need to test actual hardware, there are several boards that have VGA 
> ports you can use to drive a monitor.  We even have a few at 
> www.xess.com.

Thank you for your comments. I am now trying to make a test module.
I will post the results here in the group.

Regards.


Article: 76330
Subject: Re: 99% Utilisation !
From: "newman5382" <newman5382@yahoo.com>
Date: Tue, 30 Nov 2004 18:22:16 GMT
Links: << >>  << T >>  << A >>

"John_H" <johnhandwork@mail.com> wrote in message 
news:3y1rd.8$8%.1119@news-west.eli.net...
> "Adarsh Kumar Jain" <adarsh.jain@cern.ch> wrote in message
> news:coi7rq$nce$1@sunnews.cern.ch...
>> Should we ever get to that ?
>> I know typically A and X bother recommend 80-85% resource usage and so do
> a
>> lot of others
>> But besides having no provision for expansion of design and probably
>> extremely long p&r times, what are the other dangers of such a high
> resource
>> utilisation, if our clock is only 40 MHz.
>> Also what if we are using all 8 Rocket IOs in a device ?
>
> You're worried because you have 99% slice utilization?  Don't!  Check your
> LUT and register usage and you'll find you're probably *well* under the 
> 99%
> mark.  The P&R software tends to spread things around in the fabric, one
> element per slice until the slices are each occupied with something, then
> begin to backfill the extra slice resources to get the design in the part.
> It seems inefficient, but it's what we have to deal with.
>
> I look forward to the day when the slice components are be freely 
> rearranged
> by the P&R software; why have two registers locked together at the map 
> phase
> when P&R needs to make the tough decisions?
>
>

Reference Xcell journal Issue 50 Fall 2004
Introduced in September 2003, ISE 6 adds a new timing driven map option that 
helps get better design utilization for your FPGA devices, particularly if 
the device is already 90% utilized.  Timing driven map is a next generation 
enhancement to ISE physical synthesis placement with logic slice packing for 
Virtex-II, Virtex-II Pro and Spartan-3 devices to improve placement quality 
for unrelated logic.

I think I tried using this with ISE 6.2i with Spartan-3.  Looked to me like 
it was a keeper.
-Newman 



Article: 76331
Subject: System ACE programming solution?
From: Michael Dales <mwd24@thompson.cl.cam.ac.uk>
Date: 30 Nov 2004 18:31:55 +0000
Links: << >>  << T >>  << A >>
Hi there,

We have a bunch of Virtex-II Pro AFX boards we're using to build a
single larger system. Currently we have a Parallel Cable IV
programmer, and thus have to program each board individually. What
we'd like to do is be able to program all the boards at the same time.

The AFX boards all have upstream and downstream System ACE ports, and
this seems to be a suitable interface to use, but I'm a bit confused
as to what programmer and cabling I need to take advantage of this
interface. 

Looking at the programmer on the Xilinx web site, the one that would
appear to fit is the MultiPRO Desktop Tool:

http://www.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?sGlobalNavPick=PRODUCTS&sSecondaryNavPick=Design+Tools&key=HW-MULTIPRO

This lists System ACE support in the data sheet, but doesn't explain
how to actually do that. The 20 pin port on the side of the MiltiPRO
device would appear to be similar to the System ACE interface pin out
on the AFX board, but the descriptions don't match perfectly.

Is it possible to use this device with a set of suitable ribbon cables
to hook up a set of AFX boards and program all the V2P devices at
once?

Any information greatly appreciated!

Cheers,

-- 
Michael Dales
University of Cambridge Computer Laboratory
http://www.cl.cam.ac.uk/~mwd24/

Article: 76332
Subject: Re: 99% Utilisation !
From: "Symon" <symon_brewer@hotmail.com>
Date: Tue, 30 Nov 2004 10:41:32 -0800
Links: << >>  << T >>  << A >>
"Nicholas Weaver" <nweaver@soda.csua.berkeley.edu> wrote in message
news:coibq8$up9$1@agate.berkeley.edu...
> Running at high utilization is a LOT easier if a large amount of the
> logic is floorplanned/placed, it makes both placement easier and
> routing easier.
Spot on, Nicholas. One further point; often the time you spend on
Floorplanning is more than recovered in P&R times, certainly for repeatedly
used RPMs.
Cheers, Syms.



Article: 76333
Subject: Re: 99% Utilisation !
From: nweaver@soda.csua.berkeley.edu (Nicholas Weaver)
Date: Tue, 30 Nov 2004 18:44:53 +0000 (UTC)
Links: << >>  << T >>  << A >>
In article <313t6uF37n91nU1@uni-berlin.de>,
Symon <symon_brewer@hotmail.com> wrote:
>"Nicholas Weaver" <nweaver@soda.csua.berkeley.edu> wrote in message
>news:coibq8$up9$1@agate.berkeley.edu...
>> Running at high utilization is a LOT easier if a large amount of the
>> logic is floorplanned/placed, it makes both placement easier and
>> routing easier.
>Spot on, Nicholas. One further point; often the time you spend on
>Floorplanning is more than recovered in P&R times, certainly for repeatedly
>used RPMs.

And don't forget the performance win.  I have a deliberately dinky 3
pipeline stage encryption core:  placing just PART of the core allows
the 125 MHz timing to be met easily, with a vast fraction of the tool
time.

RLOC is your friend.


-- 
Nicholas C. Weaver.  to reply email to "nweaver" at the domain
icsi.berkeley.edu

Article: 76334
Subject: Re: Pin connection doubts
From: Jim Granville <no.spam@designtools.co.nz>
Date: Wed, 01 Dec 2004 07:56:24 +1300
Links: << >>  << T >>  << A >>
Austin Lesea wrote:
> All,
> 
> The question is:  what to do with Vbatt if not used?
> 
> If it is not used, then it really is a 'don't care'.  You could float 
> it, connect it to ground, or connect it to a Vcco.
> 
> But if you let it float, it is a very low leakage pin (obviously, as you 
> do not want to let the battery die from leakage).
> 
> A very low leakage pin is also a very sensitive pin to ESD damage.
> 
> So when we tested it for ESD, we decided to change the documentation to 
> say to ground it if not used.
> 
> If it gets zapped by an ESD discharge, it will have bad leakage.  It is 
> most unlikely to cause any other problems, but why take the risk?
> 
> So, you are correct, in that we are correcting a problem.  It is a very 
> small, and very unlikely problem (customer removes part where Vbatt was 
> left floating, Vbatt was zapped with an ESD discharge, and then uses it 
> in an application where Vbatt is used, and the battery ends up running 
> down in less than 25 years).

.. and field replacement of a battery, where the Vbatt is much more 
physically exposed, is OK, or is High Risk ? - ie just what is the
ESD rating of the Vbatt pin ?
-jg


Article: 76335
Subject: Re: CMOS capacitive loads, transition probabilities and FPGAs
From: Jim Granville <no.spam@designtools.co.nz>
Date: Wed, 01 Dec 2004 08:04:32 +1300
Links: << >>  << T >>  << A >>
Ken wrote:

> Hello folks,
> 
> I often see the following equation to define the dynamic power consumption 
> of a node in a CMOS circuit:
> 
> P = aCV^2F
> 
> where:
> 
> 
> P = dynamic power
> 
> a = ** average number of times in a clock cycle a node with capacitance C 
> will make a power consuming transition **
> 
> V= supply voltage
> 
> F = clock rate
> 
> 
> My question is related to the definition of 'a'.  In a CMOS related paper I 
> have seen 'a' defined as the average number of "0 to 1" transitions in a 
> clock cycle since that is when power is drawn from the supply (half being 
> stored in the cap and half being dissipated in the node).  The 1 to 0 
> transition does not draw power from the supply, only the power previously 
> stored in the cap on the 0 to 1 transition is dissipated.
> 
> However, in some FPGA related papers, I see 'a' being defined as the 
> probability of a 0 to 1 or a 1 to 0 transition during a clock cycle.
> 
> Hence my confusion...
> 
> Can anyone shed any light on why this might be (or are the FPGA papers I've 
> seen just wrong)?

  Where logic devices quote a Power Dissapation capacitance ( most glue 
logic does ), they adjust the 'C' so you plug in F
( ie that's two edges )
  The C is thus more a modeling value, to get the Power/Freq to Fit.
  Nailing F is also not simple, as decode glitches and runt pulses can
cost power, and real power is a combinaton of Clock Tree, and D-Q loadings.
  Measure of a real operating device is always a good idea :)

-jg





Article: 76336
Subject: NIOS II & CS8900?
From: vboykov@yandex.ru (vladimir)
Date: 30 Nov 2004 11:15:32 -0800
Links: << >>  << T >>  << A >>
I've made a board with CS8900 for proto of NIOS Development kit board.
It works very strange, I read internal registers and sometimes they
was read correctly but in generaly incorrectly. Writing is correctly
as seem to me.
I'm using core of SOPC. Maybe someone gives me some advise. 
Thx.

Article: 76337
Subject: block ram and bmm files
From: "Matthew Plante" <maplante@iol.unh.edu>
Date: Tue, 30 Nov 2004 14:18:26 -0500
Links: << >>  << T >>  << A >>
Hi folks,

  I'm working on developing an embedded system with a xilinx v2pro fpga.  I 
have all my code for the ppc (including 2 block rams, one on the plb and the 
other on the opb) done in xps, and exported it to the project navigator.  I 
am trying to add an additional block rom, but I don't want to add it in the 
EDK, I just want it to communicate directly with fpga fabric.  So, I used 
the core generator, and created a bram instance that is 70 bits wide, and 8k 
deep.  The core generator doesn't create a .bmm or .mem file to accompany 
this.  So how do I go about adding the proper lines to the current bmm file? 
I haven't found much for documentation on this.  If I don't add any 
information for the new ram to the bmm file created by xps, then when I 
import the projnav files back into xps, and regenerate the bitstream, 
data2mem errors out on me.
  Currently, my bmm file looks like this:
ADDRESS_BLOCK plb_bram_if_cntlr_1_bram RAMB16 [0xffffc000:0xffffffff]
 BUS_BLOCK
 top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_0 
[63:56] ;
 top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_1 
[55:48] ;
 top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_2 
[47:40] ;
 top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_3 
[39:32] ;
 top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_4 
[31:24] ;
 top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_5 
[23:16] ;
 top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_6 [15:8] 
;
 top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_7 [7:0] 
;
 END_BUS_BLOCK;
END_ADDRESS_BLOCK;
ADDRESS_BLOCK opb_bram_if_cntlr_1_bram RAMB16 [0x00000000:0x00003fff]
 BUS_BLOCK
 top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_0 
[31:28] ;
 top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_1 
[27:24] ;
 top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_2 
[23:20] ;
 top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_3 
[19:16] ;
 top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_4 
[15:12] ;
 top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_5 [11:8] 
;
 top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_6 [7:4] 
;
 top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_7 [3:0] 
;
 END_BUS_BLOCK;
END_ADDRESS_BLOCK;

I'm not entirely sure how the rom needs to get assigned in the fpga.  I was 
thinking of adding a line such as:
ADDRESS BLOCK pattern_rom RAMB16 [0x00040000:0x00042000]
END_ADDRESS_BLOCK;
(where "pattern_rom" is my rom I added in the fpga from the coregen)
But, I'm not sure how to complete the BUS_BLOCK section.

Any help would be appreciated!

Thanks,

-- Matt
maplante@iol.unh.edu 



Article: 76338
Subject: Re: Verilog newbie with clocking question
From: glen herrmannsfeldt <gah@ugcs.caltech.edu>
Date: Tue, 30 Nov 2004 11:53:54 -0800
Links: << >>  << T >>  << A >>


Erik Walthinsen wrote:
(snip)

>   always @(posedge clk) begin
>     if (prev_lrclk != lrclk)
>       int_strobe = 1'b1;
>     else
>       int_strobe = 1'b0;
>     prev_lrclk = lrclk;
>   end

A FF to latch the previous value, an XOR gate to indicate
that the current value is different, and another FF to
latch the output of the XOR gate.

I might have written it:

     int_strobe = prev_lrclk ^ lrclk;
     prev_lrclk = lrclk;

but otherwise...

-- glen


Article: 76339
Subject: Re: block ram and bmm files
From: "newman5382" <newman5382@yahoo.com>
Date: Tue, 30 Nov 2004 20:05:31 GMT
Links: << >>  << T >>  << A >>
What is the motivation for exporting it back to XPS?  What is the nature of 
the data2mem errors?

Maybe I had a similar but different problem that you have.  I had code 
located in external flash. I modified the bmm file and added some stuff 
similar to Xilinx answer record 16577. I added the modified bmm file to the 
ISE project, but did NOT include the elf file.  I let the tool crank out a 
bit file, then I manually invoked data2bram using the tag option, which IIRC 
indicates to data2ram, which block to load up. If I did not do this, it 
would try to load up the external reference and "error out".

-Newman

--------------------------------------------------------------------------------------
"Matthew Plante" <maplante@iol.unh.edu> wrote in message 
news:coih22$k99$1@tabloid.unh.edu...
> Hi folks,
>
>  I'm working on developing an embedded system with a xilinx v2pro fpga.  I 
> have all my code for the ppc (including 2 block rams, one on the plb and 
> the other on the opb) done in xps, and exported it to the project 
> navigator.  I am trying to add an additional block rom, but I don't want 
> to add it in the EDK, I just want it to communicate directly with fpga 
> fabric.  So, I used the core generator, and created a bram instance that 
> is 70 bits wide, and 8k deep.  The core generator doesn't create a .bmm or 
> .mem file to accompany this.  So how do I go about adding the proper lines 
> to the current bmm file? I haven't found much for documentation on this. 
> If I don't add any information for the new ram to the bmm file created by 
> xps, then when I import the projnav files back into xps, and regenerate 
> the bitstream, data2mem errors out on me.
>  Currently, my bmm file looks like this:
> ADDRESS_BLOCK plb_bram_if_cntlr_1_bram RAMB16 [0xffffc000:0xffffffff]
> BUS_BLOCK
> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_0 
> [63:56] ;
> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_1 
> [55:48] ;
> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_2 
> [47:40] ;
> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_3 
> [39:32] ;
> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_4 
> [31:24] ;
> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_5 
> [23:16] ;
> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_6 
> [15:8] ;
> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_7 [7:0] 
> ;
> END_BUS_BLOCK;
> END_ADDRESS_BLOCK;
> ADDRESS_BLOCK opb_bram_if_cntlr_1_bram RAMB16 [0x00000000:0x00003fff]
> BUS_BLOCK
> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_0 
> [31:28] ;
> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_1 
> [27:24] ;
> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_2 
> [23:20] ;
> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_3 
> [19:16] ;
> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_4 
> [15:12] ;
> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_5 
> [11:8] ;
> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_6 [7:4] 
> ;
> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_7 [3:0] 
> ;
> END_BUS_BLOCK;
> END_ADDRESS_BLOCK;
>
> I'm not entirely sure how the rom needs to get assigned in the fpga.  I 
> was thinking of adding a line such as:
> ADDRESS BLOCK pattern_rom RAMB16 [0x00040000:0x00042000]
> END_ADDRESS_BLOCK;
> (where "pattern_rom" is my rom I added in the fpga from the coregen)
> But, I'm not sure how to complete the BUS_BLOCK section.
>
> Any help would be appreciated!
>
> Thanks,
>
> -- Matt
> maplante@iol.unh.edu
> 



Article: 76340
Subject: Re: block ram and bmm files
From: "newman5382" <newman5382@yahoo.com>
Date: Tue, 30 Nov 2004 20:18:20 GMT
Links: << >>  << T >>  << A >>

"newman5382" <newman5382@yahoo.com> wrote in message 
news:fo4rd.107164$6w6.1499@tornado.tampabay.rr.com...
> What is the motivation for exporting it back to XPS?  What is the nature 
> of the data2mem errors?
>
> Maybe I had a similar but different problem that you have.  I had code 
> located in external flash. I modified the bmm file and added some stuff 
> similar to Xilinx answer record 16577. I added the modified bmm file to 
> the ISE project, but did NOT include the elf file.  I let the tool crank 
> out a bit file, then I manually invoked data2bram using the tag option, 
> which IIRC indicates to data2ram, which block to load up. If I did not do 
> this, it would try to load up the external reference and "error out".
>
> -Newman
>

Oops, I included the original bmm file from xps into project_nav, and 
manually invoked data2bram using the tag option.  I created a new bmm file 
with the external flash reference to get a mem file which I had to modify, 
to load into Modelsim.

- Newman

> --------------------------------------------------------------------------------------
> "Matthew Plante" <maplante@iol.unh.edu> wrote in message 
> news:coih22$k99$1@tabloid.unh.edu...
>> Hi folks,
>>
>>  I'm working on developing an embedded system with a xilinx v2pro fpga. 
>> I have all my code for the ppc (including 2 block rams, one on the plb 
>> and the other on the opb) done in xps, and exported it to the project 
>> navigator.  I am trying to add an additional block rom, but I don't want 
>> to add it in the EDK, I just want it to communicate directly with fpga 
>> fabric.  So, I used the core generator, and created a bram instance that 
>> is 70 bits wide, and 8k deep.  The core generator doesn't create a .bmm 
>> or .mem file to accompany this.  So how do I go about adding the proper 
>> lines to the current bmm file? I haven't found much for documentation on 
>> this. If I don't add any information for the new ram to the bmm file 
>> created by xps, then when I import the projnav files back into xps, and 
>> regenerate the bitstream, data2mem errors out on me.
>>  Currently, my bmm file looks like this:
>> ADDRESS_BLOCK plb_bram_if_cntlr_1_bram RAMB16 [0xffffc000:0xffffffff]
>> BUS_BLOCK
>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_0 
>> [63:56] ;
>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_1 
>> [55:48] ;
>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_2 
>> [47:40] ;
>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_3 
>> [39:32] ;
>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_4 
>> [31:24] ;
>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_5 
>> [23:16] ;
>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_6 
>> [15:8] ;
>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_7 
>> [7:0] ;
>> END_BUS_BLOCK;
>> END_ADDRESS_BLOCK;
>> ADDRESS_BLOCK opb_bram_if_cntlr_1_bram RAMB16 [0x00000000:0x00003fff]
>> BUS_BLOCK
>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_0 
>> [31:28] ;
>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_1 
>> [27:24] ;
>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_2 
>> [23:20] ;
>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_3 
>> [19:16] ;
>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_4 
>> [15:12] ;
>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_5 
>> [11:8] ;
>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_6 
>> [7:4] ;
>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_7 
>> [3:0] ;
>> END_BUS_BLOCK;
>> END_ADDRESS_BLOCK;
>>
>> I'm not entirely sure how the rom needs to get assigned in the fpga.  I 
>> was thinking of adding a line such as:
>> ADDRESS BLOCK pattern_rom RAMB16 [0x00040000:0x00042000]
>> END_ADDRESS_BLOCK;
>> (where "pattern_rom" is my rom I added in the fpga from the coregen)
>> But, I'm not sure how to complete the BUS_BLOCK section.
>>
>> Any help would be appreciated!
>>
>> Thanks,
>>
>> -- Matt
>> maplante@iol.unh.edu
>>
>
> 



Article: 76341
Subject: Stupid tools question...
From: nweaver@soda.csua.berkeley.edu (Nicholas Weaver)
Date: Tue, 30 Nov 2004 20:22:57 +0000 (UTC)
Links: << >>  << T >>  << A >>
I'm doing a pretty complex state machine, which is perfect for in
memory (blockRAM based) encoding.

Before I go through and build my own state machine compiler out of
python hack-scripts or Excel macros, does someone already have such a
compiler available?
-- 
Nicholas C. Weaver.  to reply email to "nweaver" at the domain
icsi.berkeley.edu

Article: 76342
Subject: Re: block ram and bmm files
From: "newman5382" <newman5382@yahoo.com>
Date: Tue, 30 Nov 2004 20:29:21 GMT
Links: << >>  << T >>  << A >>

"newman5382" <newman5382@yahoo.com> wrote in message 
news:gA4rd.85069$8G4.64560@tornado.tampabay.rr.com...
>
> "newman5382" <newman5382@yahoo.com> wrote in message 
> news:fo4rd.107164$6w6.1499@tornado.tampabay.rr.com...
>> What is the motivation for exporting it back to XPS?  What is the nature 
>> of the data2mem errors?
>>
>> Maybe I had a similar but different problem that you have.  I had code 
>> located in external flash. I modified the bmm file and added some stuff 
>> similar to Xilinx answer record 16577. I added the modified bmm file to 
>> the ISE project, but did NOT include the elf file.  I let the tool crank 
>> out a bit file, then I manually invoked data2bram using the tag option, 
>> which IIRC indicates to data2ram, which block to load up. If I did not do 
>> this, it would try to load up the external reference and "error out".
>>
>> -Newman
>>
>
> Oops, I included the original bmm file from xps into project_nav, and 
> manually invoked data2bram using the tag option.  I created a new bmm file 
> with the external flash reference to get a mem file which I had to modify, 
> to load into Modelsim.
>
> - Newman

Answer record 16577 seems to be a little old.  I also referenced dev.pdf, 
which contains more information concerning data2mem.  It is located under 
the Xilinx install directory.

- Newman

>
>> --------------------------------------------------------------------------------------
>> "Matthew Plante" <maplante@iol.unh.edu> wrote in message 
>> news:coih22$k99$1@tabloid.unh.edu...
>>> Hi folks,
>>>
>>>  I'm working on developing an embedded system with a xilinx v2pro fpga. 
>>> I have all my code for the ppc (including 2 block rams, one on the plb 
>>> and the other on the opb) done in xps, and exported it to the project 
>>> navigator.  I am trying to add an additional block rom, but I don't want 
>>> to add it in the EDK, I just want it to communicate directly with fpga 
>>> fabric.  So, I used the core generator, and created a bram instance that 
>>> is 70 bits wide, and 8k deep.  The core generator doesn't create a .bmm 
>>> or .mem file to accompany this.  So how do I go about adding the proper 
>>> lines to the current bmm file? I haven't found much for documentation on 
>>> this. If I don't add any information for the new ram to the bmm file 
>>> created by xps, then when I import the projnav files back into xps, and 
>>> regenerate the bitstream, data2mem errors out on me.
>>>  Currently, my bmm file looks like this:
>>> ADDRESS_BLOCK plb_bram_if_cntlr_1_bram RAMB16 [0xffffc000:0xffffffff]
>>> BUS_BLOCK
>>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_0 
>>> [63:56] ;
>>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_1 
>>> [55:48] ;
>>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_2 
>>> [47:40] ;
>>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_3 
>>> [39:32] ;
>>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_4 
>>> [31:24] ;
>>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_5 
>>> [23:16] ;
>>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_6 
>>> [15:8] ;
>>> top/plb_bram_if_cntlr_1_bram/plb_bram_if_cntlr_1_bram/ramb16_s9_s9_7 
>>> [7:0] ;
>>> END_BUS_BLOCK;
>>> END_ADDRESS_BLOCK;
>>> ADDRESS_BLOCK opb_bram_if_cntlr_1_bram RAMB16 [0x00000000:0x00003fff]
>>> BUS_BLOCK
>>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_0 
>>> [31:28] ;
>>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_1 
>>> [27:24] ;
>>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_2 
>>> [23:20] ;
>>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_3 
>>> [19:16] ;
>>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_4 
>>> [15:12] ;
>>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_5 
>>> [11:8] ;
>>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_6 
>>> [7:4] ;
>>> top/opb_bram_if_cntlr_1_bram/opb_bram_if_cntlr_1_bram/ramb16_s4_s4_7 
>>> [3:0] ;
>>> END_BUS_BLOCK;
>>> END_ADDRESS_BLOCK;
>>>
>>> I'm not entirely sure how the rom needs to get assigned in the fpga.  I 
>>> was thinking of adding a line such as:
>>> ADDRESS BLOCK pattern_rom RAMB16 [0x00040000:0x00042000]
>>> END_ADDRESS_BLOCK;
>>> (where "pattern_rom" is my rom I added in the fpga from the coregen)
>>> But, I'm not sure how to complete the BUS_BLOCK section.
>>>
>>> Any help would be appreciated!
>>>
>>> Thanks,
>>>
>>> -- Matt
>>> maplante@iol.unh.edu
>>>
>>
>>
>
> 



Article: 76343
Subject: Re: CMOS capacitive loads, transition probabilities and FPGAs
From: rickman <spamgoeshere4@yahoo.com>
Date: Tue, 30 Nov 2004 15:59:23 -0500
Links: << >>  << T >>  << A >>
Austin Lesea wrote:
> 
> Ken,
> 
> A commont confusion is what dissipates power?
> 
> When you charge a node, you waste power in the resistance of the
> charging transistor.
> 
> When you discharge a node, you then waste power in the resistance of the
> discharging transistors (both generate heat).
> 
> If both edges generate heat, then you have to count them both.
> 
> The energy stored in a capacitor is 1/2 CV^2, but don't let that confuse
> you:  you have to put it in, and then take it out!  The devices that do
> the work dissipate the power.

This is a bit misleading and irrelevant.  The fact that power is only
dissipated in the resistance has nothing to do with the total amount of
energy expended in charging and discharging a capacitor.  Regardless of
what value resistance, even if it is not constant, the energy drawn from
the supply is the same as long as the capacitor is charged to the same
voltage.  The energy may be dissipated in the transistor or in the poly
track or a metal track or the bond wire or the external pin or even in
the wire from the power supply to the board.  But add them all up and
you will get the same value each time you charge a capacitor to a given
voltage.  

So the amount of power consumed is related to the frequency of
transitions and the size of the capacitance.  Whether you calculate it
from the rate of the rising edges or both edges is not relevant, that
just changes the constant that you use by a factor of 2.  As the OP
said, when you charge the cap from 0 volts to Vcc, half goes into the
cap and half is wasted.  But the total always comes from the PSU and is
always the same amount.  

You can't have a 0 to 1 transition without a 1 to 0 transition, so why
is this even an issue?  

-- 

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: 76344
Subject: Re: Stupid tools question...
From: "Falk Brunner" <Falk.Brunner@gmx.de>
Date: Tue, 30 Nov 2004 23:02:12 +0100
Links: << >>  << T >>  << A >>

"Nicholas Weaver" <nweaver@soda.csua.berkeley.edu> schrieb im Newsbeitrag
news:coikr1$11p9$1@agate.berkeley.edu...
> I'm doing a pretty complex state machine, which is perfect for in
> memory (blockRAM based) encoding.
>
> Before I go through and build my own state machine compiler out of
> python hack-scripts or Excel macros, does someone already have such a
> compiler available?

XST offers an option to put logic into BRAMS. But I dont know if it is smart
enough to put the FSM into the BRAM.

Regards
Falk




Article: 76345
Subject: Re: CMOS capacitive loads, transition probabilities and FPGAs
From: glen herrmannsfeldt <gah@ugcs.caltech.edu>
Date: Tue, 30 Nov 2004 14:11:06 -0800
Links: << >>  << T >>  << A >>


rickman wrote:

(snip of (1/2) C V**2 discussion)

> This is a bit misleading and irrelevant.  The fact that power is only
> dissipated in the resistance has nothing to do with the total amount of
> energy expended in charging and discharging a capacitor.  Regardless of
> what value resistance, even if it is not constant, the energy drawn from
> the supply is the same as long as the capacitor is charged to the same
> voltage.  The energy may be dissipated in the transistor or in the poly
> track or a metal track or the bond wire or the external pin or even in
> the wire from the power supply to the board.  But add them all up and
> you will get the same value each time you charge a capacitor to a given
> voltage.  

> So the amount of power consumed is related to the frequency of
> transitions and the size of the capacitance.  Whether you calculate it
> from the rate of the rising edges or both edges is not relevant, that
> just changes the constant that you use by a factor of 2.  As the OP
> said, when you charge the cap from 0 volts to Vcc, half goes into the
> cap and half is wasted.  But the total always comes from the PSU and is
> always the same amount.  

> You can't have a 0 to 1 transition without a 1 to 0 transition, so why
> is this even an issue?  

The issue is where the factor of two goes.

As previously said, when charging half is dissipated, and half goes
into the capacitor.  When discharging the rest is dissipated.

For some designs it is easier to count total transitions than to
count rising or falling transitions.  Otherwise, yes, it doesn't
matter as long as the 2 and 1/2 are in the right place.

-- glen


Article: 76346
Subject: Re: Which programmable clock for Spartan3 starter board and A/D-converter
From: Preben Holm <64bitNOnoSPAMno@mailme.dk>
Date: Tue, 30 Nov 2004 23:14:01 +0100
Links: << >>  << T >>  << A >>
> It depends on your timing budget.  There is a thing called a DLL that phase 
> locks the clock input to the destination synchronous clock input.  It can 
> also double the frequency.  It has the ability to adjust the phase of the 
> clock to null out the estimated first order delay of the IOB (note use of 
> FDDRCPE) and PCB transport delay.

I have used the DLL's but the FDDRCPE is not something I know anything 
about?


> If more precision is needed for temperature / voltage compensation, then maybe the feedback approach is 
> better.

How do I make the feedback approach out of the IC?

Do I just send out the clock to the IO-pin and then back to some other 
IO-pin after having been "around" the A/D? Or any special pins for this 
purpose?



>>>>Rise-time/fall-time problems when attaching an A/D-converter to the same 
>>>>clock?
>>>
>>>
>>>I like point to point routing where possible.  You may be able to use a 
>>>clock
>>>forwarding scheme (via an FDDRCPE instance) to achieve this.  There are
>>>also board deskewing schemes via feedback that may be suitable.  I think
>>>the feedback scheme necessitates a 'T' in the board routing.
>>
>>I'm stupid (or maybe I just haven't learned all this stuff yet) so please 
>>explain all these terms like "point to point routing", "clock forwarding 
>>scheme" and what do you mean by a "board deskewing schemes via feedback" 
>>and what is a 'T'?
> 
> 
> I think my explanation was inadequate.  What I meant by point to point is 
> that there are only two component connection involved in routing the trace 
> on the PCB (There may also be a series source termination resistor in the 
> path).  I believe that the feedback scheme wants a minimum of three 
> component connections.  One from the FPGA output pin  to the destination, 
> and an equal length path from the FPGA output pin to the FPGA feedback pin.

Which means that I should add a "clock-line" on the PCB from the 
output-pin to the A/D. And from the same output just "draw" a line 
exactly as long as the line to the A/D, but know to a pin on the FPGA 
(feedback)?

How should the clock be terminated on the board-layout (I must say - i 
never made a PCB design - this will be my first - sounds silly, but we 
are educated using already made development boards)

I somehow don't see how these attempts make sure that the outside clock 
is different from the same signal just inside the IC.
I guess that somehow you will need two clock-lines (one to the internal 
and one for the external).


If you have time for making a simple "point-to-point" example of the 
clock-net circuit (on the board that I should produce), please feel free 
to do so. I haven't got much time up to christmas and I'm very new to 
this High speed era of electronics, and somehow my bachelor starts 
tomorrow, so the PCB should be finished quite soon so I can start on my 
project.


> I've never used the feedback method, but I suspect that I would research 
> "Source Termination of Multiple Clock Lines" section 11.5 "High-Speed 
> Digital Design A Handbook Of Black Magic" by Howard Johnson and Martin 
> Graham where there is a short segment from the output clock pin to two 
> series resistors (what I called the "T") to two lines of equal length and 
> the loads at each end are balanced.

Thanks (but the money as a student is very small, so maybe the library 
can be used - i'll try so)..



Thanks for all your help, and very sorry about my very bad english!


/ Preben

Article: 76347
Subject: Re: two I/O markers on the same wire
From: Jon Elson <jmelson@artsci.wustl.edu>
Date: Tue, 30 Nov 2004 16:48:17 -0600
Links: << >>  << T >>  << A >>


usmgn wrote:

>>>I use xilinx shematic editor.
>>>On a wire i trying to place two I/O markers (same name ?), but the editor
>>>say : "Error : net 'xxx' is already a port with a polarity value 'output'
>>>      
>>>
>>"
>>    
>>
>>>I want do this for wiring facility on the uper level schema.
>>>
>>>
>>>Any solution ?
>>>      
>>>
>>think!
>>(sometimes helps)
>>
>>add a dummy buffer to split the wire before connecting to iopad/marker
>>    
>>
>
>
>I had thought of that but i was not on that would not have perverse effects 
>(i debute with FPGA).
>
>  
>
It will have no effect.  The synthesis just gets rid of anything that 
doesn't
affect the final outputs of the logic.

Jon


Article: 76348
Subject: Re: 99% Utilisation !
From: Ray Andraka <ray@andraka.com>
Date: Tue, 30 Nov 2004 17:59:29 -0500
Links: << >>  << T >>  << A >>
All valid points.  99% utilization is probably the slice usage, not the LUT
usage, so you may still have plenty of margin (you are really between 50% and
99% LUT utilization, check the map results for LUT and memory usage.  At 40 MHz,
you will probably not have a problem if you were smart about your design (no
logic with layer upon layer of LUTs).  As the device gets filled, you may find
that routing starts becoming an issue.  That can be mostly alleviated by doing
some floorplanning.  Many of our designs have LUT utilization above 80%.  The
PAR times can get long, especially with less than optimal placement.  At 40 MHz,
you may also be able to take advantage of a multiplied clock to reduce logic
should you get painted into a corner.  I think you've got plenty of wiggle room
to get out of a tight spot if you get there in future design spins.  You may
have to be smart about the design to fit a larger change in.

>

--
--Ray Andraka, P.E.
President, the Andraka Consulting Group, Inc.
401/884-7930     Fax 401/884-7950
email ray@andraka.com
http://www.andraka.com

 "They that give up essential liberty to obtain a little
  temporary safety deserve neither liberty nor safety."
                                          -Benjamin Franklin, 1759



Article: 76349
Subject: CIC - Hogenauer glitch
From: "pete dudley" <padudle@sandia.gov>
Date: Tue, 30 Nov 2004 16:00:57 -0700
Links: << >>  << T >>  << A >>
Hello All

I'm doing a Digital DownConverter application with an overall sampling rate
reduction of 640. We want to use a so called CIC or Hogenauer filter for the
first decimate by 10 then follow with five decimate-by-2 halfband filters to
get 640. We are using a Xilinx VirtexII XC2V6000 to implement the hardware.

We planned on using the Xilinx Coregen core for the Cascade Integrator Comb
CIC filter but I am finding peculiar glitches in its output. The parameters
for the filter are R=decimation=10, N=stages=4, M=difference delay=1,
Bin=input width=15.

I wrote a simulation testbench that sweeps a linear FM chirp accross the
entire input Nyquist range and records the output data to a file. Every 1500
output samples there is a notable glitch of magnitude -30dB with respect to
the filter full scale output. I keep input amplitude less than half what the
input port should be able to handle (+-8192 into 15 bit port)

Thinking that the core was bad I wrote my own CIC filter from the Hogenauer
filter and it has exactly the same characteristics. With my own filter I can
look at the internal integrators and differentiators and the glitches occur
where there are general direction changes in the stage registers but with
all that accumulator overflow going on its hard to analyze.

Has anyone else encountered this general glitching with CIC filters? Can you
see a systematic way to analyze such a problem?

If interested I can share my filter design and testbench.

Regards,

  Pete Dudley





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