Блог страдающего Лиса
Lorem ipsum hello dolor sit world amet
14 окт 2024 Пн
Встраивание видеоадаптера
Что я сделал вчера
Как и обычно, вчера я занимался тем, что создавал видеоадаптер текстового режима и пытался его встроить в систему. Получилось, но с большим трудом, потому что я отлаживал его не на вериляторе, как обычно, а прямо на реальной микросхеме, делая видеозахват изображения с VGA. Пока что то, что получается, весьма неплохо. Делал встраивание блоков памяти, связывал их между собой. Как я и говорил ранее, дел у меня еще очень много, и следующее что надо сделать, это контроллер прерываний, клавиатуру, кстати говоря, надо, причем не тот контроллер клавы, как в оригинальном 8088, а свой, отдающий по прерыванию ASCII символы для того, чтобы экономить место в биосе для этой цели.
Даже не представляю, сколько времени мне придется это делать, но лучше делать постепенно, но все-таки делать, чем аврально все делать, а потом бросать на половине пути. Даже то, что я взял собственный проект на доработку, уже хороший маркер того, что перестал заниматься одним и тем же.
Деление
Одним из важных пунктов в разработке системы трехмерного видеоускорителя является то, что ему требуется делитель, и как можно более быстрый. Для этого можно использовать смешанный делитель: потактовый и последовательный. Модуль деления довольно сложный для понимания и это даже не поместится в одну короткую статью, чтобы объяснить как он работает, надо много строчить символов, чтобы объяснить. Да и кому объяснять? Меня все равно никто не читает и никто не поймет.
Еще бы мне доработать сайт, чтобы создавать иллюстрации удобно было, а не то что сейчас, не могу нормально сделать ничего. Даже картинку добавить представляет большую сложность.
Логотуп андройда
А еще я вчера сделал интересную вещь на плисе, нарисовал андройда с помощью всяких штук-дрюк, просто чисто. Ну ты понял. На чистой логике.
Контроллер прерываний
В какой-то мере мне удалось сделать контроллер прерываний, который получает новые события, ставит в очередь и рассылает процессору по мере того как он обрабатывает прерывания. Дело в том что прерывания могут появляться одновременно, а процессор просто не успевать их обрабатывать вовремя, так что сделано было так: когда появляется прерывание, то оно просто ставится в очередь. Отсылается последовательно, процессор когда обрабатывает очередное прерывание, должен самостоятельно выставить EOI через
Также я сделал для ПЛИС реальной видеоразрешение 320 на 200, цветное, с палитрой, которую можно программировать через порты. Это мне пригодится для создания игр и приложений. А еще, я хотел бы сделать видеоразрешение 640 на 400, 16 цветов, в будущем. Может и не пригодится, но все равно было бы неплохо. Короче, вот все всё поняли:
Как и обычно, вчера я занимался тем, что создавал видеоадаптер текстового режима и пытался его встроить в систему. Получилось, но с большим трудом, потому что я отлаживал его не на вериляторе, как обычно, а прямо на реальной микросхеме, делая видеозахват изображения с VGA. Пока что то, что получается, весьма неплохо. Делал встраивание блоков памяти, связывал их между собой. Как я и говорил ранее, дел у меня еще очень много, и следующее что надо сделать, это контроллер прерываний, клавиатуру, кстати говоря, надо, причем не тот контроллер клавы, как в оригинальном 8088, а свой, отдающий по прерыванию ASCII символы для того, чтобы экономить место в биосе для этой цели.
Даже не представляю, сколько времени мне придется это делать, но лучше делать постепенно, но все-таки делать, чем аврально все делать, а потом бросать на половине пути. Даже то, что я взял собственный проект на доработку, уже хороший маркер того, что перестал заниматься одним и тем же.
Деление
Одним из важных пунктов в разработке системы трехмерного видеоускорителя является то, что ему требуется делитель, и как можно более быстрый. Для этого можно использовать смешанный делитель: потактовый и последовательный. Модуль деления довольно сложный для понимания и это даже не поместится в одну короткую статью, чтобы объяснить как он работает, надо много строчить символов, чтобы объяснить. Да и кому объяснять? Меня все равно никто не читает и никто не поймет.
Еще бы мне доработать сайт, чтобы создавать иллюстрации удобно было, а не то что сейчас, не могу нормально сделать ничего. Даже картинку добавить представляет большую сложность.
Логотуп андройда
А еще я вчера сделал интересную вещь на плисе, нарисовал андройда с помощью всяких штук-дрюк, просто чисто. Ну ты понял. На чистой логике.
Контроллер прерываний
В какой-то мере мне удалось сделать контроллер прерываний, который получает новые события, ставит в очередь и рассылает процессору по мере того как он обрабатывает прерывания. Дело в том что прерывания могут появляться одновременно, а процессор просто не успевать их обрабатывать вовремя, так что сделано было так: когда появляется прерывание, то оно просто ставится в очередь. Отсылается последовательно, процессор когда обрабатывает очередное прерывание, должен самостоятельно выставить EOI через
OUT ($20),$20
, и тогда сработает следующее, как только флаг IF=1. Хотя слать туда можно что угодно, честно говоря.Также я сделал для ПЛИС реальной видеоразрешение 320 на 200, цветное, с палитрой, которую можно программировать через порты. Это мне пригодится для создания игр и приложений. А еще, я хотел бы сделать видеоразрешение 640 на 400, 16 цветов, в будущем. Может и не пригодится, но все равно было бы неплохо. Короче, вот все всё поняли:
12 окт 2024 Сб
Продолжение работы над 8088
Доработки
Очень медленно работа идет над этим процессором, потому что у меня нет времени на то, чтобы заниматься этим постоянно. Сегодня мне бы хотелось сделать инструкции умножения и деления, потому что это тоже важно, между прочим. И просто посмотреть, сколько занимает логических элементов текущий код, просто потому что интересно, влезет ли в 10к от Марсохода в будущем, это тоже важно.
У меня есть вторая плата, которую покупал совсем недавно, это OMDAZZ, и ее тоже было бы интересно проверить, потому что по техническим характеристикам она полностью совпадает с Марсоходом2. То есть по идее, если я смогу сделать для нее, то и для 3-го циклона тоже получится.
Игра Жизнь
Еще недавно я научился "шить" микросхему 150К ПЛИС, загрузил туда свою прошивку для симуляции поля игры "Жизнь" 128 на 120. Это значит, что каждая ячейка "живет" независимо от других и за один такт перебрасывается поле в новое состояние. Это значит, что если запустить на 25 мгц, то, учитывая 128 на 120 = 15360 ячеек, которые занимают 148К ЛЕ, то это равносильно будет обработке 384 млрд ячеек в секунду! Поразительная скорость массового параллелизма. Но это лишь простые ячейки, более сложного ничего не делал пока что, только игру "Жизнь".
У меня еще есть мечта сделать растеризацию фрактала Мандельброта, только вот, смогу ли я это сделать, тот еще вопрос... на самом деле, ничего меня не может остановить, чтобы это сделать, кроме собственной лени.
Итог дня
Сегодня я полдня делал шаблон для omdazz, назначал пины, проверял различные комбинации, тестировал VGA и вот что я скажу — какая-то есть проблема с видеовыходом, поскольку во-первых, там всего лишь 3 бита, во-вторых, изображение получается тусклым. Один из проверочных моих мониторов вообще не может настроиться на видевыход как надо, к тому же, картинка съезжает, возможно даже из-за этих тусклых цветов. Как я посмотрел на схеме, там подключено к 1 кОм резистору, вместо например, 100 Ом, и видимо поэтому изображение такое тусклое и показывается.
Вторая неприятная вещь в том состоит, что оказывается, пины, которые якобы GPIO, на самом деле присоединены к различным устройствам, и значит что придется использовать их совместно. И вообще так получается, что эти пины особо и не получится использовать, честно говоря. Да, можно отказаться от SDRAM например, в пользу пинов, но вместе их использовать никак не выйдет.
Еще на плате есть выводы на LCD экранчик, который присоединяется отдельно. У меня такое чувство, что его подцепить туда будет нельзя, поскольку похоже, не совпадают выводы. Но я должен буду это еще проверить. В любом случае, именно эти пины то и можно юзать как GPIO.
Смог сегодня сделать инструкции умножения и частично деления, только беззнаковое пока что. Знаковое сложнее, это я уже потом делать буду. Дополнительно к функции умножения через обычные групповые инструкции еще бы сделать отдельную IMUL, которая работает с Immediate. Это очень полезная и крайне нужная инструкция для вычисления например, координат.
Очень медленно работа идет над этим процессором, потому что у меня нет времени на то, чтобы заниматься этим постоянно. Сегодня мне бы хотелось сделать инструкции умножения и деления, потому что это тоже важно, между прочим. И просто посмотреть, сколько занимает логических элементов текущий код, просто потому что интересно, влезет ли в 10к от Марсохода в будущем, это тоже важно.
У меня есть вторая плата, которую покупал совсем недавно, это OMDAZZ, и ее тоже было бы интересно проверить, потому что по техническим характеристикам она полностью совпадает с Марсоходом2. То есть по идее, если я смогу сделать для нее, то и для 3-го циклона тоже получится.
Игра Жизнь
Еще недавно я научился "шить" микросхему 150К ПЛИС, загрузил туда свою прошивку для симуляции поля игры "Жизнь" 128 на 120. Это значит, что каждая ячейка "живет" независимо от других и за один такт перебрасывается поле в новое состояние. Это значит, что если запустить на 25 мгц, то, учитывая 128 на 120 = 15360 ячеек, которые занимают 148К ЛЕ, то это равносильно будет обработке 384 млрд ячеек в секунду! Поразительная скорость массового параллелизма. Но это лишь простые ячейки, более сложного ничего не делал пока что, только игру "Жизнь".
У меня еще есть мечта сделать растеризацию фрактала Мандельброта, только вот, смогу ли я это сделать, тот еще вопрос... на самом деле, ничего меня не может остановить, чтобы это сделать, кроме собственной лени.
Итог дня
Сегодня я полдня делал шаблон для omdazz, назначал пины, проверял различные комбинации, тестировал VGA и вот что я скажу — какая-то есть проблема с видеовыходом, поскольку во-первых, там всего лишь 3 бита, во-вторых, изображение получается тусклым. Один из проверочных моих мониторов вообще не может настроиться на видевыход как надо, к тому же, картинка съезжает, возможно даже из-за этих тусклых цветов. Как я посмотрел на схеме, там подключено к 1 кОм резистору, вместо например, 100 Ом, и видимо поэтому изображение такое тусклое и показывается.
Вторая неприятная вещь в том состоит, что оказывается, пины, которые якобы GPIO, на самом деле присоединены к различным устройствам, и значит что придется использовать их совместно. И вообще так получается, что эти пины особо и не получится использовать, честно говоря. Да, можно отказаться от SDRAM например, в пользу пинов, но вместе их использовать никак не выйдет.
Еще на плате есть выводы на LCD экранчик, который присоединяется отдельно. У меня такое чувство, что его подцепить туда будет нельзя, поскольку похоже, не совпадают выводы. Но я должен буду это еще проверить. В любом случае, именно эти пины то и можно юзать как GPIO.
Смог сегодня сделать инструкции умножения и частично деления, только беззнаковое пока что. Знаковое сложнее, это я уже потом делать буду. Дополнительно к функции умножения через обычные групповые инструкции еще бы сделать отдельную IMUL, которая работает с Immediate. Это очень полезная и крайне нужная инструкция для вычисления например, координат.
04 мар 2023 Сб
Наконец-то синтезировал в ПЛИС проект
У меня этот проект с
Что вообще могу я сделать?
Award Modular
уже длится довольно давно, потому что я делаю его иногда, и вот сегодня я сделал наконец, синтез в DE0 девборде, чтобы показалось, наконец, на реальном железе. Работает вполне прилично, все хорошо и четко выводит, без искажений. Скриншот что ли приложить... но думаю, что не стоит, потому что я так уже заспамил как только мог этими скриншотами. Еще сегодня доделал якобы "отсчет" памяти, где отсчитывается 8 Мб, хотя он вообще ничего не отсчитывает на самом деле, просто так работает, от балды. Что-то выложить видео не могу, не поддерживается браузером.Что вообще могу я сделать?
- Первая задача, которую надо обязательно сделать, так это показ биоса, а точнее, его муляжа, чтобы было ощущение, как будто из под биоса сидишь пентиумского
- Второе, это выдача на экран характеристик "компа"
- Поддержка SD-карты
- Поддержка памяти SDRAM
- Мини-дос
- Микро-Бейсик
<< Ранние записи |
Поздние записи >>