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

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

1 7 44

Протестировал программу под Windows XP и исправил несколько багов.
http://sirdvm.narod.ru/osc7/osc-v031.rar
(~130КБ)

И несколько мыслей относительно более "продвинутого" самопального цифрового осциллографа, как и обещал.

FIFO, это конечно хорошо, но вроде как выходит слишком дорого по критерию у.е./КБ. Во всяком случае, подходящих дешевых микросхем FIFO я не нашел. Кроме того, в любом случае потребуется несколько цифровых микросхем низкой степени интеграции или ПЛИС.

Судя по
http://www.radio.ru/ubb/Forum2/HTML/000779.html
один участников этого форума продумывал вариант с FIFO детально, может быть он это прокомментирует

Возможно, вариант ПЛИС + обычное ОЗУ не так уж плох. Но, нужна грамотная прошивка и тщательный расчет (задержки распространения и т.д.), иначе не может быть и речи о частотах в десятки - сотни МГц* (в чем собственно и была беда с первым вариантом приставки - сложная конструкция с неудовлетворительными параметрами).
* Здесь и ниже по тексту подразумевается частота дискретизации.
Размышления над этой задачей привели к следующему: при стоимости всех комплектующих одноканального варианта менее 50$ и относительно большом объеме ОЗУ (>= 32КБ) реально получить частоту порядка 50МГц. Дальнейшее увеличение частоты ведет к слишком быстрому росту "стоимости одного мегагерца". Конечно, 50МГц цифра условная, дана лишь для оценки.

Кратко относительно архитектуры такой приставки (одноканальный вариант).

* АЦП должен иметь возможность перевода выходов в Z-состояние.
* Выход АЦП подключен к шине данных ОЗУ.
* Туда же, через резисторы 1..2.2кОм, зацеплен один из портов МК (для чтения данных). Резисторы исключают дополнительную емкостную нагрузку на выходы АЦП, в то же время не мешают сравнительно медленному процессу чтения.
* МК, как обычно, помимо прочего отвечает за интерфейс с ПК и управляет аналоговыми цепями.

Остается обеспечить адресацию ОЗУ во время чтения/записи, деление тактовой частоты с изменяемым коэффициентом (ДПКД), формирование такта для АЦП и сигнала WE для ОЗУ. Все это может быть реализовано в ПЛИС. Требования к ПЛИС небольшие, соответственно ее стоимость порядка 150..300р.

Один из вариантов прошивки ПЛИС (эквивалентная схема):

* Мультиплексор 2->1, управляемый МК, для коммутации двух тактовых входов. Один вход от микроконтроллера (используется при чтении выборки из ОЗУ), другой - от ВЧ генератора с частотой, равной макс. частоте дискретизации. Сигнал с этого мультиплексора идет на предварительный делитель.
* Предварительный делитель состоит из N-разрядного счетчика и мультиплексора N+1->1. Мультиплексор управляется МК. Например, если N = 3, на выходе можно получить частоты f/1, f/2, f/4, f/8.
* Такт для АЦП = Выход пред. делителя.
* ~WE = Выход пред. делителя И сигнал разрешения записи (от МК).
* Сигнал с выхода пред. делителя используется как clk синхронного счетчика, разрядность которого на 1 превышает разрядность шины адреса. Шина адреса ОЗУ подключена к выходам этого счетчика (младшие разряды).
* Старший разряд используется как индикатор переполнения и через инвертор заведен на вход разрешения счета. То есть, если старший бит == 1, счет прекращается. Соответствующий сигнал "счет остановлен" доступен МК.
* МК управляет сбросом счетчика.

Это словесный портрет, надеюсь, не слишком запутанный. Вроде как все достаточно просто, но дьявол в деталях -- а точнее, в задержках распространения.

Прошивку ПЛИС на Verilog, соответствующую вышесказанному, слепил и отмоделировал в Quartus II. Надо сказать, с Verilog HDL я знаком довольно поверхностно, т.е. мог сделать что-то не слишком оптимально и вообще напортачить. Но вроде как работать должно.

Оценка максимальной частоты проводилась при помощи специально написанной программки, для исключения (по возможности) ошибок. Предельная частота зависит от параметров АЦП, ОЗУ и ПЛИС. Предварительно, можно сказать следующее: при использовании 10-наносекундного ОЗУ, АЦП AD9057BRS-80 и ПЛИС EPM7032-10 можно получить приблизительно 60МГц гарантировано (т.е. строго соблюдая указанные производителем параметры цикла записи ОЗУ).

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

В принципе, все компоненты для проверки в "железе" у меня есть. Макет первого варианта приставки тоже остался, хотя его придется переделывать (и вряд ли оно будет работать без нормальной ПП, т.е. печатную плату надо делать тоже). М.б. к осени чего-то родится : )

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

 

Исходник прошивки ПЛИС на Verilog (разрядность адреса = 3 для удобства работы с симулятором).

6743.rar

 

Результат симуляции с установкой выхода пред. делителя f/1, частота 50МГц.

 

Результат симуляции с установкой выхода пред. делителя f/4, частота 50МГц/4.

 

А почему в предпоследней диаграмме (для сигнала addr) там, где стоит значение 000 (или 111), идут две линии?

 

addr в данном случае 3-х разрядный, число между двумя линиями - его текущее значение в двоичном коде. Сами линии никакой информации не несут, таково условное обозначение. То же самое относится к prescaler_ctrl (порт управления коэфф. деления, 2 разряда).

Все остальные сигналы однобитовые, линии показывают их уровни.

 

Судя по
http://www.radio.ru/ubb/Forum2/HTML/000779.html
один участников этого форума продумывал вариант с FIFO детально, может быть он это прокомментирует

Обдумывал как раз потому, что не хотел (и не хочу) связываться с ПЛИС. Вот например CY7C429-10AC (4Кх9 50МГц) стоит 10 у.е. Вполне "компенсирует" отсутствие ПЛИС. Но работать с ней проще. Думал заказать ее, но менее трех штук никак не хотят продавать. А убивать 30 у.е. на эксперименты как-то не хочется. Так что сейчас подыскиваю что-нить подешевле/подоступней.

З.Ы. Подобный FIFO от IDT стоит в 3 раза дороже... есть над чем подумать.

 

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

 

Dron_Gus>Вот например CY7C429-10AC (4Кх9 50МГц) стоит 10 у.е. Вполне "компенсирует" отсутствие ПЛИС. Но работать с ней проще.

Вот, я и говорю, ~2.5у.е./КБ у FIFO против ~0.1у.е./КБ у обычной SRAM. К стоимости SRAM надо добавить стоимость ПЛИС, это еще ~5..10у.е -- но все равно должно быть на порядок дешевле FIFO из расчета у.е./КБ при объеме ОЗУ >= 32КБ.

Была мысль, что плохо искал - а нет, тоже примерно такие цены на FIFO попадались (смотрел в основном Cypress).

C ПЛИС + ОЗУ мороки действительно намного больше на таких частотах : ( Нужен ли размер выборки больше 4..8К сэмплов -- я пока не решил (для себя).

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

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

 

Ну для начала зачем больше 4 кило? На экране все равно все не влезет. Конечно если не деать экранную лупу. Но даже с 4 кило она будет 4х.
Потом при использовании FIFO вся память занимает один корпус ~24 вывода. А при использовании SRAM?

З.Ы. я, как очень ленивый, продолжаю гнуть свою линию... в сторону упрощения (удорожания)