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 63525

Article: 63525
Subject: Re: any FPGA design for video frame memory control?
From: Ray Andraka <ray@andraka.com>
Date: Mon, 24 Nov 2003 19:33:21 -0500
Links: << >>  << T >>  << A >>
None that I am aware  of, but it is not a difficult design to do.  If
using SDRAM, you get the best performance by using fixed length bursts
(8 beat) and rotating the banks every 8 pixels to hide the precharge.

Wang Feng wrote:

> Are there any reference designs for video frame memory control logic
> to work with Philips SAA7111 decoder?
>
> email to fwang11@pub3.fz.fj.cn
>
> Thanks,
>
> Wang, Feng

--
--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: 63526
Subject: Re: 5V I/O with 1.8V Core
From: "Jim Granville" <no.spam@designtools.co.nz>
Date: Tue, 25 Nov 2003 14:21:58 +1300
Links: << >>  << T >>  << A >>

"Symon"  wrote
>
> "Jim Granville" wrote
> > Following the recurring thread of 5V IO,
> > the loss thereof, and 'the price of progress', here are some
> > of the newest numbers from the uC industry :
> >
> >                      Philips LPC2129      Spartan IIE
> > General        256KF/ARM              Advanced FPGA
> >
> > Vcore            1.8V                            1.8V
> > Vio                <5.5V                            <3.6V
> > Icctyp           10uA                            10mA
> > IccMAX       <500uA                      <200mA
> >
> > Icc numbers are Static, ie represent standby power levels.
> > FPGA of similar core Vcc is chosen, and smallest IIe device is chosen
> > to avoid too much die-area skew effect.
> > -jg
>
> Hi Jim,
>     I haven't used this Philips part but, just so I know you're not
> comparing apple and oranges,  this Philips part supports upteen different
> I/O standards? From 3.3V LVTTL to 2.5V LVDS at 622M?
>             cheers, Syms

 Sorry if this was not clear - this is from the uC industry, so it is
comparing
'like process' capability (~ 0.18u) - what the silicon DOES is, of course,
quite different.
 However, the fundamentals like IO and leakage are a bit more portable and
it's
good to compare real numbers when a vendor claims some 'spec erosion' is
the 'price of progress' - implication:  'We couldn't do anything about
that'.

-jg



Article: 63527
Subject: Slightly unmatched UART frequencies
From: "valentin tihomirov" <valentinNOMORESPAM@abelectron.com>
Date: Tue, 25 Nov 2003 06:36:03 +0200
Links: << >>  << T >>  << A >>
UART is used to transfer a byte in serial form bit-by-bit. I know that 10%
deriviations in frequencies of transmitter and receiver are permissible. I
was learnt that UARTs synchronyze at the falling edge (1to0) of start bit;
hence, there should allow for transfer of a stream of bytes of arbitrary
length.

