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

 
 
 
Reply to this topicStart new topic
> "расширенный" UART в NIOS
juvf
сообщение Oct 10 2012, 16:47
Сообщение #1


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Как бы организовать умный уарт для ниоса? нужен уарт, который бы принимал данные и по ДМА складывал бы их в определённое место в озу. как только после последнего принятого байта пройдет определённое время, уарт должен генерировать прерывание. А при передаче хотелось бы загрузить пакет в озу и "дернуть старт". данные из озу по дма сами ми бы переправлялись в уарт. после передачи всего пакета уарт (или дма) генерировал бы прерывание или снимал бы флаг бизи. Ну до кучи можно аппаратно управлять внешним драйвером ~RE/TE.

Есть мысли написать свой модуль уарт и посадить его на шину авалон. Только с чего начинать? как свои подобные модули делать? в QSys нужно добавить какойто контроллер авалон и на него цеплять свой модуль? Или сразу свой модуль писать с авалон-слейвом?
Go to the top of the page
 
+Quote Post
barabek
сообщение Oct 10 2012, 22:14
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(juvf @ Oct 11 2012, 02:47) *
Как бы организовать умный уарт для ниоса? нужен уарт, который бы принимал данные и по ДМА складывал бы их в определённое место в озу. как только после последнего принятого байта пройдет определённое время, уарт должен генерировать прерывание. А при передаче хотелось бы загрузить пакет в озу и "дернуть старт". данные из озу по дма сами ми бы переправлялись в уарт. после передачи всего пакета уарт (или дма) генерировал бы прерывание или снимал бы флаг бизи. Ну до кучи можно аппаратно управлять внешним драйвером ~RE/TE.

Есть мысли написать свой модуль уарт и посадить его на шину авалон. Только с чего начинать? как свои подобные модули делать? в QSys нужно добавить какойто контроллер авалон и на него цеплять свой модуль? Или сразу свой модуль писать с авалон-слейвом?

Я так и делал. Во вложении для примера мой UART. Только я делал его под свои нужды. У него прерывания на прием (и на передачу) выставляются по определенному терминирующему байту, а не по паузе между байтами. На передачу ДМА нет. И управление CTS (на передачу. Я что-то подзабыл, с названиями могу попутать, но функционал этих хэндшейков правильно пишу) автоматическое, а RTS (на прием) только программное. Но на приеме ДМА организован как кольцевой буфер. Для меня это было важно. Да и безопасно.
В общем, не совсем то что ищете, но в качестве примера. Тестбенч, как всегда, лоховской sm.gif, доки тоже нет. Описание всех регистров в инкулуд-файле. Там, вобщем-то вся логика из описания регистров будет понятна. Оберточных файла два. С ДМА и без. Не понял как делать один общий с параметрами если меняется количество интерфейсов. Скорее всего никак. Ну и за английский не пинайте sm.gif
Прикрепленные файлы
Прикрепленный файл  UART.rar ( 11.53 килобайт ) Кол-во скачиваний: 25
 
Go to the top of the page
 
+Quote Post
juvf
сообщение Oct 14 2012, 08:42
Сообщение #3


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата
Только я делал его под свои нужды.
у меня валяется какаято корка fifoed_avalon_uart "FIFOed UART (RS-232 serial port)9.3" v9.3, с опенкорс качал. Вроде все ваши нужды покрывает.

Посмотрел вашу реализацию.... Не совсем понятно как это иинтегрируется в SOPC? Как этот уарт внедрить в NIOS?

Начал свою реализачию делать через *_hw.tcl. Вопрос возник. У вас 2 шины, у меня 1. Сделал шину Avalon-MM slave. Её подключил к ядру ниоса и её же подключил к DMA. Воде авалон позволяет двух мастеров на шине иметь и колизии автоматом разруливаются. Будет так работать или обязятельно для кантроля нужна одна шина, а для DMA отдельная?
Go to the top of the page
 
+Quote Post
barabek
сообщение Oct 14 2012, 22:05
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(juvf @ Oct 14 2012, 18:42) *
Посмотрел вашу реализацию.... Не совсем понятно как это иинтегрируется в SOPC? Как этот уарт внедрить в NIOS?

Как обычно это и делается. В SOPC выполняете команду "new component" (ЕМНИП). Выбираете головной файл, у меня это один из обертоных файлов. Ну а далее можно догадаться по пунктам, ну и мануал по созданию своего компонета в помощь. Или не в этом вопрос?
Цитата
Начал свою реализачию делать через *_hw.tcl. Вопрос возник. У вас 2 шины, у меня 1. Сделал шину Avalon-MM slave. Её подключил к ядру ниоса и её же подключил к DMA. Воде авалон позволяет двух мастеров на шине иметь и колизии автоматом разруливаются. Будет так работать или обязятельно для кантроля нужна одна шина, а для DMA отдельная?

Будет работать и так. Там арбитраж реализован.
А то что у меня две шины - так у меня же DMA внутри. Соответственно он обязан иметь мастера. Если Вы используете внешний DMA, то получите тоже самое, почти.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 7th July 2025 - 04:26
Рейтинг@Mail.ru


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