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 62500

Article: 62500
Subject: Re: WebPACK 6.1 tutorials
From: "Glen Herrmannsfeldt" <gah@ugcs.caltech.edu>
Date: Fri, 31 Oct 2003 05:10:50 GMT
Links: << >>  << T >>  << A >>

"Dave Vanden Bout" <devb@xess.com> wrote in message
news:3FA18F22.83975E8C@xess.com...

> WebPACK supports Verilog.  You will go through the same operations,
dialogs,
> windows, etc whether you use Verilog or VHDL so the tutorial should still
be
> applicable.  The only added effort is to develop your own Verilog code to
> replace the VHDL already given for the LED decoder and the counter.

Thanks.  There was once a discussion that seemed to say that verilog is used
for ASICs and VHDL for FPGA's.   I wanted to be sure.

-- glen



Article: 62501
Subject: Re: Power calculation using Xpower
From: praveen@cg-coreel.com (praveen)
Date: 30 Oct 2003 21:50:24 -0800
Links: << >>  << T >>  << A >>
John Blaine <john.blaine@xilinx.com> wrote in message news:<3F9FA363.7930A312@xilinx.com>...
> Praveen,
> 
> It is difficult to estimate how much impact this will have on the power
> estimate.
> So let me take you through a few points:
> 
> Using a post PAR estimate will allow XPower to have an accurate estimate
> of
> capacitance load on the internal routes so no problem here. If you are
> using post MAP
> where no SDF is generated then this is a large source of inaccuracy and
> is not
> recommended.
> 
> Now lets look at the timing simulations tend to result in glitches. This
> switching translates
> into higher activity rates in XPower-> higher power.
> 
> I would expect these to be fairly low load signals. Also if you have a
> fully synchronous
> design this effect will be limited.
> 
> Your clocks will be set correctly (high power consuming nets).
> If you have met timing (verifed through timing analyser) then other
> heavy loaded signals like
> clock enables, should be set correctly.
> 
> So in summary, if your design is post PAR, fully synchronous and has met
> timing, you should
> be OK an get an accurate power estimate.
> 
> John
> 
> praveen wrote:
> 
> > hi all,
> >
> > i am calculating the power consumption using xilinx xpower. For
> > generating the VCD file i am not loading the SDF(Standard Delay
> > Format) during VSIM. Will it affect the power calculation.
> >
> > thanks in advance.
> 
> --

hi john,

as u said our design is fully synchronous and our entire design is
working on only one  clock edge, and more over ther are no latches
inferred in our design , so chances of glitches are minimal.

so not loading the SDF file will not make much differnce in th power
estimate i guess.

one more thing i wanted to ask u regarding the power consumption, we r
using XILINX virtex 2p (XC2VP50 -6 FF1517) . what is the power that is
tolerable without providing heat sinks.

praveen

Article: 62502
Subject: Re: Xilinx XC95108 Chip
From: hmurray@suespammers.org (Hal Murray)
Date: Fri, 31 Oct 2003 07:16:38 -0000
Links: << >>  << T >>  << A >>
>By the way, the XC95108 has 108 cells , what are cells ?  so the
>sc95108 can store 108 flip-flops ?

You really should read the data sheet.

-- 
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: 62503
Subject: Wishbone interface, FPGA newbie and advice
From: Christopher Fairbairn <ckf13@student.canterbury.ac.nz>
Date: Fri, 31 Oct 2003 20:54:54 +1300
Links: << >>  << T >>  << A >>
Hi,

I am just starting out with respect to utilising FPGAs within my designs. Up 
to this point in time I've mostly been involved with microcontroller based 
designs, but I'm seeing where FPGAs can help solve various types of tasks I 
find myself in and hence wanting to learn how to use them properly.

I've brought a small development board and have gradually implemented 
various designs for making various beeps and sirens on a speaker, and 
decoders such as a binary to 7segment decoder etc etc. I term them "simple" 
designs since they are designs that can be "completely wrong" but at the 
same time still "work" (i.e. yes it does what I set out to do, but the 
design techniques might not be the best, or it wouldn't work if I had a bit 
a little more clock slew etc etc...).

I am at the stage where I think I am almost confident enough to design a 
FPGA into a hobby project of my own with enough confidence that I'll be 
able to develop the right VHDL source to make it "tick"...

To this end I've started attempting to simulate/develop a 68HC11 to Wishbone 
interface (the idea being to graft an FPGA onto the databus of an existing 
HC11 produt) and I'd like some advice on what I've got so far. Not knowing 
much about data busses typically utilised within FPGA designs etc Wishbone 
looked like a good idea, especially when sites such as www.opencores.org 
appear to support it for their freely available cores.

My VHDL source for a wishbone master which has an HC11 data bus interface on 
the other end is shown below. It's a slightly "confused" master, in that 
it's not as seperted out as the Wishbone specification details, i.e. it's 
got elements of an InterCon and SysCon module thrown in as well... Sorry 
about the poor coding standard (the Wishbone/HC11 bus signals are named 
using different conventions etc), I just thought I'd "throw it out there" 
rather than worrying about tiding it up first...

