выкладываю новую версию своего осциллографа - v.0.2 :)
изменена организация адресного пространства, чтобы задействовать максимум блоков встроенной памяти ПЛИС марсохода 2, которое не кратно 8 и равно 46 килобайт. ОЗУ для шрифта, символов и их цвета (цвет пока не используется) и программы с данными теперь имеет объем 14 килобайт и набрано из кусков 2 + 4 + 8 килобайт, соответственно. Остальные 32 килобайта отданы под массив точек осциллограммы, как и в предыдущей версии. Добавлены порты ввода вывода, чтобы управлять не только осциллографом, но и мультиметром, и чтобы опрашивать ps/2 клавиатуру. Теперь можно писать программы размером аж 8 килобайт :)
Перемещаться по меню и переключать значения теперь можно стрелками клавиатуры. Кроме того, частоты развертки переключаются клавишами 1,2,3,4,5 , а режимы триггера клавишами q,w,e,r,t.
Надстроен мультиметр - измеряет максимальное и минимальное значение уровня сигнала, длительность импульсов и частоту. Делает это разными способами для разных входов - для АЦП и для цифрового IO0. У частотомера сигнала, идущего через АЦП есть своя настройка чуствительности. Для борьбы с дребезом цифрового входа частотомера добавлен "deglitching" фильтр, включаемый/отключаемый через параметр deglitching delay. В будущем, эта настройка скорее всего будет упрощена до вкл/выкл, так как ее значение от 1 до 4 (тактов процесора), например, имеют одинаковый эффект, а вот значение 0 придает частотомеру цифрового входа возможность измерить даже 85,2071 МГц, которые для примера выведены на IO3 (это приблизительно 4й канал ТВ).
IO1 тоже переназначен как вход, чтобы было удобнее быстро делать "рядом" с осциллографом внутри ПЛИС какие-то схемы для экспериментов. Тестовый меандр перенесен на IO2. Кое-какие сигналы выведены на LED[3:0] с отладочной целью и для баловства. Например на LED3 находится инвертированный VSYNC. Если сравнить измеряемую через цифровой IO0 вход частоту этого сигнала и обычного VSYNC, идущего в монитор, при отключенном deglitching, то видно как "глитчи" или "дребезг" искажают сигнал и приводят к неправильному измерению частоты. Относительно медленный АЦП вход с собственным частотомером при правильно подобранной чувствительности меньше подвержены этому явлению.
В верхнем правом углу ascii код обычных и scan код дополнительных клавиш. Строка adc_d: демонстрирует опрос АЦП процессором и вывод текущего зачения на экран в десятичной и шестнадцатеричной системах исчисления.
Символам на экране добавлен полупрозрачный фон, чтобы их было легче читать на фоне яркой осциллограмы.
P.S.
и конечно исправлены обнаруженные ошибки предыдущей версии :)