|
Altera MAX II мультиплексирование памяти, подскажите как реализовать? |
|
|
|
Jul 12 2009, 20:38
|

embedder
  
Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911

|
Доброго всем времени суток. Подскажите пожалуйста как реализовать следующее:
Имеется микроконтроллер с внешней шиной памяти, CPLD Altera MAXII в которой реализован видеоконтроллер. Для реализации видеопамяти тут казалось бы проще поставить двухпортовую память, на один порт контроллер, а на второй CPLD и не париться, но цена на них уж очень кусается. Таким образом было решено использовать два банка памяти (в два чипа). Банки подключаются специальным сигналом, когда первый банк подключен к микроконтроллеру, то второй банк подключен к видеоконтроллеру для вывода информации, при переключении банки меняются наоборот. В таком случае необходим двунаправленный мультиплексор, реализация которого у меня что-то не выходит... Смотрел в сторону двунаправленных шин, но там используются триггеры с тактированием загрузки... По другому эту задачу никак не реализовать?
--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
|
|
|
|
|
 |
Ответов
(1 - 9)
|
Jul 12 2009, 22:20
|

Участник

Группа: Свой
Сообщений: 62
Регистрация: 2-04-09
Из: Москва
Пользователь №: 47 059

|
Цитата(zksystem @ Jul 13 2009, 00:38)  Доброго всем времени суток. Подскажите пожалуйста как реализовать следующее:
Имеется микроконтроллер с внешней шиной памяти, CPLD Altera MAXII в которой реализован видеоконтроллер. Для реализации видеопамяти тут казалось бы проще поставить двухпортовую память, на один порт контроллер, а на второй CPLD и не париться, но цена на них уж очень кусается. Таким образом было решено использовать два банка памяти (в два чипа). Банки подключаются специальным сигналом, когда первый банк подключен к микроконтроллеру, то второй банк подключен к видеоконтроллеру для вывода информации, при переключении банки меняются наоборот. В таком случае необходим двунаправленный мультиплексор, реализация которого у меня что-то не выходит... Смотрел в сторону двунаправленных шин, но там используются триггеры с тактированием загрузки... По другому эту задачу никак не реализовать? Озадачен очень похожей проблемой причем тоже на MAXII. То что Вы делаете называется RAMDAC. Оно состоит из DAC'a прикрученного к CPLD и памяти, прикрученной тоже к CPLD. Кстати, хотел посоветоваться пор двух портовую память (какие они бывают и сколько стоят?), можно в личку? Я так понял, что от железа здесь мало что зависит и все делать придется программно, точнее на Verilog'е/VHDL'е. На сайте Vesa.org есть список режимов и тайминги. Нужно всего лишь выделить память под буфер кадра и... А дальше начинаются траблы. Или менять эти буферы ( Double Buffering/ Triple Buffering) или двухпортовая память... Кстати, что очень любопытно, даже в современных видеокартах (встроенных) никаких VRAM'ов нет и мультиплексоров тоже нет, все делается при помощи драйвера/прошивки, поэтому картинка на экране вроде стабильная, а пропускная способность и без того, под завязку загруженной DDR2/DDR3, падает в разы. Кстати, где вообще можно купить VRAM, которая будет работать с MAXII?
Сообщение отредактировал zverek - Jul 12 2009, 22:36
|
|
|
|
|
Jul 13 2009, 03:11
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(zksystem @ Jul 12 2009, 14:38)  Таким образом было решено использовать два банка памяти (в два чипа). Банки подключаются специальным сигналом, когда первый банк подключен к микроконтроллеру, то второй банк подключен к видеоконтроллеру для вывода информации, при переключении банки меняются наоборот. В таком случае необходим двунаправленный мультиплексор, реализация которого у меня что-то не выходит... Смотрел в сторону двунаправленных шин, но там используются триггеры с тактированием загрузки... По другому эту задачу никак не реализовать? если у вас физически два банка памяти то тупо муксите ноги памяти между контроллером и цплд. как я понимаю проц только пишет, а цплд только читает. проблем никаких. если же банк один а в нем реализованы виртуальные страницы то вам нужен не мултиплексор, а арбитр доступа к памяти. Вот это уже сложнее и может иметь много реализаций, все зависит от требований. Цитата(zverek @ Jul 12 2009, 16:20)  Кстати, что очень любопытно, даже в современных видеокартах (встроенных) никаких VRAM'ов нет и мультиплексоров тоже нет, все делается при помощи драйвера/прошивки, поэтому картинка на экране вроде стабильная, а пропускная способность и без того, под завязку загруженной DDR2/DDR3, падает в разы. забыли про системную шину и ее арбитра ? вот он и есть ваш "мультиплексор"
--------------------
|
|
|
|
|
Jul 13 2009, 09:22
|
Частый гость
 
