Membrana Hardware Version
Author: Claus Janicher 2025
The membrana_hw module is the main interface between the Nucleus and the Systembus. As Systembus this project uses Wishbone which is a well documented bus.
This module has a state-machine which performs the necessary tasks the processor is asking for. The program is in the current state stored in the built in Blockram module. This module is being created with the membrana_hw and only accessible via the IPort and DPort interface from the processor.
Fig. 16 Diagram of the current implemented Hardware Membrana.
-
SC_MODULE(m_membrana_hw)
Hardware-Membrana as the interface between the nucleus and the systembus.
This module is the hardware-membrana unit which is used for the hardware implementation of the piconut processor. It is the interface between the Nucleus and the Systembus (Wishbone). Furthermore, it has a built in ram (Blockram) that serves as memory.
- Author
Claus Janicher
The interface for the module is expanded for a multi-nucleus system but not yet implemented. Open points:
fair next nucleus logic
on failed AMO use another nucleus
testing
- Ports:
- Parameters:
clk – [in] clock of the module
reset – [in] reset of the module
ip_stb – [in] Instructionport Strobe
ip_adr – [in] <32> Bit Instructionport Address
ip_bsel – [in] Instructionport Byteselect
ip_rdata – [out] Instructionport Read-Data
ip_ack – [out] Instructionport ACK
dp_stb – [in] Dataport strobe
dp_bsel – [in] Dataport Byteselect
dp_adr – [in] <32> Bit Dataport Address
dp_we – [in] Dataport Write-Enable
dp_wdata – [in] Dataport Write-Data
dp_rdata – [out] Dataport Read-Data
dp_ack – [out] Dataport ACK
dp_lr_sc – [in] Dataport Load-Reserved/Store-Conditional (vector, per core)
dp_amo – [in] Dataport Atomic Memory Operation (vector, per core)
wb_adr_o – [out] Wishbone Address
wb_dat_o – [out] Wishbone Data out
wb_dat_i – [in] Wishbone Data in
wb_we_o – [out] Wishbone Write-Enable out
wb_stb_o – [out] Wishbone Strobe out
wb_cyc_o – [out] Wishbone Cycle out
wb_ack_i – [in] Wishbone ACK input
wb_sel_o – [out] Wishbone Byte select
Integrated Blockram
-
SC_MODULE(m_membrana_hw_emem)
Blockram memory module for the membrana_hw.
This module is a dual-port blockram that is being used for code and memory storage of the piconut system.
- Author
Claus Janicher, Gundolf Kiefer
- Ports:
- Parameters:
clka – [in] clock a of the module
clkb – [in] clock b of the module
reset – [in] reset of the module
wea – [in] <4> Bit write enable for port a
web – [in] <4> Bit write enable for port b
doa – [out] <32> Bit data output port a
dob – [out] <32> Bit data output port b
dia – [in] <32> Bit data input port a
dib – [in] <32> Bit data input port b
ena – [in] enable signal for port a
enb – [in] enable signal for port b
Interfaces
The main interface connections from the Membrana to the Nucleus processor are the IPort/DPort Interface bus systems. The other side of the Membrana is connected to the Wishbone Systembus, on which the membrana communicates as a Master.
config-parameters in hw/piconut/config.mk
The BRAM size defines the size the internal blockram module has, which is being used for simulation and hardware synthesis. The START_ADDRESS is being used as a address subtraction method for the blockram, which doesn’t use the offset because its addresses start at 0x00000000.
CFG_START_ADDRESS = 0x10000000
CFG_MEMBRANA_BRAM_SIZE = 102399