Перейти к содержанию
    

двухпортовая память

приветствую. никак не могу взять в толк, каким образом может происходить одновременное чтение и запись в двухпортовую память?

нет-схемотехнически всё понятно, но вот момент , если в ячейку памяти (триггер) чтото пишется и читается в тот же момент (пока еще выход триггера не установился) то при чтении может же получиться абракадабра? и в фифо же тоже самое. никогда об этом не задумывался... ведь в простой регистр я никогда ничего не записываю, в момент когда его читаю

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но вот момент , если в ячейку памяти (триггер) чтото пишется и читается в тот же момент (пока еще выход триггера не установился) то при чтении может же получиться абракадабра?

Ну дык все правильно, об этом по ссылке выше и пишут:

Во всех схемах с асинхронным доступом к общим ресурсам неизбежно возникают конфликтные ситуации. Применительно к двухпортовому ОЗУ, конфликты появляются при одновременном обращении двух независимых активных устройств к одной и той же ячейке памяти в процессе выполнения следующих операций:

запись через порт L - запись через порт R;

запись через порт L - чтение через порт R;

Соответственно вводится арбитр который "разруливает" спорные ситуации в пользу того кто обратился первым :biggrin:

 

Или я не понял суть вопроса?

Изменено пользователем Djamal

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если говорить о Xilinx, то там у каждого блока памяти есть выбор из 3 режимов работы при одновременном чтении и записи ( WRITE_FIRST, READ_FIRST и NO_CHANGE ), который и определяет, как будет разруливаться коллизия.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость ffilin

Мне нужна такая двух портовая оперативная память с асинхронным доступом, для решения нескольких задач. 

Один порт только для записи, второй только для считывания. Без всяких там колизих

Первая это сделать что то типа видео карты. На вход с тюнера поступает сигнал оцифровывается с одним форматом количество кадров в секунду и количество точек в строке. А выводится на монитор в реальном времени в другом формате, с другой частотой кадров. 

Вторая это сделать Цифровой осциллограф для гео радара, сигнал поступает, записывается в память, с АЦП быстро, а обрабатывается контроллером мелено. 

Третья сделать что то типа светодиодного 3D тетриса, то есть объяденить идею тетриса на матричных светодиодах и пару 8 х 8 х 8 стоящих друг на друге 3D кубов. двух портовая память нужна чтобы увеличить частоту динамической индикации и разгрузить контроллер.

то есть скрестить  

Спойлер

 

Спойлер

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

On 2/27/2013 at 2:50 PM, troiden said:

Если говорить о Xilinx, то там у каждого блока памяти есть выбор из 3 режимов работы при одновременном чтении и записи ( WRITE_FIRST, READ_FIRST и NO_CHANGE ), который и определяет, как будет разруливаться коллизия.

Это справедливо только для синхронного режима работы памяти - при асинхронном (при разных тактовых на портах)   одновременные запись и чтение по одному и тому же адресу приведет к неопределенным данным чтения. 

14 minutes ago, ffilin said:

Мне нужна такая двух портовая оперативная память с асинхронным доступом, для решения нескольких задач. 

...

Для всех этих задач достаточно "виртуальной" дву/много-портовости  - достаточно разнести во времени циклы чтения/записи на обычной памяти и ни каких конфликтов не будет. 

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 2/22/2013 at 12:30 PM, shide_3 said:

ведь в простой регистр я никогда ничего не записываю, в момент когда его читаю

Разве?

always @ (posedge clock)

begin

   reg2 <= reg1;

   reg1 <= input_data;

end

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 часов назад, ffilin сказал:

Мне нужна такая двух портовая оперативная память с асинхронным доступом, для решения нескольких задач. 

Один порт только для записи, второй только для считывания. Без всяких там колизих

Первая это сделать что то типа видео карты. На вход с тюнера поступает сигнал оцифровывается с одним форматом количество кадров в секунду и количество точек в строке. А выводится на монитор в реальном времени в другом формате, с другой частотой кадров. 

Вторая это сделать Цифровой осциллограф для гео радара, сигнал поступает, записывается в память, с АЦП быстро, а обрабатывается контроллером мелено. 

