МАРСОХОД

Open Source Hardware Project

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

Мы уже делали 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? Было бы интересно и самим выкладывать поделки на марсоходе

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



ВКонтакте  facebook  GitHub  YouTube  Twitter