I have developed a simple UART. It's receiver and transimtter run at 9600
bps with 16x oversampling. Both receiver and transmitter have 1-byte buffer.
To test the design I've created an echo device; it merely mirrors all the
bytes sent to it back to the sender. It works fine with one of COM ports on
my PC. Another COM port has its crystal running at a bit faster fundamental
frequency. This causes a problem when it sends a long stream of bytes to my
UART. In fact, sender and recepient cannot synchronize at falling edge of
start bit because one of them is slower and is processing a previous byte
wrile sender proceeds to next byte transmitting start bit. Despite of the
fact, my receiver still works fine beacuse it is ready to receive next byte
right after a first half of stop bit is received. Just to clarify, receiver
acquares values from serial input at the middle of each data bit slice; it
reports BYTE_READY in the middle of stop bit and from this moment is ready
to accept next byte, i.e. ready fror synchronization. Therefore, if data is
coming slightly faster and falling edge of start bit is located within stop
bit (according to my UART's clock) receiver is still capable not to overlook
the data.
On the other hand, transmitter should transmit all 10 bits (start + 8 data +
stop) @ 9600 bps. Consider for instance an UART forwarder or an echo device.
If data is coming faster than I forward it I get a buffer overrun
ultimately. That is, receiver is ready with a byte in its buffer to be
copied into transmitter to forward but slow transmitter is still shifting
data out and its buffer is blocked.
I have a "fast" solution for my UART echo device; if transmitter has
transmitted > half of stop bit and sences that there is a next byte received
it stops sending current stop bit and starts transmitting a start bit for
next byte. Untimely ceasing transmission is not good solution because
transmitter may be connected to a good matched or slightly slower running
UART. Design may be not a forwarder thus data provider may differ from 9600
bps receiver. In this case, starting early transmission of next byte while
remote peer is still receiving stop bit causes stop bit error.

What is interesting in this situation is the fact I can build a good echo
device from any industrial manufactured UART (I've used standalone 16c750
and ones built into i8051). They never have a buffer overrun issue despite
sending port is slightly faster than receiving (like sending data from my
fast COM port to slow one). Note, no flow control is used, buffers are
always 1-byte long. Which trick do they use? Again, 10% frequency
dereviations between sender and receiver are considered permittable and no
flow control is not required since sender and receiver both run at formal
9600bps.

I feel this should be a well-known problem (solution) and just wonder why I
did not encounter this consideration before.

Thanks.




Article: 63528
Subject: Re: How many dedicated clock pins EP20K1500EBC652 device?
From: vbetz@altera.com (Vaughn Betz)
Date: 24 Nov 2003 21:00:01 -0800
Links: << >>  << T >>  << A >>
enq_semi@yahoo.com (enq_semi) wrote in message news:<cd4a30b8.0311240726.3d82ce54@posting.google.com>...
> How many dedicated clock pins are there for EP20K1500EBC652 device? 
> 
> I only found clk1p,clk2p,clk3p,clk4p (Pin w34, u2, y34, t2) are
> dedicated clock pins. However, clk1p and clk2p are connected together,
> clk3p and clk4p are connected together; So I can only have two
> different clock signals drive the internal clock trees.
> 
> According to APEX 20K Programmable Logic Device Family Data Sheet,
> there are "up to eight global clock signals" in the APEX 20K device.
> How many are there for EP20K1500 device and how can I have more than
> two different external clocks to drive the different internal clock
> trees?
> 
> thanks,
> 
> Yi Zhang
> ENQ Semi

Hi Yi,

The APEX 20K has 8 dedicated, high speed global resources.
4 are dedicated clocks -- they are normally used only to route clocks.
Another 4 are "dedicated fast resources" or "fast clocks."  They are
used to route either clocks or other high-fanout signals, like
asynchronous clears.

The two resources aren't much different.  The dedicated clocks are
driven by dedicated input pins, while the fast dedicated networks can
be driven by bidirectional IOs or internal signals from the FPGA
fabric.  So most people just consider this 8 dedicated clocking /
asynchronous clear networks.

clk1p and clk2p aren't connected together, so you can send 4 signals
in through the dedicated clock pins.

The FAST pins drive the dedicated FAST networks, which can be used as
another 4 clock networks:

network  Driving pin
FAST1    B19
FAST2    B17
FAST3    AP19
FAST4    AP17

Hope this helps.

Vaughn
Altera

Article: 63529
Subject: Re: How to set 'set up time' in a Quartus Tool for a PCI Device
From: vbetz@altera.com (Vaughn Betz)
Date: 24 Nov 2003 21:21:09 -0800
Links: << >>  << T >>  << A >>
naveenk23@yahoo.com (naveen) wrote in message news:<27641594.0311201557.6d52d8d0@posting.google.com>...
> Hi all,
>         I have a small clarification. I am using Quartus 2 Tool for
> Synthesis and Place and route of a PCI System. I want to know if we
> can set some options for set up time for PCI Clock Seperately.
> Thanks
> Naveen

You'll need to set Tsu constraints on your inputs (3 ns for 66 MHz
PCI), Tco constraints on your outputs (6 ns for 66 MHz PCI) and a
clock period (Fmax) constraint on your clock (66.66 MHz I think for 66
MHz PCI).

At least that's the high-level view of the constraints.  I believe it
is possible to relax the Tsu and Tco constraints on some paths by
inserting wait states, but I'm not an expert on PCI cores.

You can set pretty much as complicated a set of constraints as you'd
like in Quartus.  Setting a Tsu constraint on an IO will constrain all
paths from that IO to all reachable registers.  Setting a
"point-to-point" Tsu constraint on a source IO and a destination
register constraints only the paths between the two.

33 MHz will be a lot easier to get working than 66 MHz if you're doing
this from scratch.  I don't recall the precise constraints for 33 off
the top of my head though.

Vaughn
Altera

Article: 63530
Subject: Re: Differential terminations in Virtex2 Pro.
From: Allan Herriman <allan.herriman.hates.spam@ctam.com.au.invalid>
Date: Tue, 25 Nov 2003 16:25:11 +1100
Links: << >>  << T >>  << A >>
On Sat, 22 Nov 2003 18:43:41 +1100, Allan Herriman
<allan.herriman.hates.spam@ctam.com.au.invalid> wrote:

>On Fri, 21 Nov 2003 14:25:04 -0800, "Symon" <symon_brewer@hotmail.com>
>wrote:
>
>>Hi Peter,
>>    OK, but the signals come from another board, they're ringy (is that a
>>word?) and I'm concerned about over/undershoot, I'd prefer to give myself
>>the safety margin of 3.3V VCCO.
>
>I believe you have *less* safety margin with the 3.3V VCCO.
>The abs max voltages on the pin are 
>
>Gnd + 3.6V to VCCO - 3.6V.
>
>With a 3.3V VCCO, you can exceed the abs max voltage (with your
>"ringy" signals) before the catch diode conducts.
>
>With a 2.5V VCCO, the diodes will stop you from exceeding the voltage
>rating, but you may exceed the current rating when driving from a 3.3V
>device with stiff outputs.
>A small value series resistor fixes that problem.  (You probably need
>a series resistor for signal integrity reasons anyway.)
>
>On my current board I use all 2.5V signalling on the FPGA (not
>including the LVDS stuff).
>There was a legacy 3.3V level processor interface, and I used a number
>of 74ALVC164245 to handle the level translation.


Did I say that?  The latest version of the data sheet has changed the
abs max voltage to 4.05V (up from 3.6V).  I wish I could have found
that out *before* I added all those 74ALVC164245s to the board.

Regards,
Allan.

Article: 63531
Subject: Re: Slightly unmatched UART frequencies
From: rickman <spamgoeshere4@yahoo.com>
Date: Tue, 25 Nov 2003 00:47:59 -0500
Links: << >>  << T >>  << A >>
valentin tihomirov wrote:
> 
> UART is used to transfer a byte in serial form bit-by-bit. I know that 10%
> deriviations in frequencies of transmitter and receiver are permissible. I
> was learnt that UARTs synchronyze at the falling edge (1to0) of start bit;
> hence, there should allow for transfer of a stream of bytes of arbitrary
> length.
> 
> I have developed a simple UART. It's receiver and transimtter run at 9600
> bps with 16x oversampling. Both receiver and transmitter have 1-byte buffer.
> To test the design I've created an echo device; it merely mirrors all the
> bytes sent to it back to the sender. It works fine with one of COM ports on
> my PC. Another COM port has its crystal running at a bit faster fundamental
> frequency. This causes a problem when it sends a long stream of bytes to my
> UART. 

When you say "your" UART, is this a design you did yourself in an FPGA? 
If so you may not have designed the logic correctly.  In order for the
receiver to synchronize to a continuous data stream, it has to sample
the stop bit in what it thinks is the center and then *immediately*
start looking for the next start bit.  This will allow a mismatch in
speed of almost a half bit minus whatever slack there is for the sample
clock rate.  BTW, you are sampling at at least 8x the bit rate, right?  

The max mismatch is not 10%, but a bit less that 5%.  In the field I
find that 2 to 3% mismatch is reliable, but any more and you can start
getting errors.  I guess the difference in theory and practice is
perhaps skew caused by the drivers.  

Does this make sense? 


-- 

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: 63532
Subject: Re: Slightly unmatched UART frequencies
From: "valentin tihomirov" <valentinNOMORESPAM@abelectron.com>
Date: Tue, 25 Nov 2003 08:49:45 +0200
Links: << >>  << T >>  << A >>
> When you say "your" UART, is this a design you did yourself in an FPGA?
Yes, you're right I have my design runs on CPLD. However, the qestion is
more in logic rather than implementation. The value 10% I have got from
www.8052.com's forum where "Software Uart" is a hot topic.


> If so you may not have designed the logic correctly.  In order for the
> receiver to synchronize to a continuous data stream, it has to sample
> the stop bit in what it thinks is the center and then *immediately*
> start looking for the next start bit.  This will allow a mismatch in
> speed of almost a half bit minus whatever slack there is for the sample
> clock rate.  BTW, you are sampling at at least 8x the bit rate, right?
I use 16x oversampling and check input values at middle of a bit (SampleCnt
= 7). You suggest exactly what I have done. I think receiver part will work
under any condition. But I need to know what should I do with transmitter
module. As I attempted to explain, this half-bit solution cannot be used to
synchronize transmitters. It is a bad idea to start transmitting next byte
at the middle of the stop bit. It may fail listening device with slow clock
as it reaches center of stop bit when start bit of next byte is being
transmitted. On the other hand, if data is coming slightly faster
transmitter should do something, otherwise I face buffer overrun condition.
I understand that I can ignore the problem with transmitter module, it is
receiver that should synchronize with transmitter. However, I had got buffer
overrun problem until I used a trick described in my message (early
transmit). It is defenetely not the problem with receiver because I have
solved it right before got problem with transmitter's buffer overrun. And I
want to know how should function correct logic; there should be a solution
as commertial UARTs work without any problems. My UART is the first one
where I've realized that it is at all possible to get a problem with slowly
transmitting uart.
Is now the problem become clearer?



Article: 63533
Subject: Re: Dual port RAM for Xilinx
From: Erik Markert <sirius571@gmx.net>
Date: Tue, 25 Nov 2003 08:26:51 +0100
Links: << >>  << T >>  << A >>
Hello Tobias,

Tobias M鰃lich wrote:
> Hello,
> 
> Is there someone who has experiences with designing a dual port RAM.
> I use the device Spartan-IIE (XC2S300E). But it should be simular with
> other devices (e.g. Virtex, Spartan 3, etc)
> I know there is a Synthesis Template in "Xilinx ISE Foundation". 

I used that template without problems. But I assume that you can't use 
single-bit signals as RAM-data-inputs.

some Code:

multibit <= singlebit1 & singlebit2;

