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 137825

Article: 137825
Subject: Re: UART RS232 "hello world" program trial and terror.
From: jleslie48 <jon@jonathanleslie.com>
Date: Fri, 30 Jan 2009 13:39:41 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 29, 11:46 am, jleslie48 <j...@jonathanleslie.com> wrote:
> On Jan 29, 12:35 am, rickman <gnu...@gmail.com> wrote:
>
> > I have to say that I find your learning process to be very
> > interesting.  It has been so long for me that I have forgotten exactly
> > what it was that I had to learn or unlearn to switch from software to
> > HDL.  I am getting a feel for that again.
>
> So glad your enjoying yourself :))))))
>
> Rata-fracken,summana,friken,thing-a-mabob....

Ok, boys, things are finishing up on a high note this week.

My partner in crime here in NJ got his UART working, and with it
albiet not pretty,
a working hello world program.  Now the producers and consumers are a
bit raw,
but the throttle on the 16 byte "bucket brigade" fifo seems to be
working.

His messaging was pretty messy, but using some of the techniques
discussed here,
I'm starting to clean them up.  here is a snippet of the cleaned up
code:

----------------------------



  constant project_name_stg      : string := "Testing 1, 2, 3! and
some more characters too!!!";
  SIGNAL   project_name_cnt      : INTEGER RANGE
project_name_stg'range;
  SIGNAL   lprj_MESS_TRAN        : STD_LOGIC     := '0';

  constant person_mess_stg       : string := "Cindy Crawford's
measurments are: 34, 24, 34";
  SIGNAL   person_mess_cnt       : INTEGER RANGE
person_mess_stg'range;
  SIGNAL   lprj_person_TRAN      : STD_LOGIC     := '0';


  SIGNAL    lprj_PERSON_TRAN_ENABLE  :
STD_LOGIC                           := '0';

...



-------------------------------------------------------------------------------------------------
--  SENDING lprj PROJECT MESSAGE TO TRANSMIT UART  ( TX_DATA_IN
[ 7-0 ] )
-------------------------------------------------------------------------------------------------


