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 126800

Article: 126800
Subject: Re: Asynchronous FIFO and almost empty - bug?
From: PatC <pato@patocarr.com>
Date: Sun, 02 Dec 2007 20:53:46 -0800
Links: << >>  << T >>  << A >>
Peter Alfke wrote:
> On Nov 29, 3:46 am, "heinerl...@googlemail.com"
>> The problem we found is that the almost empty flag is only asserted if
>> the FIFO is beeing emptied and not if it is beeing filled. So if the
>> FIFO was empty and we get a shift in the almost empty is not asserted
>> although we set the treshold to one. Is this a bug?

You could use the fifo read count and compare it to 1? The latency may
be higher, but it's guarantied there'll be a point there when it asserts.

HTH,
-P@

Article: 126801
Subject: Re: ise timing analysis + different clock domains
From: PatC <pato@patocarr.com>
Date: Sun, 02 Dec 2007 21:04:47 -0800
Links: << >>  << T >>  << A >>
u_stadler@yahoo.de wrote:
> when i was working with only one clock (the 100MHz one) my design
> synthesized at about 450 MHz.
> now when i connect the parts of my design that work with the different
> clock rates it suddenly drops to 80 MHz. The design is not that big
> (about 90 slices) so routing and placing should not be a problem. I
> assume this has something to do with the two clock domains.
> I wonder if ther is a state of the art way how to design with two
> clock domains. (right now i'm using registers. is there anything
> better or smarter? perhaps some examples ?)

You should need to make sure that all paths that cross clock domains are
protected against metastability, ie. adding pipelining of 2 or more
clocks, depending on speed difference between clocks.

Then you'd create a TimingIGnore (TIG) constraint on those paths,
grouped with the FROM-TO grouping constraint. See the constraint guide
for info.

HTH,
-P@

Article: 126802
Subject: Re: Asynchronous FIFO and almost empty - bug?
From: Peter Alfke <alfke@sbcglobal.net>
Date: Sun, 2 Dec 2007 21:35:57 -0800 (PST)
Links: << >>  << T >>  << A >>
On Dec 2, 8:53 pm, PatC <p...@patocarr.com> wrote:
> Peter Alfke wrote:
> > On Nov 29, 3:46 am, "heinerl...@googlemail.com"
> >> The problem we found is that the almost empty flag is only asserted if
> >> the FIFO is beeing emptied and not if it is beeing filled. So if the
> >> FIFO was empty and we get a shift in the almost empty is not asserted
> >> although we set the treshold to one. Is this a bug?
>
> You could use the fifo read count and compare it to 1? The latency may
> be higher, but it's guarantied there'll be a point there when it asserts.
>
> HTH,
> -P@

In an asynchronous FIFO, the flags must be synchronized to the
appropriate clock.
The leading edge of Almost Empty is normally generated by the read
clock, and it is the read side that usually worries about (Almost)
Empty. The trailing edge, however, is generated by the write clock,
and (for most purposes) needs re-synchronization to the read clock.
That re-synchronization needs an extra clock edge (or two) to avoid
metastable confusion.
The basic problem is the unknown phase relationship between the two
clocks. The edges can be far apart, but also very close to each other,
down to fractional picoseconds. But the controller has to provide
correct flag outputs. The actual reading and writing is trivial, as
long as the RAM is dual-ported.
Peter Alfke

Article: 126803
Subject: Re: ISE WARNING Xst:647
From: Mark McDougall <markm@vl.com.au>
Date: Mon, 03 Dec 2007 17:25:27 +1100
Links: << >>  << T >>  << A >>
Mark McDougall wrote:

> Thanks for the tip Brian! This is certainly a possibility, as I'm a big
> fan of aliases... I'll look into it with this in mind!
> 
> How you found that, I have no idea, but thanks again!

