Перейти к содержанию
    

Народный осциллограф USB 3.0

Может блок-схему отобразите, чтобы пробегающие по теме понимали, что делается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Схема 1. Концепт одного канала.

В режиме логического пробника, на опорах постоянно поддерживается уровень "0" и "1" (например, 0.8 и 1.7В), получается 1.5-разрядный flash АЦП.

В режиме аналогового пробника периодических сигналов, на одной опоре постоянно поддерживается требуемый уровень триггера (например, 1.5В), а на другой меняется с каждой "строкой", пробегая требуемый диапазон с нужным шагом (например, от 100мВ до 3100мВ с шагом 5мВ). Выход компаратора защелкивается в сдвиговом регистре (одной строки) с эквивалентной тактовой 2ГГц.

Далее варианты, строки либо сразу выводятся (UART/VGA/...), либо пишутся во внутреннюю память ПЛИС для обработки ("цифровой фосфор" и тп).

Опоры проще всего формировать RC цепочкой, недостаток - малое время хранения из-за больших утечек (2пина*30мкА/пин=60мкА по даташиту для CycloneV). Преимущество - простая пассивная обвязка позволяет сразу закладывать в дизайн скоп для отладки.

 

Схема 2. Текущая для проверки концепта, навесной монтаж. Вход синхронизации отсутствует, тк тестовый сигнал генерируется внутри ПЛИС. Постоянный уровень сигнала задается потенциометром, мультиметром можно проконтролировать правильность отображения "нулевой" линии.

Сейчас добавляю вход синхронизации, и меняю код - чтобы можно было смотреть сигналы с внешнего генератора.

 

Исходники начну выкладывать, когда сделаю простой вывод на VGA. Но, у меня основная цель - практическая проверка своего "Си как HDL", а "скоп за 30 коп" - просто как одна из подходящих практических задачек для этого. Поэтому выкладывать буду только в том виде, каком использую для синтеза, те без ручного перевода в Верилог. Но тк это почти Си - алгоритм будет понятен.

Модуль для захвата сигнала на 2Гвыб/сек с выдачей по 8бит на 250МГц написан на Верилоге, его сейчас выкладываю(как есть):

module ser8 (
    input clka, clkb, clkc, clkd,
    input din,
    output reg [7:0] q    
);
    reg 
        a, b, c, d, A, B, C, D, 
        aa, ba, cb, dc, Ad, BA, CA, DC,
        aaa, baa, cba, dcb, Adc, BAc, CAc, DCA, 
        DCAc;

    always@(posedge clka)  a <=  din;
    always@(posedge clkb)  b <=  din;
    always@(posedge clkc)  c <=  din;
    always@(posedge clkd)  d <=  din;
    always@(negedge clka)  A <=  din;
    always@(negedge clkb)  B <=  din;
    always@(negedge clkc)  C <=  din;
    always@(negedge clkd)  D <=  din;    

    always@(posedge clka)  aa <=  a;
    always@(posedge clka)  ba <=  b;
    always@(posedge clkb)  cb <=  c;
    always@(posedge clkc)  dc <=  d;
    always@(posedge clkd)  Ad <=  A;
    always@(negedge clka)  BA <=  B;
    always@(negedge clka)  CA <=  C;
    always@(negedge clkc)  DC <=  D;    

    always@(posedge clka)  aaa <=  aa;
    always@(posedge clka)  baa <=  ba;
    always@(posedge clka)  cba <=  cb;
    always@(posedge clkb)  dcb <=  dc;
    always@(posedge clkc)  Adc <=  Ad;
    always@(posedge clkc)  BAc <=  BA;
    always@(posedge clkc)  CAc <=  CA;
    always@(negedge clka)  DCA <=  DC;
    
    always@(posedge clkc)  DCAc <=  DCA;    
    
    always@(posedge clka) q <= { DCAc, aaa, baa, cba, dcb, Adc, BAc, CAc }; 

endmodule

post-9118-1428823330.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

LEVERAGING FPGA AND CPLD

DIGITAL LOGIC TO IMPLEMENT

ANALOG TO DIGITAL CONVERTERS

 

http://www.latticesemi.com/~/media/Documen...cument_id=36525

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну да, только там предлагают сделать обычный SAR/сигма-дельту, когда "опорное напряжение" компаратора меняется сильно быстрее "постоянного" входного сигнала (ну и соответственно десяток кГц частота преобразования раз УВХ нет),

а тут наоборот сигнал меняется сильно быстрее чем плавно изменяемое, постоянное по сравнению с периодом сигнала, "опорное напряжение" компаратора.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Получил первую "осциллограмму" на VGA (долго не мог найти дурацкую ошибку).

 

Вроде как обозначилась основная проблема в "скопе за 30 коп" - Квартус плохо выравнивает пути от входного пина до триггеров, тактируемых от многофазного клока, и разбег зависит от дизайна в целом. В результате некоторые отсчеты "наползают" друг на друга. Так что "модуль захвата", надо как-то оптимизировать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разбег путей виден, если анализировать данные, полученные по UART. На глаз это незаметно, если не растягивать картинку, и выглядит замечательно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Работаю на аналоговым входом. Пока показать нечего, но читаю, разбираюсь, думаю скоро подойду к моделированию.

