In the ever-expanding world of electronics, the power of memory—particularly shared memory—cannot be overstated. Whether in embedded systems, communications devices, or data acquisition equipment, efficient and reliable memory access is a cornerstone of performance. For hobbyists and DIY electronics enthusiasts, exploring dual-port RAM provides a unique opportunity to delve into more advanced memory handling techniques. This article explores a specific and tangible DIY project: building a dual-port RAM-based data logger using the IDT7024S35J, a high-speed 8K x 16 dual-port static RAM component.
This project focuses on creating a data logging system where two processors or microcontroller units (MCUs) interact with the memory independently for data input and retrieval. It offers a real-world application that simulates industrial-grade logging and monitoring setups, but remains within the scope of home-grown engineering.
Understanding the IDT7024S35J
Before diving into the actual build, it’s helpful to understand the component around which the project is based. The IDT7024S35J is a dual-port static RAM that offers 8,192 words of 16-bit data with full asynchronous access from both ports. Each port can read and write independently, making it ideal for applications requiring fast, bidirectional, and simultaneous access from two separate processors.
Key features include:
● Dual independent access ports
● Internal interrupt capabilities
● Busy flags and semaphores for conflict management
● High-speed access times (35ns in this case)
● 16-bit wide data access per port
These capabilities make the chip a perfect match for systems that require cooperative multitasking, such as this DIY data logger.
Project Overview: The Dual-Port RAM Data Logger
The objective of this project is to build a compact, standalone data logger system where one processor is responsible for collecting and writing sensor data to memory, while another processor is responsible for retrieving and displaying or storing that data elsewhere. The IDT7024S35J sits in the middle, serving as a fast, shared memory buffer between the two units.
System Components
In addition to the IDT7024S35J, the following components are used:
● Two microcontroller boards (Arduino Mega, STM32 Nucleo, or similar)
● Temperature and humidity sensor (e.g., DHT22)
● Real-time clock module (e.g., DS3231)
● LCD display (16x2 or I2C OLED)
● SD card module for long-term data storage
● Power supply (regulated 5V and 3.3V lines)
● Breadboard or custom PCB
● Jumper wires and resistors
● Logic level shifters (if necessary)
Conceptual Design
This system can be broken into two units:
● Unit A (Logger): Reads real-time data from the sensor every few seconds, timestamps it using the RTC module, and writes it into the dual-port RAM.
● Unit B (Reader): Periodically checks for new data in memory, retrieves it, displays it on an LCD, and stores it on an SD card.
These units operate asynchronously, interacting only through the shared RAM, which allows for efficient decoupling of data acquisition and processing.
Building the Logger Unit (Unit A)
Start with the Logger Unit by setting up the basic sensor reading circuit. The DHT22 temperature and humidity sensor provides digital readings and requires minimal wiring: VCC, GND, and a single data line. Use a pull-up resistor to stabilize the data line.
Next, integrate the RTC module. The DS3231 uses an I2C interface and provides highly accurate timekeeping. Set the initial time using a one-time calibration process. After that, the module provides date and time stamps in real-time, critical for accurate logging.
The microcontroller takes sensor readings, pairs them with timestamps, and writes structured data entries to the RAM. The entries might include:
● Timestamp
● Temperature value
● Humidity value
● A flag to indicate that the entry is complete
Each data entry should occupy a fixed-length space in the RAM, simplifying data management. Even without formulas or binary encoding specifics, you can use a simple system of memory “slots,” where each slot corresponds to one record.
To avoid write conflicts with the Reader Unit, use the semaphore or busy flag features of the IDT7024S35J. These built-in features help prevent simultaneous write operations that could corrupt the memory. The Logger Unit checks whether the flag is clear before writing, and sets it after a successful write.
Constructing the Reader Unit (Unit B)
The Reader Unit plays an equally important role. It needs to continually—or at specified intervals—poll the dual-port RAM to see if new data entries are available. When it finds new entries, it retrieves the data, clears the semaphore or flag, and processes the information.
Start by connecting the second microcontroller to the LCD module. This will serve as a quick visual interface, showing the latest temperature and humidity values, along with timestamps. This is particularly useful during development and debugging phases.
The microcontroller also connects to an SD card module, which will store the logs permanently. Each time a new entry is found in memory, it is appended to a text file on the card. This provides non-volatile, long-term storage of environmental data.
Again, coordination with the Logger Unit is crucial. The Reader Unit must respect semaphore flags and only read data that is marked as complete. After processing, it clears the flag to indicate that the memory location is now free for writing again.
Wiring the IDT7024S35J
The heart of the project, the IDT7024S35J, must be carefully wired to both microcontrollers. This includes:
● 16 data lines per port (A and B)
● Address lines (13 bits for 8K memory)
● Control lines (Chip Enable, Output Enable, Write Enable)
● Busy and interrupt flags
● Semaphore control lines (optional but highly recommended)
Due to the large number of connections, consider using 40-pin breakout boards or custom PCBs to manage the layout more efficiently. Keep address and data lines short and direct to minimize noise and timing issues.
Make sure both microcontrollers operate at compatible voltage levels with the RAM. Use logic level shifters if necessary, especially if mixing 5V and 3.3V components.
Power Management and Enclosure
Once the units are functional, focus on power management and physical layout. This system can be powered via USB or an external 5V adapter. For field deployments, consider battery options with solar charging modules to ensure 24/7 operation.
Use a small enclosure or project box to house the electronics. Label the ports clearly, and consider routing key indicators (like status LEDs) to the exterior for quick diagnostics.
Testing and Validation
Start testing in a controlled environment:
1. Power up both microcontrollers.
2. Confirm the Logger Unit writes sensor data into the RAM.
3. Verify that the Reader Unit retrieves and displays/stores the data.
4. Test the semaphore mechanism by forcing concurrent read/write operations.
5. Introduce artificial delays to check synchronization and stability.
Fine-tune the logging intervals and buffer management strategy. If needed, implement a basic ring buffer mechanism where older data is overwritten once the memory is full. This keeps the system self-sustaining without manual intervention.
Applications and Extensions
The beauty of this project lies in its adaptability. While this version logs environmental data, it can easily be extended to log other types of sensor data:
● Vibration and tilt data from accelerometers
● Light intensity from photodiodes
● Air quality metrics using gas sensors
Additionally, the system can be adapted for remote logging. Replace the LCD with a wireless transmitter like an ESP8266 or LoRa module to send data to a remote station. The dual-port RAM continues to buffer data reliably between sensor polling and wireless transmission.
For advanced users, the system can also be upgraded to use a small Linux SBC (e.g., Raspberry Pi) as the Reader Unit, enabling cloud synchronization or web-based visualization.
Final Thoughts
Building a dual-port RAM-based data logger using the IDT7024S35J is a rewarding project that teaches both theoretical and practical skills. It bridges the gap between memory architecture and real-world applications, offering a glimpse into how commercial systems handle concurrent data flows.
It demands attention to timing, control signals, and system synchronization, but the result is a versatile platform for all kinds of data collection and analysis tasks. Whether you're monitoring your greenhouse environment, conducting lab experiments, or simply learning about memory-mapped communication, this project offers a deeply satisfying experience with lasting utility.
The IDT7024S35J transforms a basic DIY build into a professional-grade solution, all from the comfort of your workbench.
Comments
participate in discussions
Please login ? to participate in the comments
New customer Start here.