Свежие обсуждения
Измерения

Осц.-пр. к ПК версия 2 (упрощенная)

1 27 44

Ещё с тактовой частотой поспешили, ядро может работать максимум на 55МГц.
Код в SRAM отнимает место у данных, придется использовать цикл даже без кольцевого буфера.
Цикл -- уже порядка 10 тактов.
Короче, всё не так радужно, как может показаться на первый взгляд.

 

caddr -- 55мгц это максимальная скорость выборки 16-бит команд из флеша, если с умножением то 55х4=220мгц
при сохранении думаю есть возможность записи в текущую ячейку кода программы в SRAM т.е программа заместится данными.
может я пока не всё понял,
но фирма гарантирует 50MIPS т.е. 25млн сохранений должно получиться
меня больше волнует неэфективное использование SRAM - данные 8-битные, а память с ними работать не умеет, сдвигать может оказаться долго - может проще поставить 3-мега8

 

Не забывай еще о счетчике для формирования сигнала "ПОЧТИ ПОЛОН" и системе синхронизации.

 

AnSi
В даташите вполне однозначно сказано, что максимальная частота Master Clock -- 55МГц.
PCK (Processor Clock Controller) тактируется как раз от Master Clock.
PLL может генерировать большую частоту, потом её делят.
Рекламный слоган 0.9MIPS/МГц нельзя использовать для оценок в данном случае. Надо считать такты в конкретной программе.

 

Примерный пример программы для AVR я приводил.

1) Прочесть порт
2) Сравнить с числом и если выполнео одно из заранее определенных условий запустить счетчик
3) Записать в память с автоинкрементом адреса
4) Если адрес = конец буфера, то адрес=начало буфера
5) Если счетчик равен (конст) то выйти
6) Инкремент счетчика, если запущен
7) Переход к 1.

 

вы меня уговариваете что ат91 не годится?
очень может быть что я поставлю 3-меги - пока читаю даташит уже написал бы программу на мегу
тут кто-то хвастал что имеет "макетку" - проверьте наши сомнения - запишет ат91 1000выборок за 50мкс(20мгц) ???
кто что думает о 32-битной памяти? - получается 4к слов - вроде не густо, на меге 3кбайт(3шт)
Wladimir_TS - вам писали на предыдущей странице
3 такта на сохранение, плииз внимательнее

caddr -- В даташите вполне однозначно сказано, что максимальная частота Master Clock -- 55МГц.

так никто с этим не спорит.

 

считаю, что серьезную вешь надо делать на ПЛИС, не очень серьезную на 3 мегах с аналоговой синхр.(компаратором)На несерьезной -поставить ЖКИ
Думательный процесс о 3 АВР остановился по причине не нахождения дешевого таймера-счетчика на 60 мГц для клока , управляемого по И2С.
Кроме того , возможны проблемы с переключением клока "на ходу"

 

"вы меня уговариваете что ат91 не годится?"
- Отнюдь нет, мне идея использовать ARM нравится, только неплохо понять что он реально может. Без лишнего оптимизма : - )
32-битная архитектура позволяет без снижения скорости писать поток данных от двух (и даже более, при желании) АЦП, что есть хорошо.

Но прежде чем проверять на макетке надо убедится что в этом есть хотя бы смысл.

Алгоритм с цифровым триггером и кольцевым буфером (то что предлагает Wladimir_TS) по моему разумению будет выглядеть примерно так (GNU ASM):


fetch_loop:
ldr r0, [input_port] /* r0 := ADC sample */
cmp r0, trigger_level /* Compare r0 with trigger_level */
movhi is_triggered, #1 /* is_triggered := 1 if r0 > trigger_level */
sub countdown, countdown, is_triggered /* countdown := countdown - is_triggered */
beq fetch_complete /* Break if countdown == 0 */
str r0, [buffer_ptr], #4 /* Store sample, buffer_ptr post-incremented */
cmp buffer_ptr, buffer_end /* Are we at the end of buffer? */
moveq buffer_ptr, buffer_start /* If so, return buffer_ptr to the beginning */
b fetch_loop /* Unconditial jump to fetch_loop */
fetch_complete:

Символические имена input_port, trigger_level и тд заменяются на предварительно инициализированные регистры r1, r2, r3...
Получается что-то около 15 тактов на сэмпл, вроде. Что дает ~3.7 мегасэмпла.

"так никто с этим не спорит"
- Как же не спорит, если утверждаете что "внутри стоит умножитель частоты(до200мгц), от которого и считаются такты выполнения". Ядро ведь тактируется с частотой Master Clock, а не от выхода PLL. Отношение частот PLL/Master Clock может быть выбрано пользователем.

 

А зачем таймером-счетчиком управлять по I2C ? По I2C управляем ДКПД. Счетчик-распределитель сделать на триггерах и элементах мелкой логики - 2 корпуса. Но все-же как 3мя мегами писать поток в 30 мегасемплов/сек я не пойму, одновременно проводя анализ на условие синхронизации.

Дамаю все-ж быстрые узлы вписать в ALTERA EPM7096. Судя по всему она имеет корпус PLCC68 с щагом выводос 1,27 мм, что позволит ее распаять на плате в виде "вверх ногами" короткими отрезками лкженого провода (е каогда ее спалите при экспериментах, то легко замените). Насколь я понял есть 96 триггеров и 1800 "gates" (элементы или возможные внутренние виртуальные проводники ?) Этого должно хватить без учета внешней памяти на 1 8 битный канал.

Но увы ее цена превышает 1000 руб и ну ее нафиг за такие деньги.

Пробуем вариант с 7064 (EPM7064SLC44-10) - у нее 64 триггера 1250 непонятночего (поясните кто знает). За 157 руб пожалуй не так фатально. Но на канал нужно наверное 2 штуки. ДКПД + счетчик (основной) (это 1 на 2 канала) и компаратор + счетчик вспомогательный + мелкая логика. (по 1 на канал) + память от кэша материнок. Из минусов - тдельный источник 3,3 вольта для ядра и програматор (JTAG) но насколь я понял он еще и ПО должен поддерживаться, так-что атмеловский JTAG под меги видимо не прокатит.

Так схему програматора нашел ... схема поражает.... аж целая 1 микросхема буфера и 10 резисторов.... пора заказывать ПЛИС.

ЗЫ а каким софтом пользоваться. Мне-б лучше что-б изобразить схему на типовых логических элементах (лычше макро - уровня счетчик аналогичный 74НСхх) ?

 

Alexey -- не понял, зачем клок на 60мгц??? работать от ОДНОГО 20мгц, элементарная програмная синхронизация.
: caddr -- вы уперлись в 55мгц, зашейте проц(если есть) и всё будет ясно, только ПРАВИЛЬНО настройте частоты при инициализации. по ВСЕМУ даташиту прописано что проц работает от PLL, ВЫ сами упоминали о "тактах простоя" в ожидании флеша - блин чего проц должен ждать если он по ВАШЕМУ синхронно с флешем??? тут вся проблемма что проц быстрый(220мгц) а флеш не успевает.
кольцевых буферов лучше не надо - конвеер сбивается и очень долго.