|
Двухпортовая память в FPGA., Что происходит при одновременном доступе. |
|
|
|
May 4 2006, 05:11
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Вопрос уже понимался, но, к сожалению, я что-то не помню четкого ответа. Вот если в двухпортовую память одновременно идет обращение с двух портов (что есть, вообще-то, штатный режим) и оба обращения попадают в один адрес - что при этом произойдет, если:
1. Один пишет, другой читает, клок один. 2. Один пишет, другой читает, клоки разные и несинхронные. 3. Оба пишут, клок один. 4. Оба пишут, клоки разные и несинхронные.
В случае разных и несинхронных клоков запись/чтение будут происходить физически в чуть разные моменты времени.
Допустимые ли это ситуации с точки зрения целостности дизайна. Растолкуйте, плиз, кто знает?
Преимущественно интересует Альтера, но и про Зайлинкс было бы интересно узнать. Вообще, есть основания полагать, что от производителя это не слишком должно зависеть, если только конкретный производитель не принял специальных мер для разруливания описанных ситуаций.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
 |
Ответов
(1 - 6)
|
May 4 2006, 05:47
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
Что то я не видел памяти с двумя каналами записи. В Xilinx читается асинхронно по обоим каналам, записывается по фронту, только через 1 порт. Если адрес на обоих портах один, после фронта записи меняется значение на выходе на записанное.
Если есть два канала записи, должно быть ограничение на одновременную запись в один и тот же адрес, отслеживать это должен проектировщик, т.к. ситуация, логически недетерминирована
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
|
May 4 2006, 06:30
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(Magnum @ May 4 2006, 12:52)  На самом деле оказывается можно, посмотрел в визарде Quartus можно сгенерить такую память с двумя каналами записи и двумя каналами чтения, причем клоки можно раздать раздельно: либо один для записи , другой для чтения, либо по каналам: один для первого канала, другой для второго. хм.. Да, это у них называется True Dual-Port Memory. Вот и хоцца прояснить эту ситуацию раз и навсегда.  В принципе, наверное, всегда можно избежать такие ситуации на уровне дизайна, но не лишне знать, чем чревато такое. Например, может внутри памяти есть аппаратная блокировка второго порта, если он лезет в тот же адрес (по записи), что и первый (тоже по записи). Но вот что-то в доке ничего не нарыл (может искал невнимательно или глаз замыленный).
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
May 4 2006, 06:51
|
Частый гость
 
Группа: Свой
Сообщений: 122
Регистрация: 21-02-05
Из: Питер
Пользователь №: 2 811

|
У Зайлинкса ситуация такая: Цитата When one port writes to a given memory cell, the other port must not address that memory cell (for a write or a read) within the clock-to-clock setup window. (1 нс для V2Pro). Цитата When both clocks are synchronous or identical, the result of simultaneous accesses from both ports to the same memory cell is best described in words: • If both ports read simultaneously from the same memory cell: Both Data_out ports will have the same data. • If both ports write simultaneously into the same memory cell: The data stored in that cell becomes invalid (unless both ports write identical data). • If one port writes and the other port reads from the same memory cell: The write operation succeeds, and the data to be read out from the read port will be determined by the read output mode (write_first, read_first, or no_change). If the write port is in read_first mode, the read port's Data_out represents the previous content of the memory cell. If the write port is in write_first mode or in no_change mode, the read port's Data_out becomes invalid. Obviously, the read port's mode setting does not affect this operation. Пардонте-с, что не перевожу
--------------------
Dies diem docet.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|