Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Написание своего модуля
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Wic
Есть потребность задействовать FTDI FT245RL для начала в режиме VCP (virt COM port), но хочется это сделать красиво, а именно написать свой компонент с регистрами и прерываниями. Вначале думал переделать уже имеющийся компонент UART, но сразу понял, что с наскока не осилю. Посоветуйте, что именно курить из документации. Так же буду рад мануалам или несложным проектам для примера.
Maverick
Цитата(Wic @ Mar 14 2012, 12:10) *
Есть потребность задействовать FTDI FT245RL для начала в режиме VCP (virt COM port), но хочется это сделать красиво, а именно написать свой компонент с регистрами и прерываниями. Вначале думал переделать уже имеющийся компонент UART, но сразу понял, что с наскока не осилю. Посоветуйте, что именно курить из документации. Так же буду рад мануалам или несложным проектам для примера.

Вы ошиблись веткой...
Wic
считаете, что модуль NIOS II должен быть в другой ветке? подскажите тогда в какой.
Копейкин
FT245 подключается через USB к компьютеру.
Драйвер ОС/FTDI и поставляет Вам VCP. Там уже всё красиво.
Можно пользовать D2XX интерфейс. В некоторых случаях это предпочтительно.
На "другой" стороне FT245 параллельный интерфейс для обмена в внутренним (FT245) FIFO буфером.
Последовательного порта, родного, там нет. Это в FT232 USB <-> UART.
Остаётся только подключить к FPGA, выбрав интерфейс последовательный или параллельный.
Писать свой SOPC компонент для обмена может иметь смысл в случае
параллельного интерфейса для скоростного/потокового обмена.
В противном случае компонента PIO или UART достаточно.
Wic
В случае FT232 было бы проще, но уже поставили FT245 и приходится работать с тем, что есть.
Вот я и хочу написать свой компонент для параллельного интерфейса FT245. Вначале сделать простой вариант для VCP, а если понадобится то сделать уже компонент для D2XX.
На данный момент разобрался как создать сам компонент, добавил интерфейсы, создал внешние сигналы, сейчас разбираюсь, что с этим делать дальше и как писать. С частью со стороны FTшки всё просто, сейчас разбираюсь как работает Avalon-MM. Надеюсь в доках что нашел вся информация будет.
Wic
Сделал простейший драйвер с прерываниями по окончанию приема и окончанию передачи. Передает по 8 бит.
Чуть позже выложу компонент для QSYS.
Сейчас думаю сделать передачу и прием по 4 байта, аля brust.
Такой вопрос, как получить частоту клока которым тактируется модуль?
Orochi
поковыряв чужие модули (компоненты qsys к отладочным платалм различных производителей) я замечал что частота которой тактируется модуль, там где это критично притята константой, тоесть известна. И как следствие, если подать не ту частоту, компонент не работает.

Как вариант, может быть, написать ещё 1 компонент на основе счётчика и регистра состояния (хранящий частоту на выходе) вы будете знать частоту и управлять ей по необходимости.
(я в ПЛИС сообществе начинающий, если написал бред прошу не бить, а сказать как принципиально можно сделать это полегче) cool.gif
Wic
Я об этом догадался, что частота клока известна. Но вот как получить ее, чтобы можно было на ее основе делать нужные задержки, вот это для меня более интересно. Сейчас частоту задаю при добавление модуля в систему, но хочется сделать, чтобы она сама в зависимости от клока задавалась.
Orochi
Изнутри модуля тактируемого частотой CLOCK никак не узнать частоту этого CLOCK, так как мерять надо относительно чего то, и не получится измерять частоту относительно этой же частоты. Вам нужена или заведомо большая опять же извесная частота, или внешние модули которые тактируются опять же извесной частотой. В любом случае изврат из области микросхемотехники.

Как вариант добавте в свой модуль субмодуль на который приходит известная частота, он её изменяет на необходимую вам (меньшую) частоту, и регулирует её вам по Вашему же закону и Вашим же условиям, которые вы пропишите.
Wic
Мне не нужно ее мерить. Мне нужно значение, которое задано в Qsys.
Egor-ka
Здравствуйте, Wic.
Вы хотели выложить компонент для FT245...
Цитата(Wic @ Apr 6 2012, 07:00) *
Сделал простейший драйвер с прерываниями по окончанию приема и окончанию передачи. Передает по 8 бит.
Чуть позже выложу компонент для QSYS.

Мне сейчас очень актуальна эта тема - как раз разбираюсь с FT245 и хочу приспособитье его под ниос..
Если можете поделитесь HDL-описаниями?
Stewart Little
Цитата(Egor-ka @ Dec 18 2012, 18:54) *
Мне сейчас очень актуальна эта тема - как раз разбираюсь с FT245 и хочу приспособитье его под ниос..
Если можете поделитесь HDL-описаниями?

"Все уже украдено до нас!" (с) : FT2232H USB Avalon Core
Под свою задачу можете сами допилить.
Wic
Могу скинуть компонент. Сейчас правда есть мысль дописать контрольные суммы, но это уже разнообразия ради.
ps за исполнение прошу прощение, переписать на чем то более приличном пока нет времени.
juvf
Добавил в систему ваш ftdi. Собрал BSP. В проекте Ниоса (в Eclipse) нету ftdi_uart_regs.h, не добавляется он в проект при компиляции. Как вы эту проблему решаете? Руками в проект добавить этот ашник?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.