CF Interleaver with 2 Interleaving Memories

CF Interleaver with 2 Interleaving Memories


Category: Memory Core

Created: April 01, 2003

Updated: January 27, 2020

Other project properties

Development Status: Stable

WishBone compliant: No

WishBone version: n/a

License: n/a


Cores are generated from Confluence; a modern logic design language. Confluence is a simple, yet highly expressive language that compiles into Verilog, VHDL, and C. See Confluent for more info. Memory interleavers are common components often found in signal processing applications. They are useful for buffering and reordering data and typically form the separation between design stages. Interleavers can be used for: - Transposing Images for Image Processing - Buffering Noncontinuous Input Data - Data Shuffling Between FFT Ranks


The memory interleaver consists of 2 interleaving memories: one memory loads input data, while the other dumps output data -- On a swap signal the 2 memories switch roles.

The interface to an interleaver is:
- Inputs
- clock : Main clock.
- swap : Pulse to swap memories (input become output, output becomes input).
- write : Write enable to input memory.
- addr : Address to input memory.
- data : Data to input memory.
- Outputs
- sync_primary : Pulse to indicate an interleaver swap.
- sync_secondary : Pulse to indicate address 0 is output.
- data : Data dumped from output memory.

Input data to the interleaver is addressable. Output data is dumped one memory location after another starting at address 0.

Each file is stand-alone and represents a specific configuration.
The 2 configuration parameters are:
- Address Width (Memory Depth)
- Data Width

The configuration parameters are coded in the file names: cf_interleaver_8_32.v
- 8 : Address Width
- 32 : Data Width

Current configurations:
- cf_interleaver_6_8
- cf_interleaver_7_8
- cf_interleaver_8_8
- cf_interleaver_9_8
- cf_interleaver_10_8
- cf_interleaver_11_8
- cf_interleaver_12_8
- cf_interleaver_6_16
- cf_interleaver_7_16
- cf_interleaver_8_16
- cf_interleaver_9_16
- cf_interleaver_10_16
- cf_interleaver_11_16
- cf_interleaver_12_16
- cf_interleaver_6_32
- cf_interleaver_7_32
- cf_interleaver_8_32
- cf_interleaver_9_32
- cf_interleaver_10_32
- cf_interleaver_11_32
- cf_interleaver_12_32
- cf_interleaver_6_64
- cf_interleaver_7_64
- cf_interleaver_8_64
- cf_interleaver_9_64
- cf_interleaver_10_64
- cf_interleaver_11_64
- cf_interleaver_12_64