Пятница, 19.04.2024, 23:03
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Главная | Модуль цифрового осцилографа - Страница 12 - Форум | Мой профиль | Регистрация | Выход | Вход
Обитель RC-инженера
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ВитГо  
Форум » Разработка электронных устройств » Разрабатываю ! » Модуль цифрового осцилографа (Пробуем свои силы в построении цифрового осциллографа)
Модуль цифрового осцилографа
ВитГоДата: Понедельник, 01.10.2012, 14:55 | Сообщение # 166
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
у меня не работает :-(

уже при 8 разрядном счетчике получаю 80 мгц...

может быть в отдельности 32 разряда счетчика и работают, но в программе - нет :-(

увидел интересный способ организации конвейера из нескольких например 4х разрядных счетчиков - при помощи него можно делать счетчики с большим количеством разрядов...

сейчас закончу домашние дела, напишу и выложу что получилось :-)

добавлено позже:
вернее сам счетчик работает, а вот когда мне нужно его значение с чем нить сравнивать - вот тогда и происходят основные проблемы :-(
хотя сейчас подошел немного по другому к компановке кода и вроде бы стало получаться !


Виталий (аka ВитГо)
 
ВитГоДата: Понедельник, 01.10.2012, 18:19 | Сообщение # 167
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
У меня получился программный 16ти битный предделитель !!

Захват на скорости 100 мгц (на 1 канал)
предделитель частоты захвата с диапазоном значений от 1 до 65535


Виталий (аka ВитГо)
 
ВитГоДата: Понедельник, 01.10.2012, 18:52 | Сообщение # 168
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
теперь вопрос про синхронизатор...

давайте еще раз:

мы сканируем входной канал ADC и стартуем при например значении менее (более) установленного ?

или при минимальном (максимальном) значении ?

то есть вопрос - сравнение "=" используем или ">" ("<") ?


Виталий (аka ВитГо)
 
ВитГоДата: Понедельник, 01.10.2012, 19:30 | Сообщение # 169
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
пока вроде бы написал 4 вида простой синхронизации:

читаем АЦП со скоростью 100 мгц

далее выбираем один из вариантов:
0: Значение АЦП>"Значение старта"
1: Значение АЦП<"Значение старта"
2: Старт при минимуме сигнала
3. Старт при максимуме сигнала

в вариантах 0 и 1 : значение нужно задавать
в вариантах 2 и 3 : значение определяется автоматически


Виталий (аka ВитГо)
 
SergiДата: Понедельник, 01.10.2012, 20:03 | Сообщение # 170
Подполковник
Группа: Проверенные
Сообщений: 540
Репутация: 55
Статус: Offline
Я выше писал про синхронизацию.
Например синхронизация по фронту относительно заданного уровня.
1. Определить (дождаться) что сигнал находится ниже уровня.
2. Если за определенный интервал времени (например 1 сек) не дождались - пропустить синхру (отрисовать сигнал)
3. Сигнал ниже уровня. Ждем когда превысит уровень. Запускаем запись.
4. Повторяем п2 если не дождались.
Для синхронизации по спаду меняем местами п1 и п3
Это все необходимо для избежания зависания. В твоих п2 и п3 легко зависнуть.
У меня рассчитывается уровень автоматически (Umax-Umin)/2+Umin. К этому еще можно вручную +- константу.
 
ВитГоДата: Понедельник, 01.10.2012, 20:41 | Сообщение # 171
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
так вот и не пойму sad

Quote (Sergi)
1. Определить (дождаться) что сигнал находится ниже уровня.


то есть уровень нужно задать сначала ?

Quote (Sergi)
2. Если за определенный интервал времени (например 1 сек) не дождались - пропустить синхру (отрисовать сигнал)


вот это не понял :-( что значит пропустить синхру ? захватить что есть и выдать ? - или выдать прошлый сигнал ?
Quote (Sergi)
3. Сигнал ниже уровня. Ждем когда превысит уровень. Запускаем запись.
4. Повторяем п2 если не дождались.


ну это понятно, в принципе это режимы 2 и 3 у меня (с автоматическим определением смены фазы сигнала)

по поводу зависания - это задачка контроллера, плис работает постоянно, будет новая команда - будет новый захват (или ожидание если условий нет)


Виталий (аka ВитГо)
 
ВитГоДата: Понедельник, 01.10.2012, 20:44 | Сообщение # 172
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Quote (Sergi)
У меня рассчитывается уровень автоматически (Umax-Umin)/2+Umin. К этому еще можно вручную +- константу.


я пошел ИМХО более простым путем, как то так:
Code

//---------------------------------------------------------------
// Ожидание синхронизации
//---------------------------------------------------------------
reg [1:0]    sync_simple_type;  // тип простой синхронизации
                    // 0 - старт по меньшему уровню
                    // 1 - старт по большему уровню
                    // 2 - старт по минимуму сигнала
                    // 3 - старт по максимуму сигнала

reg [7:0]      sync_value; // значение для синхронизации в режимах 0 и 1

reg [7:0]      sync_temp;    // значение прошлого захвата

reg            sync_start;   // признак необходимости синхронизации и старта (при =1 происходит синхронизация)

always @ (negedge adc_clk1) // синхронизатор
begin
    if (sync_start)
      case (sync_simple_type)
        0: begin // синхронизация по минимальному значению
             if (sync_temp<sync_value) capt_start<=1;
           end
        1: begin // синхронизация по максимальному значению
             if (sync_temp>sync_value) capt_start<=1;    
           end
        2: begin // синхронизация по минимуму сигнала
             if (sync_temp<adc1_data) capt_start<=1;    
           end
        3: begin // синхронизация по максимуму сигнала
             if (sync_temp>adc1_data) capt_start<=1;    
           end
      endcase
    else capt_start<=0;
     
    sync_temp<=adc1_data;    
end


Виталий (аka ВитГо)
 
ВитГоДата: Понедельник, 01.10.2012, 20:48 | Сообщение # 173
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
еще интересует такой вид синхронизации::

синхронизация по длительности импульса (паузы) - вот здесь как определяем длительность импульса ?

мы задаем какие-то пороговые значения минимума (при котором начинаем отсчитывать длительность) и максимума (при котором фиксируем значение длительности и стартуем если нужно захват) ?
или есть какой то стандартный подход в определении длительности импульса (паузы)?

то есть вопрос в определении моментов начала и конца отсчетов для фиксации длительности импульса\паузы...


Виталий (аka ВитГо)
 
ВитГоДата: Понедельник, 01.10.2012, 21:06 | Сообщение # 174
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
кстати, какую задержку сигнала дает какой нить инвертор ?
ты какие инверторы применял ?

мне нужно получить основную и инверсную частоту.. причем не силами плис... причем частота 100 мгц...

задержка не должна быть более 3 нс..

либо может быть для основной частоты использовать какой нить И элемент для задержки на то же время что и НЕ элемент...
подскажешь что нужно для этого ?


Виталий (аka ВитГо)
 
ВитГоДата: Понедельник, 01.10.2012, 21:16 | Сообщение # 175
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
вот что нашел про синхронизацию

Quote
Современные цифровые осциллографы, например LeCroy, помимо традиционного для аналогового осциллографа, запуска по положительному или отрицательному фронту имеют следующие режимы схемы синхронизации или другое название - условия запуска развертки:

• Запуск по параметрам окна . Окно – это зона с верхней и нижней границами, между которыми находится значение уровня запуска. Схема запуска срабатывает, когда уровень сигнала пересекает границу в направлении выхода из зоны. Следующий запуск возможен после возврата сигнала в зону окна.

• Рантовая синхронизация . Рант – это импульс положительной или отрицательной полярности имеющий меньший уровень, чем все остальные импульсы в регулярной последовательности. Запуск развертки осуществляют только те импульсы, амплитуды которых попадают в заданный пользователем диапазон согласно условий когда импульс пересечет 1-й заданный порог уровня, но не пересечет 2-й заданный порог уровня и повторно пересечет 1-й порог. Это вид синхронизации позволяет производить запуск развертки по сигналу, отличающемуся только по уровню в последовательности периодического сигнала, когда частота и длительность для всего сигнала одинакова. В этом режиме можно так же задавать диапазон длительностей ранта и напряжений, в этом случае запуск развертки будет происходить в случае нахождения длительности и амплитуды ранта внутри либо за пределами заданного диапазона.

• Запуск по скорости нарастания (спада) сигнала . Скорость нарастания (спада) сигнала - это время, в течение которого происходит изменение (нарастание или спад) сигнала от заданного уровня 1 к заданному уровню 2. Запуск развертки осуществляют только те сигналы, у которых скорость нарастания попадает в заданные пределы. Скорость нарастания (спада) сигнала не следует трактовать только как время нарастания или спада сигнала, это более широкое понятие, включающее в себя общее времени измерения сигнала от уровня 1 до уровня 2, в течение которого сигнал может многократно изменять вектор, лишь бы он находился в пределах зоны образованной уровнями 1 и 2.

• Запуск по условиям длительности сигнала . Запуск происходит по положительным или отрицательным импульсам заданной длительности, имеющим амплитуду выше или ниже заданного уровня. Также задаются условия контроля длительности – больше, меньше, в пределах или за пределами заданных значений. Запуск будет происходить в случае выполнения заданных условий запуска.

• Запуск по глитчу; Запуск по ширине глитча – частный случай режима запуска по длительности. Запуск происходит по импульсам, имеющим заданную длительность или входящим в заданный диапазон длительностей. Напряжения и диапазоны напряжений в расчет не берутся.

• Запуск по интервалу . В отличие от режима синхронизации по глитчу, в режиме синхронизации по интервалу значение имеет не длительность импульса, а длительность интервала, разделяющего два последовательно идущих фронта одной и той же полярности — положительной или отрицательной. Этот режим синхронизации можно использовать для регистрации интервалов, длящихся меньше или больше заданного времени. Можно также определить диапазон длительностей, в котором или вне которого должен находиться интервал между двумя фронтами, чтобы вызвать запуск развертки.

• Логический запуск. Этот вид синхронизации позволяет организовать запуск по логической схеме, входами которой являются каналы осциллографа (канал1, 2,3 и 4 и вход внешней синхронизации). Для формирования логической функции имеется 4 логических оператора (И, НЕ-И, ИЛИ, НЕ-ИЛИ). По каждому из входов можно независимо установить высокий (уровень логической единицы) или низкий (уровень логического нуля) уровень.

• Отложенный запуск . Используется главным образом при регистрации однократных событий, и обычно с предпусковой задержкой. С его помощью можно фиксировать моменты пропадания сигнала. Запуск происходит по истечении времени ожидания, исчисляемого от последнего прохождения уровня запуска.

• По качеству. При этой синхронизации необходимо задействовать два канала осциллографа. Это режим синхронизации, при котором положительный или отрицательный фронт одного сигнала (канала) служит разрешением на запуск от другого сигнала (канала). В этом режиме задается интервал времени или количество событий после прихода разрешающего фронта, по истечении которого должен произойти запуск.

• По состоянию . При этой синхронизации необходимо задействовать два канала осциллографа. Запуск по квазистабильному уровню одного канала, согласно которому сигнал, определяющий условие запуска на втором канале, должен быть выше или ниже заданного уровня. Отличие от запуска по качеству состоит в том, что сигнал первого канала должен именно оставаться ниже или выше заданного уровня, а не временно переходить в области выше или ниже этого уровня.

• ТВ синхронизация. Обеспечивает устойчивый запуск от стандартного (или специального) композитного видеосигнала с возможностью выделения строк. Возможно исследование сигнала в системах PAL, SECAM, NTSC, HDTV и пр.


что из этого нам будет интересно ?


Виталий (аka ВитГо)
 
SergiДата: Понедельник, 01.10.2012, 22:08 | Сообщение # 176
Подполковник
Группа: Проверенные
Сообщений: 540
Репутация: 55
Статус: Offline
Извини, сейчас некогда все прочитать. Многа букафф biggrin .
Минимальна задержка у логики 1.5нс (74AC00) средняя 3нс. Есть разница инвертор/повторитель, поэтому у меня в интерливе разница ,22нс (2 инвертора против инвертор+повторитель).
Набросал схему, а что дальше делать не знаю!

По синхре.
При фронте мы с начала должны оказаться ниже уровня (вот это и ждем), а потом при превышении- запуск.
http://depositfiles.com/files/p8pblg9lb


Сообщение отредактировал Sergi - Понедельник, 01.10.2012, 22:11
 
ВитГоДата: Понедельник, 01.10.2012, 22:15 | Сообщение # 177
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Quote (Sergi)
Набросал схему, а что дальше делать не знаю!


biggrin

паять !

я вот на днях закончу (надеюсь) в симуляции и наверное потрачу кучу денежек на заказ микрух...
где то шляется моя плис по нашей почте.. хотя уже должна придти...

в принципе нужно будет садиться и разводить плис... 100 ног.. почти все будут использованы - даже не знаю как я это переживу.. на крайняк буду заказывать и первую плату тоже (правда надеюсь что для начала все таки будет все на макетках каких нить... - с первого раза же ведь никогда не работает)


Виталий (аka ВитГо)
 
ВитГоДата: Понедельник, 01.10.2012, 22:16 | Сообщение # 178
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Quote (Sergi)
http://depositfiles.com/files/p8pblg9lb


а тебе форум разве не дает возможность прикрепить файл?


Виталий (аka ВитГо)
 
ВитГоДата: Понедельник, 01.10.2012, 22:24 | Сообщение # 179
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Quote (Sergi)
Набросал схему, а что дальше делать не знаю!

По синхре.
При фронте мы с начала должны оказаться ниже уровня (вот это и ждем), а потом при превышении- запуск.
http://depositfiles.com/files/p8pblg9lb


ааа, я понял теперь тебя !

а симуляцию запускал ?


Виталий (аka ВитГо)
 
SergiДата: Понедельник, 01.10.2012, 22:25 | Сообщение # 180
Подполковник
Группа: Проверенные
Сообщений: 540
Репутация: 55
Статус: Offline
Дает только изображение. На другие расширения ругается.
Только нарисовал.

Теперь изучать квартус. Почти все вкладки не активные. Куда жать? sad


Сообщение отредактировал Sergi - Понедельник, 01.10.2012, 23:35
 
Форум » Разработка электронных устройств » Разрабатываю ! » Модуль цифрового осцилографа (Пробуем свои силы в построении цифрового осциллографа)
Поиск:


Copyright MyCorp © 2024
Сделать бесплатный сайт с uCoz