Третья сделать что то типа светодиодного 3D тетриса, то есть объяденить идею тетриса на матричных светодиодах и пару 8 х 8 х 8 стоящих друг на друге 3D кубов. двух портовая память нужна чтобы увеличить частоту динамической индикации и разгрузить контроллер.

то есть скрестить  

 

Все отлично, только вот я что-то никакой "двухпортовости" не вижу. Обычная память с раздельными входами и выходами и одной шиной адреса... И потому там об "одновременном чтении и записи" речь и близко не идет.

Кто генерирует адрес? Так только один "командоаппарат", который в видеокарте сначала делает развертку видео, а во время обратного хода луча быстренько дергает данные из какого-нибудь ФИФО и пишет их в видеопамять... 

Цифровой осциллограф - так то-же самое. Он сначала пишет буфер, потом читает... Если пишет на максимальной для ПЛИС скорости, то сначала заполняет весь буфер, а потом... А если пишет медленно, то в паузах между записями успеет и прочитать...

А уж в Тетрисах, там вообще окно для чтения можно выделить раз в долю секунды... 

Вывод.

Термин "с асинхронным доступом" здесь применен неверно. Доступ будет вполне в определенные моменты времени, а вот по адресации - к произвольным адресам...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость ffilin

по задачам

1 задача две камеры не синхронизированные миниатюрные, стоят на квадракоптере или иной авиа моделе, разнесены на расстояние человеческих глаз, на одной камере красный светофильтр, на другой синезелёный (можно без светофильтров).

Сигнал принимается на два приёмника, потом выводится на обычный цветной телевизор или монитор. С красной камеры на красные пиксели, с сине зелёной на синие и зелёные, в одном луче.

Частота монитора может не совпадать с частотами камеры.

Также можно использовать не аналиграфические очки, а очки с ЖК затемнением, синхронным с отображением изображения каждой камеры.

Ни какого буфера FIFO там нет. Также не возможно писать в одну банку памяти считывать с другой, а потом менять их местами.

задача 2 сложнее чем кажется. запись и считывание происходит в нелинейных шкалах, т.е. с переменной скоростью дискретизации, нужно для определённых задач. Виртуальная двух поротовость не подойдёт из-за скорости.

 

задача 3. Ролики с 3D кубом снимают при выключенном свете. Это не из за того что слабо светится, а из-за мерцания при динамической индикации. При выключенном свете выдержка увеличивается и мерцания на камере не видно.  Если сделать частоту выше, то будет более приличное видео, и вообще более высокая частота отображения делает свечение более "мягким". 

Лучше скажите где найти шуструю двух портовую асинхронную память, а то  работал только SRAM а именно с AS7C256A

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

28 minutes ago, ffilin said:

по задачам

...

Лучше скажите где найти шуструю двух портовую асинхронную память, а то  работал только SRAM а именно с AS7C256A

Вы для начала определитесь на сколько шустрая память вам нужна и какого размера а потом уж искать беритесь. Когда будет конкретика требований к пропускной  полосе, тип и режимы работы по портам, тогда и можно судить подойдет ли виртуальная  много-портовость  или потребуется "железная" DP-RAM.

Удачи! Rob.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 10/31/2018 at 9:02 PM, ffilin said:

Мне нужна такая двух портовая оперативная память с асинхронным доступом, для решения нескольких задач. 

Один порт только для записи, второй только для считывания. Без всяких там колизих

Первая это сделать что то типа видео карты. На вход с тюнера поступает сигнал оцифровывается с одним форматом количество кадров в секунду и количество точек в строке. А выводится на монитор в реальном времени в другом формате, с другой частотой кадров. 

Зачем усложнять то что давно решено с использованием плис и ддр - xilinx ip vdma с 3-мя буферами в ддр делает это на ура. Практически готовое решение расписано в рефдизайнах для досок кзаленса. Сам так конвертил цифровой видеопоток с гигабитной оптики в различные разрешения для обычных мониторов с dvi.

Изменено пользователем fguy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...