RAM_P:PROCESS(clk)
BEGIN
  if rising_edge(clk) then
   if write = '1' then
    ram(writeaddress) <= multibit;
   end if;
   readaddress <= read_address_in;
  end if;
END PROCESS;

data_out <= ram(readaddress);

Synthesis now builds block RAM (synchronous read). For distributed RAM 
read can be asynchronous.

HTH

Erik
-- 
\\Erik Markert - student of Information Technology//
  \\     at Chemnitz University of Technology     //
   \\   TalkTo: erma@sirius.csn.tu-chemnitz.de   //
    \\      URL: http://www.erikmarkert.de      //


Article: 63534
Subject: Re: Dual port RAM for Xilinx
From: "Peng Cong" <pc_dragon@sohu.com>
Date: Tue, 25 Nov 2003 15:34:47 +0800
Links: << >>  << T >>  << A >>
Try Core Generator
"Tobias M鰃lich" <Tobias.Moeglich@gmx.net> 写入消息新闻
:3FC23BDA.2A98A2BE@gmx.net...
> Hello,
>
> Is there someone who has experiences with designing a dual port RAM.
> I use the device Spartan-IIE (XC2S300E). But it should be simular with
> other devices (e.g. Virtex, Spartan 3, etc)
> I know there is a Synthesis Template in "Xilinx ISE Foundation". Is
> there someone who knows about a complete design
> for a dual port RAM.
> I know, I need to get some more experience with VHDL.
>
> Thank you for any help.
>
> Tobias M鰃lich
>
>
>



Article: 63535
Subject: Re: XC9500 design does not fit into Coolrunner
From: Klaus Falser <kfalser@IHATESPAMdurst.it>
Date: Tue, 25 Nov 2003 08:51:05 +0100
Links: << >>  << T >>  << A >>
In article <bpkjqf$7ug$1@news.tu-darmstadt.de>, bon@elektron.ikp.physik.tu-darmstadt.de 
says...
> Klaus Falser <kfalser@ihatespamdurst.it> wrote:
> : Hello,
> 
> : I have a rather large design for a XC95288XL which consumes 276 macrocells 
> : of 288 possible.
> : Since Xilinx seems to prefer Coolrunner devices to the good old XC9500's 
> : I tried to stuff the design into a Coolrunner II chip to look how it 
> : would behave.
> 
> Did you play with the fitter options?

There are not so many. You can choose between speed, density and balanced.
Something which improves fitting is to switch off  "Keep hierarchy" 
in the VHDL compiler options. 

> 
> : However, I was not able to make it fit even in a 512 macrocell device.
> : Timing should not be so tight, it has to run at 8 MHz clock, but the 
> : timing analyzer gives me 17-18 MHz on the slowest 10 ns device.
> 
> The Macrocell of the XC2 is not as wide as the cell of the XC95X(V), so some
> logic may need expansion on two cells.

This may be on of the reasons. But on the other side, not all equations are
so large and having twice as much macrocells should be more than enough.

> : Can anybody which know's the XCR2 better than me give me a hit where 
> : to pay attention?
> : How can I see from the report where the fitter has a problem?
> 
> Did you look look at the *.rpt files?

Sure I did. It is, however, at least a little bit difficult to scan 250 equations 
to look for some anomaly. And I have got no idea how such an anomaly should look 
like. 
  
> Bye
> 

Thanks
-- 
Klaus Falser
Durst Phototechnik AG
kfalser@IHATESPAMdurst.it

Article: 63536
Subject: Re: Slightly unmatched UART frequencies
From: "Joel Kolstad" <JKolstad71HatesSpam@Yahoo.Com>
Date: Tue, 25 Nov 2003 00:13:06 -0800
Links: << >>  << T >>  << A >>
Valentin,

You bright up a good subject, and you're absolutely correct that if you
continuously send data from one serial port at 9600.01bps to a receiver at
9600, sooner or later there must be a buffer overflow.  There's no way
around this -- but keep in mind that RS-232 (or most any protocol, for that
matter) isn't designed to send a truly continuous stream for days, months,
or years at a time without a break!  With a typical RS-232 device, there are
MANY breaks, and keep in mind that something like a PC often has a pretty
generous software buffer (many kilobytes) backing up the hardware so that it
would take a 'long' time to create an overflow.  I can't explain your
observation that an, e.g., 8031-based data forwarder -- supposedly -- works
other than to say I suspect that perhaps you didn't really do the type of
torture test that could produce an overrun.  (I.e., did you look with a
scope or logic analyzer to make sure there was NEVER a idle bit time that
might have allowed the receiver to 'catch up'?)

One solution that you can use for protocols such as 8B/10B -- where you get
a bazillion data bytes interspersed with an occasional 'comma' character -- 
is to use a form of compression where you assign 9 bits to ever received
byte and 'swallow' any comma you get by setting the high bit.  You can then
sit down and work out how often you need to insert a comma into your
bitstream to avoid buffer overflow.  We had a gigabit fiber interface that
used this approach, and with a 16 byte FIFO for buffering and a +/-100PPM
clock at 1.0625Gbps, the numbers worked out to many thousands of bytes
before overflow would be a concern.

