МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Запоминающий осциллограф

Запоминающий осциллограф 1 год 11 мес. назад #3324

  • Chaosorg
  • Chaosorg аватар
  • Не в сети
  • Завсегдатай
  • Сообщений: 302
  • Спасибо получено: 14
Дублирую свое сообщение из одноименой темы в разделе "вопросы о плате марсоход", чтобы соблюдать организацию форума.

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

Вложенный файл:

Имя файла: my_scope_2...4-23.zip
Размер файла:192 KB


Что в нем внутри на данный момент:

АЦП Марсохода 2 измеряет на максимально допустимой для него частоте - 20MHz.

Показания АЦП и значение счетчика горизонтальной развертки осциллографа служат для вычисления координаты точки в двухмерном массиве байтов размером 256x128. Происходит запись точки. Линии пока не чертятся - при резких фронтах видно только площадки, но более плавные сигналы выглядят довольно красиво.

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

Видеоконтроллер "двухслойный" - кроме графики выводит текст на основании шрифта 8x8 (выдранного из ПЗУ Спектрума :), массива кодов символов и массива цветов. Цвет пока не доделан. Все это хранится в другой двухпортовой памяти. Видеоконтролер делит ее с простым самодельным процессором. Остаток этой памяти отведен под программу процессора. Тут опрос кнопок марсохода (ps/2 пока не присоединил), частотомера, вывод интерфейса на экран и изменение частоты и типа триггера развертки. Этому процессору не нужен ассемблер - он исполняет непосредственно текстовый файл с программой на простом самодельном языке программирования. Эдакий калькулятор с ветвлениями. Адресация сугубо косвенная с автоинкрементом, вместо регистров память и два указателя в нее. Арифметика производится над содержимым ячеек памяти, на которых показывают эти два указателя. Коды команд совпадают с кодами символов =+- и т д, поэтому набирать программу можно прямо в квартусе или блокноте. Благодаря автоинкреенту и little endian, если надо сложить два байта - пишем ++, надо 32бит сложить - пишем ++++

Вот hello world на этом языке:

0800 "Hello world" .

а вот 3 + 2:

