Jump to content
    

"расширенный" UART в NIOS

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

 

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

 

Share this post


Link to post
Share on other sites

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

 

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

Я так и делал. Во вложении для примера мой UART. Только я делал его под свои нужды. У него прерывания на прием (и на передачу) выставляются по определенному терминирующему байту, а не по паузе между байтами. На передачу ДМА нет. И управление CTS (на передачу. Я что-то подзабыл, с названиями могу попутать, но функционал этих хэндшейков правильно пишу) автоматическое, а RTS (на прием) только программное. Но на приеме ДМА организован как кольцевой буфер. Для меня это было важно. Да и безопасно.

В общем, не совсем то что ищете, но в качестве примера. Тестбенч, как всегда, лоховской :), доки тоже нет. Описание всех регистров в инкулуд-файле. Там, вобщем-то вся логика из описания регистров будет понятна. Оберточных файла два. С ДМА и без. Не понял как делать один общий с параметрами если меняется количество интерфейсов. Скорее всего никак. Ну и за английский не пинайте :)

UART.rar

Share this post


Link to post
Share on other sites

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

 

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

 

Начал свою реализачию делать через *_hw.tcl. Вопрос возник. У вас 2 шины, у меня 1. Сделал шину Avalon-MM slave. Её подключил к ядру ниоса и её же подключил к DMA. Воде авалон позволяет двух мастеров на шине иметь и колизии автоматом разруливаются. Будет так работать или обязятельно для кантроля нужна одна шина, а для DMA отдельная?

Share this post


Link to post
Share on other sites

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

Как обычно это и делается. В SOPC выполняете команду "new component" (ЕМНИП). Выбираете головной файл, у меня это один из обертоных файлов. Ну а далее можно догадаться по пунктам, ну и мануал по созданию своего компонета в помощь. Или не в этом вопрос?

Начал свою реализачию делать через *_hw.tcl. Вопрос возник. У вас 2 шины, у меня 1. Сделал шину Avalon-MM slave. Её подключил к ядру ниоса и её же подключил к DMA. Воде авалон позволяет двух мастеров на шине иметь и колизии автоматом разруливаются. Будет так работать или обязятельно для кантроля нужна одна шина, а для DMA отдельная?

Будет работать и так. Там арбитраж реализован.

А то что у меня две шины - так у меня же DMA внутри. Соответственно он обязан иметь мастера. Если Вы используете внешний DMA, то получите тоже самое, почти.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...