FPGA Central - World's 1st FPGA / CPLD Portal

FPGA Central

World's 1st FPGA Portal

 

Go Back   FPGA Groups > NewsGroup > FPGA

FPGA comp.arch.fpga newsgroup (usenet)

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 11-13-2003, 11:21 PM
Mark van de Belt
Guest
 
Posts: n/a
Default Writing Blockrams in VHDL

Hello,

I need to use a blockram as a FIFO to port data from one clock domain to
another. I created a blockram with help of the language template. This
blockram is recognised by the XST synthesiser. The dual clock is also
recognised after a small modification. The next problem is to describe a
databus width conversion. There is a 32 bit processor bus on one side and a
1 bit serial output on the other side. This is no problem with a library
element or a blockram instance from the coregen. I don't like the coregen
modules because it is not easy to back-up your sources or transport them to
another PC. The library instances make the code less portable. Is there a
way to describe the width conversion in VHDL without creating extra logic
outside of the blockram?

Thanks,
Mark


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.538 / Virus Database: 333 - Release Date: 10-11-2003


Reply With Quote
  #2 (permalink)  
Old 11-13-2003, 11:48 PM
Peter Alfke
Guest
 
Posts: n/a
Default Re: Writing Blockrams in VHDL

Mark, I cannot help you with the VHDL, but recently having investigated
a similar design, here are some issues:

Asynchronous clocks mean that Empty and Full detection must cross the
clock domain boundary, and simple comparators are bound to fail, unless
you use Gray-coded addresses.
The dual-width design, when going from narrow to wide, must deal with
the issue of a partially assembled word still meaning "empty".
All this becomes tricky at >200 MHz, but should be manageable at lower frequencies.
Dual-clock FIFOs implemented in a dual-ported BlockRAM are trivial,
until you have to detect Empty (Full is usually an avoidable situation
that allows some cheating, but Empty can be tricky.)
Peter Alfke

Mark van de Belt wrote:
>
> Hello,
>
> I need to use a blockram as a FIFO to port data from one clock domain to
> another. I created a blockram with help of the language template. This
> blockram is recognised by the XST synthesiser. The dual clock is also
> recognised after a small modification. The next problem is to describe a
> databus width conversion. There is a 32 bit processor bus on one side and a
> 1 bit serial output on the other side. This is no problem with a library
> element or a blockram instance from the coregen. I don't like the coregen
> modules because it is not easy to back-up your sources or transport them to
> another PC. The library instances make the code less portable. Is there a
> way to describe the width conversion in VHDL without creating extra logic
> outside of the blockram?
>
> Thanks,
> Mark
>
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.538 / Virus Database: 333 - Release Date: 10-11-2003

Reply With Quote
  #3 (permalink)  
Old 11-14-2003, 09:31 PM
Mark van de Belt
Guest
 
Posts: n/a
Default Re: Writing Blockrams in VHDL

Thanks Peter for the warnings.
We are building a FIFO with normal binary counters, but the empty and full
signals are not based on bytes but on 64 byte packets. Therefore there is
enough time to get a reliable empty and full indication in both clock
domains. We also have the advantage that our clocks are 'slow' (40 - 50
MHz). I have build these FIFO's with success before in other projects, but
always with the aid of the core generator or library elements (the latter
code is unreadable because 4 - 6 blockrams are instantiated for one
blockram)

Mark

"Peter Alfke" <[email protected]> schreef in bericht
news:[email protected]
> Mark, I cannot help you with the VHDL, but recently having investigated
> a similar design, here are some issues:
>
> Asynchronous clocks mean that Empty and Full detection must cross the
> clock domain boundary, and simple comparators are bound to fail, unless
> you use Gray-coded addresses.
> The dual-width design, when going from narrow to wide, must deal with
> the issue of a partially assembled word still meaning "empty".
> All this becomes tricky at >200 MHz, but should be manageable at lower

frequencies.
> Dual-clock FIFOs implemented in a dual-ported BlockRAM are trivial,
> until you have to detect Empty (Full is usually an avoidable situation
> that allows some cheating, but Empty can be tricky.)
> Peter Alfke
>
> Mark van de Belt wrote:
> >
> > Hello,
> >
> > I need to use a blockram as a FIFO to port data from one clock domain to
> > another. I created a blockram with help of the language template. This
> > blockram is recognised by the XST synthesiser. The dual clock is also
> > recognised after a small modification. The next problem is to describe a
> > databus width conversion. There is a 32 bit processor bus on one side

and a
> > 1 bit serial output on the other side. This is no problem with a library
> > element or a blockram instance from the coregen. I don't like the

coregen
> > modules because it is not easy to back-up your sources or transport them

to
> > another PC. The library instances make the code less portable. Is there

a
> > way to describe the width conversion in VHDL without creating extra

logic
> > outside of the blockram?
> >
> > Thanks,
> > Mark
> >
> > ---
> > Outgoing mail is certified Virus Free.
> > Checked by AVG anti-virus system (http://www.grisoft.com).
> > Version: 6.0.538 / Virus Database: 333 - Release Date: 10-11-2003



---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.538 / Virus Database: 333 - Release Date: 10-11-2003


Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Testbench writing Smith Verilog 3 04-07-2006 03:20 PM
writing a testbench Smith Verilog 4 03-27-2006 04:32 AM
writing 0's and 1's Sridhar_Gadda Verilog 2 02-10-2005 03:56 PM


All times are GMT +1. The time now is 08:36 AM.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright 2008 @ FPGA Central. All rights reserved