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

Я вот думаю, где бы взять готовый контроллер SDRAM? Если кто-нибудь уже сталкивался, не поделитесь?

 

Кстати, пришла в голову мысля: А если в SOPC собрать ниос с контроллером SDRAM, а потом взять сгенерированный файл контроллера SDRAM, то в нем можно будет разобраться и засунуть в свой проет? Или наткнусь на какую-нибудь бяку?

 

То же самое и на сет flash-контроллера.

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

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


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

Сделайте мастера для шины авалон-мм и подключайте к своему устройству. Лишите жизни сразу двух зайцев: и настройки будут делаться в sopc builder и доп. компоненты можно будет повесить.

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


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

Сделайте мастера для шины авалон-мм и подключайте к своему устройству.

спасибо. Пойду попробую. 6)

 

Так, отставить, не пойду. А где его создавать, этот мастер? В SOPC он только как элемент cpu есть. Его нужно самому писать? Как? Какие мануалы читать? Или я чего-то недопонял? Совсем запутался. :(

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

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


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

Я вот думаю, где бы взять готовый контроллер SDRAM?

Если по кокой-то причине не хотите пользоватся SOPC Builder, у Altera есть reference design для моста между параллельным портом процессора и SDRAM тут. По предыдущим постом модератора я тоже взглянул на avalon bus master док, и дествительно все выглядит очен просто в выполнение, и есть бесплатная avalon slave -> SDRAM ядро... Когда я писал ядро для PC100 SDRAM interface в уневере для Xilinx, я долго мучался, а здесь с Altera все так просто, и есть исходник с simulink для моделированя. Действительно, для начинающего Altera кажется проще.

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


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

Так, отставить, не пойду. А где его создавать, этот мастер? В SOPC он только как элемент cpu есть. Его нужно самому писать? Как? Какие мануалы читать? Или я чего-то недопонял? Совсем запутался. :(

Читайте это http://altera.com/literature/quartus2/lit-qts-sopc.jsp

И в частности это http://altera.com/literature/manual/mnl_avalon_spec.pdf про мастера для авалон мм

Все что нужно к сопк билдеру прикрутите, и сдрам контроллер готовый

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


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

Ситуация выглядит так: Со скоростью 5 МГц на 10 пинов поступаю пиксели картинки. Сама картинка около 3 мегапикселей. Эту картинку надо записать в память (SDRAM, как мне кажется, - лучший выбор. Я прав?), после чего ниос эту картинку из памяти читает, особым образом обрабатывает и записывает обратно (либо на то же место, либо рядом). После обработки эту картинку надо скинуть на SD. Для начала хотя бы в bmp виде, jpeg буду потом делать. Соответственно, стоит вопрос - как записать в память и как потом скинуть на карточку. Вопрос с карточкой буду решать позже - ниос это будет делать или внешняя схемка, сейчас думаю над записью в SDRAM. Варианта, как мне видится, два: написать модуль для SOPC, что-то типа фифо, к которому при определенном заполнении подключается DMA и гонит данные в память. Второй вариант - записать в память внешней схемкой, а по окончании записи подать сигнал ниосу и переключить память на него.

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

 

Читайте это http://altera.com/literature/quartus2/lit-qts-sopc.jsp

И в частности это http://altera.com/literature/manual/mnl_avalon_spec.pdf про мастера для авалон мм

Все что нужно к сопк билдеру прикрутите, и сдрам контроллер готовый

Спасибо, это все пока в очереди на прочтение. В данный момент осваиваю verilog.

Прежде чем я вчитаюсь в эти мануалы, скажите, пожалуйста, правильно ли я понимаю, что создается какой-то модуль для сопк, который внутри сопк является авалон мастером/слейвом, и при этом наружу имеет какие-то входы-выходы для общения с логикой?

Вы уж извините, если надоел. :)

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


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

Ну да, примерно так.

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

Изменено пользователем Пушкин

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


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

RHnd: первый вариант лучше. в этом случае надо будет делать только слейва.

Метод приема данный примерно следущий:

1. Копим данные в фифо.

2. по заполнению фифо вырабатываем прерывание.

3. перекачиваем дынные из фифо в озу(источник прерывания в модуле сбрасывается циклом чтения)

4. п.1

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


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

Может я и не втему , но неплохой контроллера сделал для ксилинкса некто D. Vanden Bout.

Рекомендую глянуть.http://www.xess.com/ho03000.html

 

А я тут благодаря ответам наших знатоков запустил конторллер на микроблэйзе.

Разместил вектора данных там и вроде фурычит. Спаибо нашим пацанам.

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


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

RHnd: первый вариант лучше. в этом случае надо будет делать только слейва.

Метод приема данный примерно следущий:

1. Копим данные в фифо.

2. по заполнению фифо вырабатываем прерывание.

3. перекачиваем дынные из фифо в озу(источник прерывания в модуле сбрасывается циклом чтения)

4. п.1

А зачем прерывание?И куда оно идет то?

По-моему надо так...

1. Копим данные в фифо.

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

3. п.1

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


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

А зачем прерывание?И куда оно идет то?

По-моему надо так...

1. Копим данные в фифо.

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

3. п.1

Я ни в коем случае не отвечаю за Vetal, но мое видение таково: Там же в сопк еще и ниос соберется (он один фик нужен будет для оброаботки изображения), вот в ниос прерывание и поступит, а он по этому прерыванию активизирует dma.

С нетерпением жду ответа Vetal - интересно, правильно ли я идею уловил. :)

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


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

А зачем прерывание?И куда оно идет то?

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

Оно идет на то, что будет эти данные обрабатывать и записывать на SD.

В сопс билдере есть средства, позволяющие решить этот вопрос минимальными усилиями - контроллер ПДП(DMA)

 

С нетерпением жду ответа Vetal - интересно, правильно ли я идею уловил.

Да, правильно. опередили немного)))

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


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

У вас же вся картинка в фифо не влезет, а значит вырабатывать прерывание ниосу надо не каждый раз по заполнению фифо, а когда вся картинка будет записано в озу.

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


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

У вас же вся картинка в фифо не влезет, а значит вырабатывать прерывание ниосу надо не каждый раз по заполнению фифо, а когда вся картинка будет записано в озу.

Так, теперь я снова запутался. После того, как фифо почти заполнится, но картинка пришла еще далеко не вся, нам нужно срочно информацию из фифо перекинуть в сдрам, а делать это лучше всего дма. Пока вроде все понятно. Далее: когда я читал Nios II Reference Manual и Altera: Embbeded Periphery, у меня сложилось ощущение, что подключить дма и настроить его можно только из ниоса. Соответственно, надо подавать прерывание ниосу, дабы он включал дма. Это так? Или дма можно задействовать каким-то другим способом? Или предлагается переписать фифо -> сдрам другим способом?

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


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

У вас же вся картинка в фифо не влезет, а значит вырабатывать прерывание ниосу надо не каждый раз по заполнению фифо, а когда вся картинка будет записано в озу.

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

 

оответственно, надо подавать прерывание ниосу, дабы он включал дма. Это так?

Да,так. Это наиболее простой способ.

 

RHnd: нарисуйте на бумаге структурную схему. Вам станет намного проще понимать что должна будет делать ваша система.

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


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

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

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

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

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

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

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

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

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

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