Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8606597
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 12, 20262026-06-12T03:08:01+00:00 2026-06-12T03:08:01+00:00

I have two processes A and B, each with its own clock input. The

  • 0

I have two processes A and B, each with its own clock input.

The clock frequencies are a little different, and therefore not synchronized.

Process A samples data from an IC, this data needs to be passed to process B, which then needs to write this data to another IC.

My current solution is using some simple handshake signals between process A and B.
The memory has been declared as distributed RAM (128Bytes as an array of std_logic_vector(7 downto 0)) inside process A (not block memory).

I’m using a Spartan 3AN from Xilinx and the ISE Webpack.

But is this the right way to do it?

I read somewhere that the Spartan 3 has dual-port block memory supporting two clocks, so would this be more correct?

The reason I’m asking, is because my design behaves unpredictable, and in cases like this I just hate magic. 🙂

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-12T03:08:03+00:00Added an answer on June 12, 2026 at 3:08 am

    Except for very specific exceptional cases, the only correct way to move data between two independent clock domains is to use an asynchronous FIFO (also more correctly called a multi-rate FIFO).

    In almost all FPGAs (including the Xilinx parts you are using), you can use FIFOs created by the vendor — in Xilinx’s case, you do this by generating yourself a FIFO using the CoreGen tool.

    You can also construct such a FIFO yourself using a dual-port RAM and appropriate handshaking logic, but like most things, this is not something you ought to go reinvent on your own unless you have a very good reason to do so.

    You also might consider whether your design really needs to have multiple clock domains. Sometimes it’s absolutely necessary, but that’s much, MUCH less often than most people just starting out believe. For instance, even if you need logic that runs at multiple rates, you can often handle this by using a single clock and appropriately generated synchronous clock enables.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have two separate processes, each with it's own database connection, inserting product records
I have two processes - a user process and a root-level LaunchDaemon. I'd like
I have two ASP.NET sites (they can not run in the same process) and
I have Process objects that are monitored from two different views. A Windows.Forms.ListView (actually
I have an array list of Fleets (Each fleet will hold its own list
I have a three step form where each step posts to its own action.
I have two processes which access to the same physical memory(GPIO data addr). So
I have two processes: Writes to two tables every second (ish) Reads from said
I have two threads, one thread processes a queue and the other thread adds
I have an application that consists of two processes (let's call them A and

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.