To build a data repeater that never suffers from potential buffer overflow
under any circumstances whatsoever, I don't think you have many options
other than locking the re-transmit bit rate to that of the received data
using, e.g., a PLL.  You could try this in software as well, I suppose, if
you have a bit rate generator that's 'finely tunable' -- most in
microcontrollers aren't!

A few other comments:

> UART is used to transfer a byte in serial form bit-by-bit. I know that 10%
> deriviations in frequencies of transmitter and receiver are permissible.

'Permissible,' yeah, I suppose, although 10% wouldn't be anything to write
home about!

> I have developed a simple UART. It's receiver and transimtter run at 9600
> bps with 16x oversampling.

Nothing wrong with 16x oversampling (it will definitely help -- a little),
but keep in mind that you _can_ get away with no oversampling at all and get
quite reasonable results if you position the sample point at the middle of
each bit interval.

---Joel Kolstad



Article: 63537
Subject: Re: XC9500 design does not fit into Coolrunner
From: Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
Date: Tue, 25 Nov 2003 08:35:45 +0000 (UTC)
Links: << >>  << T >>  << A >>
Klaus Falser <kfalser@ihatespamdurst.it> wrote:

: Sure I did. It is, however, at least a little bit difficult to scan 250
: equations  
: to look for some anomaly. And I have got no idea how such an anomaly
: should look like. 
:   
Try to understand what equations blew up. Strip down your code line by line
and see how the fitter behaves.

Bye
-- 
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

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

Article: 63538
Subject: Re: Slightly unmatched UART frequencies
From: "juergen sauermann" <juergen.sauermann@t-online.de>
Date: Tue, 25 Nov 2003 00:49:47 -0800
Links: << >>  << T >>  << A >>
Valentin, 
apparently you are trying to resolve the clock difference by cutting the stop 
bit in order to achieve a higher transmission rate. 
That is a very nice idea and it is completely wrong. 
In commercial (and all other) Uarts, it is the receiver that compensates for the 
clock difference. The rule is that the transmitter sends 10 bits (Start + 8 Data + Stop), 
but the receiver only requires 9.5 bits (1 Start + 8 Data + 0.5 Stop). It is this 0.5 bit 
difference which compensates the clock difference (and which also gives you the 5% that 
rick mentioned). 
So far, your design seems correct. But then you try to speed up the transmitter as well by 
sending less than 10 bits (actually 9.5 bits). 
The net effect is that you have changed the usual "transmit 10 & receive 9.5" scheme 
to a "transmit 9.5 & receive 9.5" scheme, which is as bad as a "transmit 10 & receive 
10" scheme when the clocks are different. By doing this you will neccessarily lose 
single bits long before your buffer overruns. You stole the 0.5 bits from the receiver 
that the receiver desperately needs to compensate for the clock differences. 
In other words, your attempt to avoid buffer overflows (which cannot occur since the 
receiver takes care of the clock frequencies) has actually created the problem you are 
describing. The solution is simple: don't touch the transmitter. 
BTW., you should check if your 10% refers to clock jitter (moving of the clock edges 
around a fixed reference point) rather than to a difference in clock frequency. 
/// Juergen 




Article: 63539
Subject: Re: Slightly unmatched UART frequencies
From: hmurray@suespammers.org (Hal Murray)
Date: Tue, 25 Nov 2003 08:51:46 -0000
Links: << >>  << T >>  << A >>
>You bright up a good subject, and you're absolutely correct that if you
>continuously send data from one serial port at 9600.01bps to a receiver at
>9600, sooner or later there must be a buffer overflow. ...

I think you are missing a key idea.  The receiver has to make
sure that it will tolerate early start bits.  That is the receiver
has to start looking for a new start-of-start-bit right after
it has checked the middle of the stop bit rather than wait unitl
the end of the stop bit to start looking.