entity hc11_wb_master is
port (
        -- Wishbone bus interface
        WB_CLK_O : out std_logic; -- Clock
        WB_RST_O : out std_logic; -- Reset
        WB_ADR_O : out std_logic_vector(1 downto 0);
        WB_DAT_I : in  std_logic_vector(7 downto 0);
        WB_DAT_O : out std_logic_vector(7 downto 0);
        WB_WE_O  : out std_logic; -- Write enable
        WB_STB_O : out std_logic; -- Strobe
        -- HC11 bus interface
        e_clk : in std_logic;
        reset : in std_logic;
        cs : in std_logic; -- chip select for FPGA (HC11's CS2)
        rw : in std_logic; -- read/write* strobe
        addr : in std_logic_vector(10 downto 0);
        data : inout std_logic_vector(7 downto 0);
);
end hc11_wb_master;

architecture Behavioral of hc11_wb_master is
        signal write_cycle : std_logic;
begin
        WB_CLK_O <= not e_clk; // HC11 clocks on the opposite edge to Wishbone

        -- Asserted if the HC11 bus cycle is a memory write
        write_cycle = not(rw);

        process (e_clk)
        begin
                if (falling_edge(e_clk)) then
                        WB_RST_O <= not reset; -- HC11 is active low reset

                        data <= "ZZZZZZZZ";

                        if (reset = '0') then
                                -- Reset condition - hold wishbone bus inactive
                                WB_STB_O <= '0';
                        else
                                -- Translate the various control signals from HC11 to wishbone
                                WB_WE_O <= write_cycle;
                                WB_ADR_O <= addr(1 downto 0);
                                WB_STB_O <= cs;

                                -- Transfer data in the correct direction...
                                if (cs = '1') then
                                        if (write_cycle = '1') then
                                                WB_DAT_O <= data;
                                        else
                                                data <= WB_DAT_I;
                                        end if;
                                end if;
                        end if;
                end if;
        end process;
end Behavioral;

 
Now there are various things that with my present dismal knowledge I am not 
sure about. It seems it simulates ok..., I have a testbench where I've 
attached it to a UART module from www.opencores.org and I can see in the 
resultant simulation a write to the UART and the resultant activity on the 
UART's TX pin etc etc...

However I have questions...

For example the line

        WB_CLK_O <= not e_clk;

I utilised to invert the polarity of the clock between the two busses. My 
idea is to clock the wishbone bus via the HC11's E-clock to keep the 
wishbone bus transactions synchronous to the HC11's bus operations (seems 
logical to me). The problem is the HC11 reads/writes on the falling edge, 
while the wishbone interface does it on the rising edge... But isn't this 
inversion I've done inheriently evil or "bad design"?

I have read discussions about the problems of gated clocks causing problems 
with respect to routing and propagation delays. Isn't this the same sort of 
issue? Everything hanging off the wishbone interface is going to be clocked 
via WB_CLK_O which although not "gated", it's going through a minimal 
amount of logic from the actual clock signal entering the FPGA. Perhaps 
it's not a concern? Perhaps the systhensis tools are smart enough to mean I 
don't have to worry about it..

I am also interested with respect to how I've attempted to implement the 
tri-stateable interface for the 8bit data port to the HC11's bus. Am I 
heading in the right direction in this respect?

Another thing thats going to show how completely clueless I am... is with 
respect to setup/hold timing. The logic I've implemented above (to my 
knoweldge at least) will latch the wishbone data onto the HC11's databus on 
the falling edge of the eclock (assuming the HC11 initiates a read cycle of 
course).. but this is also the same time that I'm latching the incomming 
address signals and obviously it's not going to have time to propogate 
through the logic, cause the wishbone slave to dump the correct data onto 
the databus and be latched... What am I doing wrong here, and in what way 
would I go about starting to make changes to correct this... I assume the 
only reason it's simulated fine so far is that I've done my simulation 
before the synthesis stage, and hence there's no "timing/routing" related 
info in the simulation. Am I correct in my understanding here?

Now knowing me the code I placed above is completely wrong for this and many 
other reasons.. but that is why I would appreciate any advice you could 
provide me.  I'm doing this exercise purely as a learning exercise so the 
more avanues I find for further learning the better :-)

One thing this project has highlighted is the need for me to learn more 
about writing better testbenches... I totally agree with the comments I've 
seen in this newgroup about newbies starting out with a simulator and no 
physical hardware. I sure wish I had started out that way :-)

My aim with this project is to eventually get an HC11 talking to some 
perhperials implemented within an FPGA that are wishbone slaves. The 
perpherials are rather basic themselfs, mainly boiling down to a couple of 
high speed counters at this stage.

Thanks,
Christopher Fairbairn.

PS: Can anyone suggest a good book on Simulation, in particular with 
relation to VHDL? I've identified this as an area where I'm particular 
weak, and as an area where improvements would make progress a bit smoother. 
For example how do you go about reading in stimulius from a file so I don't 
have to hardcode in bus transactions in my testbench, and can instead 
simply read them in from a file containing "read 0x8000, write 0x7000" or 
the equivalent... 

Article: 62504
Subject: Re: How to protect fpga based design against cloning?
From: Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
Date: Fri, 31 Oct 2003 09:13:15 +0000 (UTC)
Links: << >>  << T >>  << A >>
Brad Eckert <brad@tinyboot.com> wrote:

: No problem in the US. China is another story, where IP rip-off is
: business as usual. Cultural change doesn't happen overnight.

If I look at US patents, espexially those Internet relates, there's no
difference... 
-- 
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

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

Article: 62505
Subject: Re: How to protect fpga based design against cloning?
From: "Nial Stewart" <nial@spamno.nialstewart.co.uk>
Date: Fri, 31 Oct 2003 11:55:03 -0000
Links: << >>  << T >>  << A >>
Erik Widding <widding@birger.com> wrote in message
news:Racob.28628$294.15708@nwrdny03.gnilink.net...
> We have been using a rechargeable lithium battery ($1.25 / 4mAh)
> that is soldered directly to the PCB.  Add a low leakage diode and
> a current limiting resistor for a recharger circuit and you do not
> need to worry about replacement.  The only requirement is that the
> board be powered up for a few hours every couple of years.  The
> only issue that we have with this is that the batteries can't tolerate
> the oven, and must be hand soldered.
> Erik Widding.


Erik, are you not in danger of over charging the battery?

Don't phone batterys degrade fairly quickly if they're
constantly trickle charged rather than being fully
discharged then re-charged? Are the characteristics
of your batterys different?
Have you done any long term tests with this set up?

Are your boards only likely to be powered up every now and
then to stop this happening?

