Цифровой осциллограф своими руками.
Re: Цифровой осциллограф своими руками.
Скажите пожалуйста, можно ли сделать так:
считываю данные из порта с помощью DMA в буфер (без участия ЦПУ) и одновременно считывать
через ресурсы ЦПУ ( IN port x)?
Так например я сохраняю в кольцевой буфер историю, а синхру ловлю в основном цикле WHILE(port x >sinc). Можно со штампом времени( как говорит ВитГо). И при совпадении обрабатывать с известного места (или за n отсчетов ранее).
считываю данные из порта с помощью DMA в буфер (без участия ЦПУ) и одновременно считывать
через ресурсы ЦПУ ( IN port x)?
Так например я сохраняю в кольцевой буфер историю, а синхру ловлю в основном цикле WHILE(port x >sinc). Можно со штампом времени( как говорит ВитГо). И при совпадении обрабатывать с известного места (или за n отсчетов ранее).
- Реклама
Re: Цифровой осциллограф своими руками.
Sergi писал(а):Скажите пожалуйста, можно ли сделать так:
считываю данные из порта с помощью DMA в буфер (без участия ЦПУ) и одновременно считывать
через ресурсы ЦПУ ( IN port x)?
Так например я сохраняю в кольцевой буфер историю, а синхру ловлю в основном цикле WHILE(port x >sinc). Можно со штампом времени( как говорит ВитГо). И при совпадении обрабатывать с известного места (или за n отсчетов ранее).
а откуда читать будешь ?
если с DCMI->DR - то ведь еще нужно знать когда прочитать (флаг заполнения учитывать) - и вот когда флаг прочитаешь (если не пропустишь его сброс от DMA который работает быстрее) - то конечно можно прочитать (правда если успеешь до того момента когда в него новое значение уже попадет при очередном захвате, см. ниже)...
думаю уже на даташитных частотах (<54 мспс) захвата DCMI обрабатывать данные напрямую с порта не получиться.. просто не успеет процессор.. - даже на ассемблере получается 4 такта проца на захват одного байта...
4 байта на один DCMI->DR = всего 16 тактов процессора...
теперь простой вопрос (к сожалению риторический) - что можно успеть сделать за эти 16 тактов с данными в DCMI->DR (напоминаю там 4 захвата) ?
ИМХО лучше извращаться в ускорении обработки буфера ОЗУ...
тот же цикл WHILE(port x >sinc) примененный для ОЗУ будет скорее всего быстрее поскольку можно написать его так чтобы читать БАЙТЫ из ОЗУ и их уже сравнивать
Re: Цифровой осциллограф своими руками.
Я проверял- сохраняет из порта в озу за 6 тактов ЦПУ без ДМА. Добавить сравнение и переход +3 такта и разрешать сохранять через ДМА.
Если не сохранятьв озу а ловить синхру - до разрешения записи 7 тактов ЦПУ.
Если не сохранятьв озу а ловить синхру - до разрешения записи 7 тактов ЦПУ.
Re: Цифровой осциллограф своими руками.
да, ldr/str выполняется за 6 тактов, но это на линейном коде, если не было ветвлений, плюс неизвестно как будет влиять DMA и конкуренция за шину.
в приближении выглядит как-то так:
- запускаем DCMI в закольцованном режиме,
- максимально быстро читаем порт / DCMI->DR, или буфер в поисках триггера,
- если находим, запоминаем позицию триггера, запускаем таймер на N тактов, спим,
- по прерыванию таймера - останов DCMI и разгребание буфера.
в приближении выглядит как-то так:
- запускаем DCMI в закольцованном режиме,
- максимально быстро читаем порт / DCMI->DR, или буфер в поисках триггера,
- если находим, запоминаем позицию триггера, запускаем таймер на N тактов, спим,
- по прерыванию таймера - останов DCMI и разгребание буфера.
Re: Цифровой осциллограф своими руками.
Именно так и думал!
- Реклама
Re: Цифровой осциллограф своими руками.
только не забудьте что DCMI отдает сразу 4 байта...
если только анализировать только 1 байт из 4х....
так тогда проще ОЗУ анализировать.. прыгая например через 5-6 байт.... так можно и за DCMI успеть
)
если только анализировать только 1 байт из 4х....
так тогда проще ОЗУ анализировать.. прыгая например через 5-6 байт.... так можно и за DCMI успеть
Последний раз редактировалось ВитГо Пн сен 30, 2013 21:12:31, всего редактировалось 1 раз.
Re: Цифровой осциллограф своими руками.
да, это известные ссылки...
там кстати и описана странность даташита про DCMI: при АКТИВНЫХ уровнях синхронизации (VSYNC, HSYNC) данные не принимаются !! (к слову об ошибках в даташитах)... чтобы данные захватывались нужно уровни синхронизации установить в неактивный уровень
прикол в том что в регистре конфигурации задаются именно активные уровни (при которых нет захвата), а не казалось бы логичных уровни при которых наоборот идет захват...
потом еще чтото было про DMA (давно читал... буду разбираться - перечитаю и вспомню
))
там кстати и описана странность даташита про DCMI: при АКТИВНЫХ уровнях синхронизации (VSYNC, HSYNC) данные не принимаются !! (к слову об ошибках в даташитах)... чтобы данные захватывались нужно уровни синхронизации установить в неактивный уровень
прикол в том что в регистре конфигурации задаются именно активные уровни (при которых нет захвата), а не казалось бы логичных уровни при которых наоборот идет захват...
потом еще чтото было про DMA (давно читал... буду разбираться - перечитаю и вспомню
Re: Цифровой осциллограф своими руками.
Прикинул с 4 байтами
прочитал регистр DCMI - 2такта
сдвинул на 24(16,8,0) бита-1 такт, сравнил 1 такт, переход 2 -такта(это все 4 раза) итого 18
прочитал регистр DCMI - 2такта
сдвинул на 24(16,8,0) бита-1 такт, сравнил 1 такт, переход 2 -такта(это все 4 раза) итого 18
Re: Цифровой осциллограф своими руками.
проще это делать по памяти.. буфер то все равно кольцевой...
так и предвыборка будет сохраняться...
так и предвыборка будет сохраняться...
Re: Цифровой осциллограф своими руками.
Задача, необходимо получить кольцевой буфер аналогично
ФИФО или ПЛИС с максимальным быстродействием на МК_Ф407.
ФИФО или ПЛИС с максимальным быстродействием на МК_Ф407.
- Вложения
-
- DSC02752_s.jpg
- (77.23 КБ) 525 скачиваний
Re: Цифровой осциллограф своими руками.
Вношу, уточнение в предыдущий пост, была использована м/сх счетчика 74VНC161, а не 74LVC161 как указано в приложении. С 74LVC161 возможно было бы чуть лучше.
Ребята, пора Ваши идеи воплотить и выкарбовать в камне для потомков, для созерцания!!
В камне все станет на место «Вху-из-Вху», камень Вас или Вы камня.
Ребята, пора Ваши идеи воплотить и выкарбовать в камне для потомков, для созерцания!!
В камне все станет на место «Вху-из-Вху», камень Вас или Вы камня.
- Вложения
-
- Ген_идей.doc
- (23 КБ) 204 скачивания
Re: Цифровой осциллограф своими руками.
Arpad писал(а):Задача, необходимо получить кольцевой буфер аналогично
ФИФО или ПЛИС с максимальным быстродействием на МК_Ф407.
это реализуемо..
а вот на счет диаграмм: получается что на 168 мгц для обоих счетчиков возможны сбои ?
Re: Цифровой осциллограф своими руками.
Arpad писал(а):Вношу, уточнение в предыдущий пост, была использована м/сх счетчика 74VНC161, а не 74LVC161 как указано в приложении. С 74LVC161 возможно было бы чуть лучше.
Ребята, пора Ваши идеи воплотить и выкарбовать в камне для потомков, для созерцания!!
В камне все станет на место «Вху-из-Вху», камень Вас или Вы камня.
Я и Sergi (если хотите Sergi и Я) работаем над этим..
сейчас думы над входной частью..
на вход наверное opa656 - да, дорого, но зато вроде бы с диф. напряжением на входе +-Vcc... - у кого нить есть замечания ?
соответственно питать ее от +-3 вольт.. соответственно размах входного сигнала после делителя +-3 вольта, правильнее наверное даже +-2.5 вольта...
теперь вопрос о входном делителе, вернее о его коэффициентах и способах съёма сигнала с точек деления (герконовое реле или ключи по типу 74ahc1g66 или 4052 или 4051)..
вчера казались оптимальными делители 1\10\100
Re: Цифровой осциллограф своими руками.
2 Arpad
У Вас память пишет байт за 6нс ?
Я прикидывал буфер на 161 счетчиках и опасался писать менее чем за 8нс. память cy7c1041
есть смоделированная схема в diptrace и микрокапе
У Вас память пишет байт за 6нс ?
Я прикидывал буфер на 161 счетчиках и опасался писать менее чем за 8нс. память cy7c1041
есть смоделированная схема в diptrace и микрокапе
Re: Цифровой осциллограф своими руками.
ВитГо писал(а):на вход наверное opa656 - да, дорого, но зато вроде бы с диф. напряжением на входе +-Vcc... - у кого нить есть замечания ?
соответственно питать ее от +-3 вольт.. соответственно размах входного сигнала после делителя +-3 вольта, правильнее наверное даже +-2.5 вольта...
Грабли??
OPA656 ELECTRICAL CHARACTERISTICS: VS = +/-5V
INPUT
Most Positive Input Voltage(5) +2.75 +2.1 +2.05 +2.0 V Min
Most Negative Input Voltage(5) –4.5 –4.0 –3.9 –3.8 V Min
Most Positive Input Voltage(6) +3.25 +2.6 +2.5 +2.4 V Min
Most Negative Input Voltage(6) –4.5 –4.0 –3.9 –3.8 V Min
OUTPUT
Voltage Output Swing No Load 3.9 -3.7 V Typ
RL = 100Ohm 3.5 3.3 3.2 3.1 V Min
(5) Tested < 3dB below minimum specified CMRR at CMIR limits.
(6) Input range to give > 53dB CMRR.
Re: Цифровой осциллограф своими руками.
Sergi писал(а):2 Arpad
У Вас память пишет байт за 6нс ?
Я прикидывал буфер на 161 счетчиках и опасался писать менее чем за 8нс. память cy7c1041
В память пишется за 10-12 нс слово из ФИФО-Спартан-3 при необходимости, за 6 нс пишется выход счетчика симулирующий АЦП на входе ПЛИС.
Re: Цифровой осциллограф своими руками.
Arpad писал(а):ВитГо писал(а):соответственно питать ее от +-3 вольт.. соответственно размах входного сигнала после делителя +-3 вольта, правильнее наверное даже +-2.5 вольта...
Грабли??
OPA656 ELECTRICAL CHARACTERISTICS: VS = +/-5V
INPUT
Most Positive Input Voltage(5) +2.75 +2.1 +2.05 +2.0 V Min
Most Negative Input Voltage(5) –4.5 –4.0 –3.9 –3.8 V Min
нет, просто опять препятствия, неужели нет операционника с нужными нам характеристиками ?!
значит оставляем opa656, и никаких делителей после усилка...
на входе один делитель, что то вроде диапазонов по входному напряжению.. цель работы делителя на вход операционника подать напряжение не более 1 вольта...
до 1 вольта (1:1), цена деления (единица АЦП) 0.008 вольта
дальше наверное до 5 вольт (1:5 для цифровых схем с ИС) - 0.04 вольта
потом до 25 вольт (1:25, сюда попадет аналог с питанием +-12, +-15, и так далее) 0.2 вольта
и до 100 вольт (1:100, это для любителей мерить розетки, конечно с щупом 1:10) 0.8 вольта
на выходе 8129 для организации сдвига сигнала с единичным усилением..
или так совсем плохо ?
Re: Цифровой осциллограф своими руками.
2 Arpad
Спасибо, все понял. У меня два канала, старший и младший байт, тактируются 60МГц. Или интерлив один канал 120МГц пишется словом при 60МГц тактовой.
Спасибо, все понял. У меня два канала, старший и младший байт, тактируются 60МГц. Или интерлив один канал 120МГц пишется словом при 60МГц тактовой.
Re: Цифровой осциллограф своими руками.
ВитГо писал(а):вопрос о входном делителе, вернее о его коэффициентах и способах съёма сигнала с точек деления (герконовое реле или ключи по типу 74ahc1g66 или 4052 или 4051)..
вчера казались оптимальными делители 1\10\100
Из прошлого в теперешнее... 1\10\100\1000
- Вложения
-
- 524S2.png
- (110.7 КБ) 438 скачиваний


