МАРСОХОД

Open Source Hardware Project

Проекты Altera Quartus II для платы Марсоход

Как улучшить проект USB

Мы уже делали USB устройство на плате Марсоход. Проект тот был вполне работоспособный, но был у него один существенный недостаток. Дело в том, что в этом проекте использовалась тактовая частота от встроенного генератора - примерно 5Мгц. В разных партиях микросхем EPM240T100C5, используемой в плате Марсоход частота этого генератора различается и иногда значительно.
Вот это и печально. Это значит, что не на всех платах тот проект заработает сразу и без проблем. Я сделал ряд экспериментов и вижу, что проект работает очень хорошо, если частота внутреннего генератора около 4,880Мгц. Если больше 5Мгц, то начинаются проблемы - USB транзакции плохо принимаются моим устройством или то, что оно отправляет не принимает хост (компьютер).
С этим нужно что-то делать...

На самом деле, конечно, низкоскоростные устройства USB передают и принимают данные на частоте 1,5Мгц. В этом смысле самая удобная для нас частота будет 12Мгц (а не 5Мгц как сейчас). Число 12 хорошо делится на 8 и получается как раз нужные нам 1,5.

Чтобы решить проблему мы использовали внешний генератор 24Мгц (KCO-010T KOYO). Он выпаян из старой материнской платы и к сожалению довольно большой по габаритам. Возможно вы найдете себе генератор меньших размеров.
На этих картинках видно как он припаян к плате Марсоход:

Генератор 24Мгц на плате Марсоход

Генератор 24Мгц на плате Марсоход

Внутри проекта Quartus II для платы Марсоход частота 24Мгц теперь делится на 2 и получается 12Мгц, которые идут далее везде: на приемник, передатчик, ядро и UFM.

Использование внешнего генератора 24Мгц на плате Марсоход для USB

Выход генератора подается на PIN_75 платы Марсоход. Во многих наших проектах эта нога называется pt_right. Чтобы убедиться, что у меня получилась нужная частота, я вывел ее наружу, на контакты f0 платы Марсоход и померял частоту нашим частотомером (кстати сделан то же из платы Марсоход).

Генератор на плате Марсоход - измерение частоты

Теперь USB приемник и USB передатчик пришлось немного переделать - и даже упростить. Ведь нам нужно всего лишь поделить 12Мгц на 8, а не городить "огород" вычисляя 1,5Мгц из ~5Мгц, как это было раньше.
Так что теперь стало все и проще и надежней.

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



А вот и мой новый проект, использующий внешний генератор:


Комментарии  

+1 #11 nckm 25.09.2013 09:19
Цитирую const:
Можно ли будет безболезенно заменить ufm на ram?

Самое простое - попробовать сделать симулятор UFM для cyclone
+1 #10 const 24.09.2013 13:40
Здраствуйте. У меня есть плата De0-nano, первый простой проект запустил. Но мне еще хотелось бы читать данные с устройства. Так как в Cyclone IV нет ufm, пробую заменить ее просто на ram. Но так как сложно разобратся в логике работы контроллера. Тем более что он оптимизирован. Можно ли будет безболезенно заменить ufm на ram?
+1 #9 nckma 09.10.2012 16:39
Цитирую Сергей:
Драйвер для USB заводится только на XP 32 бит...На остальных операционках, а главное на win7 64 бит работать отказывается... Что делать? Уж очень бы не помешал рабочий USB на марсаходе...

я посмотрю, может можно что-то сделать..
+1 #8 Сергей 08.10.2012 18:39
Драйвер для USB заводится только на XP 32 бит...На остальных операционках, а главное на win7 64 бит работать отказывается... Что делать? Уж очень бы не помешал рабочий USB на марсаходе...
+1 #7 nckma 27.08.2012 13:08
Цитирую Вячеслав:
Скажите..а сложно переделать драйвер, чтобы он работал на х64 системе тоже..что для этого нужно?

Я попробую сделать и тогда напишу.
+1 #6 Вячеслав 26.08.2012 09:32
Скажите..а сложно переделать драйвер, чтобы он работал на х64 системе тоже..что для этого нужно?
+1 #5 Вячеслав 21.08.2012 18:45
Вообщем разобрался..про сто драйвер для Марсохода на Win7 x64 системы не ставится...а на ХРх32 сначала не то что-то установилось, вручную указал на bulkusb файл и всё ОК...
+3 #4 nckma 20.08.2012 07:41
Цитирую Вячеслав:
Здравствуйте..Решил повторить ваш проект..24Мгц получаю через PLL с другой платки и подаю на pin78 (F2) после чего все успешно компилируется и в Диспетчере устройств появляется Marsohod.Org, но с восклицательным знаком. Драйвер указываю вручную..не ставится...Проверял на Win7x64 и XPx32..Может подскажете в какую сторону рыть?

Попробуйте найти какой нибудь анализатор USB трафика. Например http://www.usblyzer.com/ - правда он имеет пробный период 30 дней, но возможно этого будет достаточно, чтобы понять что происходит. С помощью этой программы увидите какие данные приходят от устройства и валидные ли они.
+1 #3 Вячеслав 18.08.2012 18:12
Здравствуйте..Р ешил повторить ваш проект..24Мгц получаю через PLL с другой платки и подаю на pin78 (F2) после чего все успешно компилируется и в Диспетчере устройств появляется Marsohod.Org, но с восклицательным знаком. Драйвер указываю вручную..не ставится...Пров ерял на Win7x64 и XPx32..Может подскажете в какую сторону рыть?
+2 #2 nckm 14.12.2010 14:20
Цитирую Alex:
А вы не планируете открыть форум или wiki? Было бы интересно и самим выкладывать поделки на марсоходе

Ну вообще-то планировали, только пока не знаю когда это будет. Если вы сможете сделать описание вашего проекта - даже просто в ворде - пришлите нам и мы его опубликуем под вашим именем! Это было бы очень интересно!
+1 #1 Alex 14.12.2010 03:58
А вы не планируете открыть форум или wiki? Было бы интересно и самим выкладывать поделки на марсоходе

Добавить комментарий


Защитный код
Обновить


GitHub YouTube Twitter
Вы здесь: Начало Проекты Проект Марсоход Как улучшить проект USB