I'm not trying to pick holes, just interested.


Nial





Article: 62506
Subject: Re: Logic Analyzer for FPGAs
From: "Alex Gibson" <alxx/*nospam*/@@/*nospam*/ihug./*nospam*/com./remove/au>
Date: Fri, 31 Oct 2003 23:04:59 +1100
Links: << >>  << T >>  << A >>

"Tim" <tim@rockylogic.com.nooospam.com> wrote in message =
news:bnnrul$de5$1$8302bc10@news.demon.co.uk...
> philip wrote:
> > Try one of the Logic Analysers  available from Acute.
> >
> > http://www.acute.com.tw/indexeng.htm
>
> I don't know what is inside these products, but for lovers
> of recursion it is almost certainly one or more FPGAs.
>
> Ditto the somewhat less expensive stuff at www.rockylogic.com,
> to which I contributed the design errors ;-)

Sorry to be boring and ask the same again(well six months later)
but when is the api gong to be available ?

You guys keep saying soon.

Article: 62507
Subject: Address Mapping in 4K RAM Blocks in Altera Cyclone Devices
From: andres.vazquez@gmx.de (Vazquez)
Date: 31 Oct 2003 04:45:39 -0800
Links: << >>  << T >>  << A >>
Hello,

can you tell me if there are application notes available about
Address Mapping in 4K RAM Blocks in Altera Cyclone Devices?

Thank you.

Kind regards

Andres V.
G&D System Development

Article: 62508
Subject: Re: chipscope pro and jtag
From: antti@case2000.com (Antti Lukats)
Date: 31 Oct 2003 05:26:53 -0800
Links: << >>  << T >>  << A >>
henk@mediatronix.com (Henk van Kampen) wrote in message news:<23ecd97d.0310280507.229567b@posting.google.com>...
> > this cant be used with Cable IV, because the API and documentation
> > about Cable IV are kept as secret.
> 
> I have successfully used a Cable IV assuming it is a Cable III. The
> only problem is that iMPACT leaves the cable and your port in an
> undefined state, so you have to reset the ECP mode and reset the cable
> (reset printer). Of course you will not benefit from the ECP speed
> possible with the Cable IV.
> 
> Henk van Kampen
> www.mediatronix.com

do you want to say that Cable IV is Cable III backward compatible in 
non-ECP mode?

if it so then it very good information
antti

Article: 62509
Subject: Re: Address Mapping in 4K RAM Blocks in Altera Cyclone Devices
From: "Subroto Datta" <sdatta@altera.com>
Date: Fri, 31 Oct 2003 13:50:14 GMT
Links: << >>  << T >>  << A >>
You can find it at:
http://www.altera.com/literature/hb/cyc/cyc_c51007.pdf

More information on Cyclone features can be found at:
http://www.altera.com/literature/lit-cyc.jsp

- Subroto Datta
Altera Corp.

"Vazquez" <andres.vazquez@gmx.de> wrote in message
news:eee19a7a.0310310445.30c66b7f@posting.google.com...
> Hello,
>
> can you tell me if there are application notes available about
> Address Mapping in 4K RAM Blocks in Altera Cyclone Devices?
>
> Thank you.
>
> Kind regards
>
> Andres V.
> G&D System Development



Article: 62510
Subject: Minimalist RS232 on Cyclone
From: Andrew Steer <andrew.steerATphilips.com@dev.null>
Date: Fri, 31 Oct 2003 14:01:58 +0000
Links: << >>  << T >>  << A >>
Hi,

I'm new to this newsgroup, and also a relative FPGA newbie (though have
lots of hardware and software experince). If I should need the FAQ,
please kindly point me in the right direction.

I would like to implement a minimal RS232 interface on my Cyclone
device. I only require TxD and RxD signals (I've got an RS232 level-
shifter IC on board). I only require a bare-bones implementation as I
need to communicate merely sufficient data to configure up to 16 8-bit
registers on my Cyclone chip. Flow-control / buffer overruns should not
be an issue.

It would be nice to have a terminal-like behaviour from the Cyclone
(and enter commands like "R13:240" to set register 13 to value 240). A
terse (and technically simpler) command structure such as "0af8[enter]"
meaning: "set register 0x0a to 0xf8" would be perfectly adequate for
the time being.

What is the best way to implement this function? Is there code I can
download from the website?

I'm using the Quartus II software, and using a mixture of Graphical
(Block) Design Files and AHDL.
My present application does not require or use any Nios core.

I see downloadable UARTs on the site, but they are far more fully-
functioned than I need, and apparently require licensing, which seems
far too complicated and involved for a one-off project.


Thanks for any suggestion,

Andrew


SPAMTRAP: Please be sure to de-munge address if replying by email.

Article: 62511
Subject: Re: Minimalist RS232 on Cyclone
From: "Valentin Tihomirov" <valentin@abelectron.com>
Date: Fri, 31 Oct 2003 17:05:48 +0200
Links: << >>  << T >>  << A >>
MiniUART is available from opencores. I've modified it to make even
"lighter" but it should exactly satisfy your needs.



Article: 62512
Subject: Re: How to protect fpga based design against cloning?
From: Austin Lesea <Austin.Lesea@xilinx.com>
Date: Fri, 31 Oct 2003 08:15:00 -0800
Links: << >>  << T >>  << A >>
Nial,

You will not damage or over-charge the battery if you follow the
manufacturer's recommendations.

It is amazing how few engineers have even looked at, read, and used the data
sheets for a battery.

It is a component just like any other:  study it, learn its characteristics,
and then design it in.

You can blow out any component you want, caps, resistors, transistors, and
batteries, too if you do not read the datasheet.

Go look thru the design guides for the battery chemistry you want to use:
you will be glad you did.

Austin

Nial Stewart wrote:

