L
Leow Yuan Yeow
Guest
Hi there! Currently I am facing a design problem for shared resources of
large 32-bit integer arrays. If, say, a 20 by 20 32-bit integer array is to
be written by multiple processes, some kind of multiplexing and
handshaking(i.e. process do a 'req' to the manager process for an array
location, and gets an ack) is needed to choose a certain process to write to
the shared sources based on some priority scheme(e.g. round robin). If I
implement the array in bram with 1 read and write port, only 1 manager
process is needed, but it will limit the speed at which the array can be
accessed since only 1 location can be read and written in 1 clock cycle. If
I want the whole array to be able to be written and read in parallel, 400
manager processes is needed for the 20*20 locations to manage the reading
and writing from the processes.
My questions are: will this greatly increase the amount of hardware
resources needed using the 2nd scheme, and which is the better method to
use? Is there a 3rd method to handle this? Unfortunately I have to use
parallelism in this problem so shared resources cannot be avoided.
Thanks in advance!
large 32-bit integer arrays. If, say, a 20 by 20 32-bit integer array is to
be written by multiple processes, some kind of multiplexing and
handshaking(i.e. process do a 'req' to the manager process for an array
location, and gets an ack) is needed to choose a certain process to write to
the shared sources based on some priority scheme(e.g. round robin). If I
implement the array in bram with 1 read and write port, only 1 manager
process is needed, but it will limit the speed at which the array can be
accessed since only 1 location can be read and written in 1 clock cycle. If
I want the whole array to be able to be written and read in parallel, 400
manager processes is needed for the 20*20 locations to manage the reading
and writing from the processes.
My questions are: will this greatly increase the amount of hardware
resources needed using the 2nd scheme, and which is the better method to
use? Is there a 3rd method to handle this? Unfortunately I have to use
parallelism in this problem so shared resources cannot be avoided.
Thanks in advance!