[Interesting thread.  Thanks.  I didn't know about that trick.]

-- 
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: 63540
Subject: Re: Dual port RAM for Xilinx
From: pradeep <pradeep_32@msn.com>
Date: Tue, 25 Nov 2003 19:12:50 +1000
Links: << >>  << T >>  << A >>
Tobias,

Have you tried using the Xilinx Coregenerator to instantiate the Dual 
port BRAM ?

-pradeep



Tobias M鰃lich wrote:

> Hello,
> 
> Is there someone who has experiences with designing a dual port RAM.
> I use the device Spartan-IIE (XC2S300E). But it should be simular with
> other devices (e.g. Virtex, Spartan 3, etc)
> I know there is a Synthesis Template in "Xilinx ISE Foundation". Is
> there someone who knows about a complete design
> for a dual port RAM.
> I know, I need to get some more experience with VHDL.
> 
> Thank you for any help.
> 
> Tobias M鰃lich
> 
> 
> 


Article: 63541
Subject: Re: Slightly unmatched UART frequencies
From: "Jim Granville" <no.spam@designtools.co.nz>
Date: Tue, 25 Nov 2003 23:07:42 +1300
Links: << >>  << T >>  << A >>

"Hal Murray" <hmurray@suespammers.org> wrote in message
news:vs6612g8rso066@corp.supernews.com...
> >You bright up a good subject, and you're absolutely correct that if you
> >continuously send data from one serial port at 9600.01bps to a receiver
at
> >9600, sooner or later there must be a buffer overflow. ...
>
> I think you are missing a key idea.  The receiver has to make
> sure that it will tolerate early start bits.  That is the receiver
> has to start looking for a new start-of-start-bit right after
> it has checked the middle of the stop bit rather than wait unitl
> the end of the stop bit to start looking.

Correct. If you really must tolerate continuous streams, with no data loss,
and only a single stop bit, then you must actually be able to 'pass on' data
at whatever average rate it comes in at.
Some UARTS have the idea of fractional TX stop bits to allow this, most just
choose
2 stop bits to give margin.
Receive should ALWAYS start looking for START at the middle of STOP.
( but chips do not always get this right :)

The OP's idea of a full half bit is a coarse example, that can force an
error, as it
jumps right to the limit

Since this was using 16x BAUD clocking, you can quantize to 1/16 of bit
time,
or in appx 0.625% steps.  4 of these is 2.5%, or 1/4 bit, that tolerates to
9840 Baud
If you don't want to use up all the error budget at one end, that's about
the limit.
( 1/4 bit at each end, or a tad less, if you use 3 slot vote sampling )

This is why most uC with trimmed on-chip OSCs specify 2.5% or 2% precision.

Since this a PLD device, you could watch for TX buffer phase, and nominally
send
a full STOP bit, but if the phase indicates margin problems (incomming
faster than outgoing)
you can decrement the STOP bit in 1/16 fractions - or you could force 15/16
wide STOP bit
and use a crystal, and keep the logic simpler. (tolerates to 9660 Baud, 100%
traffic )

A purists design would also extend STOP bits fractionally, (17/16 at ip
<9600Bd true)
so a sudden  whole bit jump did not occur. That could cause problems if a
number
of these are in a chain, and a system with phase jitter, that averages 9600,
but is
sometimes faster, sometime slower might also exist.

Makes the idea of a Continuous BAUD test pattern generator interesting  -
one that can
generate controlled errors on both sides of true, and with dithering.

Good student project :)

-jg




Article: 63542
Subject: Re: How to set 'set up time' in a Quartus Tool for a PCI Device
From: "Nial Stewart" <nial@nialstewartdevelopments.co.uk>
Date: Tue, 25 Nov 2003 10:27:28 -0000
Links: << >>  << T >>  << A >>
> 33 MHz will be a lot easier to get working than 66 MHz if you're doing
> this from scratch.  I don't recall the precise constraints for 33 off
> the top of my head though.

Tsu 7 ns, Tco 11 nS, Clk 33 MHz

As you said, easy enough to meet as you can register a lot of the
signals in, it's only a few of the controls which are critical.


Nial

------------------------------------------------
Nial Stewart Developments Ltd
FPGA and High Speed Digital Design
www.nialstewartdevelopments.co.uk





Article: 63543
Subject: Soft-core processor construction
From: sai@touchtelindia.net (sai a)
Date: 25 Nov 2003 02:27:51 -0800
Links: << >>  << T >>  << A >>
Can anyone help me either by telling me or leading me to some
resources like links or documents which help me understand the
following:
1. What exactly is a soft-core processor?
2. How do you go about building one?
3. Are there any tutorials for this, with special reference to
Handel-C?
4. How do I use Handel-C to build soft-core processors? What will be
the tools required?

If you have answers to any of these, I can certainly make use of it.

s.a.

Article: 63544
Subject: Re: Slightly unmatched UART frequencies
From: peg@slingshot.co.nz (GPG)
Date: 25 Nov 2003 03:09:26 -0800
Links: << >>  << T >>  << A >>
MAXIMUM error is .5 bit over one frame. In your case frame = 10 bits.
.5/10 = 5%

Article: 63545
Subject: programmable fir and simulation
From: PawelT <ptomasze@poczta.onet._no_spam_.pl>
Date: Tue, 25 Nov 2003 13:38:30 +0100
Links: << >>  << T >>  << A >>
Hello,
I tried to simulate example of  generic FIR filter on page 82 from
book Uwe Meyer "Digital Signal Processing with FPGAs".
In book in simulation the first valid output is after 475 ns and zeros
before that.
I tried this example with MAxplus2 Baseline v10.2 and with new
ACF-file. Does anybody compile this?
After compilation and simulation on outputs Y_OUT there is appeared
unexpected new value dec*2046* after 125ns till 325ns,
 and after 475 ns there is "correct" value from book.