Буду делать те части осциллографа которые считаю по силам мне, т.е. аппаратная часть, пока что хотя бы на уровне концепта и кусков схем отдельных блоков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

0000000000000000  0000000000000000
0000000011000000  0000000011000000
0000000111000000  0000000101000000
0000001111000000  0000001001000000
0000011111000000  0000010001000000
0000111111000000  0000100001000000
0001111111000000  0001000001000000
1111111111111111  1110000000111111
1111111111111111  0000000000000000

Данные компаратора представляют собой "заливку" областей "выше" и "ниже" сигнала, см. левый рисунок. Нужно выделить линию. Реализованный алгоритм: обнуляются все "1", граничащие по ортогоналям только с "1" (диагональные соседи не учитываются), см правый рисунок.

По такому алгоритму нужно хранить в буфере 3 видео-строки, что м/б накладно. Предложит кто другой алгоритм?

 

По поводу полосы - судя по-всему, ограничена большими паразитными емкостями платы (Cyclone V GX Starter Kit), а не LVDS-приемниками, и померить не удастся. 62,5МГц меандр (получаю от независимого генератора 125МГц на плате) видится, как пила с острыми зубьями (вывожу 500*1000 точек на VGA@70Гц, выборки уменьшил до 1.2Гвыб/сек, чтобы проще было согласовать с 75МГц VGA).

 

Если кто захочет поэкспериментировать со своей платой - выкладывайте qsf с пинами, попробую синтезировать (исходники выложу, но они не на Верилоге). Текущая схема:

post-9118-1429376762_thumb.png

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

просто xor двух последовательных значений с компаратора будет работать не сильно хуже.

только на совсем горизонтальных линиях не очень красиво, но можно и это убрать если гистерезис сделать меньше шумов или шумы больше гистерезиса :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По поводу полосы - судя по-всему, ограничена большими паразитными емкостями платы..

AD9484 стОит 42$. В режиме стробоскопа может семплировать сигналы в полосе до 1 ГГц.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реализованный алгоритм: обнуляются все "1", граничащие по ортогоналям только с "1" (диагональные соседи не учитываются), см правый рисунок.

1. берём колонку

2. сдвиг вниз(по рисунку)

3. побитовая инверсия

4. побитовое-И с исходной колонкой

---------------------

Также на рис. колонка размером в 9 бит, хотя разрешение сигнала <=4 бит. Может сразу паковать: хранить номер бита, в котором единица?

 

А если использовать структуру, которая считает количество единиц, то она может выполнить обе, описанные выше операции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AD9484 стОит 42$. В режиме стробоскопа может семплировать сигналы в полосе до 1 ГГц.

за 50$ АЦП от hittite HMCAD15хх куда интереснее выглядит.

а вот AD9609 - 5$, полоса при этом лишь немного меньше - 700МГц.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такое пришло в голову: для рисования можно принять, что под "1" всегда "1" (хотя это не так для стробоскопа из-за шумов и сбоях синхронизации, когда за период уровень триггера пересекается несколько раз). В этом случае линию можно рисовать по 2 строкам, а не 3.

 

Делать "классический" осциллограф не имеет никакого смысла, причины уже приводились в этой ветке, можно еще добавить. Имеет смысл делать простой "осциллограф" в рамках освоения новой технологии, например - ПЛИС. Имхо.

 

 

Также на рис. колонка размером в 9 бит, хотя разрешение сигнала <=4 бит.

Это только на рисунке, реально сигнал 9разрядный, и в колонке 512 отсчетов.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делать "классический" осциллограф не имеет никакого смысла, причины уже приводились в этой ветке, можно еще добавить. Имеет смысл делать простой "осциллограф" в рамках освоения новой технологии, например - ПЛИС. Имхо.

а никто не говорит про классический осциллограф, но вот чем lvds компаратор в качестве АЦП лучше того же ad9609 для стробоскопа? "эффективная частота сэмплинга" даже у 2ГГц lvds компаратора для 8 бит, чтобы просканировать все 256 напряжений, получается заметно меньше, а полоса при этом вряд ли больше.

с компаратором смысл имеет только если брать adcmp572 из-за 8ГГц входной полосы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1). Чтобы АЦП использовать в режиме стробоскопа, нужна а) схема измерения временного сдвига отсчетов относительно момента синхронизации, б) схема добавления случайной фазы в клок. От точности этого измерения зависит максимальная эквивалентная частота выборок, а от скорости этого измерения - максимальная частота осциллограмм. Хороший клок, это сложно и дорого, а точное измерение временных интервалов, это медленно.

2). Чтобы по-максимуму использовать внешний компаратор, придется либо городить внешний клок на эквивалентную частоту выборок, и внешний десериализатор, либо добавлять все то-же самое, что и для АЦП (измерение времени + изменение фазы).

 

В качестве примера, предлагаю продумать снятие осциллограммы для коротких повторяющихся(те постоянной формы), но непериодических(с большим джиттером) импульсов. Например, длительность импульсов 5нс, период повторения - 5мкс с джиттером 500нс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...