|
|
|
|
Ещё с тактовой частотой поспешили, ядро может работать максимум на 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мгц) а флеш не успевает. кольцевых буферов лучше не надо - конвеер сбивается и очень долго.
|
|
|
|
|