|
Помогите с выбором кристалла |
|
|
|
Aug 8 2005, 08:19
|
Участник

Группа: Новичок
Сообщений: 19
Регистрация: 4-08-05
Пользователь №: 7 369

|
Требуется плата захвата (как в MPS, AVR), которая по приходу каждого следующего импульса записывает текущее значение таймера в спец. регистр, который в дальнейшем обрабатывается, и данные уходят по rs-232 на ПК. Можно обойтись без обработки регистра захвата, а сразу отправлять на ПК. Максимальная входная частота 3 МГц, причем больше 1000 импульсов в секунду в большинстве случаев не бывает, но подобная ситуация может возникнуть и ее требуется зафиксировать.
Я сделал это на MSP430, но конечно была занижена входная частота. Перехожу на TMS320 - при входной частоте 3 МГц должен успеть.
Хочу сделать это на ПЛИС, но не знаю какую взять для этой задачи? Есть ли готовые решения rs-232 и rs-485, уже встроенные в кристалл? Можно ли построить 32-разрядный таймер и какую тогда следует использовать ПЛИС?
Я с ПЛИС не работал, потому прошу не пинать.
|
|
|
|
|
Aug 8 2005, 08:40
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(-=user=- @ Aug 8 2005, 03:19) Максимальная входная частота 3 МГц, причем больше 1000 импульсов в секунду в большинстве случаев не бывает, но подобная ситуация может возникнуть и ее требуется зафиксировать. это как понимать ? у вас есть 1000 импульсов с заполенением частотой 3 МГц ? ну если вам нужно только импульсы ловить то ИМХО модуль capture campare на сигналах (Ф12х) вам самое то. хотя можно и на врках сделать. А насчет плис то ИМХО ЦПЛД МАкс 2 или кулранера вам заглаза и при атачить его к тому же МСП. И немного не понятна логика, типа "я сделал на МК, теперь вот хочу на дсп + плис", глупый вопрос а зачем тогда на с мк надо было начинать ? без обид.
--------------------
|
|
|
|
|
Aug 8 2005, 16:08
|
Участник

Группа: Новичок
Сообщений: 19
Регистрация: 4-08-05
Пользователь №: 7 369

