Данные записываются по тому же адресу в ОЗУ с несколькими портами записи - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть 3 порта записи и 1 порт чтения в моей оперативной памяти. Все порты работают на одной частоте. Если мои порты записи записывают данные по разным адресам памяти, это нормально, но что произойдет, если все три порта записи будут записывать данные в правильном месте адреса. Я знаю, что это окажется в «неопределенных данных» в этом месте. Так что же делать, чтобы не допустить этой ситуации. Я не могу объединить все порты записи и сделать его одним, поскольку он работает на той же частоте. Я должен держать все порты записи отдельно.

Я думал о разделении памяти в соответствии с портом, т. Е. 1-й порт получит доступ к некоторой части памяти, а 2-й порт получит доступ к другой части памяти и аналогично 3-му. Но я не думаю, что это сработает, так как будут некоторые проблемы, которыми нельзя пренебрегать. Так может кто-нибудь сказать мне, что делать, чтобы записать данные в память, имеющую 3 порта, работающих на одной частоте?

1 Ответ

1 голос
/ 24 апреля 2019

Простого решения не существует.

Большинство данных с двумя портами относятся к типу производитель-потребитель, поэтому указатель считываемых данных всегда находится за указателем записи данных. FIFO, являющийся ярким примером этого.

Если у вас действительно есть несколько процессов, которые могут записывать в одно и то же место, у вас есть проблема. Я сильно подозреваю, что вы спроектировали свою систему неправильно.

В Verilog вы можете проверить, совпадают ли адреса записи, и если они одинаковы, используйте арбитр, чтобы пропустить только один раз за раз. После этого у вас будут «определенные данные». Однако у вас все еще будет состояние гонки, поскольку чтение процессора может происходить между любой записью и сбором «старых» данных.

...