Sci-Compiler components are separated in:
- stand-alone components
- memory mapped components
The stand alone components are blocks those do not require a communication with an host PC in order to operate. For example boolean logic, mathematical operations, trapezoidal trigger are all stand alone components. They have several operative parameters those can be configured but they haven’t any interface with the PC
The memory mapped components are all components that requires a communication with the PC in order to operate. For example:
- List interface
- Oscilloscope
- Imaging module
- Custom Packet Creator
- I2C Master (configured in Memory Mapped)
- Logic Analyzer
Typically all readout components are memory mapped.
A memory mapped components when is compiled by Sci-Compiler generate:
- a physical module (written in VHDL) implemented in the FPGA, called endpoint
- one or more library function in the SDK in order to configure and readout data from the module
For example, if we want to create an Oscilloscope, Sci-Compiler will open a configuration windows where user can configure the parameters of the endpoint
The most important is the name of the endpoint that must be unique in the entire project.
The SDK will be generated and all the functions of the SDK that will interface with the Oscilloscope will have as function name OSCILLOSCOPE_Oscilloscope_0_...
For example we will have the functions in the C/Python SDK:
SCILIB int OSCILLOSCOPE_Oscilloscope_0_START
OSCILLOSCOPE_Oscilloscope_0_SET_PARAMETERS
OSCILLOSCOPE_Oscilloscope_0_DOWNLOAD
that users can use to control the acquisition from the oscilloscope.
The endpoint is represents with a standard virtual block with a small icon on the bottom and the name of the endpoint
All the memory mapped endpoint are displayed in the Memory Mapping tab
When a new endpoint is added user must press refresh in order to reload the list
Sci-Compiler does not automatically assign an address to new endpoint. The address is a number that must be unique and represents the memory region assigned to a particular endpoint
User can specify just the base address (start address) of the memory mapped endpoint. Sci-Compiler will automatically calculate the area of memory required by the peripheral. The area of memory is displayed in the “Area Size” column A register always require just one word, while a block like an oscilloscope will require a memory area proportional to the number of channels and number of samples. Several peripheral use a memory area plus some control register. The number of control register is displayed in the “Control Register” column of the table.
The address of the MMC can be entered in the Phy Hex Address column. The address can be manually assigned or automatically assigned. In general users can just press refresh and than Auto Assign in order to automatically generate a consistent address space with all peripheral correct mapped on the bus. It is possible to assign an address manually checking Manual Assigned column and enter the address. It is very important to avoid overlaps between address spaces in order to avoid conflict between different components.