And my question is: why this *unexpected* value (2046) appeared ?
I tried change options with original ACF-file and *this* value
appeared after changing Assign->Global Project Logic
Synthesis...->Optimize=10 (speed) to Optimize=5 (default value).
After that I tried change number of pipeline stages in lpm_mult, and
this *unexpected* value disappeared when constant Mpipe=1. For
Mpipe=2,3,4 there is bad value....
Any suggestions? 
I tried this also with Quartus Web Edition 3.0 and simulation
generates bad Y_OUT....
May I attache this source vhdl code on usenet? I think about
copyrights..
Regards,
PawelT.


Pozdrawiam,
PawelT

Article: 63546
Subject: Re: Slightly unmatched UART frequencies
From: "Ulf Samuelsson" <ulf@NOSPAMatmel.com>
Date: Tue, 25 Nov 2003 13:45:20 +0100
Links: << >>  << T >>  << A >>
"GPG" <peg@slingshot.co.nz> wrote in message
news:62069f15.0311250309.f28037c@posting.google.com...
> MAXIMUM error is .5 bit over one frame. In your case frame = 10 bits.
> .5/10 = 5%


And if the sender is 2% too slow and the receiver is 2% too fast, you have
4% error
which is just below the 5% error tolerated.

-- 
Best Regards
Ulf at atmel dot com
These comments are intended to be my own opinion and they
may, or may not be shared by my employer, Atmel Sweden.



Article: 63547
Subject: Re: Slightly unmatched UART frequencies
From: Philip Freidin <philip@fliptronics.com>
Date: Tue, 25 Nov 2003 12:52:49 GMT
Links: << >>  << T >>  << A >>

Valentin wrote:
> ...
>
>I have a "fast" solution for my UART echo device; if transmitter has
>transmitted > half of stop bit and sences that there is a next byte received
>it stops sending current stop bit and starts transmitting a start bit for
>next byte. Untimely ceasing transmission is not good solution because
>transmitter may be connected to a good matched or slightly slower running
>UART. Design may be not a forwarder thus data provider may differ from 9600
>bps receiver. In this case, starting early transmission of next byte while
>remote peer is still receiving stop bit causes stop bit error.
>
> ...

juergen sauermann wrote:
>Valentin, 
>apparently you are trying to resolve the clock difference by cutting
>the stop bit in order to achieve a higher transmission rate. 
>That is a very nice idea and it is completely wrong.

And Philip writes:
Modifying the local transmited character to be a non-standard length
by changing the length of the stop bit on the fly as buffer
over-run is about to occur is not a good idea, as you don't
know the details of how the receiver that is listening to it was
designed, and it may not be very happy to see the next start bit
before it is finished with what it expects is a full length stop
bit, but it is not.

The underlying problem is that you are potentially sending very
long streams of data through a protocol that was designed for
asynchronous transmission. That is why there are start bits and
stop bits. In real systems, there is flow control, typically
implemented one of 3 ways:

1) Hardware flow control: CTS/RTS

2) Character based flow control: XON/XOFF  (ctrl-q/ctrl-s)

3) Upper layer flow control: packet based transfers with
   acknowledge packets used to pace transmissions.

The "real-time-ness" (new word I just invented) of the flow
control depends on the size of the receive buffer. With only
1 byte, you need (1), and even this may not be good enough,
you may need at least 2 bytes of buffer. As the buffer gets
bigger (say 8 to 100 bytes) then (2) is workable, and can even
tolerate some operating system delay. When the buffers get to
be multiple packets in size, then (3) may be appropriate.


juergen sauermann also wrote:
>In commercial (and all other) Uarts, it is the receiver that
>compensates for the clock difference. The rule is that the
>transmitter sends 10 bits (Start + 8 Data + Stop), but the
>receiver only requires 9.5 bits (1 Start + 8 Data + 0.5 Stop).

Well up to a point this is correct. The receiver can cetainly
declare that the character has arrived after the sample is taken
in the middle of the stop bit (at 9.5 bit times into the received
character).

BUT this is not a solution to the original poster's problem!
The problem still exists because the remaining .5 bit is still
going to arrive, the data is being sent with a slightly faster
clock than the transmitter is able to retransmit the character.
If there is no line idle time between the end of the inbound
stop bit and the next inbound start bit, the system will
eventually have an over-run problem, no matter how big the
input buffer. The closer the two clock rates, and the bigger
the buffer, the longer it takes to happen, but it will happen.

Do the math:

Let the far end transmitter be running at 1% faster clock rate
than the local transmitter that is going to retransmit the
character.

Here are some easy to work with numbers: 
Perfect 9600 baud is 104.1666666 microseconds per bit
1 character time (1 Start,8 Data,1 Stop) is 1.041666666 ms

After 1 character has arrived, we start to retransmit it. It
doesnt matter if we start at the 9.5 or 10 bit time, it
will take us 1.010101 times longer to send it than it took to
receive.

