реклама на сайте
подробности

 
 
> Altera MAX II мультиплексирование памяти, подскажите как реализовать?
zksystem
сообщение Jul 12 2009, 20:38
Сообщение #1


embedder
***

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



Доброго всем времени суток.
Подскажите пожалуйста как реализовать следующее:

Имеется микроконтроллер с внешней шиной памяти, CPLD Altera MAXII в которой реализован видеоконтроллер. Для реализации видеопамяти тут казалось бы проще поставить двухпортовую память, на один порт контроллер, а на второй CPLD и не париться, но цена на них уж очень кусается. Таким образом было решено использовать два банка памяти (в два чипа). Банки подключаются специальным сигналом, когда первый банк подключен к микроконтроллеру, то второй банк подключен к видеоконтроллеру для вывода информации, при переключении банки меняются наоборот.
В таком случае необходим двунаправленный мультиплексор, реализация которого у меня что-то не выходит... Смотрел в сторону двунаправленных шин, но там используются триггеры с тактированием загрузки...
По другому эту задачу никак не реализовать?


--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 9)
zverek
сообщение Jul 12 2009, 22:20
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
des00
сообщение Jul 13 2009, 03:11
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(zksystem @ Jul 12 2009, 14:38) *
Таким образом было решено использовать два банка памяти (в два чипа). Банки подключаются специальным сигналом, когда первый банк подключен к микроконтроллеру, то второй банк подключен к видеоконтроллеру для вывода информации, при переключении банки меняются наоборот.
В таком случае необходим двунаправленный мультиплексор, реализация которого у меня что-то не выходит... Смотрел в сторону двунаправленных шин, но там используются триггеры с тактированием загрузки...
По другому эту задачу никак не реализовать?


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

Цитата(zverek @ Jul 12 2009, 16:20) *
Кстати, что очень любопытно, даже в современных видеокартах (встроенных) никаких VRAM'ов нет и мультиплексоров тоже нет, все делается при помощи драйвера/прошивки, поэтому картинка на экране вроде стабильная, а пропускная способность и без того, под завязку загруженной DDR2/DDR3, падает в разы.


забыли про системную шину и ее арбитра ? вот он и есть ваш "мультиплексор" smile.gif


--------------------
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jul 13 2009, 05:27
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(zksystem @ Jul 13 2009, 00:38) *
Для реализации видеопамяти тут казалось бы проще поставить двухпортовую память, на один порт контроллер, а на второй CPLD и не париться, но цена на них уж очень кусается.

Иногда бывает и проще, и чуть ли не дешевле вместо CPLD+SRAM поставить FPGA+DRAM. В частности и потому что стандартный контроллер DRAM все вопросы мультиплексирования возьмет на себя, ему знай только запросы в FIFO засовывай.
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Jul 13 2009, 06:31
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



С одним чипом памяти, разделённым на 2 виртуальных банка и CPLD тоже можно и не особо сложно, есть только одно "но": частота загрузки слов в "видеопамять" со стороны МК должна быть ниже частоты чтения для отображения. Тогда записываемое от МК слово успешно буферизируется и записывается в ОЗУ между чтениями для отображения. Частота чтений для отображения фиксированная (например, 25МГц для VGA 640х480 - 60Гц) и вклиниться вполне можно.


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
artem79
сообщение Jul 13 2009, 09:22
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 4-01-07
Из: Казань
Пользователь №: 24 091



Цитата(zksystem @ Jul 13 2009, 00:38) *
Доброго всем времени суток.
Подскажите пожалуйста как реализовать следующее:

Имеется микроконтроллер с внешней шиной памяти, CPLD Altera MAXII в которой реализован видеоконтроллер. Для реализации видеопамяти тут казалось бы проще поставить двухпортовую память, на один порт контроллер, а на второй CPLD и не париться, но цена на них уж очень кусается. Таким образом было решено использовать два банка памяти (в два чипа). Банки подключаются специальным сигналом, когда первый банк подключен к микроконтроллеру, то второй банк подключен к видеоконтроллеру для вывода информации, при переключении банки меняются наоборот.
В таком случае необходим двунаправленный мультиплексор, реализация которого у меня что-то не выходит... Смотрел в сторону двунаправленных шин, но там используются триггеры с тактированием загрузки...
По другому эту задачу никак не реализовать?



Решал практически точно такуюже задачу. В полне успешно. Все работало. Прием сигнала от камеры запись в ОЗУ и выход на TV. Реализация двухбанковая. первый банк пишется второй читается. все это через Cyclone.
Было сделано два управляющих блока первый управлял АЦП, ФП приемником и записью в память, второй выводом на TV. Какой банк для чего используется определял блок "арбитр". Ну а с преключением памяти все довольно просто - используем буфера с третьим состоянием и двунапрявленные. Посути шинный формирователь пришлось делать самому.
Go to the top of the page
 
+Quote Post
zksystem
сообщение Jul 13 2009, 09:54
Сообщение #7


embedder
***

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



Цитата(des00 @ Jul 13 2009, 07:11) *
если у вас физически два банка памяти то тупо муксите ноги памяти между контроллером и цплд. как я понимаю проц только пишет, а цплд только читает. проблем никаких. если же банк один а в нем реализованы виртуальные страницы то вам нужен не мултиплексор, а арбитр доступа к памяти. Вот это уже сложнее и может иметь много реализаций, все зависит от требований.

Про видеоконтроллер я в топике не указывал, у меня видеоконтроллер управляет табло из светодиодов. Кстати, видеопамять в моем случае должна быть полноценная (Read/write)... в чем и загвоздка. Двухпортовая память на 4кб стоит дороже обычной статики 512кб... так что даже не хочу рассматривать.


--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
Go to the top of the page
 
+Quote Post
zksystem
сообщение Jul 13 2009, 11:31
Сообщение #8


embedder
***

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



Цитата(artem79 @ Jul 13 2009, 13:22) *
Решал практически точно такуюже задачу. В полне успешно. Все работало. Прием сигнала от камеры запись в ОЗУ и выход на TV. Реализация двухбанковая. первый банк пишется второй читается. все это через Cyclone.
Было сделано два управляющих блока первый управлял АЦП, ФП приемником и записью в память, второй выводом на TV. Какой банк для чего используется определял блок "арбитр". Ну а с преключением памяти все довольно просто - используем буфера с третьим состоянием и двунапрявленные. Посути шинный формирователь пришлось делать самому.

ОЗУ использовали тоже статику?


--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Jul 13 2009, 12:09
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
artem79
сообщение Jul 13 2009, 13:02
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 4-01-07
Из: Казань
Пользователь №: 24 091



Цитата(zksystem @ Jul 13 2009, 15:31) *
ОЗУ использовали тоже статику?


Да со временем доступа не более 15 нс.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.0152 секунд с 7
ELECTRONIX ©2004-2016