Changes between Initial Version and Version 1 of Component/Mailbox


Ignore:
Timestamp:
Feb 16, 2009, 10:48:57 AM (15 years ago)
Author:
andriami@…
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Component/Mailbox

    v1 v1  
     1[wiki:Component SocLib Components General Index]
     2
     3= Mailbox =
     4
     5== 1) Functional Description ==
     6
     7This component is a generic mailbox: it can contain up to 256 independent, software mailbox.
     8This mailbox allows several processors to communicate via an interrupt mechanism.
     9
     10There are two sets of registers per mailbox: one to send messages from a processor P1 to a processor P2 and one to issue an interrupt to a processor P2. Each set of mailbox registers consists of three 16-bit registers and a 1-bit flag register. The interrupting processor can use two 16-bit registers to pass data words to the interrupted processor and the other 16-bit register to pass a command word. Writing a command word in the mailbox generates an interrupt signal to the component which address has been specified. The mailboxes are located in the shared memory space.
     11Each mailbox takes 12 bytes in the address space, and is seen as 3 memory mapped registers:
     12
     13   * COMMAND[i] @  BASE + 0[[BR]]
     14     A write request sets a command in the COMMAND[i] register and generates an interrupt on the corresponding index. A read request returns the value on the COMMAND[i] register.
     15   * DATA_W[i]   @ BASE + 4[[BR]]
     16     A write request set the data in the DATA_W[i] register.[[BR]]
     17     A read request returns the value of the DATA_W[i] register.
     18   * none @ BASE + 8[[BR]]
     19     Free space for others data...
     20   * RESET_ADR[i] @ BASE + 12[[BR]]
     21     Any write request resets the RESET_ADR[i] register to false.[[BR]]
     22     A read request returns the 0 value if RESET_ADR[i] is false.
     23
     24
     25== 2) Component definition & usage ==
     26
     27=== Component definition ===
     28
     29  * source:trunk/soclib/soclib/module/internal_component/mailbox/caba/metadata/mailbox.sd
     30
     31=== Usage ===
     32
     33Mailbox has a Nirq parameter, which defines the number of processors that can be interrupted through the mailbox number.
     34For example with two processors:
     35   Uses('mailbox', Nirq = 2);
     36
     37== 3) CABA Implementation ==
     38 
     39=== CABA sources ===
     40
     41   * Interface : source:trunk/soclib/soclib/module/internal_component/mailbox/caba/source/include/mailbox.h
     42   * Implementation : source:trunk/soclib/soclib/module/internal_component/mailbox/caba/source/src/mailbox.cpp
     43 
     44=== CABA Constructor parameters ===
     45
     46{{{
     47mailbox(
     48          sc_module_name        insname,                // instance name
     49          const soclib::common::IntTab  &index,         // VCI target index
     50          const soclib::common::MappingTable    &mt     // segment table
     51        );     
     52}}}
     53
     54=== CABA Ports ===
     55
     56 * sc_in<bool> '''p_resetn''' : hardware reset
     57 * sc_in<bool> '''p_clk''' :  clock
     58 * soclib::caba::VciTarget<vci_param> '''p_vci''' : The VCI port
     59 * sc_out<bool> '''p_irq [Nirq]''' : Interrupts ports array
     60
     61== 4)  TLM-T Implementation ==
     62
     63The TLM-T implementation is not yet available.