|
Цитата у вас есть 1000 импульсов с заполенением частотой 3 МГц ? Импульсы могут идти с такой частотой, я просто забыл дописать что они идут от счетчика Гейгера-Мюллера и потому этот процесс случайный (вернее подчиняется распределению Пуассона), т.е. частота может скакать от ~500 Гц до ~3 МГц. Цитата ну если вам нужно только импульсы ловить то ИМХО модуль capture campare на сигналах (Ф12х) вам самое то. хотя можно и на врках сделать Я б и рад, да ни AVR ни MPS430 частоту 3 МГц не поймают  Цитата кулранера я ж новичок, чего это? О CPLD MaxII я понял. Но зачем его к МК цеплять? Для связи с ПК или как дополнительная обработка информации? Цитата я сделал на МК, теперь вот хочу на дсп + плис ну хочется мне ПЛИС попробовать, надо ведь с чего-то начинать. Цитата Причем тут ЦСП, я тоже не понял. К сожалению иногда выбирать не приходится  На чем сказали на том и делаю.
|
|
|
|
|
Aug 9 2005, 08:42
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата Я б и рад, да ни AVR ни MPS430 частоту 3 МГц не поймают  Это с каких это пор они перестали ловить то ? Давайте подсчитаем при тактировании 8 МГЦ, авркой с помошью модуля захвата можно поймать сигнал до 4 МГЦ (т.к. требуеться 2 такта для синхронизации входно сигнала). Что будет на 24 МГц ..........? Если же вы все сделали через опрос состояния ног, тогда ....... что бы связываться с ПК вам нужен уарт, для его реализации необходимо минимум 32 ЛЯ, и то это будет самый примитивный уарт. Хотите круче ищите плис более емкую -> более дорогую. ИМХО поставить мк, на который можно положить нормальный протокол обмена и в помошь ему плис, которая будет считать. ПС но вашу задачу модно выполнить на мк.
--------------------
|
|
|
|
|
Aug 9 2005, 08:54
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(des00 @ Aug 9 2005, 14:42) Цитата Я б и рад, да ни AVR ни MPS430 частоту 3 МГц не поймают  Это с каких это пор они перестали ловить то ? Давайте подсчитаем при тактировании 8 МГЦ, авркой с помошью модуля захвата можно поймать сигнал до 4 МГЦ (т.к. требуеться 2 такта для синхронизации входно сигнала). Не так уж и ловко это получится. Представьте, что валится десяток-другой импульсов с частотой 3 МГц!? Время между импульсами - 330 нс, успеет AVR'ка забирать из регистра захвата данные за такое время при тактовой 8 МГц? Однозначно - нет! У нее только реакция на прерывание минимум 4 такта. Да еще выход из прерывания столько же. Т.е. даже при 20 МГц (т.е. при машинном цикле 50 нс) только вход и выход в обработчик прерывания составят 8*50=400 нс. Можно, конечно, обойтись без обработчиков прерываний - тупо сидеть и ждать флаг (опрашивать), но и тут некузяво - во-первых, ничего другого больше делать нельзя, во-вторых, по скорости все равно сомнительно - флаг опроси, забери данные - два такта на копирование в регистры, 4 такта на копирование в память... - не, фигня, тоже не выходит. Не может проц успешно работать с потоком, близким к его (проца) тактовой. Т.ч. тут аппаратное решение нужно.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Aug 9 2005, 09:04
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
[quote=dxp,Aug 9 2005, 03:54] [quote=des00,Aug 9 2005, 14:42][quote]Я б и рад, да ни AVR ни MPS430 частоту 3 МГц не поймают  Не так уж и ловко это получится. Представьте, что валится десяток-другой импульсов с частотой 3 МГц!? Время между импульсами - 330 нс, успеет AVR'ка забирать из регистра захвата данные за такое время при тактовой 8 МГц? Однозначно - нет! У нее только реакция на прерывание минимум 4 такта. Да еще выход из прерывания столько же. Т.е. даже при 20 МГц (т.е. при машинном цикле 50 нс) только вход и выход в обработчик прерывания составят 8*50=400 нс. Можно, конечно, обойтись без обработчиков прерываний - тупо сидеть и ждать флаг (опрашивать), но и тут некузяво - во-первых, ничего другого больше делать нельзя, во-вторых, по скорости все равно сомнительно - флаг опроси, забери данные - два такта на копирование в регистры, 4 такта на копирование в память... - не, фигня, тоже не выходит. Не может проц успешно работать с потоком, близким к его (проца) тактовой. Т.ч. тут аппаратное решение нужно. [/quote] Хмм да ну, заряжаем модуль захвата и пусть себе считает, не нужно бросаться на каждый импульс, а только на пачку. Т.е. счетчик зарядили и ждем, для того что бы посмотреть сколько импульсов мы насчитали достаточно сделать две операции mov, и 2 опреации что бы сбросить регистры. ну и если быть полностью придирчивым + еще 2 опреации по остановке и включению модуля захвата. Итого 6 тактов, на тактовой в 24 метра вам это за глаза. просто похоже автор либо не совсем точно описал задачу, либо незадействвал моуль захвата. ведь его интересуте не факт поступления импульса а среднее кол-во импульсов.
--------------------
|
|
|
|
|
Aug 9 2005, 09:47
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(des00 @ Aug 9 2005, 15:04) Хмм да ну, заряжаем модуль захвата и пусть себе считает, не нужно бросаться на каждый импульс, а только на пачку. Т.е. счетчик зарядили и ждем, для того что бы посмотреть сколько импульсов мы насчитали достаточно сделать две операции mov, и 2 опреации что бы сбросить регистры. ну и если быть полностью придирчивым + еще 2 опреации по остановке и включению модуля захвата. Итого 6 тактов, на тактовой в 24 метра вам это за глаза. просто похоже автор либо не совсем точно описал задачу, либо незадействвал моуль захвата. ведь его интересуте не факт поступления импульса а среднее кол-во импульсов. А, ну если только импульсы считать (а не засекать времена между ними), то, пожалуй, и прокатит. Меня сбило с толку упоминание про модуль захвата - модуль захвата используется для засекания временнОго положения перепада. А для подсчета он не нужен - таймер/счетчик в этом случае используется как счетчик - просто тупо считает импульсы. Емкость там весьма приличная - 65535, т.ч. достаточно раз в несколько сотен микросекунд считывать значение счетчика и все.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Aug 9 2005, 11:12
|
Участник