> Erik Widding <widding@birger.com> wrote in message
> news:Racob.28628$294.15708@nwrdny03.gnilink.net...
> > We have been using a rechargeable lithium battery ($1.25 / 4mAh)
> > that is soldered directly to the PCB.  Add a low leakage diode and
> > a current limiting resistor for a recharger circuit and you do not
> > need to worry about replacement.  The only requirement is that the
> > board be powered up for a few hours every couple of years.  The
> > only issue that we have with this is that the batteries can't tolerate
> > the oven, and must be hand soldered.
> > Erik Widding.
>
> Erik, are you not in danger of over charging the battery?
>
> Don't phone batterys degrade fairly quickly if they're
> constantly trickle charged rather than being fully
> discharged then re-charged? Are the characteristics
> of your batterys different?
> Have you done any long term tests with this set up?
>
> Are your boards only likely to be powered up every now and
> then to stop this happening?
>
> I'm not trying to pick holes, just interested.
>
> Nial


Article: 62513
Subject: Essential hazards in CPLD's?
From: Preben Mikael Bohn <nospam@nospam.com>
Date: Fri, 31 Oct 2003 17:58:19 +0100
Links: << >>  << T >>  << A >>
Hi NG, are essential hazards avoided in CPLD-designs?

If for example I were to design a counter with a subsequent comparator 
in a CPLD, would I be sure that I got no glitches in the output from my 
comparator? Or would I have to filter the output before I used it in 
other part of the CPLD?

Best regards Preben


Article: 62514
Subject: Re: Essential hazards in CPLD's?
From: Mike Treseler <mike.treseler@flukenetworks.com>
Date: Fri, 31 Oct 2003 09:45:10 -0800
Links: << >>  << T >>  << A >>
Preben Mikael Bohn wrote:
> Hi NG, are essential hazards avoided in CPLD-designs?

They can be.

> If for example I were to design a counter with a subsequent comparator 
> in a CPLD, would I be sure that I got no glitches in the output from my 
> comparator? 

If you use synchronous design and do
static timing analysis, your outputs
won't glitch.

  -- Mike Treseler



Article: 62515
Subject: Re: Essential hazards in CPLD's?
From: Peter Alfke <peter@xilinx.com>
Date: Fri, 31 Oct 2003 09:50:07 -0800
Links: << >>  << T >>  << A >>
If you implement a binary counter and compare its output against another
binary value, there is no way on this earth to avoid combinatorial
glitches, no matter what technology or circuit design you use.  The
classical solution to this problem is to Gray-code the counter, so that
only one bit changes at a time.
Of course, you can also re-synchronize the comparator output and thus
suppress all combinatorial glitches...

Peter Alfke
========================================
Preben Mikael Bohn wrote:
> 
> Hi NG, are essential hazards avoided in CPLD-designs?
> 
> If for example I were to design a counter with a subsequent comparator
> in a CPLD, would I be sure that I got no glitches in the output from my
> comparator? Or would I have to filter the output before I used it in
> other part of the CPLD?
> 
> Best regards Preben

Article: 62516
Subject: Re: How to protect fpga based design against cloning?
From: "Glen Herrmannsfeldt" <gah@ugcs.caltech.edu>
Date: Fri, 31 Oct 2003 18:01:05 GMT
Links: << >>  << T >>  << A >>

"Austin Lesea" <Austin.Lesea@xilinx.com> wrote in message
news:3FA28A84.AAA1FE7A@xilinx.com...
> Nial,
>
> You will not damage or over-charge the battery if you follow the
> manufacturer's recommendations.
>
> It is amazing how few engineers have even looked at, read, and used the
data
> sheets for a battery.
>
> It is a component just like any other:  study it, learn its
characteristics,
> and then design it in.

I don't know the details, but Li ion is very different from NiCd.  Some
years ago all we had was NiCd, charged at 0.1C (take the milliamp-hour
rating, divide by 10, and charge at that many milliamps) for 14 hours.  That
was all anyone needed to know.

Now there are so many different battery chemistries, each with its own
charging characteristics and discharge characteristics.

-- glen



Article: 62517
Subject: Microblaze & ucLinux for XSV800
From: jmorenoz@terra.es (Josan)
Date: 31 Oct 2003 10:06:49 -0800
Links: << >>  << T >>  << A >>
I am looking for Microblaze ports in Xess XSV800 (www.xess.com) board
platform and a ucLinux (www.uclinux.org)  tutorial/experience in that board.
Thanks in advance.

Article: 62518
Subject: Are there more I/O pins than I/O blocks?
From: "kryten_droid" <kryten_droid@ntlworld.com>
Date: Fri, 31 Oct 2003 18:12:08 -0000
Links: << >>  << T >>  << A >>
I have an XC2S300E-pq08 which the data sheet says has 146 user I/O max.

However, the PAR says:

   Number of bonded IOBs:           144 out of    142  101%

There are still quite a few I/O pins left on my dev board.

I'm puzzled that it seems I can use any I/O pins but
less than all of them at the same time.

Is this the case or am I missing something fundamental?

Thanks in advance,

K.


Command Line   : map -p XC2S300E-pq208-6 -cm area -k 4 -c 100 -tx off
Target Device  : x2s300e
Target Package : pq208
Target Speed   : -6
Mapper Version : spartan2e -- $Revision: 1.58 $
Mapped Date    : Fri Oct 31 01:02:35 2003



Article: 62519
Subject: Re: Minimalist RS232 on Cyclone
From: hmurray@suespammers.org (Hal Murray)
Date: Fri, 31 Oct 2003 18:15:45 -0000
Links: << >>  << T >>  << A >>
>It would be nice to have a terminal-like behaviour from the Cyclone
>(and enter commands like "R13:240" to set register 13 to value 240). A
>terse (and technically simpler) command structure such as "0af8[enter]"
>meaning: "set register 0x0a to 0xf8" would be perfectly adequate for
>the time being.

That's not really terse.  You have to do the ascii/hex
to binary conversions.  Of course, that's just software.

If you use 8 bits with parity, you really have 9 bits.  You
could use the 9th bit as a command flag.  You could probably
do it all in hardware if that was interesting.  Might be handy
in the real early bringup stages.  If you have fewer than 256
registers you could use a bit (in command mode) as a read/write
flag and get it to send back register contents.

-- 
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: 62520
Subject: Re: Wishbone interface, FPGA newbie and advice
From: "Andras Tantos" <andras_tantos@tantos.yahoo.com>
Date: Fri, 31 Oct 2003 10:24:51 -0800
Links: << >>  << T >>  << A >>
Hi!

> To this end I've started attempting to simulate/develop a 68HC11 to
Wishbone
> interface (the idea being to graft an FPGA onto the databus of an existing
> HC11 produt) and I'd like some advice on what I've got so far. Not knowing
> much about data busses typically utilised within FPGA designs etc Wishbone
> looked like a good idea, especially when sites such as www.opencores.org
> appear to support it for their freely available cores.

I've done a similar project before: I have an async master to WB interface.
It's (as far as I can tell) working but it's not an easy task to do.

> My VHDL source for a wishbone master which has an HC11 data bus interface
on
> the other end is shown below. It's a slightly "confused" master, in that
> it's not as seperted out as the Wishbone specification details, i.e. it's
> got elements of an InterCon and SysCon module thrown in as well... Sorry
> about the poor coding standard (the Wishbone/HC11 bus signals are named
> using different conventions etc), I just thought I'd "throw it out there"
> rather than worrying about tiding it up first...
>
> entity hc11_wb_master is
> port (
>         -- Wishbone bus interface
>         WB_CLK_O : out std_logic; -- Clock
>         WB_RST_O : out std_logic; -- Reset
>         WB_ADR_O : out std_logic_vector(1 downto 0);
>         WB_DAT_I : in  std_logic_vector(7 downto 0);
>         WB_DAT_O : out std_logic_vector(7 downto 0);
>         WB_WE_O  : out std_logic; -- Write enable
>         WB_STB_O : out std_logic; -- Strobe
>         -- HC11 bus interface
>         e_clk : in std_logic;
>         reset : in std_logic;
>         cs : in std_logic; -- chip select for FPGA (HC11's CS2)
>         rw : in std_logic; -- read/write* strobe
>         addr : in std_logic_vector(10 downto 0);
>         data : inout std_logic_vector(7 downto 0);
> );
> end hc11_wb_master;
>
> architecture Behavioral of hc11_wb_master is
>         signal write_cycle : std_logic;
> begin
>         WB_CLK_O <= not e_clk; // HC11 clocks on the opposite edge to
Wishbone
>
>         -- Asserted if the HC11 bus cycle is a memory write
>         write_cycle = not(rw);
>
>         process (e_clk)
>         begin
>                 if (falling_edge(e_clk)) then
>                         WB_RST_O <= not reset; -- HC11 is active low reset
>
>                         data <= "ZZZZZZZZ";
>
>                         if (reset = '0') then
>                                 -- Reset condition - hold wishbone bus
inactive
>                                 WB_STB_O <= '0';
>                         else
>                                 -- Translate the various control signals
from HC11 to wishbone
>                                 WB_WE_O <= write_cycle;
>                                 WB_ADR_O <= addr(1 downto 0);
>                                 WB_STB_O <= cs;
>
>                                 -- Transfer data in the correct
direction...
>                                 if (cs = '1') then
>                                         if (write_cycle = '1') then
>                                                 WB_DAT_O <= data;
>                                         else
>                                                 data <= WB_DAT_I;
>                                         end if;
>                                 end if;
>                         end if;
>                 end if;
>         end process;
> end Behavioral;

There are some problems with this design:
- You don't handle error and retry requests from the WB side and don't
generate WB_CYC_O.
- There's no wait-state generation. You don't detect any wait-state requests
from the WB side and don't generate wait-states for your async master
(HC11). That can cause problems if you communicate with slow devices (for
example with a FIFO which, when full, generated waits)
- More importantly, your logic is all wrong. The WB bus is syncronous and
have this feature: a cycle starts by the master asserts WB_CYC_O (which you
don't generate to begin with) and ends when the target asserts WB_ACK_I (or
WB_ERR_I or WB_RTY_I). After that, at the next clock, if WB_CYC_O remains
active, it starts a new cycle. So your logic can generate multiple writes or
reads to/from the same location depending on the timing. That can cause
serious problems with transmit or receive FIFOs even in your case of the
serial controller. (If not, than that's a bug in the serial controller...)
Even more problematic is that this 'feature' combined with the lack of
proper wait-state handling can cause invalid data to be written to any
location and invalid data to be read from any location that are not
zero-wait-state.

I'm sorry, I've been down that road too, so I know :-(...

> Now there are various things that with my present dismal knowledge I am
not
> sure about. It seems it simulates ok..., I have a testbench where I've
> attached it to a UART module from www.opencores.org and I can see in the
> resultant simulation a write to the UART and the resultant activity on the
> UART's TX pin etc etc...
>
> However I have questions...
>
> For example the line
>
>         WB_CLK_O <= not e_clk;
>
> I utilised to invert the polarity of the clock between the two busses. My
> idea is to clock the wishbone bus via the HC11's E-clock to keep the
> wishbone bus transactions synchronous to the HC11's bus operations (seems
> logical to me). The problem is the HC11 reads/writes on the falling edge,
> while the wishbone interface does it on the rising edge... But isn't this
> inversion I've done inheriently evil or "bad design"?
>
> I have read discussions about the problems of gated clocks causing
problems
> with respect to routing and propagation delays. Isn't this the same sort
of
> issue? Everything hanging off the wishbone interface is going to be
clocked
> via WB_CLK_O which although not "gated", it's going through a minimal
> amount of logic from the actual clock signal entering the FPGA. Perhaps
> it's not a concern? Perhaps the systhensis tools are smart enough to mean
I
> don't have to worry about it..

I don't think it is an issue.

> I am also interested with respect to how I've attempted to implement the
> tri-stateable interface for the 8bit data port to the HC11's bus. Am I
> heading in the right direction in this respect?

Tri-state seems to be OK.

> Another thing thats going to show how completely clueless I am... is with
> respect to setup/hold timing. The logic I've implemented above (to my
> knoweldge at least) will latch the wishbone data onto the HC11's databus
on
> the falling edge of the eclock (assuming the HC11 initiates a read cycle
of
> course).. but this is also the same time that I'm latching the incomming
> address signals and obviously it's not going to have time to propogate
> through the logic, cause the wishbone slave to dump the correct data onto
> the databus and be latched... What am I doing wrong here, and in what way
> would I go about starting to make changes to correct this... I assume the
> only reason it's simulated fine so far is that I've done my simulation
> before the synthesis stage, and hence there's no "timing/routing" related
> info in the simulation. Am I correct in my understanding here?

Setup-hold times are device (and place-and-route) specific, so I can't
answer that without knowing more about your target architecture. The FPGA
and uP datasheet should answer most of your questions. In general FPGAs are
much faster than an HC11 so you might have setup problems on the HC11 side
but others should work fine.

I'll paste my circuit here for reference. Note, that it does not use the
CPUs clock to sync up the WB part, so it can run on much higher clock speeds
(in my case 70MHz). That can help meet the timing (with proper wait-state
handling of course) but can cause all kinds of meta-stability issues, I'm
not sure I've addressed properly either. Please note that I'm not a
professional either, I'm not claiming my design to be nice or flowless. It
at least worked in a real HW... Any comment are welcome.

Andras Tantos

================================================================

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity wb_async_master is
    generic (
        dat_width: positive := 16;
        adr_width: positive := 20;
        ab_rd_delay: positive := 1
    );
    port (
        wb_clk_i: in std_logic;
        wb_rst_i: in std_logic := '0';

        -- interface to wb slave devices
        wb_adr_o: out std_logic_vector (adr_width-1 downto 0);
        wb_sel_o: out std_logic_vector ((dat_width/8)-1 downto 0);
        wb_dat_i: in std_logic_vector (dat_width-1 downto 0);
        wb_dat_o: out std_logic_vector (dat_width-1 downto 0);
        wb_cyc_o: out std_logic;
        wb_ack_i: in std_logic;
        wb_err_i: in std_logic := '-';
        wb_rty_i: in std_logic := '-';
        wb_we_o: out std_logic;
        wb_stb_o: out std_logic;

        -- interface to the asyncronous master device
        ab_dat: inout std_logic_vector (dat_width-1 downto 0) := (others =>
'Z');
        ab_adr: in std_logic_vector (adr_width-1 downto 0) := (others =>
'U');
        ab_rd_n: in std_logic := '1';
        ab_wr_n: in std_logic := '1';
        ab_ce_n: in std_logic := '1';
        ab_byteen_n: in std_logic_vector ((dat_width/8)-1 downto 0);
        ab_wait_n: out std_logic; -- wait-state request 'open-drain' output
        ab_waiths: out std_logic  -- handshake-type totem-pole output

    );
end wb_async_master;

architecture xilinx of wb_async_master is
    constant ab_wr_delay: positive := 2;
    -- delay lines for rd/wr edge detection
    signal rd_delay_rst: std_logic;
    signal rd_delay: std_logic_vector(ab_rd_delay downto 0);
    signal wr_delay: std_logic_vector(ab_wr_delay downto 0);
    -- one-cycle long pulses upon rd/wr edges
    signal ab_wr_pulse: std_logic;
    signal ab_rd_pulse: std_logic;
    -- one-cycle long pulse to latch address for writes
    signal ab_wr_latch_pulse: std_logic;
    -- WB data input register
    signal wb_dat_reg: std_logic_vector (dat_width-1 downto 0);
    -- internal copies of WB signals for feedback
    signal wb_cyc_l: std_logic;
    signal wb_we_l: std_logic;
    -- Comb. logic for active cycles
    signal ab_rd: std_logic;
    signal ab_wr: std_logic;
    signal ab_active: std_logic;
    -- internal copies of wait signals for feedback
    signal ab_wait_n_rst: std_logic;
    signal ab_wait_n_l: std_logic;
    signal ab_waiths_l: std_logic;
    signal ab_wait_n_l_delayed: std_logic;
    signal ab_waiths_l_delayed: std_logic;
    -- active when WB slave terminates the cycle (for any reason)
    signal wb_ack: std_logic;
    -- signals a scheduled or commencing posted write
    signal write_in_progress: std_logic;
begin
    ab_rd <= (not ab_ce_n) and (not ab_rd_n) and ab_wr_n;
    ab_wr <= (not ab_ce_n) and (not ab_wr_n) and ab_rd_n;
    ab_active <= not ab_ce_n;

    wb_ack <= wb_cyc_l and (wb_ack_i or wb_err_i or wb_rty_i);

    write_in_progress_gen: process
    begin
        if (wb_rst_i = '1') then
            write_in_progress <= '0';
        end if;
        wait until wb_clk_i'EVENT and wb_clk_i = '1';
        if ab_wr = '0' and wr_delay(wr_delay'HIGH) = '1' then
            write_in_progress <= '1';
        end if;
        if wb_ack = '1' then
            write_in_progress <= '0';
        end if;
    end process;

    -- Registers addr/data lines.
    reg_bus_lines: process
    begin
        if (wb_rst_i = '1') then
            wb_adr_o <= (others => '-');
            wb_sel_o <= (others => '-');
            wb_dat_o <= (others => '-');
            wb_dat_reg <= (others => '0');
        end if;
        wait until wb_clk_i'EVENT and wb_clk_i = '1';
        -- Store and sycnronize data and address lines if no (posted) write
        -- is in progress and there is an active asyncronous bus cycle.
        -- We store addresses for reads at the same time we sample the data
so setup and hold
        -- times are the same.
        if (ab_wr = '1' or ab_rd_pulse = '1') and (write_in_progress = '0'
or wb_ack = '1') then
            wb_adr_o <= ab_adr;
            for i in wb_sel_o'RANGE loop
                wb_sel_o(i) <= not ab_byteen_n(i);
            end loop;
        end if;
        if (ab_wr = '1') and (write_in_progress = '0' or wb_ack = '1') then
            wb_dat_o <= ab_dat;
        end if;

        -- en-register data input at the end of a read cycle
        if wb_ack = '1' then
            if wb_we_l = '0' then
                -- read cycle completed, store the result
                wb_dat_reg <= wb_dat_i;
            end if;
        end if;
    end process;

    -- Registers asycn bus control lines for sync edge detection.
    async_bus_wr_ctrl : process(wb_rst_i,wb_clk_i)
    begin
        if (wb_rst_i = '1') then
            wr_delay <= (others => '0');
        elsif wb_clk_i'EVENT and wb_clk_i = '0' then
            -- delayed signals will be used in edge-detection
            for i in wr_delay'HIGH downto 1 loop
                wr_delay(i) <= wr_delay(i-1);-- and ab_rd;
            end loop;
            wr_delay(0) <= ab_wr;
        end if;
    end process;

    rd_delay_rst <= wb_rst_i or not ab_rd;
    async_bus_rd_ctrl : process(rd_delay_rst,wb_clk_i)
    begin
        if (rd_delay_rst = '1') then
            rd_delay <= (others => '0');
        -- Post-layout simulation shows glitches on the output that violates
setup times.
        -- Clock on the other edge to solve this issue
        elsif wb_clk_i'EVENT and wb_clk_i = '0' then
            -- a sync-reset shift-register to delay read signal
            for i in rd_delay'HIGH downto 1 loop
                rd_delay(i) <= rd_delay(i-1) and ab_rd;
            end loop;
            if (wb_cyc_l = '1') then
                rd_delay(0) <= rd_delay(0);
            else
                rd_delay(0) <= ab_rd and not write_in_progress;
            end if;
        end if;
    end process;
    -- will be one for one cycle at the proper end of the async cycle
    ab_wr_pulse       <=     wr_delay(wr_delay'HIGH) and not
wr_delay(wr_delay'HIGH-1);
    ab_wr_latch_pulse <= not wr_delay(wr_delay'HIGH) and
wr_delay(wr_delay'HIGH-1);
    ab_rd_pulse       <= not rd_delay(rd_delay'HIGH) and
rd_delay(rd_delay'HIGH-1);

    -- Generates WishBone control signals
    wb_ctrl_gen: process
    begin
        if (wb_rst_i = '1') then
            wb_stb_o <= '0';
            wb_cyc_l <= '0';
            wb_we_l <= '0';
        end if;
        wait until wb_clk_i'EVENT and wb_clk_i = '1';
        if wb_ack = '1' and ab_wr_pulse = '0' and ab_rd_pulse = '0' then
            wb_stb_o <= '0';
            wb_cyc_l <= '0';
            wb_we_l <= '0';
        end if;

        if ab_wr_pulse = '1' or ab_rd_pulse = '1' then
            wb_stb_o <= '1';
            wb_cyc_l <= '1';
            wb_we_l <= ab_wr_pulse;
        end if;
    end process;

    -- Generate asyncronous wait signal
    ab_wait_n_rst <= wb_rst_i or not ab_active;
    a_wait_n_gen: process(ab_wait_n_rst, wb_clk_i)
    begin
        if (ab_wait_n_rst = '1') then
            ab_wait_n_l <= '1';
        elsif wb_clk_i'EVENT and wb_clk_i = '1' then
            -- At the beginning of a read cycle, move wait low
            if ab_wait_n_l = '1' and ab_rd = '1' and rd_delay(0) = '0' then
                ab_wait_n_l <= '0';
            end if;
            -- At the beginning of any cycle, if the ss-master part is busy,
wait
            if (ab_wait_n_l = '1' and (ab_rd = '1' or ab_wr = '1')) and
               (wb_cyc_l = '1')
            then
                ab_wait_n_l <= '0';
            end if;
            -- At the end of an ss-master cycle, remove wait
            if wb_ack = '1' and (
               (wb_we_l = '1' and ab_rd = '0') or -- no pending read
               wb_we_l = '0') -- was a read operation
            then
                ab_wait_n_l <= '1';
            end if;
        end if;
    end process;

    -- Generate handshake-type wait signal
    a_waiths_gen: process(wb_rst_i,wb_clk_i)
    begin
        if (wb_rst_i = '1') then
            ab_waiths_l <= '0';
        elsif wb_clk_i'EVENT and wb_clk_i = '1' then
            -- Write handling
            if wb_cyc_l = '0' and ab_wr = '1' then
                ab_waiths_l <= '1';
            end if;
            if wb_ack = '1' and ab_waiths_l = '1' then
                ab_waiths_l <= '0';
            end if;

            -- Read handling
            if wb_ack = '1' and ab_rd = '1' then
                ab_waiths_l <= '1';
            end if;

            if wb_cyc_l = '0' and ab_rd = '0' and ab_wr = '0' and
wr_delay(wr_delay'HIGH) = '0'
            then
                ab_waiths_l <= '0';
            end if;
        end if;
    end process;

    -- connect local signals to external pins
    wb_cyc_o <= wb_cyc_l;
    wb_we_o <= wb_we_l;
    ab_dat <= wb_dat_reg when ab_rd = '1' else (others => 'Z');

    -- On post-layout simulation it turned out that the data is not stable
upon
    -- the raising edge of these wait signals. So we delay the raising edge
with one-half clock
    delay_wait: process(wb_clk_i)
    begin
        if wb_clk_i'EVENT and wb_clk_i = '0' then
            ab_wait_n_l_delayed <= ab_wait_n_l;
            ab_waiths_l_delayed <= ab_waiths_l;
        end if;
    end process;
    ab_wait_n <= ab_wait_n_l and ab_wait_n_l_delayed;
    ab_waiths <= ab_waiths_l and ab_waiths_l_delayed;
end xilinx;




Article: 62521
Subject: Re: How to protect fpga based design against cloning?
From: Austin Lesea <Austin.Lesea@xilinx.com>
Date: Fri, 31 Oct 2003 10:50:58 -0800
Links: << >>  << T >>  << A >>
Glen,

http://www.panasonic.com/industrial/battery/oem/images/pdf/Panasonic_LiIon_Charging.pdf

As I said, just look it up.

Austin

Glen Herrmannsfeldt wrote:

> "Austin Lesea" <Austin.Lesea@xilinx.com> wrote in message
> news:3FA28A84.AAA1FE7A@xilinx.com...
> > Nial,
> >
> > You will not damage or over-charge the battery if you follow the
> > manufacturer's recommendations.
> >
> > It is amazing how few engineers have even looked at, read, and used the
> data
> > sheets for a battery.
> >
> > It is a component just like any other:  study it, learn its
> characteristics,
> > and then design it in.
>
> I don't know the details, but Li ion is very different from NiCd.  Some
> years ago all we had was NiCd, charged at 0.1C (take the milliamp-hour
> rating, divide by 10, and charge at that many milliamps) for 14 hours.  That
> was all anyone needed to know.
>
> Now there are so many different battery chemistries, each with its own
> charging characteristics and discharge characteristics.
>
> -- glen


Article: 62522
Subject: Re: Wishbone interface, FPGA newbie and advice
From: Mike Treseler <mike.treseler@flukenetworks.com>
Date: Fri, 31 Oct 2003 10:53:56 -0800
Links: << >>  << T >>  << A >>
Christopher Fairbairn wrote:

> For example the line
> 
>         WB_CLK_O <= not e_clk;
> 
> The problem is the HC11 reads/writes on the falling edge, 
> while the wishbone interface does it on the rising edge... But isn't this 
> inversion I've done inheriently evil or "bad design"?

Consider synchronizing the interface to a faster fpga clock and generate
your own synchronous read and write strobes in just the right places.

> Perhaps the systhensis tools are smart enough to mean I 
> don't have to worry about it..

They aren't.

> 
> I am also interested with respect to how I've attempted to implement the 
> tri-stateable interface for the 8bit data port to the HC11's bus. Am I 
> heading in the right direction in this respect?

Looks reasonable for a first cut.
You have to compare your sim waveforms to the H11 and wishbone data sheets.
Consider making an oe signal to drive data Z between cycles.

I don't know the interfaces, but
WB_STB_O <= cs;
is suspect.

Normally cs lasts for multiple ticks,
the write strobe is one tick, somewhere in the middle.

> One thing this project has highlighted is the need for me to learn more 
> about writing better testbenches... I totally agree with the comments I've 
> seen in this newgroup about newbies starting out with a simulator and no 
> physical hardware. I sure wish I had started out that way :-)

It's not too late.

 > PS: Can anyone suggest a good book on Simulation, in particular with
 > relation to VHDL? I've identified this as an area where I'm particular
 > weak, and as an area where improvements would make progress a bit smoother.

You already know how to run the simulator,so get a copy of
Ashenden's guide to vhdl as a language reference, and get busy.
Consider adopting a synchronous testbench style:
http://groups.google.com/groups?q=oe_demo

> For example how do you go about reading in stimulius from a file so I don't 
> have to hardcode in bus transactions in my testbench, and can instead 
> simply read them in from a file containing "read 0x8000, write 0x7000" or 
> the equivalent... 

Use vhdl procedures to do this.
Using an intermediate text file makes it harder, not easier.

      -- Mike Treseler


Article: 62523
Subject: Re: Are there more I/O pins than I/O blocks?
From: "Andras Tantos" <andras_tantos@tantos.yahoo.com>
Date: Fri, 31 Oct 2003 11:09:28 -0800
Links: << >>  << T >>  << A >>
"kryten_droid" <kryten_droid@ntlworld.com> wrote in message
news:DHxob.1172$yH4.711@newsfep1-gui.server.ntli.net...
> I have an XC2S300E-pq08 which the data sheet says has 146 user I/O max.
>
> However, the PAR says:
>
>    Number of bonded IOBs:           144 out of    142  101%
>
> There are still quite a few I/O pins left on my dev board.
>
> I'm puzzled that it seems I can use any I/O pins but
> less than all of them at the same time.
>
> Is this the case or am I missing something fundamental?
>
> Thanks in advance,

There are four dedicated clock pins.

Regrads,
Andras Tantos



Article: 62524
Subject: Floating Point support
From: "Ed J" <jed@privacy.net>
Date: Fri, 31 Oct 2003 19:13:15 GMT
Links: << >>  << T >>  << A >>
I writing VHDL for a Xilinx Virtex-II Pro FPGA application, and software for
its embedded PowerPC.  The PowerPC doesn't have hardware floating point, and
floating point emulation in software is too slow for my purpose.  So, I'm
looking for a way to add floating point in the FPGA fabric through VHDL or
black boxes.  I need IEEE floating point operations such as add, subtract,
multiply, divide.  I also need some math functions like sine, cosine, square
root, etc.

Is there a (free) standard package in VHDL that I can use for this?  Third
party support?

I'm a newbie on a budget, so I'm looking for the cheapest, quickest
solution.

Any advice would be appreciated.

Ed.





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