If we have a multibyte buffer, after 100 characters arrive at
a far-end transmit rate that is 1% too fast, we have the
following:

.99 * 100 * 1.041666666 = 103.1249999 ms

If our local transmitter is right on spec for baud rate,
it will take 104.1666666 to send these characters, this is
regardless of whether it starts at the 9.5 or the 10.0 point,
because the character is going through a buffer, and changing
clock domains. the difference in time will mean that in the
time that the local transmitter takes to send 100 characters,
the far end transmitter will send 101 charcaters. If our
buffer is 10 characters long, then after 1000 characters
arrive we will only have managed to offload 990 characters,
and our 10 character buffer is full. Some time during the
next 100 characters, we will have buffer over-run.

juergen sauermann also wrote:
>It is this 0.5 bit difference which compensates the clock
>difference (and which also gives you the 5% that rick mentioned).

As you can see above, I disagree. This is not a solution.

>So far, your design seems correct. But then you try to speed
>up the transmitter as well by sending less than 10 bits
>(actually 9.5 bits). The net effect is that you have changed
>the usual "transmit 10 & receive 9.5" scheme to a
>"transmit 9.5 & receive 9.5" scheme, which is as bad as a
>"transmit 10 & receive 10" scheme when the clocks are different.

Actually, he hasn't changed the receiver to receive 9.5, because
the far end transmitter is still sending 10 bits. ignoring the
last .5 bit does not solve the problem, as it is accumulative.

>By doing this you will neccessarily lose single bits long before
>your buffer overruns. You stole the 0.5 bits from the receiver
>that the receiver desperately needs to compensate for the clock
>differences. 

Nope. This does not work.

>In other words, your attempt to avoid buffer overflows (which
>cannot occur since the receiver takes care of the clock
>frequencies) has actually created the problem you are describing.
>The solution is simple: don't touch the transmitter. 

Nope. This does not work.


The following solutions can be made to work:

A)
Use one of the 3 described flow control systems above, with
a suitable length buffer, or some other flow control system
with similar effect.

B)
Deliberately force some idle time between characters at the
far end transmitter. If your system is designed for a worst
case of 5% difference in clock frequencies, forcing an idle
between the stop bit and the next start bit of .6 bit time
will achieve this (with some minor safety margin). You will
still need some buffer though between your receiver and
transmitter.

Another version of this is to just add some idle time every
N characters, such as "every 100 characters, let the go to
sleep for 2 character time".


C)
Use a PLL to derive a local clock that is phase locked to
the received data, and use this for transmit.

D)
At the far end transmitter, add some pad characters at regular
times to the data stream, that can be thrown away at the
receiver.

E)
run a clock line from the far end transmitter to your system
and use that for your transmit clock (hardly an async system
any more)

F)
Be sneaky. Most UARTs can be set for 1 , 1.5 , or 2 stop bits.
Set the far end transmitter for 8N2 (1 start, 8 data, 2 stop).
Set your receiver and transmitter for 8N1 (1 start, 8 data, 1 stop).
This works, because stop bits look just like line-idle. This
effectively implements (B), but is localized to the initialization
code for the far end transmitter.






Philip Freidin

Philip Freidin
Fliptronics

Article: 63548
Subject: using xilkernel
From: "Frank" <someone@work.com>
Date: Tue, 25 Nov 2003 14:54:08 +0100
Links: << >>  << T >>  << A >>
Can anyone explain me how to use the xilkernel. I added in the mss file the
following

BEGIN LIBRARY
 parameter library_name = xilkernel
 parameter library_ver = 1.00.a
 parameter max_procs = 10
 parameter max_readyq = 10
 parameter sched_type = 2
 parameter config_sema = true
 parameter config_msgq = true
 parameter config_thread_support = true
 parameter config_shm = true
 parameter config_malloc = true
 parameter config_mutex = true
 parameter process_table = ( (0xffe00000, 28))
 parameter msgq_table = ( (4, 1) )
 parameter mem_table = ((4,10), (8,10))
 parameter shm_table = ((100))
END

but when I try to use thread_create or sys_thread_create, I get an undefined
reference to it when linking.

Thanks,
Frank



Article: 63549
Subject: running from external memory (microblaze)
From: "Frank" <someone@work.com>
Date: Tue, 25 Nov 2003 15:04:49 +0100
Links: << >>  << T >>  << A >>
Hello,

I have build a bootloader which is located in block ram. Now I want to
download my final application to sdram and execute it. If I'm correct, I've
to make a linker script in order to make this possible. Besides this, I want
to use the xilkernel in my application, but not in the bootloader, is this
possible? I guess I have to convert the application.elf file to a binary
file in order to be placed into sdram by the bootloader?! How are the
interrupts handled? Is the interrupt handler from the bootloader used
(because it default jumps to address 0x18)? Can I install a new interrupt
handler which is located in my application?!

a lot of questions, I searched at the forums, but there are not much
examples available. I'm sure there a people who already did this before.

Please help,
thanks





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