Группа: Свой
Сообщений: 187
Регистрация: 4-01-07
Из: Казань
Пользователь №: 24 091

|
Цитата(zksystem @ Jul 13 2009, 00:38)  Доброго всем времени суток. Подскажите пожалуйста как реализовать следующее:
Имеется микроконтроллер с внешней шиной памяти, CPLD Altera MAXII в которой реализован видеоконтроллер. Для реализации видеопамяти тут казалось бы проще поставить двухпортовую память, на один порт контроллер, а на второй CPLD и не париться, но цена на них уж очень кусается. Таким образом было решено использовать два банка памяти (в два чипа). Банки подключаются специальным сигналом, когда первый банк подключен к микроконтроллеру, то второй банк подключен к видеоконтроллеру для вывода информации, при переключении банки меняются наоборот. В таком случае необходим двунаправленный мультиплексор, реализация которого у меня что-то не выходит... Смотрел в сторону двунаправленных шин, но там используются триггеры с тактированием загрузки... По другому эту задачу никак не реализовать? Решал практически точно такуюже задачу. В полне успешно. Все работало. Прием сигнала от камеры запись в ОЗУ и выход на TV. Реализация двухбанковая. первый банк пишется второй читается. все это через Cyclone. Было сделано два управляющих блока первый управлял АЦП, ФП приемником и записью в память, второй выводом на TV. Какой банк для чего используется определял блок "арбитр". Ну а с преключением памяти все довольно просто - используем буфера с третьим состоянием и двунапрявленные. Посути шинный формирователь пришлось делать самому.
|
|
|
|
|
Jul 13 2009, 09:54
|

embedder
  
Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911

|
Цитата(des00 @ Jul 13 2009, 07:11)  если у вас физически два банка памяти то тупо муксите ноги памяти между контроллером и цплд. как я понимаю проц только пишет, а цплд только читает. проблем никаких. если же банк один а в нем реализованы виртуальные страницы то вам нужен не мултиплексор, а арбитр доступа к памяти. Вот это уже сложнее и может иметь много реализаций, все зависит от требований. Про видеоконтроллер я в топике не указывал, у меня видеоконтроллер управляет табло из светодиодов. Кстати, видеопамять в моем случае должна быть полноценная (Read/write)... в чем и загвоздка. Двухпортовая память на 4кб стоит дороже обычной статики 512кб... так что даже не хочу рассматривать.
--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
|
|
|
|
|
Jul 13 2009, 11:31
|

embedder
  
Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911

|
Цитата(artem79 @ Jul 13 2009, 13:22)  Решал практически точно такуюже задачу. В полне успешно. Все работало. Прием сигнала от камеры запись в ОЗУ и выход на TV. Реализация двухбанковая. первый банк пишется второй читается. все это через Cyclone. Было сделано два управляющих блока первый управлял АЦП, ФП приемником и записью в память, второй выводом на TV. Какой банк для чего используется определял блок "арбитр". Ну а с преключением памяти все довольно просто - используем буфера с третьим состоянием и двунапрявленные. Посути шинный формирователь пришлось делать самому. ОЗУ использовали тоже статику?
--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
|
|
|
|
|
Jul 13 2009, 12:09
|
Знающий
   
Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219

|
Цитата(zverek @ Jul 13 2009, 02:20)  Кстати, хотел посоветоваться пор двух портовую память (какие они бывают и сколько стоят?)... Где-то полгода назад тоже искал двухпортовую SRAM правда для другой задачи и вот какие результаты: Такую память делают только два производителя Cypress и IDT. По отношению объём/стоимость продукция IDT дешевле. Остановились на следующей микросхеме: IDT70V3599S166 HIGH-SPEED 3.3V 128K x 36 Dual Port Syncronous SRAM, 166MHz, корпус TQFP208 или BGA стоит порядка $130.
|
|
|
|
|
Jul 13 2009, 13:02
|
Частый гость
 
Группа: Свой
Сообщений: 187
Регистрация: 4-01-07
Из: Казань
Пользователь №: 24 091

|
Цитата(zksystem @ Jul 13 2009, 15:31)  ОЗУ использовали тоже статику? Да со временем доступа не более 15 нс.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|