P16:  PROCESS ( CLK_16_6MHZ, UART_RESET_BUFFER, TX_BUFFER_FULL,
TX_WRITE_BUFFER_STB,
                   lprj_MESS_TRAN,    project_name_cnt,
                   lprj_PERSON_TRAN,  person_mess_cnt,
                   lprj_RECEIVE_TRAN, RECEIVE_MAX,      RECEIVE_MESS
( 0 TO lprj_RECEIVE_MAX )  )
BEGIN
     IF ( CLK_16_6MHZ = '1' AND CLK_16_6MHZ'EVENT ) THEN
          IF ( UART_RESET_BUFFER   = '0' ) THEN
               IF    ( ( lprj_MESS_TRAN      = '1' ) AND
                       ( TX_BUFFER_FULL      = '0' ) AND
                       ( TX_WRITE_BUFFER_STB = '0' )  ) THEN
			           --TX_DATA_IN( 7 DOWNTO 0 ) <= PROJECT_NAME
( lprj_MESS_CNT );
			           TX_DATA_IN <= to_slv(project_name_stg
( project_name_cnt ));

               ELSIF ( ( lprj_PERSON_TRAN    = '1' ) AND
                       ( TX_BUFFER_FULL      = '0' ) AND
                       ( TX_WRITE_BUFFER_STB = '0' )  ) THEN
			           TX_DATA_IN <= to_slv(person_mess_stg
( person_mess_cnt ));

               ELSIF ( ( lprj_RECEIVE_TRAN   = '1' ) AND
                       ( TX_BUFFER_FULL      = '0' ) AND
                       ( TX_WRITE_BUFFER_STB = '0' )  ) THEN
			           TX_DATA_IN( 7 DOWNTO 0 ) <= RECEIVE_MESS( RECEIVE_MAX );
               END IF;
          END IF;
     END IF;
END PROCESS P16;

-----------------------------


which while is a vast improvement over what code he gave me:

-------------------------
-- ASCII NUMBERS
-----------------------------------------------------------------------------

  constant N0          : std_logic_vector( 7 DOWNTO 0 )   := x"30";
-- ASCII VALUE FOR UART
  constant N1          : std_logic_vector( 7 DOWNTO 0 )   := x"31";
-- ASCII VALUE FOR UART
  constant N2          : std_logic_vector( 7 DOWNTO 0 )   := x"32";
-- ASCII VALUE FOR UART

  constant N3          : std_logic_vector( 7 DOWNTO 0 )   := x"33";
-- ASCII VALUE FOR UART
  constant N4          : std_logic_vector( 7 DOWNTO 0 )   := x"34";
-- ASCII VALUE FOR UART
...<the whole alphabet>...


----------------------------------------------------------------------------------------------
--  LOKI PERSON MESSAGE ARRAY
-                     44 CHARACTERS
----------------------------------------------------------------------------------------------


  SUBTYPE REG_A IS STD_LOGIC_VECTOR( 7 DOWNTO 0 );

  TYPE LOKI_PERSON IS ARRAY ( INTEGER RANGE <> ) OF REG_A;


  SIGNAL    LOKI_PERSON_TRAN         :
STD_LOGIC                           := '0';

  CONSTANT  LOKI_PERSON_MAX          :
INTEGER                             := 43;

  SIGNAL    LOKI_PERSON_CNT          : INTEGER RANGE 0 TO
LOKI_PERSON_MAX;

  SIGNAL    LOKI_PERSON_TRAN_ENABLE  :
STD_LOGIC                           := '0';

  SIGNAL    PERSON_MESS              : LOKI_PERSON( 0 TO
LOKI_PERSON_MAX )

            :=  ( CR, AC, AI, AN, AD, AY, SP, AC, AR, AA, AW, AF, AO,
AR, AD, PO, AS, SP,

                  AM, AE, AA, AS, AU, AR, AE, AM, AE, AN, AT, AS, SP,
AA, AR, AE, SP,

                  N3, N4, SP, N2, N4, SP, N3, N4, CR );

...


------------------------


However, my version of the code skips the first letter of each of the
messages!
the problem I'm sure resides in this bit here:

mine:

-------------------------------------------------------------------------------------------------
--  INITIALIZING lprj PROJECT MESSAGE COUNT  ( project_name_cnt )
-------------------------------------------------------------------------------------------------


P10:  PROCESS ( CLK_16_6MHZ, UART_RESET_BUFFER, UART_RESET_NEXT,
lprj_MESS_TRAN, TX_WRITE_BUFFER_STB )
BEGIN
     IF ( CLK_16_6MHZ = '1' AND CLK_16_6MHZ'EVENT ) THEN
          IF ( ( UART_RESET_BUFFER = '0' ) AND
               ( UART_RESET_NEXT   = '1' )  )  THEN
                      project_name_cnt <= project_name_stg'low;

          ELSIF ( ( lprj_MESS_TRAN      = '1'              ) AND
                  ( TX_WRITE_BUFFER_STB = '1'              ) AND
                  ( project_name_cnt      /=
project_name_stg'high   )  ) THEN
                      project_name_cnt <= ( project_name_cnt + 1 );
          END IF;
     END IF;
END PROCESS P10;



his:


-------------------------------------------------------------------------------------------------
--  INITIALIZING LOKI PROJECT MESSAGE COUNT  ( LOKI_MESS_CNT )
-------------------------------------------------------------------------------------------------

P10:  PROCESS ( CLK_16_6MHZ, UART_RESET_BUFFER, UART_RESET_NEXT,
LOKI_MESS_TRAN, TX_WRITE_BUFFER_STB )
BEGIN
     IF ( CLK_16_6MHZ = '1' AND CLK_16_6MHZ'EVENT ) THEN
          IF ( ( UART_RESET_BUFFER = '0' ) AND
               ( UART_RESET_NEXT   = '1' )  )  THEN
                      LOKI_MESS_CNT <= 0;

          ELSIF ( ( LOKI_MESS_TRAN      = '1'              ) AND
                  ( TX_WRITE_BUFFER_STB = '1'              ) AND
                  ( LOKI_MESS_CNT      /=  LOKI_MESS_MAX   )  ) THEN
                      LOKI_MESS_CNT <= ( LOKI_MESS_CNT + 1 );
          END IF;
     END IF;
END PROCESS P10;


--------------------------

I'm guessing that project_name_stg'low is coming in at a 1 instead of
0, and
the increment therefore goes to 2, and I start with the second
character.

Since I've also finally got the testbench going, I should be able to
see that
project_name_cnt increment to 2 before the first character hits the
the TXT_DATA_IN.

That's what I about to check out.  its Testbench time!!!

To be continued....






Article: 137826
Subject: Re: UART RS232 "hello world" program trial and terror.
From: Jonathan Bromley <jonathan.bromley@MYCOMPANY.com>
Date: Fri, 30 Jan 2009 22:20:24 +0000
Links: << >>  << T >>  << A >>
On Fri, 30 Jan 2009 13:39:41 -0800 (PST), jleslie48 wrote:

>Ok, boys, things are finishing up on a high note this week.

Good to hear.

A few suggestions for your consideration....

>P16:  PROCESS ( CLK_16_6MHZ, UART_RESET_BUFFER, TX_BUFFER_FULL,
>TX_WRITE_BUFFER_STB,
>                   lprj_MESS_TRAN,    project_name_cnt,
>                   lprj_PERSON_TRAN,  person_mess_cnt,
>                   lprj_RECEIVE_TRAN, RECEIVE_MAX,      RECEIVE_MESS
>( 0 TO lprj_RECEIVE_MAX )  )

AAAARGH.  A clocked process should be sensitized ONLY 
to its clock (and its asynchronous reset, if it has one).
It does nothing unless there's an active edge on the
clock, so there is no point in having the process wake
up because of changes on other signals; that's just a waste
of simulation effort and an unnecessary obfuscation.

>BEGIN
>     IF ( CLK_16_6MHZ = '1' AND CLK_16_6MHZ'EVENT ) THEN
>          IF ( UART_RESET_BUFFER   = '0' ) THEN
>               IF    ( ( lprj_MESS_TRAN      = '1' ) AND
>                       ( TX_BUFFER_FULL      = '0' ) AND
>                       ( TX_WRITE_BUFFER_STB = '0' )  ) THEN
>			           --TX_DATA_IN( 7 DOWNTO 0 ) <= PROJECT_NAME
>( lprj_MESS_CNT );
>			           TX_DATA_IN <= to_slv(project_name_stg
>( project_name_cnt ));
>
>               ELSIF ( ( lprj_PERSON_TRAN    = '1' ) AND
>                       ( TX_BUFFER_FULL      = '0' ) AND
>                       ( TX_WRITE_BUFFER_STB = '0' )  ) THEN
>			           TX_DATA_IN <= to_slv(person_mess_stg
>( person_mess_cnt ));
>
>               ELSIF ( ( lprj_RECEIVE_TRAN   = '1' ) AND
>                       ( TX_BUFFER_FULL      = '0' ) AND
>                       ( TX_WRITE_BUFFER_STB = '0' )  ) THEN
>			           TX_DATA_IN( 7 DOWNTO 0 ) <= RECEIVE_MESS( RECEIVE_MAX );
>               END IF;
>          END IF;
>     END IF;
>END PROCESS P16;

As a software guy you must surely see the value in factoring-out
the common conditional expression

  TX_BUFFER_FULL='0' AND TX_WRITE_BUFFER_STB='0'

but that's the least of my worries.  This code appears to be
some kind of data-stream generator that happens - just happens -
to be sending its data to a UART, rather than a memory or an
Ethernet interface or an LCD display or whatever.  It seems
grotesque that its control flow is so intimately tangled with
the internal details of the UART; such an approach is stacking
up many, many problems for the future as your design grows.

Furthermore, it looks pretty strange to me that the code that
indexes/counts its way through the strings is so completely 
disconnected from the code that picks up characters in 
those strings; that's a good recipe for getting off-by-one
timing errors (as you've discovered).  Think about those
old software mantras about "coherence and coupling":
coherent (i.e. closely related) activities should go
together in a common piece of code such as a process;
coupling of one piece of activity to another is bad 
and should be avoided - keep your functional blocks
as decoupled as possible.

PLEASE give some consideration to establishing a clear, 
simple, UNIFORM interface between your blocks.

As I've pointed out before, the easiest way to do that is 
often (not always, but often) to have a ready/valid handshake.
The data consumer asserts "ready" on any clock cycle in 
which it can have data written to it.  The producer 
asserts "valid" on any clock cycle where its data
output is useful.  On clock cycles where "ready" and
"valid" are BOTH true, both parties agree that an item
of data is transferred.  At this point:
1.the producer must EITHER 
  (a) update its output to be the next data item in 
      sequence, leaving "valid" true; OR
  (b) drop its "valid" signal to false so that the
      consumer does not try to take data on the next clock.
2.the consumer must EITHER
  (a) drop its "ready" signal to false so that "valid" on
      the next clock would not transfer any data, OR
  (b) hold "ready" true, and be prepared to accept new 
      data on the next clock.

In this way you can almost completely decouple the
producer and consumer, with only the data and this simple
two-wire clocked handshake between them.  Producers and
consumers can then be mixed-and-matched in a very simple way.

It should be pretty easy to re-jig your UART control signals
to conform to this arrangement.  And it will be VERY easy
to rework your data producer to do likewise.

Enjoy your weekend :-)
-- 
Jonathan Bromley, Consultant

DOULOS - Developing Design Know-how
VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services

Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK
jonathan.bromley@MYCOMPANY.com
http://www.MYCOMPANY.com

The contents of this message may contain personal views which 
are not the views of Doulos Ltd., unless specifically stated.

Article: 137827
Subject: Re: byteblaster cloning
From: Ben Jackson <ben@ben.com>
Date: Fri, 30 Jan 2009 22:25:26 GMT
Links: << >>  << T >>  << A >>
On 2009-01-30, colin <colin_toogood@yahoo.com> wrote:
>
> Has anyone here successfully built a byteblaster clone.

Yes.

> connected up the JTAG pins as specified and Quartus accepts that a
> byteblaster is fitted.

That's based on a couple of the parallel port pins being shorted.
Doesn't tell you much about the rest.

> I can see activity on TCLK, TMS and TDI at the
> FPGA and TDO is getting back to the parallel port but Quartus cannot
> auto detect anything.

You mean it CAN auto detect the cable but no devices?

If you want to see the one I made, it's on the edge of this board:

	http://ad7gd.net/flex/

It's self-contained in the schematic, too.

-- 
Ben Jackson AD7GD
<ben@ben.com>
http://www.ben.com/

Article: 137828
Subject: Re: UART RS232 "hello world" program trial and terror.
From: glen herrmannsfeldt <gah@ugcs.caltech.edu>
Date: Fri, 30 Jan 2009 23:32:48 +0000 (UTC)
Links: << >>  << T >>  << A >>
rickman <gnuarm@gmail.com> wrote:
(snip, I wrote)

>> There are some people interested in porting old computer
>> designs, such as the Apple II, to FPGA.  In that case, it
>> might make sense to include the original tristate lines.
(snip)

> This is a good example of what I was thinking of.  If I were porting
> such a design, although "port" is not really the correct term because
> there is no existing HDL code, I would not describe tri-state buffers
> in my code.  

Well, some people still use schematic capture for new designs.
In this case, the old design is a schematic on paper.

> I would describe a selection function which was a top
> level OR with each of the "tri-state" buffers being replaced by an AND
> gate.  

Say, for example, the Apple II with add-in cards.  One could have
the main board as a verilog module, and add-in cards (serial,
disk, video) as separate modules that are included and then
loaded into the synthesis tools.  

> If there were timing issues that required the bus to "remember"
> the last driven state, I would add a latch with the enable driven by
> an OR of all of the individual enables.  I don't see how you could
> expect a synthesis tool to do anything other than to replace the tri-
> state drivers with the OR-AND multiplexer and I don't see any reason
> to even try to duplicate a design at that level.

There might have been discussion on the need to keep old data
on the Apple II bus.  Otherwise, one should be happy if the tools
convert tristate to AND/OR logic.  That would complicate the
verilog code for a system bus, though.

For anything within a module, I agree at least 99%.

-- glen

Article: 137829
Subject: Re: Spartan-6
From: -jg <Jim.Granville@gmail.com>
Date: Fri, 30 Jan 2009 15:43:10 -0800 (PST)
Links: << >>  << T >>  << A >>
> What happened to 4 & 5?

Looks like Xilinx marketing want to 'resync' as the Virtex 6 and
Spartan 6
(and hey, it's a number  higher than Altera so that's worth something
in their
world, right ;)

Anyone seen package choices for Spartan 6 yet ?

Are Xilinx going to push prices, or leave the sub $1 / Low power area
to Actel ?

-jg



Article: 137830
Subject: Re: UART RS232 "hello world" program trial and terror.
From: jleslie48 <jon@jonathanleslie.com>
Date: Fri, 30 Jan 2009 16:20:27 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 30, 5:20=A0pm, Jonathan Bromley <jonathan.brom...@MYCOMPANY.com>
wrote:
> On Fri, 30 Jan 2009 13:39:41 -0800 (PST), jleslie48 wrote:
> >Ok, boys, things are finishing up on a high note this week.
>
> Good to hear.
>
> A few suggestions for your consideration....
>
> >P16: =A0PROCESS ( CLK_16_6MHZ, UART_RESET_BUFFER, TX_BUFFER_FULL,
> >TX_WRITE_BUFFER_STB,
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 lprj_MESS_TRAN, =A0 =A0project_name=
_cnt,
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 lprj_PERSON_TRAN, =A0person_mess_cn=
t,
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 lprj_RECEIVE_TRAN, RECEIVE_MAX, =A0=
 =A0 =A0RECEIVE_MESS
> >( 0 TO lprj_RECEIVE_MAX ) =A0)
>
> AAAARGH. =A0A clocked process should be sensitized ONLY
> to its clock (and its asynchronous reset, if it has one).
> It does nothing unless there's an active edge on the
> clock, so there is no point in having the process wake
> up because of changes on other signals; that's just a waste
> of simulation effort and an unnecessary obfuscation.
>
>
>
> >BEGIN
> > =A0 =A0 IF ( CLK_16_6MHZ =3D '1' AND CLK_16_6MHZ'EVENT ) THEN
> > =A0 =A0 =A0 =A0 =A0IF ( UART_RESET_BUFFER =A0 =3D '0' ) THEN
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 IF =A0 =A0( ( lprj_MESS_TRAN =A0 =A0 =A0=3D=
 '1' ) AND
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ( TX_BUFFER_FULL =A0 =A0 =
=A0=3D '0' ) AND
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ( TX_WRITE_BUFFER_STB =3D '=
0' ) =A0) THEN
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 --TX_DATA_I=
N( 7 DOWNTO 0 ) <=3D PROJECT_NAME
> >( lprj_MESS_CNT );
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 TX_DATA_IN =
<=3D to_slv(project_name_stg
> >( project_name_cnt ));
>
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 ELSIF ( ( lprj_PERSON_TRAN =A0 =A0=3D '1' )=
 AND
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ( TX_BUFFER_FULL =A0 =A0 =
=A0=3D '0' ) AND
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ( TX_WRITE_BUFFER_STB =3D '=
0' ) =A0) THEN
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 TX_DATA_IN =
<=3D to_slv(person_mess_stg
> >( person_mess_cnt ));
>
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 ELSIF ( ( lprj_RECEIVE_TRAN =A0 =3D '1' ) A=
ND
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ( TX_BUFFER_FULL =A0 =A0 =
=A0=3D '0' ) AND
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ( TX_WRITE_BUFFER_STB =3D '=
0' ) =A0) THEN
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 TX_DATA_IN(=
 7 DOWNTO 0 ) <=3D RECEIVE_MESS( RECEIVE_MAX );
> > =A0 =A0 =A0 =A0 =A0 =A0 =A0 END IF;
> > =A0 =A0 =A0 =A0 =A0END IF;
> > =A0 =A0 END IF;
> >END PROCESS P16;
>
> As a software guy you must surely see the value in factoring-out
> the common conditional expression
>
> =A0 TX_BUFFER_FULL=3D'0' AND TX_WRITE_BUFFER_STB=3D'0'
>
> but that's the least of my worries. =A0This code appears to be
> some kind of data-stream generator that happens - just happens -
> to be sending its data to a UART, rather than a memory or an
> Ethernet interface or an LCD display or whatever. =A0It seems
> grotesque that its control flow is so intimately tangled with
> the internal details of the UART; such an approach is stacking
> up many, many problems for the future as your design grows.
>
> Furthermore, it looks pretty strange to me that the code that
> indexes/counts its way through the strings is so completely
> disconnected from the code that picks up characters in
> those strings; that's a good recipe for getting off-by-one
> timing errors (as you've discovered). =A0Think about those
> old software mantras about "coherence and coupling":
> coherent (i.e. closely related) activities should go
> together in a common piece of code such as a process;
> coupling of one piece of activity to another is bad
> and should be avoided - keep your functional blocks
> as decoupled as possible.
>
> PLEASE give some consideration to establishing a clear,
> simple, UNIFORM interface between your blocks.
>
> As I've pointed out before, the easiest way to do that is
> often (not always, but often) to have a ready/valid handshake.
> The data consumer asserts "ready" on any clock cycle in
> which it can have data written to it. =A0The producer
> asserts "valid" on any clock cycle where its data
> output is useful. =A0On clock cycles where "ready" and
> "valid" are BOTH true, both parties agree that an item
> of data is transferred. =A0At this point:
> 1.the producer must EITHER
> =A0 (a) update its output to be the next data item in
> =A0 =A0 =A0 sequence, leaving "valid" true; OR
> =A0 (b) drop its "valid" signal to false so that the
> =A0 =A0 =A0 consumer does not try to take data on the next clock.
> 2.the consumer must EITHER
> =A0 (a) drop its "ready" signal to false so that "valid" on
> =A0 =A0 =A0 the next clock would not transfer any data, OR
> =A0 (b) hold "ready" true, and be prepared to accept new
> =A0 =A0 =A0 data on the next clock.
>
> In this way you can almost completely decouple the
> producer and consumer, with only the data and this simple
> two-wire clocked handshake between them. =A0Producers and
> consumers can then be mixed-and-matched in a very simple way.
>
> It should be pretty easy to re-jig your UART control signals
> to conform to this arrangement. =A0And it will be VERY easy
> to rework your data producer to do likewise.
>
> Enjoy your weekend :-)
> --
> Jonathan Bromley, Consultant
>
> DOULOS - Developing Design Know-how
> VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services
>
> Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK
> jonathan.brom...@MYCOMPANY.comhttp://www.MYCOMPANY.com
>
> The contents of this message may contain personal views which
> are not the views of Doulos Ltd., unless specifically stated.

all very good points.  I didn't write this, my "fpga guy" did.  all I
know is
that it did actually work, and I've only gotten so far as be sure it
does actually
work, and that for every message, he adds a new boolean semaphore;
definitely
not a very scalable solution.  I'm sure that is how the redundant
boolean checks creeped in.

My first cleanup was to at least reduce the strings to something that
I could actually read.
The side effect being that the first character of the string got
clobbered and that answer will
reside in the spagetti code that you pointed out.  Meantime its not
immediately obvious to
me from the testbench:

http://jleslie48.com/fpga_uartjl_01/11jlmod/ccuart01/screencap/screencap10_=
missingfirstletter.png


I see the "T" getting in, to the datastream, but I haven't found where
it got clobbered.  I do know the
code is a complete mess.

The source code is here if anyone is interested:

http://jleslie48.com/fpga_uartjl_01/11jlmod/ccuart01/source/LOKI_Top.vhd

http://jleslie48.com/fpga_uartjl_01/11jlmod/ccuart01/source/


Article: 137831
Subject: transmission gate
From: messa <asem.bsoul@gmail.com>
Date: Fri, 30 Jan 2009 18:02:01 -0800 (PST)
Links: << >>  << T >>  << A >>
Hi all

I was wondering what is the design for the lookup tables of the logic
blocks in FPGAs such as the Virtex model from Xilinx? Does they use
pass transistors as most of the academic papers show? or does they use
transmission gates? Please provide reference if possible.

Thanks.

Article: 137832
Subject: LUT design / Transmission gates or pass transistors?
From: abbas <xfiles.detector@gmail.com>
Date: Fri, 30 Jan 2009 18:27:31 -0800 (PST)
Links: << >>  << T >>  << A >>
Hi all

I was wondering what is the design for the lookup tables of the logic
blocks in FPGAs such as the Virtex model from Xilinx? Does they use
pass transistors as most of the academic papers show? or does they use
transmission gates? Please provide reference if possible.

Thanks.

Article: 137833
Subject: Re: Spartan-6
From: rickman <gnuarm@gmail.com>
Date: Fri, 30 Jan 2009 22:02:46 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 23, 4:49 am, "Symon" <symon_bre...@hotmail.com> wrote:
> "Uwe Bonnes" <b...@elektron.ikp.physik.tu-darmstadt.de> wrote in message
>
> news:glc2p3$er6$1@lnx107.hrz.tu-darmstadt.de...
>
> > Antti <Antti.Luk...@googlemail.com> wrote:
> >> it seems that first references to the upcoming Spartan family are in
> >> the wild already
>
> >>http://www.linkedin.com/in/ericschristiansen
>
> >> I assume the spartan-6 mentioned there is not a typo
> >> (actually i am almost sure it isnt)
>
> > I neither find XILINX. spartan or fpga mentioned in that resume.
>
> Look harder? Try CTRL-F ?
>
> "o Control structure for the digital portion of the transceiver uses an
> instantiated microBlaze processor running in a Xilinx Spartan 6 FPGA
> o Component selection for the transceiver Common Public Radio Interface
> (CPRI)
> =A7 Selected SFP+ module used for the optical interface, and a Spartan 6 =
FPGA
> running CPRI IP to handle the framing, mapping, and interleaving function=
s "
>
> What happened to 4 & 5?
> HTH., Syms.

I guess the felt the spartan and virtex names needed to be on the same
level.  Are they really bringing both out at the same time?  That
seems pretty extreme.  I remember when at the 90 nm node they brought
out the Spartan 3 first because they thought the cost advantage was
more important in the "value" parts.  Then they ignored the Spartan
family and brought out the Virtex at 65 nm node because it was more
cost effective to amortize the investment over the higer price chips.
I wonder if the huge effort of bringing both out is going to pay off
given the current economic situation.  I'm sure this took a huge
investment and if they don't sell enough chips, it maybe a case of
very bad timing for Xilinx resulting in loss of market share.

They say timing is everything.

Rick

Article: 137834
Subject: Re: Spartan-6
From: rickman <gnuarm@gmail.com>
Date: Fri, 30 Jan 2009 22:06:46 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 30, 6:43=A0pm, -jg <Jim.Granvi...@gmail.com> wrote:
> > What happened to 4 & 5?
>
> Looks like Xilinx marketing want to 'resync' as the Virtex 6 and
> Spartan 6
> (and hey, it's a number =A0higher than Altera so that's worth something
> in their
> world, right ;)
>
> Anyone seen package choices for Spartan 6 yet ?
>
> Are Xilinx going to push prices, or leave the sub $1 / Low power area
> to Actel ?

I sure wish they would support the smaller leaded packages.  A decent
sized chip in a 100 pin QFP would be so nice; low price, easy assembly
and good access to the pins for debug.  I don't get why they haven't
done this before.  Every I/O adds cost.  They won't get under $10 in
moderate quanties until they pick some better packages.

Rick

Article: 137835
Subject: Re: LUT design / Transmission gates or pass transistors?
From: rickman <gnuarm@gmail.com>
Date: Fri, 30 Jan 2009 22:13:27 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 30, 9:27=A0pm, abbas <xfiles.detec...@gmail.com> wrote:
> Hi all
>
> I was wondering what is the design for the lookup tables of the logic
> blocks in FPGAs such as the Virtex model from Xilinx? Does they use
> pass transistors as most of the academic papers show? or does they use
> transmission gates? Please provide reference if possible.
>
> Thanks.

If you understand the difference between pass transistors and
transmission gates, then you should be able to figure this out for
yourself.

Rick

Article: 137836
Subject: Re: Spartan-6
From: Antti <Antti.Lukats@googlemail.com>
Date: Fri, 30 Jan 2009 23:01:09 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 31, 8:06=A0am, rickman <gnu...@gmail.com> wrote:
> On Jan 30, 6:43=A0pm, -jg <Jim.Granvi...@gmail.com> wrote:
>
> > > What happened to 4 & 5?
>
> > Looks like Xilinx marketing want to 'resync' as the Virtex 6 and
> > Spartan 6
> > (and hey, it's a number =A0higher than Altera so that's worth something
> > in their
> > world, right ;)
>
> > Anyone seen package choices for Spartan 6 yet ?
>
> > Are Xilinx going to push prices, or leave the sub $1 / Low power area
> > to Actel ?
>
> I sure wish they would support the smaller leaded packages. =A0A decent
> sized chip in a 100 pin QFP would be so nice; low price, easy assembly
> and good access to the pins for debug. =A0I don't get why they haven't
> done this before. =A0Every I/O adds cost. =A0They won't get under $10 in
> moderate quanties until they pick some better packages.
>
> Rick

Sorry Rick I can not comment in public. I hope it all be known on
monday.
I have some comments, i make them public as soon as the info is no
longer under NDA
(that is i can comment on what xilinx has made public itself)

Antti


Article: 137837
Subject: how can we connect the two buses of different width
From: GrIsH <grishkunwar@gmail.com>
Date: Sat, 31 Jan 2009 02:16:42 -0800 (PST)
Links: << >>  << T >>  << A >>
I have two modules counter(28-bit) and led decoder(takes 4-bit
input)....i want to display the value of counter through seven segment
display(SSD). so my interest is to connect upper 4-bit of counter to 4-
bit input of led decoder so that change in display on SSD can be seen
easily ......i am using the board XSA-50 whose clk is 50 Mz so by
using 4-bit counter,its value will be changed so fast that we can not
visualize the value in seven segment display....

Some have any idea on it??......any idea will be greatly
appreciated....

Article: 137838
Subject: Re: how can we connect the two buses of different width
From: Jonathan Bromley <jonathan.bromley@MYCOMPANY.com>
Date: Sat, 31 Jan 2009 10:48:29 +0000
Links: << >>  << T >>  << A >>
On Sat, 31 Jan 2009 02:16:42 -0800 (PST), GrIsH
<grishkunwar@gmail.com> wrote:

>I have two modules counter(28-bit) and led decoder(takes 4-bit
>input)....i want to display the value of counter through seven segment
>display(SSD). so my interest is to connect upper 4-bit of counter to 4-
>bit input of led decoder so that change in display on SSD can be seen
>easily ......i am using the board XSA-50 whose clk is 50 Mz so by
>using 4-bit counter,its value will be changed so fast that we can not
>visualize the value in seven segment display....
>
>Some have any idea on it??......any idea will be greatly
>appreciated....

Verilog:
  assign LED[3:0] = counter[27:24];

VHDL:
  LED(3 downto 0) <= counter(27 downto 24);

schematic:
   counter_27 ------------ led_3
   counter_26 ------------ led_2
   counter_25 ------------ led_1
   counter_24 ------------ led_0
   counter_23 ------
     ....
   counter_0  ------

the real question:
   why did you need to ask?
-- 
Jonathan Bromley, Consultant

DOULOS - Developing Design Know-how
VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services

Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK
jonathan.bromley@MYCOMPANY.com
http://www.MYCOMPANY.com

The contents of this message may contain personal views which 
are not the views of Doulos Ltd., unless specifically stated.

Article: 137839
Subject: Re: Pci Express on Virtex 5: PC doesn't reboot
From: Charles Gardiner <invalid@invalid.invalid>
Date: Sat, 31 Jan 2009 12:22:50 +0100
Links: << >>  << T >>  << A >>
Hi,
the first question to clear is what the card is doing all this time. A
good example design will lead the LTSSM (link training sequence state
machine) status bits out to ports for observation. I haven't looked at
the Xilinx core closely, but I know the Lattice examples do.

If you hang a logic analyzer on these ports you can observe the
sequences the state-machine is going through. How they are coded should
be in the Xilinx documentation. The transitions here aren't particularly
fast so an 'entry level' LA will probably do the job. If the LTSSM
doesn't finally reach the L0 state, you have a problem. Data-Link layer
'DL_UP' is usually a separate signal. If that isn't set, you also have a
problem.

Basically the physical layer and data-link layers in the PCIe core must
 be active before you can do anything with it. It is conceivable that if
there are problems here, your BIOS or OS loading phase could lock up.
I've seen it before. Problems could be EMC related, board design etc.

Another test I recommend is sticking the card in a Linux machine. If you
don't have a linux machine it may well be ok to just boot from a Ubuntu
DVD you can pick up in a magazine somewhere. You don't necessarily have
to install it. If the card is recognisable you can see the complete
configuration space header by logging in as root and typing
lspci -vvv
(You typically see less info if you don't log in as root)

If that works and your using windows (you didn't say, I'm just assuming)
your problem could well be driver related.

By the way, in case you are not aware, a x8 card plugged in a x16 slot
can end up working only as a x1 link. The PCIe spec allows this. Support
for x2/x4/x8 configurations is optional. But this should not have
anything to do with your problem.

Good luck,

Massi schrieb:
> Hi everyone, I'm trying to program a Xilinx Virtex 5 (on Avnet PCI
> Express Development Kit board). I downloaded the bistream generated by
> the PIO example design which comes up with the PCI core (endpoint
> block 1.9) but when I reboot the system in order to recognize the
> board, the PC hangs forever. Do you have any idea about what it could
> depend on? By the way, the board is a x8 lane, but it is plugged in a
> x16 lane slot.
> 
> Thanks in advance.

Article: 137840
Subject: Re: how can we connect the two buses of different width
From: Muzaffer Kal <kal@dspia.com>
Date: Sat, 31 Jan 2009 09:00:41 -0800
Links: << >>  << T >>  << A >>
On Sat, 31 Jan 2009 02:16:42 -0800 (PST), GrIsH
<grishkunwar@gmail.com> wrote:

>I have two modules counter(28-bit) and led decoder(takes 4-bit
>input)....i want to display the value of counter through seven segment
>display(SSD). so my interest is to connect upper 4-bit of counter to 4-
>bit input of led decoder so that change in display on SSD can be seen
>easily ......i am using the board XSA-50 whose clk is 50 Mz so by
>using 4-bit counter,its value will be changed so fast that we can not
>visualize the value in seven segment display....
>
>Some have any idea on it??......any idea will be greatly
>appreciated....

I'm not sure what the question is because what you seem to be asking
is trivial ie connecting top 4 bits of the bus to the led decoder
inputs. Another poster gave you all the possible solutions so I won't
repeat them here. If on the other hand you're really asking how you
can make the digits stable while the counter is running then that's
really not possible. At 50 MHz (20ns)  the MSB of the counter toggles
at around 2 seconds and LSB of the 4 bits you're looking at toggles at
around 250 ms which I agree would be difficult to see. If you want to
see the numbers clearly you have no choice to get either a slower
clock speed or faster eyes. On the other hand, you can implement some
capture logic and sample the value of the counter with an external
signal which would give you stable values but not continuous change.
You need to decide why you are looking at the counter.
--

Muzaffer Kal

DSPIA INC.
ASIC/FPGA Design Services
http://www.dspia.com

Article: 137841
Subject: Re: LUT design / Transmission gates or pass transistors?
From: maher <xfiles.detector@gmail.com>
Date: Sat, 31 Jan 2009 10:02:24 -0800 (PST)
Links: << >>  << T >>  << A >>
well, if you understand the difference then please let me know. But if
you don't, then don't pretend to be "Abo El3oreef" -- translates to: a
person who pretends to be knowledgeable while he don't know anything!

rickman wrote:
> On Jan 30, 9:27=A0pm, abbas <xfiles.detec...@gmail.com> wrote:
> > Hi all
> >
> > I was wondering what is the design for the lookup tables of the logic
> > blocks in FPGAs such as the Virtex model from Xilinx? Does they use
> > pass transistors as most of the academic papers show? or does they use
> > transmission gates? Please provide reference if possible.
> >
> > Thanks.
>
> If you understand the difference between pass transistors and
> transmission gates, then you should be able to figure this out for
> yourself.
>
> Rick


Article: 137842
Subject: semi OT: FPGA and Paper models.
From: jleslie48 <jon@jonathanleslie.com>
Date: Sat, 31 Jan 2009 10:06:37 -0800 (PST)
Links: << >>  << T >>  << A >>
Its the weekend, so no programming until after the super bowl.  I
deserve a break.

One of my hobbies is a craft called paper modeling and by chance a
brand new model came out almost at the exact time that my efforts to
learn VHDL went into high gear. The irony of these two events struck
me.  The model is the character 'bit' from the movie "Tron":

http://tektonten.blogspot.com/2009/01/tron-papercraft-bit.html

and I'm looking forward to having these models on the mantlepiece of
my office.  I think they are very appropriate for this group.


Article: 137843
Subject: Actel CoreABC not working in Libero 8.5
From: Antti <Antti.Lukats@googlemail.com>
Date: Sat, 31 Jan 2009 10:53:51 -0800 (PST)
Links: << >>  << T >>  << A >>
Hi

according to the screenshot here
http://www.actel.com/products/software/smartdesign/default.aspx

it seems that CoreABC can be used in Libero,
but when trying to add a CoreABC instance it asks for CoreConsole to
be installed and configured.
and if that is done, then it will forget some of the connections made
and if that project is closed and reopened then it says that in need
to upgrade coreconsole design
to new smart design flow, but then it says that the conversion is not
supported for CoreABC

CoreABC should be simple as A B C!
But all attempts to use it with lates Libero version seem to fail

Antti

Article: 137844
Subject: Re: Actel CoreABC not working in Libero 8.5
From: Antti <Antti.Lukats@googlemail.com>
Date: Sat, 31 Jan 2009 11:39:01 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 31, 8:53=A0pm, Antti <Antti.Luk...@googlemail.com> wrote:
> Hi
>
> according to the screenshot herehttp://www.actel.com/products/software/sm=
artdesign/default.aspx
>
> it seems that CoreABC can be used in Libero,
> but when trying to add a CoreABC instance it asks for CoreConsole to
> be installed and configured.
> and if that is done, then it will forget some of the connections made
> and if that project is closed and reopened then it says that in need
> to upgrade coreconsole design
> to new smart design flow, but then it says that the conversion is not
> supported for CoreABC
>
> CoreABC should be simple as A B C!
> But all attempts to use it with lates Libero version seem to fail
>
> Antti

issue solved.
the stupid user always tries the one combination first that doesnt
work.

the problem seems to be that the minimum number of APB slaves is 2 !
trying to build a system with only one APB peripheral leads to
different errors..

Antti has solved his own problem








Article: 137845
Subject: Re: NIOS is stuck at alt_tick after reset
From: Guy_FPGA <guybye@hotmail.com>
Date: Sat, 31 Jan 2009 12:17:48 -0800 (PST)
Links: << >>  << T >>  << A >>
Hi Adam...

I am not using flash for the nios program- all the SW is located at an
internal ram....

:)

Guy

Article: 137846
Subject: Re: LUT design / Transmission gates or pass transistors?
From: rickman <gnuarm@gmail.com>
Date: Sat, 31 Jan 2009 13:36:39 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 31, 1:02=A0pm, maher <xfiles.detec...@gmail.com> wrote:
> well, if you understand the difference then please let me know. But if
> you don't, then don't pretend to be "Abo El3oreef" -- translates to: a
> person who pretends to be knowledgeable while he don't know anything!

Are you asking what the difference is or are you just being rude?

This is the sort of stuff that can be figured out with a simple google
search.  Every question asked here does not have to be answered here.

Search on "transmission gate vs pass transistor" and look at the first
link displayed.

Rick

Article: 137847
Subject: Re: LUT design / Transmission gates or pass transistors?
From: maher <xfiles.detector@gmail.com>
Date: Sat, 31 Jan 2009 16:56:40 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 31, 4:36=A0pm, rickman <gnu...@gmail.com> wrote:
> On Jan 31, 1:02=A0pm, maher <xfiles.detec...@gmail.com> wrote:
>
> > well, if you understand the difference then please let me know. But if
> > you don't, then don't pretend to be "Abo El3oreef" -- translates to: a
> > person who pretends to be knowledgeable while he don't know anything!


Sorry if you understand my reply in a wrong way. I just replied the
same way you replied my original message!

>
> Are you asking what the difference is or are you just being rude?
>
> This is the sort of stuff that can be figured out with a simple google
> search. =A0Every question asked here does not have to be answered here.
>

Back to my original question: I don't ask what is the different
between transmission gates and pass gates; I know exactly what the
difference is. What I am asking about (as specified in my first post,
sorry I changed my nick name from "abbas" to "maher") is the circuit
level design of lookup tables in commercial FPGAs such as Vitretx-II
pro from Xilinx. Simply, this is my question. I would be grateful to
those who can reply and provide references.

> Search on "transmission gate vs pass transistor" and look at the first
> link displayed.
>
> Rick

Article: 137848
Subject: Re: LUT design / Transmission gates or pass transistors?
From: Mike Treseler <mtreseler@gmail.com>
Date: Sat, 31 Jan 2009 17:34:25 -0800
Links: << >>  << T >>  << A >>
abbas wrote:

> I was wondering what is the design for the lookup tables of the logic
> blocks in FPGAs such as the Virtex model from Xilinx? 

I would use a block ram as a ROM.
The "design" would be a vhdl or verilog code template
something like this:
http://mysite.verizon.net/miketreseler/sync_rom.vhd

 -- Mike Treseler

Article: 137849
Subject: Re: LUT design / Transmission gates or pass transistors?
From: rickman <gnuarm@gmail.com>
Date: Sat, 31 Jan 2009 17:37:12 -0800 (PST)
Links: << >>  << T >>  << A >>
On Jan 31, 7:56=A0pm, maher <xfiles.detec...@gmail.com> wrote:
> On Jan 31, 4:36=A0pm, rickman <gnu...@gmail.com> wrote:
>
> > On Jan 31, 1:02=A0pm, maher <xfiles.detec...@gmail.com> wrote:
>
> > > well, if you understand the difference then please let me know. But i=
f
> > > you don't, then don't pretend to be "Abo El3oreef" -- translates to: =
a
> > > person who pretends to be knowledgeable while he don't know anything!
>
> Sorry if you understand my reply in a wrong way. I just replied the
> same way you replied my original message!
>
>
>
> > Are you asking what the difference is or are you just being rude?
>
> > This is the sort of stuff that can be figured out with a simple google
> > search. =A0Every question asked here does not have to be answered here.
>
> Back to my original question: I don't ask what is the different
> between transmission gates and pass gates; I know exactly what the
> difference is. What I am asking about (as specified in my first post,
> sorry I changed my nick name from "abbas" to "maher") is the circuit
> level design of lookup tables in commercial FPGAs such as Vitretx-II
> pro from Xilinx. Simply, this is my question. I would be grateful to
> those who can reply and provide references.

A transmission gate is a lot bigger, requiring two pass transistors
and an inverter to drive the complemented one.  A simple pass
transistor will do nicely for nearly any digital signal gating.  A
transmission gate is typically used for analog signals where you need
the resistance to remain relatively constant.  A simple pass
transistor has a variable resistance as the input voltage changes...
ok for most digital stuff, but not so good for analog.

I think if you actually understood the difference, you would
understand why transmission gates are not used in FPGAs.  These parts
are all about density and pass transistors are used both for route
switching and in the LUTs for the output mux from the memory elements
(a RAM is just memory elements with their outputs muxed together.)
What did you find when you searched on Google?

Rick



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