Блог страдающего Лиса
Lorem ipsum hello dolor sit world amet
16 ноя 2024 Сб
Новое веяние графического построения
Наконец-то у меня появилась возможность просто взять и сделать программу, которая бы рисовала кодом, а не это вот все. Теперь я могу просто брать и в своей админке проверять то, что не мог проверять раньше, а именно нарисовать например, вот таким кодом:
Причем совершенно невозбранно. Это классно, ведь теперь есть возможность быстро рисовать и проверять кодом и загружать картинки вот сюда в блог и не только. Раньше мне приходилось очень сложно и много рисовать в Quick Basic, но эти времена ушли и стали наступать новые, более интересные времена.
Еще у меня есть микросхема EPM240 и я отчаянно пытаюсь придумать ей применение. Один из вариантов, сделать для нее подключение к микросхеме памяти и юзать на полную катушку. С другой стороны, надо бы придумать что-то поинтереснее, чем просто создавать одно и то же постоянно. Самым удобным методом было бы конечно, загрузить программу в SRAM и там исполнять ее, но проблема в том, что эта SRAM работает срамно медленно. Ну вот если посудить, то чтобы запросить один байт памяти, требуется отослать 8 бит команду, 16 бит адреса и 8 бит данных (чтение или запись). Медленно, крайне медленно, даже если запускать на 12.5 мгц, то это скорость 390625 байт в секунду. Для сравнения, спектрум читал 875000 байт в секунду, что быстрее в 2.24 раза.
С другой стороны, если отбросить все умозаключения и страдания из-за скорости, то что меня парит? 381кб в секунду это не прямо настолько мало, чтобы совсем ничего не делать. Но проблема еще в том, что графику надо бы где-то отображать... То есть, если еще и читать из этой памяти графику, то скорость работы процессора вообще будет невероятно медленной.
Итак, представим что надо отобразить экран 256 на 192, это значит что придется запрашивать на скорости 12.5 мгц, а значит что эффективных тактов будет 256/400, так как строк по ширине у VGA для разрешение 640 на 400 будет равно 800. Итак, это дает 64% загрузки, остается лишь 4.5 чтения из памяти на один сканлайн.
Хорошо, это слишком медленно и представим что мы следуюший сканлайн вообще выводить не будем. Это дает 400 тактов / 32 = 12.5 чтений или записей на 1 линию. Итого, на две линии будет суммарно около 17 чтений или записи. Всего строк 192, а значит, 3264 байт на кадр. Помимо 192 строк, остаются свободными 65 строк на гашение кадра и прочей лабуды. Это дает 65*12.5 = 812 байт на кадр.
Итого 4076 байт на кадр или 4076x60 = 244560 байт в секунду, 238Кб в секунду. На самом деле, это не так плохо! 40% падения производительности с пропуском сканлайнов.
И получится то, что можно с последовательной SRAM выводить как графическое изображение, так и выполнять код одновременно с выводом, что очень неплохо. Надо теперь подумать, как бы реализовать такую минималистичную систему и процессор для этого дела. Ведь количество LE крайне ограничено. Смогу ли я вообще сделать в таком небольшом объеме хоть что либо? Кто знает.
cls(); let cat = "CAT on THE KittyCat"; for (let i = 1; i < 100; i++) circle(160,100,i,clr(i)); print(cat,86,11,clr(15)); print(cat,85,10,clr(0));И при этом получиться такая вот картинка.
Причем совершенно невозбранно. Это классно, ведь теперь есть возможность быстро рисовать и проверять кодом и загружать картинки вот сюда в блог и не только. Раньше мне приходилось очень сложно и много рисовать в Quick Basic, но эти времена ушли и стали наступать новые, более интересные времена.
Еще у меня есть микросхема EPM240 и я отчаянно пытаюсь придумать ей применение. Один из вариантов, сделать для нее подключение к микросхеме памяти и юзать на полную катушку. С другой стороны, надо бы придумать что-то поинтереснее, чем просто создавать одно и то же постоянно. Самым удобным методом было бы конечно, загрузить программу в SRAM и там исполнять ее, но проблема в том, что эта SRAM работает срамно медленно. Ну вот если посудить, то чтобы запросить один байт памяти, требуется отослать 8 бит команду, 16 бит адреса и 8 бит данных (чтение или запись). Медленно, крайне медленно, даже если запускать на 12.5 мгц, то это скорость 390625 байт в секунду. Для сравнения, спектрум читал 875000 байт в секунду, что быстрее в 2.24 раза.
С другой стороны, если отбросить все умозаключения и страдания из-за скорости, то что меня парит? 381кб в секунду это не прямо настолько мало, чтобы совсем ничего не делать. Но проблема еще в том, что графику надо бы где-то отображать... То есть, если еще и читать из этой памяти графику, то скорость работы процессора вообще будет невероятно медленной.
Итак, представим что надо отобразить экран 256 на 192, это значит что придется запрашивать на скорости 12.5 мгц, а значит что эффективных тактов будет 256/400, так как строк по ширине у VGA для разрешение 640 на 400 будет равно 800. Итак, это дает 64% загрузки, остается лишь 4.5 чтения из памяти на один сканлайн.
Хорошо, это слишком медленно и представим что мы следуюший сканлайн вообще выводить не будем. Это дает 400 тактов / 32 = 12.5 чтений или записей на 1 линию. Итого, на две линии будет суммарно около 17 чтений или записи. Всего строк 192, а значит, 3264 байт на кадр. Помимо 192 строк, остаются свободными 65 строк на гашение кадра и прочей лабуды. Это дает 65*12.5 = 812 байт на кадр.
Итого 4076 байт на кадр или 4076x60 = 244560 байт в секунду, 238Кб в секунду. На самом деле, это не так плохо! 40% падения производительности с пропуском сканлайнов.
И получится то, что можно с последовательной SRAM выводить как графическое изображение, так и выполнять код одновременно с выводом, что очень неплохо. Надо теперь подумать, как бы реализовать такую минималистичную систему и процессор для этого дела. Ведь количество LE крайне ограничено. Смогу ли я вообще сделать в таком небольшом объеме хоть что либо? Кто знает.
27 мая 2023 Сб
Что-то я долго сюда не писал
Мне писать то нечего было, не вел сайт, ничего не делал почти два месяца. Да что почти, два месяца и не писал. Недавно вот только начал опять что-то делать, чуть поправил сайт кое-где, и написал пару программ по трехмерному бейсику. Довольно интересная задача, конечно, по бейсику была, где нужно трехмерный графоний сделать. Я сделал, только скорость не устраивает, конечно. Надо переписать либо на ассемблер, либо на Си. Лучше на Си, потому что асм хоть и хорош, но уж слишком медленный и писать на нем тяжело.
Буду улучшать сайт постепенно. Сделал вот на сайте некоторые улучшения, чтобы проще было статьи синхронизировать, а еще надо бы доделать так, чтобы медиафайлы загружались нормально.
Еще, связанная с трехмерной графикой, тема. Мне давно хочется сделать полноценное 3Д, и при этом я пробую разные платформы. Например, можно было бы попробовать сделать трехмерный ускоритель именно на Verilog, если это получится у меня.
Буду улучшать сайт постепенно. Сделал вот на сайте некоторые улучшения, чтобы проще было статьи синхронизировать, а еще надо бы доделать так, чтобы медиафайлы загружались нормально.
Еще, связанная с трехмерной графикой, тема. Мне давно хочется сделать полноценное 3Д, и при этом я пробую разные платформы. Например, можно было бы попробовать сделать трехмерный ускоритель именно на Verilog, если это получится у меня.
15 янв 2023 Вс
Статья про код Хэмминга
Как же давно я хотел написать эту статью по этим кодам, и вот день этот настал и я смог затащить эту изи-катку, как выражаются CS:GO-еры. Интерес к этому коду у меня возник еще тогда, когда я обнаружил, что SDRAM-память для Марсохода2 у меня жестко сбоит и совершает непоправимые ошибки. Видимо, память битая оказалась, что очень плохо. Тогда я стал искать, как это исправить и наткнулся на статью о том, что существует волшебный метод, как исправить единичные ошибки в сообщении. И это оказался код Хэмминга.
Сначала я пытался его понять, но у меня не получилось разобраться в самой сути. Я читал в разных источниках, но не находил простого объяснения, как именно это дело работает. И вот вчера как говорится, психанул и начал искать. Вначале сам прикинул, как это может работать, а потом прочел прекрасную статью от хабраюзера и на меня прямо снизошло Знание!
Так выглядит таблица синдромов
Оказалось, что этот алгоритм не такой и сложный, я не просто в нем разобрался, я понял сам его основной принцип и это круто. Не знаю, применю ли его где-нибудь на практике, но то, что я смог понять, уже классно само по себе.
Сначала я пытался его понять, но у меня не получилось разобраться в самой сути. Я читал в разных источниках, но не находил простого объяснения, как именно это дело работает. И вот вчера как говорится, психанул и начал искать. Вначале сам прикинул, как это может работать, а потом прочел прекрасную статью от хабраюзера и на меня прямо снизошло Знание!
Сообщение | r0 | r1 | 0 | r2 | 1 | 2 | 3 | r3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Бит № | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Бит #0 | x | x | x | x | x | x | ||||||
Бит #1 | x | x | x | x | x | x | ||||||
Бит #2 | x | x | x | x | x | |||||||
Бит #3 | x | x | x | x | x |
Так выглядит таблица синдромов
Оказалось, что этот алгоритм не такой и сложный, я не просто в нем разобрался, я понял сам его основной принцип и это круто. Не знаю, применю ли его где-нибудь на практике, но то, что я смог понять, уже классно само по себе.
12 янв 2023 Чт
Добавил возможность поиска по тегам
Любой блог основан на том, что:
Это был глубоко риторический вопрос. В общем-то, потихоньку делаю сайт, как получается, как могу. В дальнейшем обязательно надо добавить улучшения в календарь.
- В нем есть записи по дням
- Есть теги, по которым можно искать
Это был глубоко риторический вопрос. В общем-то, потихоньку делаю сайт, как получается, как могу. В дальнейшем обязательно надо добавить улучшения в календарь.
10 янв 2023 Вт
Автоматический подбор NAND
Мне только что пришла одна интереснейшая мысль, которую я постараюсь как-нибудь реализовать. Дело в том, что у меня есть микросхема К155ЛА3, которая, как все знают, является весьма популярной микросхемой. Так вот, тут подумал, что с ее помощью можно делать довольно много цифровых устройств, в том числе даже триггеры, но, а насколько хорошо выйдет у этих 4-х элементов симулировать комбинаторную логику? С кое-какой она успешно справляется, например, сделать мультиплексор не составит труда. А демультиплексор? Вот тут уже задача посложнее. Я не смог найти быстрого решения, и потому придумал одну вещь. Что если переложить задачу поиска необходимого кода на компьютер?
То есть как. У нас есть 2 входа, 2 выхода (например), и 4 элемента NAND с 8 входами. На каждый из входов можно прицепить один из 4 выходов NAND и 2 входа (тут опционально настраиваем).
Задача - найти такую комбинацию, при которой выходы будут соответствовать входам в комбинационной схеме. Для этого придется перебрать различных комбинации брутфорсом. Это почти 1.7 млн комбинации. Так вот, пусть этим займется великий и могучий Javascript! Я сделаю утилиту прямо в браузере, чтобы он считал. Не сегодня может, не знаю, но как смогу.
Это будет интересно. Заодно, возможно, подберу комбинационную схему DEMUX, если она существует, конечно. Я тут статью уже 3-й день написать не могу по микросхеме К155ЛА3, застрял на демультиплексоре. Помню же, раньше его делал! Но забыл. И потерял схему. Как только мне удалось, без понятия. Может быть, я вообще совершил ошибку и не сделал его, а подумал что сделал.
То есть как. У нас есть 2 входа, 2 выхода (например), и 4 элемента NAND с 8 входами. На каждый из входов можно прицепить один из 4 выходов NAND и 2 входа (тут опционально настраиваем).
Задача - найти такую комбинацию, при которой выходы будут соответствовать входам в комбинационной схеме. Для этого придется перебрать различных комбинации брутфорсом. Это почти 1.7 млн комбинации. Так вот, пусть этим займется великий и могучий Javascript! Я сделаю утилиту прямо в браузере, чтобы он считал. Не сегодня может, не знаю, но как смогу.
Это будет интересно. Заодно, возможно, подберу комбинационную схему DEMUX, если она существует, конечно. Я тут статью уже 3-й день написать не могу по микросхеме К155ЛА3, застрял на демультиплексоре. Помню же, раньше его делал! Но забыл. И потерял схему. Как только мне удалось, без понятия. Может быть, я вообще совершил ошибку и не сделал его, а подумал что сделал.
07 янв 2023 Сб
Ностальгия и не только
Мне нравится думать о прошлом, о том, что там было все хорошо, не считая то, что на самом деле, там было так же, но когда думаешь о прошлом из будущего, то все равно кажется, что там все хорошо, потому что прошлое уже прошло, а настоящее и будущее еще нет и это, на самом деле, пугает. Ведь будущее не определено и это как раз то, что меня напрягает больше всего, а именно — неопределенность.
Хочу сделать сайт так, чтобы он был уютным, чтобы хотелось заходить и читать что-нибудь, изучать или просто отдыхать. Благодаря этому блогу, может быть, если мне не надоет сюда писать со временем, этот сайт и будет таким, о котором я мечтал всегда.
Вчера вечером сделал очень важную фишку, это создал код во вкладке Сервисы, где можно будет генерировать различные модули для ПЛИС, не скачивая их например, с шаблонов, а создавая, просто нажав на кнопку "Генерация", и модуль появляется откуда ни возьмись. Сегодня хотел бы встроить еще генерацию отладочных плат моих, у меня их в целом-то 5, но сделаю только для двух самых важных для меня в данный момент — это Циклон 4 и Циклон 5. Остальные, если будет время, доделаю потом.
А теперь можно и рассказать о моих страданиях по поводу ютуба, которые у меня никогда не прекращаются, вот уж наверное с 2012 года или даже раньше. Этот ютуб как кость в горле, ни туда ни сюда, болтается себе. Один раз у меня было там 100 подписчиков, но я не выдержал и удалил его. Надо осознать то, что ютуб — это вообще не моё, и что мне там лучше не появляться, потому что у него есть большое количество недостатков, такие как, например, а что мне там делать? Я считаю это огромным недостатком. Столько лет уже пытаюсь выйти в ютуб и не могу, и не смогу никогда, так что тогда пытаться, стараться?
Вот у меня есть сайт, где можно будет писать то, что захочется и на этом всё. Это самое лучшее решение из всех.
Хочу сделать сайт так, чтобы он был уютным, чтобы хотелось заходить и читать что-нибудь, изучать или просто отдыхать. Благодаря этому блогу, может быть, если мне не надоет сюда писать со временем, этот сайт и будет таким, о котором я мечтал всегда.
Вчера вечером сделал очень важную фишку, это создал код во вкладке Сервисы, где можно будет генерировать различные модули для ПЛИС, не скачивая их например, с шаблонов, а создавая, просто нажав на кнопку "Генерация", и модуль появляется откуда ни возьмись. Сегодня хотел бы встроить еще генерацию отладочных плат моих, у меня их в целом-то 5, но сделаю только для двух самых важных для меня в данный момент — это Циклон 4 и Циклон 5. Остальные, если будет время, доделаю потом.
А теперь можно и рассказать о моих страданиях по поводу ютуба, которые у меня никогда не прекращаются, вот уж наверное с 2012 года или даже раньше. Этот ютуб как кость в горле, ни туда ни сюда, болтается себе. Один раз у меня было там 100 подписчиков, но я не выдержал и удалил его. Надо осознать то, что ютуб — это вообще не моё, и что мне там лучше не появляться, потому что у него есть большое количество недостатков, такие как, например, а что мне там делать? Я считаю это огромным недостатком. Столько лет уже пытаюсь выйти в ютуб и не могу, и не смогу никогда, так что тогда пытаться, стараться?
Вот у меня есть сайт, где можно будет писать то, что захочется и на этом всё. Это самое лучшее решение из всех.
05 янв 2023 Чт
Доделал верстку под мобильники
Итак, вчера после того как написал хвалебный псто в отношении своего нового блога, лег я короче, поспать и думаю, давай достану телефон и посмотрю, что да как. А там так разъехалось, что я ужаснулся просто. Решил утром встать и поправить это нехорошее дело на хорошее дело, и вот теперь все нормально работает.
Еще вчера перед сном смог внедрить такую систему, чтобы можно было несколько canvas-приложений встраивать прямо в посты и это уже на самом деле, очень давняя фича, которую я хотел внедрить. Я еще ее не доделал, но суть такая, что например, я пишу код в js для специального класса, который у меня тут есть и он довольно хорошо сделан в целом, и в пост встраиваю эту иллюстрацию. Вот пример такой иллюстрации. Это куб, который был взят из статьи:
Рис 1. Кубойд вращается как куб
Сегодня планирую еще доделать несколько вещей, в том числе генератор памяти для плис, универсальный под все altera, и cyclone, которые у меня есть. Там код реально, универсальный для всех чипов, надо лишь только сделать, чтобы можно было через drag&drop бросать код и его конвертил как надо. Это один из вариантов, чтобы с сайта можно было прямо скачивать.
Мне нравится мой сайт, он уже представляет из себя не только справочник, но и блог. Хорошо бы еще статьи написать дальше, но как известно, лень — плохая штука, не дает этого сделать.
А вообще за последние 2 дня я довольно сильно отрефакторил код своего сайта, чтобы мне самому было еще удобно разрабатывать под него. Раньше все валялось не пойми где, сейчас вот всё в относительном порядке.
Еще вчера перед сном смог внедрить такую систему, чтобы можно было несколько canvas-приложений встраивать прямо в посты и это уже на самом деле, очень давняя фича, которую я хотел внедрить. Я еще ее не доделал, но суть такая, что например, я пишу код в js для специального класса, который у меня тут есть и он довольно хорошо сделан в целом, и в пост встраиваю эту иллюстрацию. Вот пример такой иллюстрации. Это куб, который был взят из статьи:
Рис 1. Кубойд вращается как куб
Сегодня планирую еще доделать несколько вещей, в том числе генератор памяти для плис, универсальный под все altera, и cyclone, которые у меня есть. Там код реально, универсальный для всех чипов, надо лишь только сделать, чтобы можно было через drag&drop бросать код и его конвертил как надо. Это один из вариантов, чтобы с сайта можно было прямо скачивать.
Мне нравится мой сайт, он уже представляет из себя не только справочник, но и блог. Хорошо бы еще статьи написать дальше, но как известно, лень — плохая штука, не дает этого сделать.
А вообще за последние 2 дня я довольно сильно отрефакторил код своего сайта, чтобы мне самому было еще удобно разрабатывать под него. Раньше все валялось не пойми где, сейчас вот всё в относительном порядке.
04 янв 2023 Ср
Самый первый пост в блоге
Ну что, сегодня я наконец-то, смог сделать то что давно хотел, это блог на собственном сайте. Для этого мне пришлось целый день поработать над ним, но по итогу, все получилось. Да, не до конца, тут много дел еще по сути то, надо еще картинки уметь красиво подцеплять, а не так как сейчас, через сложные загрузки. Надо проще все сделать, чтобы добавил картинку и она тут появилась. Также надо доделать календарь, теги, перемотку по страницам. Все это не прямо актуально в данный момент, но после того, как тут наберется достаточное количество записей, это станет важным.
Я так то очень ленивый и потому делать буду только когда совсем припрёт. Да, смайлы бы добавить, они бы разбавили однородный скучный и унылый текст. Кстати, смайлы надо не простые, а те, которые в аське были.
Так вот, мне кажется, писать я сюда в этот блог почаще буду и побольше. На разные темы, в том числе и на тему моих страданий и мучений. Этот блог хоть и не скрыт от посетителей, но я закрыл доступ к нему из robots.txt, чтобы нельзя было найти его через поиск гугла. А зачем искать этот бред, что я тут пишу? Оно того не стоит. Именно для того, чтобы высказаться, я сюда и пишу всё.
Да, не прямо все я буду сюда писать что хочу, но уж побольше, чем обычно пишу в статьях. Там все же, надо материал подавать не так... Кстати пока писал, подумал что надо создать возможность внедрять сюда canvas и скрипты выполнения что-то на canvas. Подумаю над этим, конечно. Но потом, ибо девиз прокрастинатора — это "потом". А я как раз именно прокрастинатор.
Я так то очень ленивый и потому делать буду только когда совсем припрёт. Да, смайлы бы добавить, они бы разбавили однородный скучный и унылый текст. Кстати, смайлы надо не простые, а те, которые в аське были.
Так вот, мне кажется, писать я сюда в этот блог почаще буду и побольше. На разные темы, в том числе и на тему моих страданий и мучений. Этот блог хоть и не скрыт от посетителей, но я закрыл доступ к нему из robots.txt, чтобы нельзя было найти его через поиск гугла. А зачем искать этот бред, что я тут пишу? Оно того не стоит. Именно для того, чтобы высказаться, я сюда и пишу всё.
Да, не прямо все я буду сюда писать что хочу, но уж побольше, чем обычно пишу в статьях. Там все же, надо материал подавать не так... Кстати пока писал, подумал что надо создать возможность внедрять сюда canvas и скрипты выполнения что-то на canvas. Подумаю над этим, конечно. Но потом, ибо девиз прокрастинатора — это "потом". А я как раз именно прокрастинатор.
<< Ранние записи |
Поздние записи >>