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 144400

Article: 144400
Subject: Re: A new approach to FPGA and PCB System Development Platform, Santa
From: Andy Peters <google@latke.net>
Date: Thu, 3 Dec 2009 16:09:49 -0800 (PST)
Links: << >>  << T >>  << A >>
On Dec 3, 3:01=A0pm, Vikram <vkr...@gmail.com> wrote:
> Announcing a Seminar on A New Approach - An FPGA and PCB System
> Development Platform, Santa Clara, CA, USA (By Altium) - Dec'10
>
> #2 FPGA Design & Instant Prototyping
> Learn how to design complex FPGA's with an embedded processor utlizing
> block based IP and quickly debug your design in a NanoBoard with
> virtual instrumentation.

FPGA design using a PCB layout tool is a recipe for disaster.

-a

Article: 144401
Subject: Controlling the I2C master from Opencores.org
From: "dlopez" <d@designgame.ca>
Date: Thu, 03 Dec 2009 19:25:13 -0600
Links: << >>  << T >>  << A >>
Hi,
Is anyone aware of a design controlling the 'I2C_controller_core' from
www.opencores.org? I read very good review of this core, but it needs to be
controlled by either a state machine or a small processor. The current core
only works at the 'byte' level.

I'd like to be able to tell it: write those 37 bytes to that slave
address...or read 48 bytes from that slave address...

I thought I'd ask before starting to write the state machine!

Thanks,
Diego	   
					
---------------------------------------		
This message was sent using the comp.arch.fpga web interface on
http://www.FPGARelated.com

Article: 144402
Subject: Re: A new approach to FPGA and PCB System Development Platform, Santa
From: Antti <antti.lukats@googlemail.com>
Date: Thu, 3 Dec 2009 21:36:22 -0800 (PST)
Links: << >>  << T >>  << A >>
On Dec 4, 2:09=A0am, Andy Peters <goo...@latke.net> wrote:
> On Dec 3, 3:01=A0pm, Vikram <vkr...@gmail.com> wrote:
>
> > Announcing a Seminar on A New Approach - An FPGA and PCB System
> > Development Platform, Santa Clara, CA, USA (By Altium) - Dec'10
>
> > #2 FPGA Design & Instant Prototyping
> > Learn how to design complex FPGA's with an embedded processor utlizing
> > block based IP and quickly debug your design in a NanoBoard with
> > virtual instrumentation.
>
> FPGA design using a PCB layout tool is a recipe for disaster.
>
> -a

Altium Designer is NOT a PCB layotool.

Antti

Article: 144403
Subject: Re: Does Xilinx sync FIFO use dual port memory? Does this affect
From: Kim Enkovaara <kim.enkovaara@iki.fi>
Date: Fri, 04 Dec 2009 08:26:17 +0200
Links: << >>  << T >>  << A >>
Oscar Almer wrote:
> The FIFO macros basically, it seems to me, wraps a BRAM macro, which is
> dual-port for free and gratis. The cost you refer to has already been
> paid by the poor engineers at Xilinx who designed the BRAM.
> 
> So, go ahead and save yourself the design effort, it won't really make
> a difference anyway. 

In my opinion the FIFO macros that use the BRAM is the worst thing
Xilinx could have done. Their core designers love to sprinkle them
all around coregen cores, and the cores waste huge amounts of ram.
Even small hundred bit fifos are built from one block ram etc.
Without the macro the designers might have to think about what they
are trying to do, and maybe optimize something in terms of size.

Of course business wise it is a good decision because the customers need
bigger chips to achieve things that could be much smaller.

--Kim

Article: 144404
Subject: Problem with Xilinx ISE and Spartan3
From: Mathias Weierganz <mweier@expires-31-12-2009.news-group.org>
Date: Fri, 04 Dec 2009 11:30:08 +0100
Links: << >>  << T >>  << A >>
As a beginner in FPGA design I run to the following problem:
I want to generate a 200MHz clock by the DCM from 2 different
clock sources, one is a 10MHz clock, the other is 60MHz.
My idea was to divide the 60MHz by 6 and alternatively
switch between the both clock-signals.

I use the Xilinx ISE9.1 and a Spartan3.
The synthesis (XST) was ok, but the Translate process shows
this error:

ERROR:NgdBuild:455 - logical net 'clk10mhz' has multiple driver(s):
    pin O on block clk10mhz1 with type LUT3,
    pin PAD on block clk10mhz with type PAD
ERROR:NgdBuild:924 - input pad net 'clk10mhz' is driving non-buffer 
primitives:
    pin O on block clk10mhz1 with type LUT3

When I put the selected clock to an output and read it from
another input and put it direct to the DCM then my design
works very well.

What is my fault?

Mathias



Article: 144405
Subject: Re: A new approach to FPGA and PCB System Development Platform, Santa Clara, CA, USA (By Altium)
From: "Nial Stewart" <nial*REMOVE_THIS*@nialstewartdevelopments.co.uk>
Date: Fri, 4 Dec 2009 11:39:01 -0000
Links: << >>  << T >>  << A >>
> FPGA design using a PCB layout tool is a recipe for disaster.

Indeed, I think they're wasting their time down this path.

What is good is the ability to pin/netlist swap when routing and pass
that back to the FPGA constraints. They should concentrate on this and making it
as flexible as possible but forget the FPGA development side of things.


Nial.




Article: 144406
Subject: Re: Problem with Xilinx ISE and Spartan3
From: Gabor <gabor@alacron.com>
Date: Fri, 4 Dec 2009 06:16:02 -0800 (PST)
Links: << >>  << T >>  << A >>
On Dec 4, 5:30=A0am, Mathias Weierganz <mwe...@expires-31-12-2009.news-
group.org> wrote:
> As a beginner in FPGA design I run to the following problem:
> I want to generate a 200MHz clock by the DCM from 2 different
> clock sources, one is a 10MHz clock, the other is 60MHz.
> My idea was to divide the 60MHz by 6 and alternatively
> switch between the both clock-signals.
>
> I use the Xilinx ISE9.1 and a Spartan3.
> The synthesis (XST) was ok, but the Translate process shows
> this error:
>
> ERROR:NgdBuild:455 - logical net 'clk10mhz' has multiple driver(s):
> =A0 =A0 pin O on block clk10mhz1 with type LUT3,
> =A0 =A0 pin PAD on block clk10mhz with type PAD
> ERROR:NgdBuild:924 - input pad net 'clk10mhz' is driving non-buffer
> primitives:
> =A0 =A0 pin O on block clk10mhz1 with type LUT3
>
> When I put the selected clock to an output and read it from
> another input and put it direct to the DCM then my design
> works very well.
>
> What is my fault?
>
> Mathias

Did you use the architecture wizard (or CoreGen) to "create"
your DCM?  This method has a habit of adding the input pin
buffer, which you obviously don't want if the input to the
DCM comes from an internal signal.

Regards,
Gabor

Article: 144407
Subject: Picoblaze bit file block ram remplacement
From: paxl13 <paxl13@gmail.com>
Date: Fri, 4 Dec 2009 08:31:10 -0800 (PST)
Links: << >>  << T >>  << A >>
Hi everyone,