i0 '03'
i1 '02'
i0, i1 + `результат в i1

ветвление если i0>0:

i0 ? 0800 "да " `; 0800 "нет" ` какой-то комментарий

и все :) Как бы меньше чем за неделю больше не сочинишь, а больше пока и не надо. Хочется поискать ошибки, почитать ругань квартуса, перерисовать схему проекта как-то красивее, уменьшить количество неблокирующих присваиваний и т.д. И конечно хочется более удобной аналоговой части. Потом в планах подключение PS/2 и задействование SDRAM и COM-порта для хранения и передачи в компьютер осциллограм.

Если кто будет смотреть проект, то не обращайте внимание на вторую PLL и шину leds - это для баловства и отладки. Приятно, что уже можно глядеть свой же собственный видеосигнал марсохода меняя триггеры и частоты развертки. Все в оттенках зеленого сделал специально - ретро :) Bat-файл обновляет hex-файл памяти с шрифтом, текстом и программой и чистит проект, чтобы квартус применил измененный файл. Html-страница делает hex-файл из картинки.
Последнее редактирование: 1 год 2 мес. назад от Chaosorg.
Администратор запретил публиковать записи гостям.

Запоминающий осциллограф 1 год 11 мес. назад #3337

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Сообщений: 583
  • Спасибо получено: 45
Советую все-таки отказаться полностью от схематика, и от использования нескольких клоков/фронтов (включая одновременное использование posedge и negedge). Редко, когда действительно есть необходимость в нескольких клоках.
При создании мегафункции, по-умолчанию делается vhd, и лучше переключать в режим вывода Верилоговского файла - его потом можно будет поправить, добавив параметризацию, поменяв порядок аргументов, и тд. Потом в проекты можно добавлять только один файл мегафункции *.v, выкинув все остальные (если требуется только синтез, и не требуется моделирование и тп).
Администратор запретил публиковать записи гостям.

Запоминающий осциллограф 1 год 11 мес. назад #3338

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Сообщений: 583
  • Спасибо получено: 45
Схему в *.pdf формате Квартус сам может нарисовать и сохранить, для этого зайти в Netlist Viewer/RTL Viewer/Files/Export.
Администратор запретил публиковать записи гостям.

Запоминающий осциллограф 1 год 11 мес. назад #3339

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Сообщений: 583
  • Спасибо получено: 45

Вложенный файл:

Имя файла: 1.pdf
Размер файла:60 KB
Администратор запретил публиковать записи гостям.

Запоминающий осциллограф 1 год 11 мес. назад #3344

  • Chaosorg
  • Chaosorg аватар
  • Не в сети
  • Завсегдатай
  • Сообщений: 302
  • Спасибо получено: 14
Leka пишет:
Схему в *.pdf формате Квартус сам может нарисовать и сохранить, для этого зайти в Netlist Viewer/RTL Viewer/Files/Export.

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

в другое теме Alvich мне написал:Alvich пишет:
Я имел ввиду то, что для начинающих плисоводов удобнее работать со схемой. На мой взгляд файл верхнего уровня (схемный) должен состоять из законченных блоков (процессор, пзу, контроллеры итд) написанных уже на VHDL или Verilog. Это позволит проще поменять какой либо блок или добавить новый.

С осциллографом я так и пытаюсь поступить. Замечу, что хоть я и являюсь начинающим, но мне текст ближе, так как я программирую и администрирую именно текстами. Но! Графический дизайн доставляет зато больше эстетического удовольствия, для хобби, как средства отдыха подходит больше, как бы:) Текст тоже может быть красивым, но он будет радовать ум, а не глаз. Все эти параллельные шины, "непонятные" знаки - как у инопланетян в фантастике:) Даешь чертеж как антураж науки и инженерии:) Ну и потом посмотрите на презентации мира бизнеса - рисунок убедительнее текста, даже если тот сконцентрирован до девизов.

Эх, если бы можно было как в HTML и CSS или в AutoCAD с AutoLisp - пишу текст меняется картинка (как сейчас с RTL viewer), НО! я мог бы влиять на то, КАК рендерится им картинка, и меняя элементы на картинке МЕНЯЛСЯ бы текст!

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

Запоминающий осциллограф 1 год 11 мес. назад #3346

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Сообщений: 583
  • Спасибо получено: 45
Chaosorg пишет:
... рисунок убедительнее текста ...
Вне всякого сомнения. Пока остается именно абстрактным рисунком-комментарием, а не конкретным безошибочным чертежом. Сам любой сложный дизайн начинаю с рисунка, и трачу много времени, перерисовываю, чтобы было нагляднее/красивее, даже если не собираюсь никому показывать. Должно быть так: рисунок == комментарий, игнорируемый компилятором.
Последнее редактирование: 1 год 11 мес. назад от Leka.
Администратор запретил публиковать записи гостям.

Запоминающий осциллограф 1 год 11 мес. назад #3348

  • Chaosorg
  • Chaosorg аватар
  • Не в сети
  • Завсегдатай
  • Сообщений: 302
  • Спасибо получено: 14
Leka пишет:
Chaosorg пишет:
... рисунок убедительнее текста ...
Вне всякого сомнения. Пока остается именно абстрактным рисунком-комментарием, а не конкретным безошибочным чертежом. Сам любой сложный дизайн начинаю с рисунка, и трачу много времени, перерисовываю, чтобы было нагляднее/красивее, даже если не собираюсь никому показывать. Должно быть так: рисунок == комментарий, игнорируемый компилятором.

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

Опять проведу аналогию с web. Сейчас в каком-нибудь DreamWeaver манипуляции мышкой с нарисованными элементами разрабатываемой веб страницы превращаются им в вполне адекватные изменения или ДОБАВЛЕНИЯ в тексте. Но мир web-дизайна шел к нынешней вполне сносной ситуации очень долго. И у них не было того разнобоя языков и форматов файла как с HDL. Кроме того, КОНЕЧНОЙ ЦЕЛЬЮ для них являлся рисунок сам по себе. Кстати, если глубоко копнуть, то у HDL задача такая же только рисунок внутри микросхемы.

Вот я недавно разбирался с простой задачей - прослеживал прохождение сигнала через несколько написанных текстом разными людьми модулей. Каждый называл этот сигнал по-разному и располагал описание соединений в разных местах текста. Графически было бы достаточно одного взгляда.

Короче, надо определить круг задач, где рисунок справляется с задачей и был бы именно чертежом, а не рисунком комментарием. Если осциллограф вырастет да проекта, требующего какой-то своей шины, к которой (и только к которой!) подключаются модули, то можно будет отказаться от графики. И вот тогда RTL viewer с его нынешнем уровнем ума сможет красиво в ряд блоки расположить.
Последнее редактирование: 1 год 11 мес. назад от Chaosorg.
Администратор запретил публиковать записи гостям.

Запоминающий осциллограф 1 год 11 мес. назад #3349

  • Chaosorg
  • Chaosorg аватар
  • Не в сети
  • Завсегдатай
  • Сообщений: 302
  • Спасибо получено: 14
и еще про графику vs текст, хотя тема и не про это

я бы сделал так - в текстовом HDL должны быть ключевые слова или особого вида комментарии (директивы, теги... назовите как хотите), которые влияли бы на рендеринг RTL-viewer-а, но не влияли бы на компиляцию. Т.е. не как Вы говорите: "рисунок - комментарий к тексту", а: "Verilog - место хранения рисунка, его порождающее". При движении графических элементов программа (viewer-ом ее тогда уже нельзя называть) должна менять эти директивы в тексте. При добавлении нового элемента в дизайн она должна добавлять в Verilog (а не в свой какой-то формат файла) фрагмент текста на Veriloge, который при рендеринге и приведет к появлению элемента там где надо. И не было бы никаких проблем.
Администратор запретил публиковать записи гостям.

Запоминающий осциллограф 1 год 11 мес. назад #3355

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Сообщений: 583
  • Спасибо получено: 45
Это пока операционные системы не пишут на HDL.
Администратор запретил публиковать записи гостям.

Запоминающий осциллограф 1 год 11 мес. назад #3360

  • Chaosorg
  • Chaosorg аватар
  • Не в сети
  • Завсегдатай
  • Сообщений: 302
  • Спасибо получено: 14
Leka пишет:
Это пока операционные системы не пишут на HDL.

Наблюдая тенденции с расчетами на видеокартах и ПЛИС с использованием CUDA или OpenCL думаю, что со временем обычные языки программирования при соответствующей поддержке операционной системы, драйверов и компиляторов будут выполняться в гибко перенастраиваемом железе. Когда пишешь на CUDA, то можно почти даже не задумываться о возможностях конкретной видеокарты - сколько там шейдерных блоков и т. д. - компилятор внутри драйвера пользуется тем, что есть - будет больше железа - будет быстрее считаться задача. Пишешь по сути на обычном Си. Вроде появилась модель процессора Intel Xeon с встроенной ПЛИС. Грань между HDL и языками программирования для жестко неизменных процессоров исчезнет со временем в связи с эволюцией железа в эту сторону.

Странно, что нет отзывов по выложенному здесь осциллографу. Почитал по предложенной Leka в теме "Вопросы о плате Марсоход -> Запоминающий осциллограф" ссылке на тему про Народный осциллограф electronix.ru/forum?showtopic=126946 и удивился какому-то непонятному максимализму и пессимизму многих людей там (и на подобных темах). Дескать, зачем народный осциллограф, если он не будет за копейки делать 1 гигасемпл риалтайм :) Где-то еще прочел что-то типа: "это только сыну синусоиду показывать". А разве это не достаточный повод? Об осциллографе с полосой 10 мегагерц когда-то мечтали и на них основы радиотехники умудрялись преподавать, а не только синусоиду смотрели. Посмотрите сколько стоят осциллографы на микроконтроллерах с частотой семплирования до 100 мегагерц. Существует целая армия серьезных разработчиков и просто хоббистов, живущих в мире микроконтроллеров, где скорости и частоты процессов не требуют гигасемплов. С марсоходом, ничего почти даже не допаивая в него, или тем более с самодельной платой на ПЛИС, достаточно будет просто прошить проект. 20 мегасемплов у марсохода действительно маловато, но даже их достаточно, чтобы смотреть внутрь многих аналоговых устройств, даже видеоустройств. Т.е. стремление к обладанию таким прибором совсем не ретроградство и не ностальгия. Видимо люди расстроены тем, что желая работать в сфере более высоких частот не все могут пойти и просто купить себе какой-нить 4 канальный 300 мегагерцовый 4 гигасемпловый хотя бы Rigol. Надо правильно позиционировать такую технику - это средство производства и исследований - это вещь для лаборатории, на которой совершается что-то такое, что его окупит. А какие-нибудь ардуино покупают для другой немалой пользы.

С клавиатурой я, кстати, справился - скоро будет следующая версия осциллографа. Удивило обилие в интернете почти одного и того же исходника, но с разным авторством и мелкими коррективами в пару строк. В варианте от альтеры столкнулся с проблемами обработки shift. Такое впечатление, что там исходник зависит от каких-то глобальных объявлений для условной компиляции. Разбираться не стал. Заменил на вроде как первоисточник от John Clayton с opencore. Заработало.
Администратор запретил публиковать записи гостям.
Время создания страницы: 0.261 секунд

GitHub YouTube Twitter
Вы здесь: Начало Forum Наш форум Проекты пользователей Запоминающий осциллограф