-=user=- 0 8 августа, 2005 Опубликовано 8 августа, 2005 · Жалоба Требуется плата захвата (как в MPS, AVR), которая по приходу каждого следующего импульса записывает текущее значение таймера в спец. регистр, который в дальнейшем обрабатывается, и данные уходят по rs-232 на ПК. Можно обойтись без обработки регистра захвата, а сразу отправлять на ПК. Максимальная входная частота 3 МГц, причем больше 1000 импульсов в секунду в большинстве случаев не бывает, но подобная ситуация может возникнуть и ее требуется зафиксировать. Я сделал это на MSP430, но конечно была занижена входная частота. Перехожу на TMS320 - при входной частоте 3 МГц должен успеть. Хочу сделать это на ПЛИС, но не знаю какую взять для этой задачи? Есть ли готовые решения rs-232 и rs-485, уже встроенные в кристалл? Можно ли построить 32-разрядный таймер и какую тогда следует использовать ПЛИС? Я с ПЛИС не работал, потому прошу не пинать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 8 августа, 2005 Опубликовано 8 августа, 2005 · Жалоба Максимальная входная частота 3 МГц, причем больше 1000 импульсов в секунду в большинстве случаев не бывает, но подобная ситуация может возникнуть и ее требуется зафиксировать. <{POST_SNAPBACK}> это как понимать ? у вас есть 1000 импульсов с заполенением частотой 3 МГц ? ну если вам нужно только импульсы ловить то ИМХО модуль capture campare на сигналах (Ф12х) вам самое то. хотя можно и на врках сделать. А насчет плис то ИМХО ЦПЛД МАкс 2 или кулранера вам заглаза и при атачить его к тому же МСП. И немного не понятна логика, типа "я сделал на МК, теперь вот хочу на дсп + плис", глупый вопрос а зачем тогда на с мк надо было начинать ? без обид. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 8 августа, 2005 Опубликовано 8 августа, 2005 · Жалоба Причем тут ЦСП, я тоже не понял. На MAXII, в частности epm240, можно без проблемм реализовать требуемую схему, еще и куча места останется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=user=- 0 8 августа, 2005 Опубликовано 8 августа, 2005 · Жалоба у вас есть 1000 импульсов с заполенением частотой 3 МГц ? Импульсы могут идти с такой частотой, я просто забыл дописать что они идут от счетчика Гейгера-Мюллера и потому этот процесс случайный (вернее подчиняется распределению Пуассона), т.е. частота может скакать от ~500 Гц до ~3 МГц. ну если вам нужно только импульсы ловить то ИМХО модуль capture campare на сигналах (Ф12х) вам самое то. хотя можно и на врках сделать Я б и рад, да ни AVR ни MPS430 частоту 3 МГц не поймают :( кулранера я ж новичок, чего это? О CPLD MaxII я понял. Но зачем его к МК цеплять? Для связи с ПК или как дополнительная обработка информации? я сделал на МК, теперь вот хочу на дсп + плис ну хочется мне ПЛИС попробовать, надо ведь с чего-то начинать. Причем тут ЦСП, я тоже не понял. К сожалению иногда выбирать не приходится :( На чем сказали на том и делаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 9 августа, 2005 Опубликовано 9 августа, 2005 · Жалоба Я б и рад, да ни AVR ни MPS430 частоту 3 МГц не поймают :( Это с каких это пор они перестали ловить то ? Давайте подсчитаем при тактировании 8 МГЦ, авркой с помошью модуля захвата можно поймать сигнал до 4 МГЦ (т.к. требуеться 2 такта для синхронизации входно сигнала). Что будет на 24 МГц ..........? Если же вы все сделали через опрос состояния ног, тогда ....... что бы связываться с ПК вам нужен уарт, для его реализации необходимо минимум 32 ЛЯ, и то это будет самый примитивный уарт. Хотите круче ищите плис более емкую -> более дорогую. ИМХО поставить мк, на который можно положить нормальный протокол обмена и в помошь ему плис, которая будет считать. ПС но вашу задачу модно выполнить на мк. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 56 9 августа, 2005 Опубликовано 9 августа, 2005 · Жалоба Я б и рад, да ни AVR ни MPS430 частоту 3 МГц не поймают :( Это с каких это пор они перестали ловить то ? Давайте подсчитаем при тактировании 8 МГЦ, авркой с помошью модуля захвата можно поймать сигнал до 4 МГЦ (т.к. требуеться 2 такта для синхронизации входно сигнала). <{POST_SNAPBACK}> Не так уж и ловко это получится. Представьте, что валится десяток-другой импульсов с частотой 3 МГц!? Время между импульсами - 330 нс, успеет AVR'ка забирать из регистра захвата данные за такое время при тактовой 8 МГц? Однозначно - нет! У нее только реакция на прерывание минимум 4 такта. Да еще выход из прерывания столько же. Т.е. даже при 20 МГц (т.е. при машинном цикле 50 нс) только вход и выход в обработчик прерывания составят 8*50=400 нс. Можно, конечно, обойтись без обработчиков прерываний - тупо сидеть и ждать флаг (опрашивать), но и тут некузяво - во-первых, ничего другого больше делать нельзя, во-вторых, по скорости все равно сомнительно - флаг опроси, забери данные - два такта на копирование в регистры, 4 такта на копирование в память... - не, фигня, тоже не выходит. Не может проц успешно работать с потоком, близким к его (проца) тактовой. Т.ч. тут аппаратное решение нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 9 августа, 2005 Опубликовано 9 августа, 2005 · Жалоба Я б и рад, да ни AVR ни MPS430 частоту 3 МГц не поймают :( Не так уж и ловко это получится. Представьте, что валится десяток-другой импульсов с частотой 3 МГц!? Время между импульсами - 330 нс, успеет AVR'ка забирать из регистра захвата данные за такое время при тактовой 8 МГц? Однозначно - нет! У нее только реакция на прерывание минимум 4 такта. Да еще выход из прерывания столько же. Т.е. даже при 20 МГц (т.е. при машинном цикле 50 нс) только вход и выход в обработчик прерывания составят 8*50=400 нс. Можно, конечно, обойтись без обработчиков прерываний - тупо сидеть и ждать флаг (опрашивать), но и тут некузяво - во-первых, ничего другого больше делать нельзя, во-вторых, по скорости все равно сомнительно - флаг опроси, забери данные - два такта на копирование в регистры, 4 такта на копирование в память... - не, фигня, тоже не выходит. Не может проц успешно работать с потоком, близким к его (проца) тактовой. Т.ч. тут аппаратное решение нужно. <{POST_SNAPBACK}> Хмм да ну, заряжаем модуль захвата и пусть себе считает, не нужно бросаться на каждый импульс, а только на пачку. Т.е. счетчик зарядили и ждем, для того что бы посмотреть сколько импульсов мы насчитали достаточно сделать две операции mov, и 2 опреации что бы сбросить регистры. ну и если быть полностью придирчивым + еще 2 опреации по остановке и включению модуля захвата. Итого 6 тактов, на тактовой в 24 метра вам это за глаза. просто похоже автор либо не совсем точно описал задачу, либо незадействвал моуль захвата. ведь его интересуте не факт поступления импульса а среднее кол-во импульсов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 56 9 августа, 2005 Опубликовано 9 августа, 2005 · Жалоба Хмм да ну, заряжаем модуль захвата и пусть себе считает, не нужно бросаться на каждый импульс, а только на пачку. Т.е. счетчик зарядили и ждем, для того что бы посмотреть сколько импульсов мы насчитали достаточно сделать две операции mov, и 2 опреации что бы сбросить регистры. ну и если быть полностью придирчивым + еще 2 опреации по остановке и включению модуля захвата. Итого 6 тактов, на тактовой в 24 метра вам это за глаза. просто похоже автор либо не совсем точно описал задачу, либо незадействвал моуль захвата. ведь его интересуте не факт поступления импульса а среднее кол-во импульсов. <{POST_SNAPBACK}> А, ну если только импульсы считать (а не засекать времена между ними), то, пожалуй, и прокатит. Меня сбило с толку упоминание про модуль захвата - модуль захвата используется для засекания временнОго положения перепада. А для подсчета он не нужен - таймер/счетчик в этом случае используется как счетчик - просто тупо считает импульсы. Емкость там весьма приличная - 65535, т.ч. достаточно раз в несколько сотен микросекунд считывать значение счетчика и все. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 9 августа, 2005 Опубликовано 9 августа, 2005 · Жалоба А, ну если только импульсы считать (а не засекать времена между ними), то, пожалуй, и прокатит. Меня сбило с толку упоминание про модуль захвата - модуль захвата используется для засекания временнОго положения перепада. А для подсчета он не нужен - таймер/счетчик в этом случае используется как счетчик - просто тупо считает импульсы. Емкость там весьма приличная - 65535, т.ч. достаточно раз в несколько сотен микросекунд считывать значение счетчика и все. :) ну называеться он так в документации :) capture compare module построен на основе счетчика, и кстати и длительность сигнала можно мерить на нем, просто нужно настроить его входной модуль на автозахват состояния счетчика по событию (восходящий и нисходящий фронт) и потом просто взять разницу :) хотя тут есть подводные камни. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stas 1 9 августа, 2005 Опубликовано 9 августа, 2005 · Жалоба На мой взгляд если использовать ПЛИС, то можно сделать всю систему однокристальной те сделать UART+автомат+систему захвата в самой плис, без микроконтроллера. Сомнительно что скорости 115200 RS232 будет достаточно допустим для передачи параметров импульса. Мб имеет смысл сделать на МК c встроенным USB (есть в PIC, Cypress и тп), COM медленно и верно погибает, на моем нотебуке его уже нет... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=user=- 0 9 августа, 2005 Опубликовано 9 августа, 2005 · Жалоба ведь его интересуте не факт поступления импульса а среднее кол-во импульсов. Меня интересует временные промежутки между каждыми двумя импульсами и потому среднее значение не подходит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 56 9 августа, 2005 Опубликовано 9 августа, 2005 · Жалоба А, ну если только импульсы считать (а не засекать времена между ними), то, пожалуй, и прокатит. Меня сбило с толку упоминание про модуль захвата - модуль захвата используется для засекания временнОго положения перепада. А для подсчета он не нужен - таймер/счетчик в этом случае используется как счетчик - просто тупо считает импульсы. Емкость там весьма приличная - 65535, т.ч. достаточно раз в несколько сотен микросекунд считывать значение счетчика и все. :) ну называеться он так в документации :) capture compare module построен на основе счетчика, и кстати и длительность сигнала можно мерить на нем, просто нужно настроить его входной модуль на автозахват состояния счетчика по событию (восходящий и нисходящий фронт) и потом просто взять разницу :) хотя тут есть подводные камни. :) <{POST_SNAPBACK}> Э-э, не понял, причем тут вообще capture module (что это такое, я в курсе)? Речь шла о подсчете импульсов. Т.е. достаточно подать сигнал на счетный вход таймера/счетчика. Никакие фенки capture module (как то регистр захвата, noise canceler и прочее) тут не нужны. Более того, для подсчета импульсов можно использовать таймер, вообще не содержащий никаких capture модулей. Capture модуль - для засекания времянок, тут он не нужен никак. Что не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tvv 0 9 августа, 2005 Опубликовано 9 августа, 2005 · Жалоба ведь его интересуте не факт поступления импульса а среднее кол-во импульсов. Меня интересует временные промежутки между каждыми двумя импульсами и потому среднее значение не подходит. <{POST_SNAPBACK}> Т.е. нужен TDC (ВЦП) с разрешением не хуже 100нс и возможностью накопления данных. Есть опыт програмирования, но нет опыта проектироватия схем на кристалле. В этой ситуации можно посоветывать Triscend. С каким ядром (x51 или A7) решать Вам. Посмотрите здесь: www.triscend.com www.zylogic.com.cn www.efo.ru (у ефо есть обучение, но это на любителя), может поможет. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 9 августа, 2005 Опубликовано 9 августа, 2005 · Жалоба По моей информации,triscend больше не существует. Задача -простейшая, как говорилось вначале, мсх семейства MAXII позволяет выполнить все задачи на одном кристалле. Если очень лениво, то можно собрать маленький, самодельный cpu и реализовать протокол на нем, хотя это лишнее, все и так без проблемм можно реализовать на уровне автоматов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=user=- 0 9 августа, 2005 Опубликовано 9 августа, 2005 · Жалоба все и так без проблемм можно реализовать на уровне автоматов Вер гуд :) Как я уже говорил с ПЛИС я не сталкивался, а на обычных элементах я себе это так представляю: для детектирования фронта используется элемент "XOR", на один из входов которого подан логический уровень (зависит от того что надо ловить - передний или задний фронт). По приходу фронта импульса сигнал от XOR идет на разрешение передачи текущего значения 16-разрядного счетчика по каналу rs-232, -485. После счетчик обнуляется и все повторяется. Чего еще надо? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться