SancheSZ 0 5 марта, 2008 Опубликовано 5 марта, 2008 · Жалоба Помогите выбрать микроконтроллер для следующей задачи: необходимо по сигналу готовности данных принимать принимать данные из 8-10 разрядного АЦП с частотой порядка 10 Мегавыборок в секунду и без какой-либо обработки отправлять их в комп по USB, где приложение будет тупо этот поток сбрасывать на диск. Таким образом необходимая скорость передачи данных 10-15 МБ\сек. Сам приматриваюсь к Cypress FX2. Возможно ли на нем реализовать подобный обмен? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aal 0 6 марта, 2008 Опубликовано 6 марта, 2008 · Жалоба http://www.kernelchip.ru/WoodmanUSB.php сделан похоже именно на кайпрессе.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SancheSZ 0 7 марта, 2008 Опубликовано 7 марта, 2008 (изменено) · Жалоба Понадобятся ли какие-либо дополнительные микросхемы (например буферная память, вспомогательные контроллеры и тд) или все можно сделать на одном FX2? Насколько я понимаю там должна быть работа в режиме Slave FIFO... Изменено 7 марта, 2008 пользователем SancheSZ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slog 0 7 марта, 2008 Опубликовано 7 марта, 2008 · Жалоба Слать данные с частотой 10MHz может далеко не каждый контроллер, не говоря уж про "микро". И если АЦП 10-ти разрядный, то нужна чистая пропускная способность 100MBit/sec так что про USB наверно придётся забыть. Я бы смотрел в сторону Ethernet + FPGA, и 100Mbit скорее всего еще и не хватит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SancheSZ 0 7 марта, 2008 Опубликовано 7 марта, 2008 · Жалоба Ну во-первых максимальная попускная способность USB 2.0 в High Speed режиме составляет 480 Мбит\сек, так что 100 не должно быть проблемой. Да и о самого контроллера (ядра) особо ничего не требуется. Насколько я понял из чтения мануала USB приемо-передатчик реализован там на аппаратном уровне и может быть сконфигурирован, чтобы просто перегонять данные из FIFO к хосту. Интересует мнение людей, имевших дело с данным контроллером, а так же любые пратические советы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 7 марта, 2008 Опубликовано 7 марта, 2008 · Жалоба Понадобятся ли какие-либо дополнительные микросхемы (например буферная память, вспомогательные контроллеры и тд) или все можно сделать на одном FX2? Насколько я понимаю там должна быть работа в режиме Slave FIFO... Сам по себе FX2LP в режиме Slave FIFO позволяет достичь скорости обмена до 40 МБайт/сек. Проблемы возникнут, если операционная система компьютера начнет переключать задачи. То есть, необходима буферная память, чтобы не терять данные во время переключения задач. Размер буферной памяти расчитывается исходя из необходимой скорости обмена и времени на вероятное переключение задач. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SancheSZ 0 10 марта, 2008 Опубликовано 10 марта, 2008 · Жалоба Мне не понятно следующе: допустим мое устройство заполняет буфер FIFIO. После заполнения буфера (так ведь?) происходит отправка данных по USB. Во время этого процесса буфер получается заполнен и не доступен для моего усройства? Ведь отправка данных занимает некотрое время.... И потом, получается что пропускня способность USB (480 Mbit/s) не постоянна во времени, т.к. между передачами будут аузы, пока заполняется буфер, и чтоб обеспечить такую скорость нужно чтобы иковая скорость превышала 480.. Это так, размышления просто мне конечно максимальная скорость не нужна, но хоелось бы понять общие принципы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 11 марта, 2008 Опубликовано 11 марта, 2008 · Жалоба Мне не понятно следующе: допустим мое устройство заполняет буфер FIFIO. После заполнения буфера (так ведь?) происходит отправка данных по USB. Во время этого процесса буфер получается заполнен и не доступен для моего усройства? Ведь отправка данных занимает некотрое время.... И потом, получается что пропускня способность USB (480 Mbit/s) не постоянна во времени, т.к. между передачами будут аузы, пока заполняется буфер, и чтоб обеспечить такую скорость нужно чтобы иковая скорость превышала 480.. Это так, размышления просто мне конечно максимальная скорость не нужна, но хоелось бы понять общие принципы. Практически любой современный контроллер USB позволяет использовать для endpoint-ов как минимум двойную буферизацию. То есть, пока в один из буферов происходит запись данных, другой используется для пересылки данных через шину USB. Аналогично для приема. В режиме Synchronous Slave FIFO FX2LP позволяет обеспечить скорость чтения/записи из/в буферы FIFO до 96 МБайт/сек. Так, что задержек со стороны контроллера нет. Но, чтобы достичь максимально возможной скорости USB Bulk-обмена (53 МБайт/сек) нужно, чтобы хост-контроллер USB, расположенный в ПЭВМ, работал так, чтобы не было простоев на шине USB. Правильно говорить о том, как долго хост-контроллер может обеспечить максимальную скорость обмена. Это зависит от: объема данных, которыми нужно обмениваться; качества драйвера хост-контроллера, обеспечиваемого операционной системой; качества драйвера для устройства USB; объема памяти, установленной в компьютер; объема и организации дисковой памяти; количества задач и потоков, работающих одновременно; качества работы приложения, которое обеспечивает обмен данными; и т.д. и т.п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg_Sm 0 11 марта, 2008 Опубликовано 11 марта, 2008 · Жалоба У нас используются подобные системы на основе CY7C68013A и внешней FIFO. Скорость приема данных составляет более 40 Мбайт/с - это с доработанным драйвером, с родным будет где-то в районе ~20. Так что никаких проблем в этом нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 11 марта, 2008 Опубликовано 11 марта, 2008 · Жалоба У нас используются подобные системы на основе CY7C68013A и внешней FIFO. Скорость приема данных составляет более 40 Мбайт/с - это с доработанным драйвером, с родным будет где-то в районе ~20. Так что никаких проблем в этом нет. Пожалуйста, напишите подробнее: Какой объем FIFO Вы используете? Какой максимальный объем данных выдают в компьютер Ваши системы? Какой тип передачи (Bulk, Interrupt, Isochronous) Вы используете? Какая, при этом, средняя скорость обмена, а также минимальная и максимальная? Проверяете ли Вы (важна ли для Вас) целостность данных, т.е. прием данных в ПЭВМ без потерь? Какой драйвер дорабатывался и в чем смысл доработок - увеличение максимальной или средней скорости обмена? Мы тоже используем системы на основе CY7C68013A и внешней FIFO. Вот только в качестве FIFO мы используем динамическую память объемом до 64 МБайт. А хотелось бы использовать микросхем(у/ы) настоящего FIFO объемом до 1 МБайта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg_Sm 0 12 марта, 2008 Опубликовано 12 марта, 2008 · Жалоба Пожалуйста, напишите подробнее:Какой объем FIFO Вы используете? Какой максимальный объем данных выдают в компьютер Ваши системы? Какой тип передачи (Bulk, Interrupt, Isochronous) Вы используете? Какая, при этом, средняя скорость обмена, а также минимальная и максимальная? Проверяете ли Вы (важна ли для Вас) целостность данных, т.е. прием данных в ПЭВМ без потерь? Какой драйвер дорабатывался и в чем смысл доработок - увеличение максимальной или средней скорости обмена? Мы тоже используем системы на основе CY7C68013A и внешней FIFO. Вот только в качестве FIFO мы используем динамическую память объемом до 64 МБайт. А хотелось бы использовать микросхем(у/ы) настоящего FIFO объемом до 1 МБайта. На все вопросы ответить не смогу - не я это устройство разрабатывал, но что знаю, то напишу: FIFO 512Кбайт (IDT 32>16 бит - для двухканального АЦП); Объем данных зависит от режима работы - если скорость обработки не меньше скорости приема, то ограничений в принципе нет. Либо зависит от размера выделенной памяти; Тип передачи - кажется Bulk, другие режимы просто не позволят качать данные с приемлимой скоростью. Насчет скоростей обмена не тестировал, но разработчик гарантировал минимум 40МБайт/с. Целостность данных важна. Перерабатывался родной сайпресовский драйвер ezusb.sys. Цель доработки - увеличение скорости обмена (в первую очередь минимальной). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SancheSZ 0 12 марта, 2008 Опубликовано 12 марта, 2008 · Жалоба Можно ли в режиме Slave FIFO организовать такой обмен: по факту наличия действительных данных на АЦП ме устройство вырабатывает строб, который падаетя на какой-то пин Cypress (какой?). Данные напрямую с АЦП на Cypress. По стробу данные загружаются в FIFO. Т.е. каждая выборка сопровождается стробом. По мере зполнения FIFO Cypress отправляет данные хосту, где программа просто их сбрасывает на диск. Если что-то подобное реализуемо, то это синхронный или асинхроный Slave FIFO? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 12 марта, 2008 Опубликовано 12 марта, 2008 · Жалоба На все вопросы ответить не смогу - не я это устройство разрабатывал, но что знаю, то напишу... И на этом спасибо. Хотя я надеялся на более подробные ответы. :) Можно ли в режиме Slave FIFO организовать такой обмен... Это зависит от применяемого АЦП и от возможностей Вашего устройства. Написали бы Вы подробнее, что за АЦП Вы собираетесь применять и, что Вы понимаете под "устройством". Тогда и мой ответ будет более предметным. Одно могу сказать точно уже сейчас: асинхроный Slave FIFO медленнее GPIF. А с помощью GPIF можно организовать обмен с, практически, любым АЦП и без дополнительных устройств. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyS 0 12 марта, 2008 Опубликовано 12 марта, 2008 (изменено) · Жалоба И на этом спасибо. Хотя я надеялся на более подробные ответы. :) Это зависит от применяемого АЦП и от возможностей Вашего устройства. Написали бы Вы подробнее, что за АЦП Вы собираетесь применять и, что Вы понимаете под "устройством". Тогда и мой ответ будет более предметным. Одно могу сказать точно уже сейчас: асинхроный Slave FIFO медленнее GPIF. А с помощью GPIF можно организовать обмен с, практически, любым АЦП и без дополнительных устройств. Ой. (наверное офтопик) А каким образом это аппаратный FIFO народ так расширяет (я так понимаю что при этом не используется доп микруха для раскидывания данных из АЦП в память и потом уже в cypress)????? Или речь идет исключительно о прогрммном (на стороне драйвера)??? Если все же об аппаратном, то как все таки оно организовано, да еще и с сохранением таких скоростей??? (двухпортовая ОЗУ в разрыв между АЦп и cypress???) Изменено 12 марта, 2008 пользователем AndreyS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SancheSZ 0 12 марта, 2008 Опубликовано 12 марта, 2008 (изменено) · Жалоба Konst_777, опишу проект подробнее. Значится так. Все затевается для считывания данных с ПЗС матрицы. Матрица будет тактироваться ПЛИСиной (т.е. ПЛИС будет вырабатывать тактовые импульсы вертикального и горизонтального сдвига в ПЗС). С выхода ПЗС аналоговый сигнал идет на абстрактный 10-битный АЦП. Дык вот, хотелось бы завести эти 10 бит на FX2 и подать на FX2 еще какой-нибудь сигнал с ПЛИС, который бы говорил о готовности данных, т.е. давался синхронно с изменением данных на выходе ПЗС (и АЦП соответственно). Т.е. обмен оносторонний (АЦП->компьютер), темп обмена задается ПЛИСом. На компьютере приложение будет в цикле проверять приход новых данных и сбрасывать их на диск. Вот собственно вопрос в том как все это организовать: какие и сколько сигналов нужно подать на FX2, какой режим применять и тд... Изменено 12 марта, 2008 пользователем SancheSZ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться