Clock Domain Crossing Queue for Low Power Data Transfer
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing memory sub-systems face challenges in efficiently transferring data between different clock domains, as asynchronous FIFO solutions consume significant resources and power, which can be a constraint in gate count and power consumption.
Innovation Solution
A clock domain crossing queue is introduced, which includes two or more locations for storing information and uses indicators to manage pointers, reducing the number of gates and power consumption by optimizing data transfer between clock domains.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If asynchronous FIFO solutions are used to transfer data between clock domains, then data transfer capability is improved, but gate count and power consumption increase significantly
Solution Approach 1:
The queue is divided into multiple storage locations (first location, second location, etc.) that can be independently managed. Each location can store information independently, allowing the system to process and transfer data in segments between clock domains, reducing the complexity of managing a single large FIFO structure.
Solution Approach 2:
Different storage locations within the queue have specialized functions - some locations are optimized for receiving data from the first clock domain while others are optimized for transmitting data to the second clock domain. This local specialization allows efficient handling of clock domain crossing with reduced overall gate count.
2Productivity
If asynchronous FIFO solutions are used to transfer data between clock domains, then data transfer capability is improved, but power consumption increases
Solution Approach 1:
The queue operates using periodic clock cycles from two different clock domains, with data being transferred in discrete periods rather than continuously. This periodic operation allows the system to enter low-power states when no data transfer is occurring, significantly reducing overall power consumption while maintaining data transfer capability.
Solution Approach 2:
The queue efficiently manages data flow by discarding data that has been successfully transferred and recovering resources (storage locations, pointers, control signals) for reuse. This prevents unnecessary power consumption on already-transferred data while maintaining continuous transfer capability.
3Device complexity
If minimal space design is used for information storage in the queue, then resource usage is reduced, but data storage capacity is limited
Solution Approach 1:
The queue implements dynamic pointer management where the read pointer and write pointer can move independently through the storage locations. This dynamic approach allows the same physical storage locations to be reused in a circular fashion, effectively increasing storage capacity without adding more physical memory elements, thus reducing resource usage while maintaining adequate storage capacity.
Solution Approach 2:
The queue uses pointer arithmetic and modular addressing to access storage locations, effectively adding a dimensional aspect to the storage structure. Instead of requiring linear expansion of storage locations, the system uses pointer manipulation in the address space to achieve the effect of larger capacity with minimal physical resources.
Data Source
AI summary
Methods, systems, and devices for one or more clock domain crossing queues are described. A queue can receive, from a first clock domain, a first command to store data in the queue. The queue can store the data at a first location indicated by a first pointer. The queue can receive, from the first clock domain, a second command to cause the second clock domain to retrieve the data from the queue. The queue can generate, based on receiving the second command, a third command synchronized with a clock of the second clock domain and to cause the second clock domain to retrieve the data. The queue can retrieve the data from the first location in the queue indicated by a second pointer associated with retrieving data based at least in part on generating the third command. The queue can transmit, to the second clock domain, the data.


