08-22-2017 11:59 PM - edited 08-23-2017 12:01 AM
I'm trying to design a readout system and have some questions related to storage units. My purpose is continuously read 10bit digital values coming from an analog digital converter IC and keep some specific parameters in a "RAM" and then transfer all these kept values in some definite time periods (i.e 1 second) to computer. But during the transmission I need to continue to read digits and keep the specific values.
First of all, I want to use a RAM like internal storage area for this design (512 or 1024 x 10 bit is fine) because I didn't use it before and wish to learn how to handle RAM resources. So could you please suggest me what type of RAM (single port, dual port SD, ring buffer etc.) should I use ?
Second since I want to control storage process depending on definite time periods how can I reset the RAM unit while the write process is ongoing?
Thanks in advance...
08-23-2017 05:36 AM
I believe dual port should be enough for your application. However, I would recommend to check below user guide for more details:
In a simple dual port memory, one port reads from the BRAM while the other port writes to it. In True Dual Port memory, both ports can read from and write to the BRAM.
There is no direct reset signal for BRAMs to reset all values to '0'.
08-26-2017 12:00 AM
The Vivado Synthesis user's guide (UG-901) has Verilog and VHDL templates for inferring RAM. That will give you the storage. Then you just need to control the read and write addresses appropriately. It sounds like what you want is a FIFO: pushing in sensor data at a constant rate, then pulling out the results in a burst to send them to the PC. In computer science parlance, I believe the underlying data structure is a ring buffer. I agree with @anusheel that a simple dual-port RAM should do the trick.
I'm not sure exactly what information you're looking for, though. I've given a few ideas hoping to get close.
Can you provide a better description of what information you're looking for?