Группа: Новичок
Сообщений: 19
Регистрация: 4-08-05
Пользователь №: 7 369

|
Цитата ведь его интересуте не факт поступления импульса а среднее кол-во импульсов. Меня интересует временные промежутки между каждыми двумя импульсами и потому среднее значение не подходит.
|
|
|
|
|
Aug 9 2005, 13:19
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(des00 @ Aug 9 2005, 15:52) Цитата(dxp @ Aug 9 2005, 04:47) А, ну если только импульсы считать (а не засекать времена между ними), то, пожалуй, и прокатит. Меня сбило с толку упоминание про модуль захвата - модуль захвата используется для засекания временнОго положения перепада. А для подсчета он не нужен - таймер/счетчик в этом случае используется как счетчик - просто тупо считает импульсы. Емкость там весьма приличная - 65535, т.ч. достаточно раз в несколько сотен микросекунд считывать значение счетчика и все.  ну называеться он так в документации  capture compare module построен на основе счетчика, и кстати и длительность сигнала можно мерить на нем, просто нужно настроить его входной модуль на автозахват состояния счетчика по событию (восходящий и нисходящий фронт) и потом просто взять разницу  хотя тут есть подводные камни.  Э-э, не понял, причем тут вообще capture module (что это такое, я в курсе)? Речь шла о подсчете импульсов. Т.е. достаточно подать сигнал на счетный вход таймера/счетчика. Никакие фенки capture module (как то регистр захвата, noise canceler и прочее) тут не нужны. Более того, для подсчета импульсов можно использовать таймер, вообще не содержащий никаких capture модулей. Capture модуль - для засекания времянок, тут он не нужен никак. Что не так?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Aug 9 2005, 13:27
|
Частый гость
 
Группа: Свой
Сообщений: 172
Регистрация: 8-10-04
Пользователь №: 824

|
Цитата(-=user=- @ Aug 9 2005, 14:12) Цитата ведь его интересуте не факт поступления импульса а среднее кол-во импульсов. Меня интересует временные промежутки между каждыми двумя импульсами и потому среднее значение не подходит. Т.е. нужен TDC (ВЦП) с разрешением не хуже 100нс и возможностью накопления данных. Есть опыт програмирования, но нет опыта проектироватия схем на кристалле. В этой ситуации можно посоветывать Triscend. С каким ядром (x51 или A7) решать Вам. Посмотрите здесь: www.triscend.com www.zylogic.com.cn www.efo.ru (у ефо есть обучение, но это на любителя), может поможет.
|
|
|
|
|
Aug 9 2005, 14:00
|
Участник

Группа: Новичок
Сообщений: 19
Регистрация: 4-08-05
Пользователь №: 7 369

|
Цитата все и так без проблемм можно реализовать на уровне автоматов Вер гуд Как я уже говорил с ПЛИС я не сталкивался, а на обычных элементах я себе это так представляю: для детектирования фронта используется элемент "XOR", на один из входов которого подан логический уровень (зависит от того что надо ловить - передний или задний фронт). По приходу фронта импульса сигнал от XOR идет на разрешение передачи текущего значения 16-разрядного счетчика по каналу rs-232, -485. После счетчик обнуляется и все повторяется. Чего еще надо?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|