blarney
Copyright(c) Matthew Naylor 2019
(c) Alexandre Joannou 2019-2021
LicenseMIT
Maintainermattfn@gmail.com
Stabilityexperimental
Safe HaskellSafe-Inferred

Blarney.Core.RAM

Description

 
Synopsis

Block RAM primitives

ram :: (Bits a, Bits d) => (a, d, Bit 1, Bit 1) -> d Source #

Uninitialised block RAM. (Read during write: reads "dont care")

ramInit :: (Bits a, Bits d) => String -> (a, d, Bit 1, Bit 1) -> d Source #

Initilaised block RAM (contents taken from hex file). (Read during write: reads "dont care")

ramDual :: (Bits a, Bits d) => (a, a, d, Bit 1, Bit 1) -> d Source #

Uninitialised simple dual-port block RAM. (Read during write: reads "dont care")

ramDualInit :: (Bits a, Bits d) => String -> (a, a, d, Bit 1, Bit 1) -> d Source #

Initialised simple dual-port block RAM. (Read during write: reads "dont care")

ramTrueDual :: (Bits a, Bits d) => (a, d, Bit 1, Bit 1) -> (a, d, Bit 1, Bit 1) -> (d, d) Source #

Uninitialised true dual-port block RAM. (Read during write: reads "dont care")

ramTrueDualInit :: (Bits a, Bits d) => String -> (a, d, Bit 1, Bit 1) -> (a, d, Bit 1, Bit 1) -> (d, d) Source #

Block RAM primitives with byte enables

ramBE :: KnownNat be => (Bit a, Bit (8 * be), Bit 1, Bit 1, Bit be) -> Bit (8 * be) Source #

Uninitialised block RAM. (Read during write: reads "dont care")

ramInitBE :: KnownNat be => String -> (Bit aw, Bit (8 * be), Bit 1, Bit 1, Bit be) -> Bit (8 * be) Source #

Initilaised block RAM (contents taken from hex file). (Read during write: reads "dont care")

ramDualBE :: KnownNat be => (Bit aw, Bit aw, Bit (8 * be), Bit 1, Bit 1, Bit be) -> Bit (8 * be) Source #

Uninitialised block RAM. (Read during write: reads "dont care")

ramDualInitBE :: KnownNat be => String -> (Bit aw, Bit aw, Bit (8 * be), Bit 1, Bit 1, Bit be) -> Bit (8 * be) Source #

Initialised block RAM (contents taken from hex file). (Read during write: reads "dont care")

ramTrueDualBE :: KnownNat be => (Bit a, Bit (8 * be), Bit 1, Bit 1, Bit be) -> (Bit a, Bit (8 * be), Bit 1, Bit 1, Bit be) -> (Bit (8 * be), Bit (8 * be)) Source #

Uninitialised true dual-port block RAM. (Read during write: reads "dont care")

ramTrueDualInitBE :: KnownNat be => String -> (Bit a, Bit (8 * be), Bit 1, Bit 1, Bit be) -> (Bit a, Bit (8 * be), Bit 1, Bit 1, Bit be) -> (Bit (8 * be), Bit (8 * be)) Source #

RTL block RAM interface

data RAM a d Source #

RAM interface

Constructors

RAM 

Fields

makeRAM :: (Bits a, Bits d) => Module (RAM a d) Source #

Create uninitialised block RAM

makeRAMInit :: (Bits a, Bits d) => String -> Module (RAM a d) Source #

Create block RAM with initial contents from hex file

makeTrueDualRAM :: (Bits a, Bits d) => Module (RAM a d, RAM a d) Source #

Create true dual-port block RAM. (Read during write: reads "dont care")

makeTrueDualRAMInit :: (Bits a, Bits d) => String -> Module (RAM a d, RAM a d) Source #

Create true dual-port block RAM with initial contents from hex file. (Read during write: reads "dont care")

makeDualRAM :: (Bits a, Bits d) => Module (RAM a d) Source #

Create uninitialised dual-port RAM. One port used for reading and the other for writing.

makeDualRAMInit :: (Bits a, Bits d) => String -> Module (RAM a d) Source #

Create dual-port RAM with initial contents from hex file. One port used for reading and the other for writing.

makeDualRAMForward :: (Bits a, Bits d) => Module (RAM a d) Source #

Uninitialised dual-port forwarding block RAM. Read and write to same address yields new data.

makeDualRAMForwardInit :: (Bits a, Bits d) => String -> Module (RAM a d) Source #

Dual-port forwarding block RAM with initial contents from hex file. Read and write to same address yields new data.

nullRAM :: Bits d => RAM a d Source #

RAM interface with no backing functionality

RTL block RAM interface with byte enables

data RAMBE aw dw Source #

RAM (with byte enables) interface (data width is in bytes)

Constructors

RAMBE 

Fields

makeRAMBE :: _ => Module (RAMBE aw dw) Source #

Create uninitialised block RAM with byte enables

makeRAMInitBE :: _ => String -> Module (RAMBE aw dw) Source #

Create block RAM with byte enables and initial contents from hex file

makeTrueDualRAMBE :: _ => Module (RAMBE aw dw, RAMBE aw dw) Source #

Create true dual-port block RAM with byte enables (Read during write: reads "dont care")

makeTrueDualRAMInitBE :: _ => String -> Module (RAMBE aw dw, RAMBE aw dw) Source #

Create true dual-port block RAM with byte enables and initial contents from hex file (Read during write: reads "dont care")

makeDualRAMBE :: _ => Module (RAMBE aw dw) Source #

Create uninitialised dual-port RAM with byte enables. One port used for reading and the other for writing.

makeDualRAMInitBE :: _ => String -> Module (RAMBE aw dw) Source #

Create dual-port RAM with byte enables and initial contents from hex file. One port used for reading and the other for writing.

makeDualRAMForwardBE :: _ => Module (RAMBE aw dw) Source #

Create uninitialised forwarding dual-port RAM with byte enables. One port used for reading and the other for writing. Read-during-write yields new data.

makeDualRAMForwardInitBE :: _ => String -> Module (RAMBE aw dw) Source #

Create forwarding dual-port RAM with byte enables and initial contents from hex file. One port used for reading and the other for writing. Read-during-write yields new data.

nullRAMBE :: KnownNat (8 * dw) => RAMBE aw dw Source #

RAMBE interface with no backing functionality