I've been playing with fpga since a couple of time and I can't find
the answer to my quesiton. I have
a picoblaze in a design of mine and I want to update the bitstream
without having to re-"build" my design
entirly ( to save time ). I'm using linux and thus the tool given with
the picoblaze can't work. I found out
picoasm ( http://www.xs4all.nl/~marksix/picoasm.html ) + this page
( http://www.labbookpages.co.uk/fpgas/picoBlaze.html ) witch give all
the info I should need but I have a problem. How can I locate the
blockram
witch the placer has placed my program. The script that the site give
use this command :
xdl -ncd2xdl vga.ncd
This output a vga.xdl file witch should contain my Block ram and it's
position but it is nowhere to be found.
I'm using Xilinx 10.1...

Do anyone has an idea ?
Thanks a lot for your input,
paxl13

Article: 144408
Subject: Re: Where to go when Spartan-3A DSP 3400 is full?
From: John Adair <g1@enterpoint.co.uk>
Date: Fri, 4 Dec 2009 09:17:22 -0800 (PST)
Links: << >>  << T >>  << A >>
The CS484 package is nice but I believe it is some time off before it
is available for Spartan-6.

For layout plan for an entire rerouting of the design.

John Adair
Enterpoint Ltd.- Home of Merrick1 the High Performance Computing
Board.


On 3 Dec, 21:23, Svenn Are Bjerkem <svenn.bjer...@googlemail.com>
wrote:
> Hi,
> Just got a question what to do if future needs fill up a Spartan-3A
> DSP 3400 CS484. A very quick and unqualified look at Spartan-6 family
> show a package called CSG484 with same physical dimensions as the
> CS484. Hope to do as few changes on the PCB as possible. Since the
> supply voltage is not the same, a drop-in replacement will not be
> possible anyway, but I would like to keep the rewiring need low.
> Anybody done this or thought of this who would share some impressions?
>
> --
> Svenn


Article: 144409
Subject: very wide counter (42-bit)
From: "kendor" <jonas.reber@bfh.ch>
Date: Fri, 04 Dec 2009 12:15:24 -0600
Links: << >>  << T >>  << A >>
hello there

for a measuring utility (running @ 100MHZ) I need a counter of 42-bit width
whose value is used by several sub blocks of my design. As a first, somehow
dirty solution I have implemented this like follows. Since this approach
needs quite a huge amount of FFs and leads to long delaytimes (bit 0 to 42)
I am looking for an alternative. I was thinking about using Block RAM
(Spartan3) to reduce routing effort and delaytimes. (see also
http://courses.ece.illinois.edu/ece412/References/datasheets/xapp463.pdf)

Has anyone ever done such a thing or do you have any suggestions on solving
my task?

current code: 
-------------------------------------
# i have to use std_logic_unsigned since numeric_std has as integer width
the normal 4 bytes width (32bit - which for 42 bits is not enough ...
overflow,..)

# ...
GENERIC (
  t : NATURAL := 42;  --! counter width
  wd: NATURAL := 5    --! divider (clk/(2*wd))
);

# ...
ARCHITECTURE rtl OF worldtimeCtr IS
	SIGNAL cnt: std_logic_vector(t-1 downto 0);
BEGIN
	PROCESS(clk,rst)
		VARIABLE temp :	NATURAL RANGE 0 to wd;
	BEGIN
		IF(rst='0')THEN
			cnt <= (others =>'0');
			temp := 0;
		ELSIF(clk'event and clk='1')THEN
			IF(en='1' and temp = wd)THEN
			   temp := 0;
			   cnt <= STD_LOGIC_VECTOR(cnt + 1);
			END IF;
			temp := temp+1;
		END if;
		
	END process;
	o_worldtime <= cnt;
END rtl;

# ...
-------------------------------------

thank you in advance

kendor



Article: 144410
Subject: fpga clock resolution
From: niyander <mightycatniyander@gmail.com>
Date: Fri, 4 Dec 2009 10:39:32 -0800 (PST)
Links: << >>  << T >>  << A >>
hello,

can anyone tell me whats the minimum clock resolution in fpga, i mean
whether fpga works in nano second or in micro seconds if an external
clock of 100 Mhz is provided?

thanks

Article: 144411
Subject: Re: Picoblaze bit file block ram remplacement
From: paxl13 <paxl13@gmail.com>
Date: Fri, 4 Dec 2009 11:02:06 -0800 (PST)
Links: << >>  << T >>  << A >>
I feel ugly !,
When you try to update a block ram, always assure yourself THAT Xilinx
didn't
have removed it from the design !!!

Sorry for this,
paxl

On Dec 4, 11:31=A0am, paxl13 <pax...@gmail.com> wrote:
> Hi everyone,
>
> I've been playing with fpga since a couple of time and I can't find
> the answer to my quesiton. I have
> a picoblaze in a design of mine and I want to update the bitstream
> without having to re-"build" my design
> entirly ( to save time ). I'm using linux and thus the tool given with
> the picoblaze can't work. I found out
> picoasm (http://www.xs4all.nl/~marksix/picoasm.html) + this page
> (http://www.labbookpages.co.uk/fpgas/picoBlaze.html) witch give all
> the info I should need but I have a problem. How can I locate the
> blockram
> witch the placer has placed my program. The script that the site give
> use this command :
> xdl -ncd2xdl vga.ncd
> This output a vga.xdl file witch should contain my Block ram and it's
> position but it is nowhere to be found.
> I'm using Xilinx 10.1...
>
> Do anyone has an idea ?
> Thanks a lot for your input,
> paxl13


Article: 144412
Subject: Re: very wide counter (42-bit)
From: Rob Gaddi <rgaddi@technologyhighland.com>
Date: Fri, 4 Dec 2009 11:03:17 -0800
Links: << >>  << T >>  << A >>
On Fri, 04 Dec 2009 12:15:24 -0600
"kendor" <jonas.reber@bfh.ch> wrote:

> hello there
> 
> for a measuring utility (running @ 100MHZ) I need a counter of 42-bit
> width whose value is used by several sub blocks of my design. As a
> first, somehow dirty solution I have implemented this like follows.
> Since this approach needs quite a huge amount of FFs and leads to
> long delaytimes (bit 0 to 42) I am looking for an alternative. I was
> thinking about using Block RAM (Spartan3) to reduce routing effort
> and delaytimes. (see also
> http://courses.ece.illinois.edu/ece412/References/datasheets/xapp463.pdf)
> 
> Has anyone ever done such a thing or do you have any suggestions on
> solving my task?
> 
> current code: 
> -------------------------------------
> # i have to use std_logic_unsigned since numeric_std has as integer
> width the normal 4 bytes width (32bit - which for 42 bits is not
> enough ... overflow,..)
> 
> # ...
> GENERIC (
>   t : NATURAL := 42;  --! counter width
>   wd: NATURAL := 5    --! divider (clk/(2*wd))
> );
> 
> # ...
> ARCHITECTURE rtl OF worldtimeCtr IS
> 	SIGNAL cnt: std_logic_vector(t-1 downto 0);
> BEGIN
> 	PROCESS(clk,rst)
> 		VARIABLE temp :	NATURAL RANGE 0 to wd;
> 	BEGIN
> 		IF(rst='0')THEN
> 			cnt <= (others =>'0');
> 			temp := 0;
> 		ELSIF(clk'event and clk='1')THEN
> 			IF(en='1' and temp = wd)THEN
> 			   temp := 0;
> 			   cnt <= STD_LOGIC_VECTOR(cnt + 1);
> 			END IF;
> 			temp := temp+1;
> 		END if;
> 		
> 	END process;
> 	o_worldtime <= cnt;
> END rtl;
> 
> # ...
> -------------------------------------
> 
> thank you in advance
> 
> kendor
> 
> 

Another option would be to pipeline the block into, say, 3 segments of
14 bits a piece, so that you don't have that one LONG carry chain
trying to propagate up the whole thing.

Depending on how willing your toolchain is to rebalance registers (ISE
11 _may_ be smart enough), you might just be able to add a few stages
of pipeline delay on the output of the entire 43 bits, and let it push
things around across the logic.  Otherwise you'd have to code it
manually, which isn't the end of the world.

-- 
Rob Gaddi, Highland Technology
Email address is currently out of order

Article: 144413
Subject: Re: fpga clock resolution
From: austin <austin@xilinx.com>
Date: Fri, 4 Dec 2009 11:49:58 -0800 (PST)
Links: << >>  << T >>  << A >>
n,

The Xilinx FPGA device is entirely static, and synchronous.

That means that when a clock transitions, that the flip flops all
store information on the rising (or falling) edge of the clock.

The delay from the clock edge, to the data output of the flip flop
changing is in the timing report, and is usually known as "clock to
out."  This delay is also in the 100's of picoseconds range.

The clock could run at .000001 Hz, or up to the maximum allowed by
your design (550 MHz? 200 MHz? whatever you designed it for).

The time it takes for the clock to enter the FPGA device (get from the
pin on the board, to the silicon) is known as "flight time" and is
listed in the package files (IBIS models).  This is roughly the speed
of light in the medium (~200 picoseconds per inch -- or ~ 8
picoseconds per mm)

The time it takes for the clock signal to propagate through the clock
tree, from any point, to any point, is in the timing report reported
as clock skew.  This can be from a few picoseconds, to more than a
nanosecond (>1000 ps), depending on the size of the device, the
locations, and the loading of the clock tree.

Austin

Article: 144414
Subject: Re: very wide counter (42-bit)
From: Gabor <gabor@alacron.com>
Date: Fri, 4 Dec 2009 12:44:49 -0800 (PST)
Links: << >>  << T >>  << A >>
On Dec 4, 1:15=A0pm, "kendor" <jonas.re...@bfh.ch> wrote:
> hello there
>
> for a measuring utility (running @ 100MHZ) I need a counter of 42-bit wid=
th
> whose value is used by several sub blocks of my design. As a first, someh=
ow
> dirty solution I have implemented this like follows. Since this approach
> needs quite a huge amount of FFs and leads to long delaytimes (bit 0 to 4=
2)
> I am looking for an alternative. I was thinking about using Block RAM
> (Spartan3) to reduce routing effort and delaytimes. (see alsohttp://cours=
es.ece.illinois.edu/ece412/References/datasheets/xapp463.pdf)
>
> Has anyone ever done such a thing or do you have any suggestions on solvi=
ng
> my task?
>
> current code:
> -------------------------------------
> # i have to use std_logic_unsigned since numeric_std has as integer width
> the normal 4 bytes width (32bit - which for 42 bits is not enough ...
> overflow,..)
>
> # ...
> GENERIC (
> =A0 t : NATURAL :=3D 42; =A0--! counter width
> =A0 wd: NATURAL :=3D 5 =A0 =A0--! divider (clk/(2*wd))
> );
>
> # ...
> ARCHITECTURE rtl OF worldtimeCtr IS
> =A0 =A0 =A0 =A0 SIGNAL cnt: std_logic_vector(t-1 downto 0);
> BEGIN
> =A0 =A0 =A0 =A0 PROCESS(clk,rst)
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 VARIABLE temp : NATURAL RANGE 0 to wd;
> =A0 =A0 =A0 =A0 BEGIN
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 IF(rst=3D'0')THEN
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 cnt <=3D (others =3D>'0')=
;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 temp :=3D 0;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ELSIF(clk'event and clk=3D'1')THEN
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 IF(en=3D'1' and temp =3D =
wd)THEN
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0temp :=3D 0;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0cnt <=3D STD_LOGIC=
_VECTOR(cnt + 1);
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 END IF;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 temp :=3D temp+1;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 END if;
>
> =A0 =A0 =A0 =A0 END process;
> =A0 =A0 =A0 =A0 o_worldtime <=3D cnt;
> END rtl;
>
> # ...
> -------------------------------------
>
> thank you in advance
>
> kendor

If you mean the input clock is running 100 MHz, then after
your prescaler (temp) your 42-bit count runs at 1/6 of 100 MHz
if I read this code correctly?  That means the entire counter
has a multicycle propagation delay to itself of about 60 ns.
Did you try adding a from : to style timing constraint to
let the tools realize this?

Regards,
Gabor

Article: 144415
Subject: Re: This works, this does not... why?
From: "aleksa" <aleksazr@gmail.com>
Date: Fri, 4 Dec 2009 23:25:40 +0100
Links: << >>  << T >>  << A >>
> 1. Verify that the timing report for Fmax is greater than the actual
> clock frequency.
> 2. Verify that the setup time requirement listed in the timing report
> for each input is actually being met in the real system.

All timings are verified, however there is one problem.

This is what I had in my 1st version of UCF:
  OFFSET = OUT 15 ns AFTER "CLK"; -- ALL pins are constrained.

After viewing the reports, I've seen that not only SCODE0 is
affected by that constraint, but also the complete DBUS.

(Slave CPU writes with SCODE0, Master CPU reads with DBUS)

My thinking was/is: the master CPU will not read the data regs
until the status reg shows READY='1', so there is no need
to optimize timing from CLK to DBUS.

So I replaced my UCF with this 2nd version:
  INST "SCODE0" TNM = CLK_OUT;  -- constrain SCODE0 only
  TIMEGRP "CLK_OUT" OFFSET = OUT 15 ns AFTER "CLK";

At first, that worked. However, after changing my READY code
things started to go wrong (and that is when I posted to this NG).

Now, I have reverted back to 1st UCF version, and the problem
is, I dare to say, gone.

Q: has that really solved my problem?

I really don't see anything wrong with my VHDL code and I had
that test prog running for hours w/o errors now.


> 3. Have the timing analyzer analyze all clock domain crossings or look
> at the final implementation for clock domain crossings
> - Does every clock domain crossing meet that requirement?
> - Did you verify that the requirement is met by viewing the final
> implementation?

I have used timing analyzer (TA) yesterday for the first time,
so I don't have much experience.

TA shows a list of constrained and unconstrained paths.

I did my best and removed almost all of the unconstrained items,
only the "Maximum Data Path: CLK to FF" have left, and they
all have the delay of only 2.2ns.

This is what I now have in my 3rd UCF:

  for every global clock:
    NET "CLK" TNM_NET = CLK;
    TIMESPEC TS_CLK = PERIOD "CLK" 25 ns HIGH 50%;

    OFFSET = IN 10 ns VALID 15 ns BEFORE "CLK";
    OFFSET = OUT 15 ns AFTER "CLK";

  next, all combinations of:
    TIMESPEC TS_CLK1_2 = FROM "CLK1" TO "CLK2" 15 ns;

  and:
    TIMESPEC "TS_P2P" = FROM "PADS" TO "PADS" 15 ns;


> Have the timing analyzer analyze all clock domain crossings

How?
Like this: "TIMESPEC TS_CLK1_2 = FROM "CLK1" TO "CLK2" 15 ns;"?


Since I now know a little more than yesterday, I went back to 2nd UCF
file, hoping to see why that failed. TA did show some errors,
but nothing connected to the problem I was seeing, at least I think so.
Plenty of unconstrained items, but, again, no apparent connection..

In other words, I have it now working, but am not sure if the
problem is really solved, or I'm just currently lucky.


> Some of your comments are
> contradictory (only one clock, but there are multiple things being
> clocked, there are multiple clocks)

Well, there are three clocks, but only one (CLK) is important here:
  - MASTERCLK just toggles WR0, and then CLK copies it to its domain.
  - SCLK is connected to ordinary pin, and gets sampled with CLK.
  - (MASTERCLK and CLK are connected to GCLK pins)


> - If multiple bits get moved from one domain to another (maybe the two
> bits of 'ACTIONCODE' as an example) what one *other* signal is there
> that tells you that it is OK to sample these signals and that they are
> guaranteed valid?

Only one bit is moved: SCODE0 to SHIFTIN when SCODE1='0' and rising SCLK.
The signal that tells me that it is OK to sample is rising SCLK with
SCODE1='1' and SCODE0='0'. Read my second post, maybe is not
commented well, but its all there.



Article: 144416
Subject: BRAM usage in synplify pro
From: ni <nbg2006@gmail.com>
Date: Fri, 4 Dec 2009 20:24:54 -0800 (PST)
Links: << >>  << T >>  << A >>
I am trying to minimize my bram usage for the design. My basic BRAM
code in vhdl is shown below. If I change the address width to 8 and
data width to 64 the synplify pro gives me 2 brams usage. Shouldnt it
be only one BRAM since I am using 256 * 64 = 16384 bits? Am I doing
something wrong in the vhdl code?
Appreciate any help.
Thanks.
ENTITY SDP_8_8192 Is
	GENERIC(AWIDTH : INTEGER := 8; DWIDTH : INTEGER := 64);
PORT(
	CLK : IN std_logic;	WE : IN std_logic;	ADDRA  :  IN std_logic_vector
(AWIDTH-1 downto 0);
	ADDRB  :  IN std_logic_vector(AWIDTH-1 downto 0);
	DIA    : IN std_logic_vector(DWIDTH-1 downto 0);
    DOB   :  OUT std_logic_vector(DWIDTH-1 downto 0)
);
end entity;

architecture synth of SDP_8_8192 is

    constant MEM_DEPTH   : integer := 2**AWIDTH;
    type mem_array is array(0 to MEM_DEPTH-1) of std_logic_vector
(DWIDTH-1 downto 0);
    signal ram           : mem_array;
 begin
   proc: process(CLK)
    begin
       if rising_edge(CLK) then
          if WE = '1' then
             ram(conv_integer(ADDRA)) <= DIA;
          end if;
            DOB <= ram(conv_integer(ADDRB));
       end if;
    end process;

    END synth;

Article: 144417
Subject: Re: BRAM usage in synplify pro
From: "maxascent" <maxascent@yahoo.co.uk>
Date: Sat, 05 Dec 2009 03:38:26 -0600
Links: << >>  << T >>  << A >>
I would think it will depend on the fpga technology you are targeting as
the BRAM can have different port widths and sizes. Check with the user
guide for the fpga you are using.

Jon 	   
					
---------------------------------------		
This message was sent using the comp.arch.fpga web interface on
http://www.FPGARelated.com

Article: 144418
Subject: Re: This works, this does not... why?
From: "aleksa" <aleksazr@gmail.com>
Date: Sat, 5 Dec 2009 10:40:29 +0100
Links: << >>  << T >>  << A >>
> This is what I had in my 1st version of UCF:
>  OFFSET = OUT 15 ns AFTER "CLK"; -- ALL pins are constrained.

I forgot to mention that I also had
PERIOD and OFFSET IN for CLK and
PERIOD, OFFSET IN and OFFSET OUT for all other clocks.






Article: 144419
Subject: spartan 3 and multiprocessor
From: "ines_fr" <benhlima_ines@yahoo.fr>
Date: Sat, 05 Dec 2009 09:08:55 -0600
Links: << >>  << T >>  << A >>
Dear all

I'm a new member of this board so a big hello to everybody

I am using spartan 3 Starter Board, and I want to know if it supports
multiprocessor architecture or not?
anyone can help me Please!

thank you in advance.

INES



Article: 144420
Subject: Re: BRAM usage in synplify pro
From: ni <nbg2006@gmail.com>
Date: Sat, 5 Dec 2009 07:49:53 -0800 (PST)
Links: << >>  << T >>  << A >>
On Dec 5, 4:38=A0am, "maxascent" <maxasc...@yahoo.co.uk> wrote:
> I would think it will depend on the fpga technology you are targeting as
> the BRAM can have different port widths and sizes. Check with the user
> guide for the fpga you are using.
>
> Jon =A0 =A0 =A0 =A0
>
> --------------------------------------- =A0 =A0 =A0 =A0
> This message was sent using the comp.arch.fpga web interface onhttp://www=
.FPGARelated.com

I am using virtex II pro x2vp70.I will check it out.

Article: 144421
Subject: Re: BRAM usage in synplify pro
From: Gabor <gabor@alacron.com>
Date: Sat, 5 Dec 2009 08:07:25 -0800 (PST)
Links: << >>  << T >>  << A >>
On Dec 5, 10:49=A0am, ni <nbg2...@gmail.com> wrote:
> On Dec 5, 4:38=A0am, "maxascent" <maxasc...@yahoo.co.uk> wrote:
>
> > I would think it will depend on the fpga technology you are targeting a=
s
> > the BRAM can have different port widths and sizes. Check with the user
> > guide for the fpga you are using.
>
> > Jon =A0 =A0 =A0 =A0
>
> > --------------------------------------- =A0 =A0 =A0 =A0
> > This message was sent using the comp.arch.fpga web interface onhttp://w=
ww.FPGARelated.com
>
> I am using virtex II pro x2vp70.I will check it out.

Virtex II maximum data width for a single BRAM is 36 bits.
However if you are careful, you can get a single-ported
BRAM of 72-bits by using both ports of the same BRAM
and tying off the upper address bit to 0, 1 for each
respective port.  For dual-port applications the limit
is 36 bits.  By the way using a BRAM at maximum width
and dual port uses all the routing resources to the
BRAM as well as the adjacent multiplier, so you will
lose the use of the multiplier.

Regards,
Gabor

Article: 144422
Subject: Re: This works, this does not... why?
From: KJ <kkjennings@sbcglobal.net>
Date: Sat, 5 Dec 2009 09:06:30 -0800 (PST)
Links: << >>  << T >>  << A >>
On Dec 4, 5:25=A0pm, "aleksa" <aleks...@gmail.com> wrote:
>
> Now, I have reverted back to 1st UCF version, and the problem
> is, I dare to say, gone.
>
> Q: has that really solved my problem?
>

Form your original post you said...
"In real world that didn't work. I wrote a test prog that has failed
after several seconds. READY was set to '1' when it should have stayed
'0'"

Unless you can explain at least to yourself the chain of events that
allowed 'READY' to be set to 1 when it should have stayed 0, I would
say that no you haven''t really solved the problem because you really
don't quite understand the problem.  There are many things that one
can change to make a problem seem to disappear, but usually they only
disappear for some period of time only to reappear later...and this
later time is usually at the most inopportune moment and you'll be
under some real heat to fix the problem.

> I really don't see anything wrong with my VHDL code and I had
> that test prog running for hours w/o errors now.
>

Try heating and cooling the various parts with cold spray and a heat
gun and see if it all still works.

Look at it this way...
- You had a failure (described in your original post)
- You haven't explained the reason for the failure
- You've put in changes that make the problem less frequent (code
changes and constraint changes)
- You currently have something that appears to be working (it hasn't
failed after several hours) but can't explain why previous versions
didn't

Now ask youself, if you were the end user rather than the designer,
would you feel confident that the issue has been put to rest and will
never come back?

>
> TA shows a list of constrained and unconstrained paths.
>
> I did my best and removed almost all of the unconstrained items,
> only the "Maximum Data Path: CLK to FF" have left, and they
> all have the delay of only 2.2ns.
>
> This is what I now have in my 3rd UCF:
>

Again, more changes without understanding why the system failed in the
first place.

>
> Since I now know a little more than yesterday, I went back to 2nd UCF
> file, hoping to see why that failed. TA did show some errors,

You went to the wrong place, put a scope or logic analyzer on the
failing hardware.

> but nothing connected to the problem I was seeing, at least I think so.
> Plenty of unconstrained items, but, again, no apparent connection..
>
> In other words, I have it now working, but am not sure if the
> problem is really solved, or I'm just currently lucky.
>

Since you don't understand why it failed, you're getting lucky.  There
are also two forms of luck.  It would be 'good luck' if you happened
to stumble upon the fix without understanding the failure.  It will be
'bad luck' if this change has only made the problem go away on this
board (or some small set of boards) but it comes back when the design
goes into production and it resurfaces.

Design problems are like submarines, unless you target and sink them,
they will re-surface.

I'd strongly suggest reading and following the guidelines I outlined
in my second posting on December 2 regarding how to debug.  That
process will lead you to understanding why your original two cracks at
it failed.  From that knowledge you'll be able to know (not guess) at
whether or not your last attempt actually fixes the problem or you got
lucky.

Remember to start with your older failed attempts since they fail more
frequently (you can't debug something that appears to be working).
You need to know why something failed before you can evaluate whether
you've fixed it or covered it up.

Kevin Jennings

Article: 144423
Subject: Re: BRAM usage in synplify pro
From: ni <nbg2006@gmail.com>
Date: Sat, 5 Dec 2009 09:40:39 -0800 (PST)
Links: << >>  << T >>  << A >>
On Dec 5, 11:07=A0am, Gabor <ga...@alacron.com> wrote:
> On Dec 5, 10:49=A0am, ni <nbg2...@gmail.com> wrote:
>
> > On Dec 5, 4:38=A0am, "maxascent" <maxasc...@yahoo.co.uk> wrote:
>
> > > I would think it will depend on the fpga technology you are targeting=
 as
> > > the BRAM can have different port widths and sizes. Check with the use=
r
> > > guide for the fpga you are using.
>
> > > Jon =A0 =A0 =A0 =A0
>
> > > --------------------------------------- =A0 =A0 =A0 =A0
> > > This message was sent using the comp.arch.fpga web interface onhttp:/=
/www.FPGARelated.com
>
> > I am using virtex II pro x2vp70.I will check it out.
>
> Virtex II maximum data width for a single BRAM is 36 bits.
> However if you are careful, you can get a single-ported
> BRAM of 72-bits by using both ports of the same BRAM
> and tying off the upper address bit to 0, 1 for each
> respective port. =A0For dual-port applications the limit
> is 36 bits. =A0By the way using a BRAM at maximum width
> and dual port uses all the routing resources to the
> BRAM as well as the adjacent multiplier, so you will
> lose the use of the multiplier.
>
> Regards,
> Gabor

Is there any application note which explains this stuff?
I am more interested in optimizing bram usage for my architecture.

Article: 144424
Subject: Help with Xilinx Eval Board Schematic
From: emeb <ebrombaugh@gmail.com>
Date: Sat, 5 Dec 2009 10:11:07 -0800 (PST)
Links: << >>  << T >>  << A >>
I just came across a couple of old Avnet eval boards for the Xilinx
XC3VP7. Part number is ADS-XLX-V2PRO-EVLP7-5 and there's a product
brief here:

http://www.em.avnet.com/ctf_shared/evk/df2df2usa/Xilinx_Virtex-II_Pro_Eval_Kit-Product_Brief_081103F1.pdf

I'd like to find a schematic, or at least an I/O pin mapping for this
board, but Avnet seems to have removed all the design materials from
their site. Can anyone help?

Thanks

Eric



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