Hmmm, no dice. I removed std_logic_unsigned altogether, and there's no
aliases in there that should affect it... :(

Frustrating, because the design differs only from the Altera project in
the memory block instantiations, and the DCM replacing the PLL. And a
similar project, ported to Xilinx from Altera with much the same
architecture, runs fine. :(

Regards,

-- 
Mark McDougall, Engineer
Virtual Logic Pty Ltd, <http://www.vl.com.au>
21-25 King St, Rockdale, 2216
Ph: +612-9599-3255 Fax: +612-9599-3266

Article: 126804
Subject: Re: What tools do you use ? Why ?
From: Kim Enkovaara <kim.enkovaara@iki.fi>
Date: Mon, 03 Dec 2007 09:50:21 +0200
Links: << >>  << T >>  << A >>
psihodelia@googlemail.com wrote:
> What I don't fully understand is why so many people use ModelSim ? I
> did try it but it is slow and it has many bugs. On the other side, I

Maybe because it is one of three big simulators that are known to
support reliably the language standards and are fast. Also one
critical thing in current world is support for mixed language
designs. I have not seen pure vhdl for a while, usually there
are some verilog blocks embedded to the designs. And in the future
designs with systemc, systemverilog, vhdl and verilog are going
to be normal.

Also I have found that modelsim is very fast simulator. But you
can't compare something like Modelsim XE and SE, they are different
tools in terms of optimization capabilities. Also I have not seen
more bugs in Modelsim than in other tools, and I have used it
since 5.5 version, there have been few bad versions (for example 6.0
series).

And many times the original source code has the bug, not the tool.
Especially verilog based behavioral models many times seem to rely
on how VerilogXL executed code, not on the language standard.
And it might be that the tool did correct optimization, but the
code was relying on execution order of the processes etc.


> middle school. Today's complexity of the software is so huge that
> almost all Closed Source Solutions are predefined to be buggy,

And also open source software is buggy. The big problem with
open source is support, for commercial EDA tools you actually
get good support. Even if you have the code, you need people
who really understand it, "here is the code, fix the problem
yourself" does not usually work with complex codebases.

> unproductive, short-living. The same arguments are applicable to the
> current situation about synthesis tools. I wonder if current situation
> will start slowly change. Commercial interests depend on the
> technological progress. Progress will be faster if Open Source will be
> more important. For example, many Universities could provide more

Synthesis tools are even more complicated than simulators, and
today there are even no good simulators at opensource side
(multilanguage support, integrated gui, coverage support,
assertions etc.) I'm fan of opensource, but it is not always
the best way to develop tools. At synthesis side one problem for
example is that the tool support for upcoming fpga-famimilies
need to be started early on, and at that phase all information
is under very strict NDAs.

--Kim

Article: 126805
Subject: Re: Asynchronous FIFO and almost empty - bug?
From: "heinerlitz@googlemail.com" <heinerlitz@googlemail.com>
Date: Mon, 3 Dec 2007 00:20:01 -0800 (PST)
Links: << >>  << T >>  << A >>
HI

as stated we are using the FIFO in an Asynchronous way. The read and
write clock are both 200 MHz but are provided through 2 different
oscillators. We are using the almost empty signal onlyin the read
clock domain. We are currently implementing a single FF stage located
at the output side of the FIFO. If then the FIFO goes empty (and the
empty signal behaves correctly) we can be sure to have another datum
in the FF stage, equaling almost empty.

hope this helps..

regs, Heiner

Article: 126806
Subject: Re: lossless compression in hardware: what to do in case of uncompressibility?
From: "Boudewijn Dijkstra" <boudewijn@indes.com>
Date: Mon, 03 Dec 2007 10:14:27 +0100
Links: << >>  << T >>  << A >>
Op Thu, 29 Nov 2007 15:42:45 +0100 schreef Denkedran Joe  
<denkedranjoe@googlemail.com>:
> I'm working on a hardware implementation (FPGA) of a lossless compression
> algorithm for a real-time application. The data will be fed in to the
> system, will then be compressed on-the-fly and then transmitted further.
>
> The average compression ratio is 3:1, so I'm gonna use some FIFOs of a
> certain size and start reading data out of the FIFO after a fixed
> startup-time. The readout rate will be 1/3 of the input data rate The  
> size
> of the FIFOs is determined by the experimental variance of the mean
> compression ratio. Nonetheless there are possible circumstances in which  
> no compression can be achieved.

Given that uncompressible data often resembles noise, you have to ask  
yourself: what would be lost?

> Since the overall system does not support
> variable bitrates a faster transmission is no solution here.
>
> So my idea was to put the question to all of you what to do in case of
> uncompressibility? Any ideas?

If you can identify the estimated compression beforehand and then split  
the stream into a 'hard' part and an 'easy' part, then you have a way to  
retain the average.



-- 
Gemaakt met Opera's revolutionaire e-mailprogramma:  
http://www.opera.com/mail/

Article: 126807
Subject: Re: What's the difference for VHDL code between simulation and synthesis?
From: Martin Thompson <martin.j.thompson@trw.com>
Date: Mon, 03 Dec 2007 09:36:12 +0000
Links: << >>  << T >>  << A >>
"KJ" <kkjennings@sbcglobal.net> writes:

> Bottom line right now for the code I right, I'm finding Altera way
> ahead of Xilinx and Synplify so I'm working with X and S to get
> their tools improved so that they too can have less stuff that some
> would consider to be 'not synthesizable'.

Could you give us an example of something Altera can do that Synplify
can't?  (I've always "felt" Synplify to be ahead of the vendor-specific
tools, but it sounds like that may have changed :-)

Thanks!
Martin

-- 
martin.j.thompson@trw.com 
TRW Conekt - Consultancy in Engineering, Knowledge and Technology
http://www.conekt.net/electronics.html

Article: 126808
Subject: Re: Interfacing Cyclone III to 3.3v LVDS devices
From: LC <cupidoREMOVE@mail.ua.pt>
Date: Mon, 03 Dec 2007 10:36:22 +0000
Links: << >>  << T >>  << A >>
liqiyue@gmail.com wrote:
> How can i interface the cyclone III with 2.5v LVDS to 3.3v LVDS adc &
> dac ?
> 
> Thanks

If you set 3.3v to a i/o block and Quartus does not allow you to
assign LVDS on a pin of that block (w/ an error message when fitting)
tell quartus you have 2.5v (despite you will use 3.3v in your board)
It will pass compilation and will work great.
I had that issue on CycloneII driving clocks to ADCs from Analog 
devices, I'll bet will be the same on CyIII.


lc.

Article: 126809
Subject: Re: lossless compression in hardware: what to do in case of uncompressibility?
From: Phil Carmody <thefatphil_demunged@yahoo.co.uk>
Date: 03 Dec 2007 13:28:30 +0200
Links: << >>  << T >>  << A >>
"Boudewijn Dijkstra" <boudewijn@indes.com> writes:
> Op Thu, 29 Nov 2007 15:42:45 +0100 schreef Denkedran Joe
> <denkedranjoe@googlemail.com>:
> > I'm working on a hardware implementation (FPGA) of a lossless compression
> > algorithm for a real-time application. The data will be fed in to the
> > system, will then be compressed on-the-fly and then transmitted further.
> >
> > The average compression ratio is 3:1, so I'm gonna use some FIFOs of a
> > certain size and start reading data out of the FIFO after a fixed
> > startup-time. The readout rate will be 1/3 of the input data rate
> > The  size
> > of the FIFOs is determined by the experimental variance of the mean
> > compression ratio. Nonetheless there are possible circumstances in
> > which  no compression can be achieved.
> 
> Given that uncompressible data often resembles noise, you have to ask
> yourself: what would be lost?


*Much* more information than if the signal was highly redundant.


> > Since the overall system does not support
> > variable bitrates a faster transmission is no solution here.
> >
> > So my idea was to put the question to all of you what to do in case of
> > uncompressibility? Any ideas?
> 
> If you can identify the estimated compression beforehand and then
> split  the stream into a 'hard' part and an 'easy' part, then you have
> a way to  retain the average.


Yeah, right. And if you juggle the bowling balls when crossing 
the rope-bridge, you'll not break the bridge.


Phil
-- 
Dear aunt, let's set so double the killer delete select all.
-- Microsoft voice recognition live demonstration

Article: 126810
Subject: Xilinx ISE Bugs
From: Mike <Mike@yahoo.co.uk>
Date: Mon, 03 Dec 2007 11:50:40 +0000
Links: << >>  << T >>  << A >>
Hi all

I have read here that quite some people are encoutering problems with 
the Xilinx ISE tools. So for example the XST like to remove signals from
the datapath although they are required. I recall that I used XST 6.2 
two years ago and I successfully synthesised a design which was then 
working on the FPGA. I upgraded then to 7.1 and then exactly the same
design wasnt working anymore??

In addition, I also think its quite difficult to trace this kind of 
errors at such a level. When the RTL simulation works fine, one would
expect that after a successful synthese to have a working design, no?

So I wonder if sythese tools from Cadence or Synopsis are better the 
Xilinx XST? I havent decided yet what tools to use in my design flow so 
any feedback is appreciated!

Cheers!

Article: 126811
Subject: Re: Xilinx ISE Bugs
From: "comp.arch.fpga" <ksulimma@googlemail.com>
Date: Mon, 3 Dec 2007 04:24:18 -0800 (PST)
Links: << >>  << T >>  << A >>
On 3 Dez., 12:50, Mike <M...@yahoo.co.uk> wrote:
> When the RTL simulation works fine, one would
> expect that after a successful synthese to have a working design, no?

No.
You can only expect that if you are very careful with your simulation.
Google for "HDL simulation mismatch".
The simulator will execute your model. It does not check whether the
model
can be implemented in your target technology.

For example there are many standard cell libraries that do not have
flip-flops
with power on reset. Still, the synthesis tool will create a netlist
without error
even if your code contains initial value assignments.
Then of course your model of the stimulus of the design must be
accurate.
And you need 100% coverage for your testbench.

Even with formal verification you can not guarantee that a correctly
synthesized
design will work as your simulation without putting in additional
assumptions and knowledge.

Kolja Sulimma



Article: 126812
Subject: Re: Interfacing Cyclone III to 3.3v LVDS devices
From: MikeShepherd564@btinternet.com
Date: Mon, 03 Dec 2007 12:50:42 +0000
Links: << >>  << T >>  << A >>
>> How can i interface the cyclone III with 2.5v LVDS to 3.3v LVDS adc &
>> dac ?
>
>If you set 3.3v to a i/o block and Quartus does not allow you to
>assign LVDS on a pin of that block (w/ an error message when fitting)
>tell quartus you have 2.5v (despite you will use 3.3v in your board)
>It will pass compilation and will work great.
>I had that issue on CycloneII driving clocks to ADCs from Analog 
>devices, I'll bet will be the same on CyIII.

For LVDS transmission from 3.3V I/O, if all three matching resistors
(at the transmitting end) are 150 ohm then this gives output levels to
the LVDS specification and presents 100 ohm to the line.  The only
disadvantage (compared to 2.5V operation) is an increase in power
dissipation.

From removethisthenleavejea@replacewithcompanyname.co.uk Mon Dec 03 06:35:34 2007
Path: newssvr27.news.prodigy.net!newsdbm04.news.prodigy.net!newsdst01.news.prodigy.net!prodigy.com!newscon04.news.prodigy.net!prodigy.net!goblin2!goblin.stu.neva.ru!feeder.erje.net!feeder.news.heanet.ie!newsfeed.esat.net!news.clara.net!mephistopheles.news.clara.net!proxy02.news.clara.net
From: "John Adair" <removethisthenleavejea@replacewithcompanyname.co.uk>
Newsgroups: comp.arch.fpga
References: <48da85be-c67e-479c-8b6c-3824f5e98ee9@d61g2000hsa.googlegroups.com> <684b478a-032e-4c40-998e-6e55dad8ea6c@i12g2000prf.googlegroups.com> <9aa0272a-6372-4cf9-a429-cf85a9b584bb@b15g2000hsa.googlegroups.com>
Subject: Re: Traffic Light with counter
Date: Mon, 3 Dec 2007 14:35:34 -0000
Lines: 256
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.3028
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3028
X-RFC2646: Format=Flowed; Original
X-Complaints-To: abuse@clara.net (please include full headers)
X-Trace: 64e5e108c4b60584a594e000570080e1a0a244c2647c6277f66a4ae04754143d
NNTP-Posting-Date: Mon, 03 Dec 2007 14:35:41 +0000
Message-Id: <1196692541.26181.0@proxy02.news.clara.net>
Xref: prodigy.net comp.arch.fpga:138897

Start by defining a state machine that has all the states you need and 
outline the transitions you need qualified with counter. An example (NOT 
SYNTAX CHECKED) of 4 states below.

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY TRAFFIC IS
PORT( CLOCK    :  IN    STD_LOGIC;
      RESET    :  IN    STD_LOGIC;

      OP1      :  OUT   STD_LOGIC;
      OP2      :  OUT   STD_LOGIC);
END TRAFFIC;

ARCHITECTURE A0 OF TRAFFIC  IS

SIGNAL COUNTER          : INTEGER RANGE 0 TO 10000000;

TYPE SM_TRAFFIC_TYPE IS(   SM_TRAFFIC_IDLE         ,
                           SM_TRAFFIC_OP1_ON       ,
                           SM_TRAFFIC_OP2_ON       ,
                           SM_TRAFFIC_OP1_OP2_ON );

SIGNAL SM_TRAFFIC          : SM_TRAFFIC_TYPE;

BEGIN

TR1 : PROCESS(RESET,CLOCK)
BEGIN
IF (RESET = '1') THEN
   SM_TRAFFIC  <= SM_TRAFFIC_IDLE;
   COUNTER     <= 1000;
   OP1         <= '0';
   OP2         <= '0';

ELSIF (CLOCK'EVENT  AND CLOCK='1') THEN
   CASE SM_TRAFFIC IS
      WHEN SM_TRAFFIC_IDLE        =>
         SM_TRAFFIC  <= SM_TRAFFIC_OP1_ON;
         COUNTER     <= 1000;
         OP1         <= '1';
         OP2         <= '0';
      --STAY GERE 1000 CLOCKS
      WHEN SM_TRAFFIC_OP1_ON      =>
         IF (COUNTER = 0) THEN
            SM_TRAFFIC  <= SM_TRAFFIC_OP2_ON;
            COUNTER     <= 5000000;
            OP1         <= '0';
            OP2         <= '1';
         ELSE
            SM_TRAFFIC  <= SM_TRAFFIC_OP1_ON;
            COUNTER     <= COUNTER - 1;
            OP1         <= '1';
            OP2         <= '0';
         END IF;
      --STAY HERE 5000000 CLOCKS
      WHEN SM_TRAFFIC_OP2_ON      =>
         IF (COUNTER = 0) THEN
            SM_TRAFFIC  <= SM_TRAFFIC_OP1_OP2_ON;
            COUNTER     <= 4000000;
            OP1         <= '1';
            OP2         <= '1';
         ELSE
            SM_TRAFFIC  <= SM_TRAFFIC_OP2_ON;
            COUNTER     <= COUNTER - 1;
            OP1         <= '0';
            OP2         <= '1';
         END IF;
      --SM_TRAFFIC_OP1_OP2_ON
      --STAY HERE 4000000 CLOCKS
      WHEN  OTHERS =>
         IF (COUNTER = 0) THEN
            SM_TRAFFIC  <= SM_TRAFFIC_OP1_ON;
            COUNTER     <= 1000;
            OP1         <= '1';
            OP2         <= '0';
         ELSE
            SM_TRAFFIC  <= SM_TRAFFIC_OP2_ON;
            COUNTER     <= COUNTER - 1;
            OP1         <= '0';
            OP2         <= '0';
         END IF;
   END CASE;
END IF;
END PROCESS TR1;

END A0 ;

John Adair
Enterpoint Ltd.
Home of Drigmorn1. The hobby FPGA Development Board.

"tang" <tarangpatel2electric@gmail.com> wrote in message 
news:9aa0272a-6372-4cf9-a429-cf85a9b584bb@b15g2000hsa.googlegroups.com...
> On Dec 1, 1:59 am, John Adair <g...@enterpoint.co.uk> wrote:
>> There are a large number of ways you could do this. Personally I'm not
>> a get fan of next state, current state, style you use but it does have
>> it's followers.
>>
>> Staying with what you have I would check the asychronous
>> (combinatorial) processes have complete sensativity lists. Your
>> clocked processes I would make sure all statements lie with the clock
>> and reset statements.
>>
>> Personally I would have a counter that reloaded with values linked to
>> the transitions of the state machine and taking a count value relevant
>> to the state being entered. The counter then counts down to zero and
>> then the next state transition. If you make your counter integer type
>> you don't need extra numerical type libraries.
>>
>> John Adair
>> Enterpoint Ltd. - Home of Craignells The obsolete DIL solution.
>>
>> On 30 Nov, 22:12, tang <tarangpatel2elect...@gmail.com> wrote:
>>
>>
>>
>>
>>
>> > hey guys i hope u can help me out... i want to design a simple traffic
>> > light controller according to the 4 states shown in the code below. my
>> > only problem is that my signal state_reg is not changing form one
>> > state to another. this is because the counter i included in the the
>> > code as a process is not working. green to yellow time wait is 30 sec
>> > and yellow to red is 5 sec. my clock period will be 5 sec. so can
>> > anyone help me out
>>
>> > ------------------------------------------------------------------------------------------------------------------------------------------------------------
>> > library ieee;
>> > use ieee.std_logic_1164.all;
>> > use ieee.std_logic_arith.all;
>> > use IEEE.std_logic_unsigned.all;
>>
>> > entity TLC is
>> > port(
>> >      clk,reset, sa, sb:in std_logic;
>> >      Ga, Ya, Ra, Gb, Yb, Rb:out std_logic
>> >     );
>> > end TLC;
>>
>> > architecture Behavioral of TLC is
>>
>> >     type state_type is (a, b, c, d);
>> >      signal state_reg, state_next: state_type;
>> >      signal Pre_Q, Q: std_logic_vector(3 downto 0);
>> >      signal count, clear: std_logic;
>>
>> > begin
>>
>> > -- behavior describe the counter
>> > process(clk, count, clear)
>> > begin
>> >       if (clear = '0') then
>> >          Pre_Q <= Pre_Q - Pre_Q;
>> >       elsif (clk='1' and clk'event) then
>> >          if (count = '1') then
>> >             Pre_Q <= Pre_Q + 1;
>> >          end if;
>> >       end if;
>> >       Q <= Pre_Q;
>> > end process;
>>
>> > -- state register
>>
>> > process(clk,reset)
>> > begin
>> >     if(reset='0') then
>> >         state_reg <= a;
>> >     elsif (clk'event and clk='1') then
>> >         state_reg <= state_next;
>> >     end if;
>> > end process;
>>
>> > -- next state logic
>>
>> > process(state_reg,Q,sa,sb)
>> > begin
>>
>> >     case state_reg is
>> >     when a =>
>> >         if(sa = '1' and sb = '0')then
>> >            state_next <= a;
>> >         elsif (sa = '0' and sb = '1') then
>> >             count <= '1';
>> >             if(Q = "0110") then
>> >               state_next <= b;
>> >            end if;
>> >         end if;
>>
>> >     when b =>
>>
>> >         if(Q = "0111") then
>> >            state_next <= c;
>> >            count <= '0';
>> >          elsif(sa = '1') then
>> >            state_next <= b;
>> >          end if;
>>
>> >     when c =>
>> >          if(sa = '0' and sb = '1') then
>> >            state_next <= c;
>> >          elsif (sa = '1' and sb ='0') then
>> >            clear <= '0';
>> >            count <= '1';
>> >            if(Q = "0110") then
>> >               state_next <= d;
>>
>> >             end if;
>> >         end if;
>>
>> >     when d =>
>>
>> >         if(Q = "0111") then
>> >            state_next <= a;
>> >            count <= '0';
>> >          elsif(sb = '1') then
>> >            state_next <= d;
>> >          end if;
>> >    end case;
>> > end process;
>>
>> > process (state_reg)
>> > begin
>> >         Ga <= '1'; Ya <= '0'; Ra <= '0';
>> >         Gb <= '0'; Yb <= '0'; Rb <= '1';
>>
>> >         case state_reg is
>> >              when a =>
>> >              when b =>
>> >                 Ga <= '0';
>> >                 Ya <= '1';
>>
>> >             when c =>
>> >                 Ya <= '0';
>> >                 Ra <= '1';
>> >                 Gb <= '1';
>>
>> >             when d =>
>> >                 Gb <= '0';
>> >                 Yb <= '1';
>>
>> >    end case;
>>
>> > end process;
>>
>> > end Behavioral;
>> > ----------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Thanx for the solution. I was also thinking about making counter
> integer. Can you please elaborate on that? will it be like adding for
> loop till count reach to desired value and then perform the
> transition?
> thanx again 



Article: 126813
Subject: Re: Xilinx ISE Bugs
From: Joseph Samson <user@not.my.company>
Date: Mon, 03 Dec 2007 09:58:53 -0500
Links: << >>  << T >>  << A >>
Mike wrote:
> Hi all
> 
> I have read here that quite some people are encoutering problems with 
> the Xilinx ISE tools. So for example the XST like to remove signals from
> the datapath although they are required. 

I'd be really careful about making blanket statements about ISE problems 
based on postings to this forum because the original posters rarely 
update the thread when their problem is solved.

In particular, unexpected logic optimization is a difficult problem to 
track down, so it's not uncommon for a new poster to ask for help, find 
their error and move on. If anything, that tells me we need better 
messages in the map report.

---
Joe Samson
Pixel Velocity

Article: 126814
Subject: Re: lossless compression in hardware: what to do in case of uncompressibility?
From: "RCIngham" <robert.ingham@gmail.com>
Date: Mon, 03 Dec 2007 09:05:52 -0600
Links: << >>  << T >>  << A >>
Problems of this type are generally known by the technical term
"insoluble".

There must be an easing of one or more of the constraints. At least the OP
has thought of one of the corner cases...

BTW, doing this "in software" won't work either, as that still would
require an unconstrained amount of memory to *never* fail.


Article: 126815
Subject: Virtex5: LVCMOS33 and LVDS_25 inputs (with DIFF_TERM) in same bank?
From: Barry <barry374@gmail.com>
Date: Mon, 3 Dec 2007 08:16:22 -0800 (PST)
Links: << >>  << T >>  << A >>
To avoid going to a larger package, I want to mix LVDS_25 inputs with
LVCMOS33 in the same I/O bank, with VCCO = 3.3V.  I would also like to
use the DIFF_TERM attribute on the LVDS inputs, to avoid external
resistors, for better signal integrity and PCB routing.  But
apparently the LVDS differential termination uses VCCO, so it is
required to be 2.5V with this attribute.  Do I have any options to
achieve what I want, or is there just no way.

TIA,
Barry Brown

Article: 126816
Subject: Re: Xilinx ISE Bugs
From: John Retta <jretta@rtc-inc.com>
Date: Mon, 03 Dec 2007 09:23:56 -0700
Links: << >>  << T >>  << A >>
Hi Mike -
   You allusions to the ISE being a marginal product are
incorrect.  IMHO it is pretty good.  In past, I ran into
a problem on a successive release where previous instantiation
of differential driver/receivers required a change in syntax ...
Found the example in docs, modified code, and off and running
in 15 minutes.   I have 20+ designs in last 3 years I can
speak to using XST flow.

   Comparing tools is a pretty personal task, and the comparison
will vary depending on target design.  I am a consultant,
and tool expenses come out of pocket, so 20% improvement in
synthesis time on a 5 minute synthesis are tough to justify.
That might be different if I were designing in some of the
bigger Virtex parts.  Synplicity's features for incremental
design, and floorplanning would be pretty attractive.  I have
not used the cadence tool.

   Be careful with terms like "ISE bugs" though.  Sometimes I
find the least experienced users discover the most tool bugs.

-- 

Regards,
John Retta
Owner and Designer
Retta Technical Consulting Inc.

Colorado Based Xilinx Consultant

phone : 303.926.0068
email : jretta@rtc-inc.com
web   :  www.rtc-inc.com

Article: 126817
Subject: Re: Virtex5: LVCMOS33 and LVDS_25 inputs (with DIFF_TERM) in same
From: John_H <newsgroup@johnhandwork.com>
Date: Mon, 3 Dec 2007 08:36:24 -0800 (PST)
Links: << >>  << T >>  << A >>
On Dec 3, 8:16 am, Barry <barry...@gmail.com> wrote:
> To avoid going to a larger package, I want to mix LVDS_25 inputs with
> LVCMOS33 in the same I/O bank, with VCCO = 3.3V.  I would also like to
> use the DIFF_TERM attribute on the LVDS inputs, to avoid external
> resistors, for better signal integrity and PCB routing.  But
> apparently the LVDS differential termination uses VCCO, so it is
> required to be 2.5V with this attribute.  Do I have any options to
> achieve what I want, or is there just no way.
>
> TIA,
> Barry Brown

The DIFF_TERM functionality is powered by 2.5V.  Just add the external
resistors and you can mix input I/Os to your heart's content.

Article: 126818
Subject: Re: Virtex5: LVCMOS33 and LVDS_25 inputs (with DIFF_TERM) in same
From: Sean Durkin <news_dec07@durkin.de>
Date: Mon, 03 Dec 2007 18:13:51 +0100
Links: << >>  << T >>  << A >>
Barry wrote:
> To avoid going to a larger package, I want to mix LVDS_25 inputs with
> LVCMOS33 in the same I/O bank, with VCCO = 3.3V.  I would also like to
> use the DIFF_TERM attribute on the LVDS inputs, to avoid external
> resistors, for better signal integrity and PCB routing.  But
> apparently the LVDS differential termination uses VCCO, so it is
> required to be 2.5V with this attribute.  Do I have any options to
> achieve what I want, or is there just no way.
You can use the internal termination even if VCCO=3.3V, but then the
termination value is not 100 Ohms. What the value really is is not
specified, since it's not recommended to be used this way, but you can
do it without "hurting" the FPGA or anything. I have used this
configuration on a Virtex4-device, worked without any problems (but the
LVDS signal wasn't very fast and the connections short).

Another problem is that since ISE9.1 the tools won't allow you to put
LVDS-Inputs in the same bank as LVTTL-outputs; par then just quits with
a fatal error message (tool versions before that didn't even issue a
warning). If you want to override that you have to set the environment
variable "PL_NO_SIO_DRC" to 1.

The best solution is probably to provide external termination resistors,
like John said. If you use 0402 resistors you can usually put them on
the opposite side of the PCB right between or even on top of the vias
that come down from the FPGA balls.

HTH,
Sean

-- 
My email address is only valid until the end of the month.
Try figuring out what the address is going to be after that...

Article: 126819
Subject: Re: lossless compression in hardware: what to do in case of
From: rickman <gnuarm@gmail.com>
Date: Mon, 3 Dec 2007 09:27:50 -0800 (PST)
Links: << >>  << T >>  << A >>
On Dec 3, 4:14 am, "Boudewijn Dijkstra" <boudew...@indes.com> wrote:
> Op Thu, 29 Nov 2007 15:42:45 +0100 schreef Denkedran Joe
> <denkedran...@googlemail.com>:
>
> > I'm working on a hardware implementation (FPGA) of a lossless compression
> > algorithm for a real-time application. The data will be fed in to the
> > system, will then be compressed on-the-fly and then transmitted further.
>
> > The average compression ratio is 3:1, so I'm gonna use some FIFOs of a
> > certain size and start reading data out of the FIFO after a fixed
> > startup-time. The readout rate will be 1/3 of the input data rate The
> > size
> > of the FIFOs is determined by the experimental variance of the mean
> > compression ratio. Nonetheless there are possible circumstances in which
> > no compression can be achieved.
>
> Given that uncompressible data often resembles noise, you have to ask
> yourself: what would be lost?

The message!  Just because the message "resembles" noise does not mean
it has no information.  In fact, just the opposite.  Once you have a
message with no redundancy, you have a message with optimum
information content and it will appear exactly like noise.

Compression takes advantage of the portion of a message that is
predictable based on what you have seen previously in the message.
This is the content that does not look like noise.  Once you take
advantage of this and recode to eliminate it, the message looks like
pure noise and is no longer compressible.  But it is still a unique
message with information content that you need to convey.


> > Since the overall system does not support
> > variable bitrates a faster transmission is no solution here.
>
> > So my idea was to put the question to all of you what to do in case of
> > uncompressibility? Any ideas?
>
> If you can identify the estimated compression beforehand and then split
> the stream into a 'hard' part and an 'easy' part, then you have a way to
> retain the average.

Doesn't that require sending additional information that is part of
the message?  On the average, this will add as much, if not more to
the message than you are removing...

If you are trying to compress data without loss, you can only compress
the redundant information.  If the message has no redundancy, then it
is not compressible and, with *any* coding scheme, will require some
additional bandwidth than if it were not coded at all.

Think of your message as a binary number of n bits.  If you want to
compress it to m bits, you can identify the 2**m most often
transmitted numbers and represent them with m bits.  But the remaining
numbers can not be transmitted in m bits at all.  If you want to send
those you have to have a flag that says, "do not decode this number".
Now you have to transmit all n or m bits, plus the flag bit.  Since
there are 2**n-2**m messages with n+1 bits and 2**m messages with m+1
bits, I think you will find the total number of bits is not less then
just sending all messages with n bits.  But if the messages in the m
bit group are much more frequent, then you can reduce your *average*
number of bits sent.  If you can say you will *never* send the numbers
that aren't in the m bit group, then you can compress the message
losslessly in m bits.

Article: 126820
Subject: Re: Virtex5: LVCMOS33 and LVDS_25 inputs (with DIFF_TERM) in same bank?
From: "Symon" <symon_brewer@hotmail.com>
Date: Mon, 3 Dec 2007 17:35:33 -0000
Links: << >>  << T >>  << A >>
"Barry" <barry374@gmail.com> wrote in message 
news:7a60bfbf-0bfc-4599-9f57-99b892c23a03@n20g2000hsh.googlegroups.com...
> To avoid going to a larger package, I want to mix LVDS_25 inputs with
> LVCMOS33 in the same I/O bank, with VCCO = 3.3V.  I would also like to
> use the DIFF_TERM attribute on the LVDS inputs, to avoid external
> resistors, for better signal integrity and PCB routing.  But
> apparently the LVDS differential termination uses VCCO, so it is
> required to be 2.5V with this attribute.  Do I have any options to
> achieve what I want, or is there just no way.
>

Hi Barry,
What's the rise time of the LVDS signals you want to terminate? Are they 
driven from a source that has 'proper' LVDS source termination?
http://pdfserv.maxim-ic.com/en/an/hfan10v2.pdf fig.6 shows source 
termination.
Syms. 



Article: 126821
Subject: Re: What's the difference for VHDL code between simulation and
From: rickman <gnuarm@gmail.com>
Date: Mon, 3 Dec 2007 09:53:26 -0800 (PST)
Links: << >>  << T >>  << A >>
On Nov 30, 5:15 pm, "KJ" <kkjenni...@sbcglobal.net> wrote:
> "rickman" <gnu...@gmail.com> wrote in message
>
> > The examples are far too numerous to list, but here is one.
> <snip>
> > To make this unsynthesizable in a way that is sometimes attempted by
> > newbies...
>
> >  Example2: process (SysClk, Reset) begin
> >    if (Reset = '1') then
> >   DataOutReg <= (others => '0');
> >    elsif (rising_edge(SysClk) or falling_edge(SysClk)) then
> >   if (SCFG_CMD = '1') THEN
> >     DataOutReg <= TT & SD & PCMT0 & PCMT1 & WP_SDO0 & WP_SDO1 & DTR &
> > RTS;
> >   end if;
> > end if;
> >  end process Example2;
>
> > You can imagine a register that clocks on both the rising and falling
> > edge, but you can't build it in an FPGA.
>
> But that does not imply that it couldn't be synthesized using two sets of
> flip flops whose results get combined.  You might not find a synthesis tool
> in 2007 that accepts the above code, but that doesn't mean that there won't
> be one in 2008 that will.  Whether there is such a tool or not depends on
> how many users scream to brand A and X that they really need this.  It can
> be synthesized, just not how you are focusing on how you think it must be
> synthesized.

If you can build the second description, I would like to see that.  Do
you know this is possible or are you just speculating?  I have never
seen a good example of a register clocked on both edges done in an
FPGA.


Article: 126822
Subject: Re: What's the difference for VHDL code between simulation and synthesis?
From: Mike Treseler <mike_treseler@comcast.net>
Date: Mon, 03 Dec 2007 10:20:35 -0800
Links: << >>  << T >>  << A >>
KJ wrote:
> Bottom line right now for the code I right, I'm 
> finding Altera way ahead of Xilinx and Synplify so I'm working with X and S 
> to get their tools improved so that they too can have less stuff that some 
> would consider to be 'not synthesizable'.

Synplify used to have it over quartus on viewers,
but quartus has caught up. As far as synthesis,
it varies with the design, but I would call
A and S comparable for an altera target.
X needs some focus on advanced synthesis.
For example, I wish they would take this one seriously:

 http://home.comcast.net/~mike_treseler/proc_demo.vhd
 http://home.comcast.net/~mike_treseler/proc_demo_ise_bug.pdf
 http://home.comcast.net/~mike_treseler/proc_demo_ise_fix.pdf

It has been hanging fire since ISE 6.1i,
It wouldn't be so bad if I got an error message.
I get synthesis that does not match simulation.

The suggested "solution"
 http://www.xilinx.com/support/answers/18452.htm
is to avoid the legal code that causes the problem.
Note that brand A and S and Modelsim get it right.

       -- Mike Treseler

Article: 126823
Subject: Re: Virtex5: LVCMOS33 and LVDS_25 inputs (with DIFF_TERM) in same
From: Barry <barry374@gmail.com>
Date: Mon, 3 Dec 2007 10:33:42 -0800 (PST)
Links: << >>  << T >>  << A >>
On Dec 3, 9:35 am, "Symon" <symon_bre...@hotmail.com> wrote:
> "Barry" <barry...@gmail.com> wrote in message
>
> news:7a60bfbf-0bfc-4599-9f57-99b892c23a03@n20g2000hsh.googlegroups.com...
>
> > To avoid going to a larger package, I want to mix LVDS_25 inputs with
> > LVCMOS33 in the same I/O bank, with VCCO = 3.3V.  I would also like to
> > use the DIFF_TERM attribute on the LVDS inputs, to avoid external
> > resistors, for better signal integrity and PCB routing.  But
> > apparently the LVDS differential termination uses VCCO, so it is
> > required to be 2.5V with this attribute.  Do I have any options to
> > achieve what I want, or is there just no way.
>
> Hi Barry,
> What's the rise time of the LVDS signals you want to terminate? Are they
> driven from a source that has 'proper' LVDS source termination?http://pdfserv.maxim-ic.com/en/an/hfan10v2.pdffig.6 shows source
> termination.
> Syms.

The driver is a Texas Instruments ADS6244 ADC.  Rise time is spec'd
between 50 and 200 psec (from -100mV to +100mV), and my data rate will
be 800Mbps.  The device's LVDS drivers have a configurable internal
termination, which I can set to 100 ohm differential if I desire, at
the expense of a little more power dissipation.

Article: 126824
Subject: Re: Virtex5: LVCMOS33 and LVDS_25 inputs (with DIFF_TERM) in same
From: Barry <barry374@gmail.com>
Date: Mon, 3 Dec 2007 10:35:32 -0800 (PST)
Links: << >>  << T >>  << A >>
On Dec 3, 9:13 am, Sean Durkin <news_de...@durkin.de> wrote:
> Barry wrote:
> > To avoid going to a larger package, I want to mix LVDS_25 inputs with
> > LVCMOS33 in the same I/O bank, with VCCO = 3.3V.  I would also like to
> > use the DIFF_TERM attribute on the LVDS inputs, to avoid external
> > resistors, for better signal integrity and PCB routing.  But
> > apparently the LVDS differential termination uses VCCO, so it is
> > required to be 2.5V with this attribute.  Do I have any options to
> > achieve what I want, or is there just no way.
>
> You can use the internal termination even if VCCO=3.3V, but then the
> termination value is not 100 Ohms. What the value really is is not
> specified, since it's not recommended to be used this way, but you can
> do it without "hurting" the FPGA or anything. I have used this
> configuration on a Virtex4-device, worked without any problems (but the
> LVDS signal wasn't very fast and the connections short).
>
> Another problem is that since ISE9.1 the tools won't allow you to put
> LVDS-Inputs in the same bank as LVTTL-outputs; par then just quits with
> a fatal error message (tool versions before that didn't even issue a
> warning). If you want to override that you have to set the environment
> variable "PL_NO_SIO_DRC" to 1.
>
> The best solution is probably to provide external termination resistors,
> like John said. If you use 0402 resistors you can usually put them on
> the opposite side of the PCB right between or even on top of the vias
> that come down from the FPGA balls.
>
> HTH,
> Sean
>
> --
> My email address is only valid until the end of the month.
> Try figuring out what the address is going to be after that...

Thanks, Sean.  I will probably have to use external resistors then.
And thanks for the tip on the environment variable.



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