МАРСОХОД

Open Source Hardware Project

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

ТЕМА: Процессор 8086

Процессор 8086 2 года 7 мес. назад #5865

  • foxtail
  • foxtail аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 12
  • Спасибо получено: 0
Решил начать эту тему. Я уже достаточно долго продумываю проект по проектированию процессора 8086. Следует сказать, что я недостаточно хорошо знаю даже Verilog, но пишу сейчас на нем этот проект, и делаю под плату Марсоход-2.

Идея сначала создания ОС под 386, а после - самого процессора 86-совместимого, у меня уже достаточно давно, и вынашиваю я ее чуть ли не десятилетие. Изучив Verilog, постепенно совершенствуя свои навыки в нем (я программист), мне захотелось создать 8086, не знаю, почему, но вот именно этот процессор.

Остается только одно - мотивация. Потребуется ли кому-нибудь подробное описание на русском, как сделать эмулятор процессора 8086 (+ с видеокартой, прерываниями, ps/2 клавиатурой)? Если да, то я по мере прогресса создания процессора мог вы писать уроки по нему где-нибудь, например, на своем сайте или на Youtube. Для начала количество памяти 32кб, поскольку мне неизвестно еще до конца, как работает SDRAM.

В данный момент я нахожусь на стадии чтения префиксов, опкода и разбор modrm. В текущий момент modrm разбирается полностью (вместе с displacement 8 и 16). Нет исполнения, только чтение из памяти инструкции, но я работаю над этим.

Вот такой вот вопрос. Я вижу, что на форуме никто пока не предлагал сделать 8086, но видел на сайте, что кто-то реализовал AVR и ZXSpectrum (который я протестировал и вдохновился еще больше).

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Процессор 8086 2 года 7 мес. назад #5866

На opencores.org нашлось две реализации x86 - 80186 и 80486
Плюсы х86 - архитектура хорошо известная и под него есть великое множество софта.
Минусы x86 - довольно старая архитектура и лицензионно "огороженная".

В качестве хобби вполне интересное занятие, но вряд-ли это может вырасти во что-то большее. (ИМХО)

Могу предположить что интерес к проекту может возникнуть если запустите на нём MS-DOS и её окружение. Попробуют, посмотрят, поговорят и, вероятно, потеряют интерес. Т.е. в качестве обучения и для общего развития очень хорошая задача, а вот что-нибудь большее - не факт. Но это просто мнение со стороны - может быть и ошибаюсь. Ни в коем случае не хочу отговаривать.
Спасибо сказали: foxtail

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Процессор 8086 2 года 7 мес. назад #5867

  • foxtail
  • foxtail аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 12
  • Спасибо получено: 0
Спасибо за ответ. Посмотрел реализации 186, 486, действительно, уже все до меня создано в этой области.

Я продолжу заниматься собственной реализацией только из того, что я называю принципом, т.к. хочу полностью сам написать реализацию, постичь verilog, набраться опыта, изучить инструкции досконально, до каждого полутакта. Сделаю минимальный набор самых важных инструкции и опишу результат. Возможно даже здесь.

Действительно, думаю так и будет, что этот проект просто учебный B)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Процессор 8086 2 года 7 мес. назад #5868

У меня тоже было желание попробовать это. Говорю в прошедшем времени, так как прошло много времени, а я до сих пор занимаюсь другими вещам. Но желание не пропало. Правда, кроме учебных целей я хотел попробовать относительно редкий, на мой взгляд путь. Соорудить RISC процессор и прикрепить к нему аппаратную поддержку эмуляции чужих систем команд. Если говорить упрощенно, то с помощью наложения битовых масок, регистров сдвига и несложной, настраиваемой, опять же, логики из команд эмулируемой системы команд должны были формироваться адреса подпрограмм (и их аргументы) на RISC системе команд. Должен получиться процессор с маленьким расходом логики, ценой большого расхода встроенной (или внешней, если нет больших требования по быстродействию) памяти. Такой подход, кажется, собирались применять в IA-64 Merced или как там его процессоре, совместно разрабатываемом в начале 2000 годов intel и hp, для поддержки старого x86 кода.
P.S.
по сути, конечно, все современные intel CISC процессоры содержат память микропрограмм, но аппаратного разбора там тоже много. Мне хотелось сделать именно упор на полную перестраиваемость, Чтобы быстро разделавшись с по возможности максимально простой аппаратной частью, заниматься уже только написанием микропрограмм. Т.е. отличие именно в приоритетах, а не принципиальное. Хотя я, если честно, не знаю как сделано в существующих HDL CISC x86 проектах. Сейчас может и без микропрограмм делают - возможности есть.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Chaosorg.

Процессор 8086 2 года 7 мес. назад #5869

  • foxtail
  • foxtail аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 12
  • Спасибо получено: 0
Весьма неплохая мысль насчет использования микропрограмм... Я тоже думал это реализовать в своем проекте, но только частично, то есть например fetch instruction и разбор байта modrm аппаратно, а некоторые сложные инструкции через "микрокод", опирающийся на соответственный ROM в M9K. Напрягает только факт того, что стабильные данные становятся доступными через 3 такта от M9K, поэтому скорость приходится понижать до 35 Мгц, чтобы 3 такта успели прочесть данные из памяти.

Вот такой вопрос, если на затрудню - где можно на русском прочитать по SDRAM, который на Марсоходе2? Я до сих пор не очень в курсе по этому вопросу: как инициализировать микросхему, как читать, писать, как обновлять банки данных, чтобы инфа не затиралась, и прочее.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Процессор 8086 2 года 7 мес. назад #5872

Если мне не изменяет память, то в текущем ZX Spectrum в теме
marsohod.org/forum/proekty-polzovatelej/...nove-proekta-ewgeny7
использована обновленная версия контроллера SDRAM опубликованная в блоге этого сайта
marsohod.org/11-blog/294-sdr-ctl-upgrade ,
в которую, по сравнению с первоначальной версией
marsohod.org/11-blog/281-sdramvhdl (этот без регенерации, зато статья популярная)
была добавлена автоматическая регенерация и контроллер вполне можно использовать как черный ящик

По поводу даташитов на русском - судя по гуглу, который у нас с Вами одинаковый - нету. А нету, скорее всего, потому что там мало текста. Рисунки, таблицы, датаграммы. Если Вы программист, то остальной текст из marsohod.org/downloads/category/18?download=122
зная общий смысл из ru.wikipedia.org/wiki/SDRAM поймете.

Про микропрограммы хочется еще сказать. Использование именно этого термина может вызвать путаницу и не понимание идеи с аппаратной поддержкой эмуляции CISC. Микропрограммы написаны, наверное, на каком-то Very Long Instruction Set, который непосредственно дирижирует аппаратными блоками, а я предлагаю, чтобы аппаратный декодер превращал CISC инструкции в адреса подпрограмм, написанных на неком более традиционном RISC, которым при прочих условиях не грех было бы пользоваться даже и без всякого x86.
Спасибо сказали: foxtail

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от nckm.

Процессор 8086 2 года 7 мес. назад #5873

  • foxtail
  • foxtail аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 12
  • Спасибо получено: 0
Еще раз большое спасибо за ответ! Я все же постараюсь разобраться в принципе работы SDRAM, поскольку ~50кб не сильно хватит на запуск программ, а нужно хотя бы 1Мб для уверенной работы. Материала достаточно много, буду вникать...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Процессор 8086 2 года 7 мес. назад #5876

foxtail пишет: ...постараюсь разобраться в принципе работы SDRAM, поскольку ~50кб не сильно хватит на запуск программ, а нужно хотя бы 1Мб для уверенной работы....


Со своим или чужим, готовым, контроллером Вы рано или поздно получите место для хранения программ, но откуда их первоначально загружать? Ведь flash EPCS4 кроме информации для загрузки содержит саму конфигурационную информацию для ПЛИС. Надо искать приличный исходник для работы с FAT и присоединять MicroSD. Это самое простое, разумеется при условии, что проект должен стартовать без подсоединения к какому-то внешнему компьютеру, загружающему софт. Так что до 1Мб еще надо как-то добраться. Если честно, то я не помню объемов ПЗУ на материнских платах ПК времен 86/286/386 (хотя они грузились из MBR, а не всей файловой системы), но хочется верить, что с FAT можно работать небольшим кодом. Тем более, что это как-то умудряются делать даже с Arduino.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Chaosorg.

Процессор 8086 2 года 7 мес. назад #5877

Chaosorg пишет: Если честно, то я не помню объемов ПЗУ на материнских платах ПК времен 86/286/386 (хотя они грузились из MBR, а не всей файловой системы), но хочется верить, что с FAT можно работать небольшим кодом.

BIOS PC/XT поддерживает функцию чтения сектора/секторов. Размер MBR не может превышать размер сектора - 512 байт, а на самом деле даже меньше, потому что в самом конце сектора таблица разделов. MBR ничего не знает о FAT. Задача MBR - загрузить с определённого сектора файл IO.SYS (его положение чётко задано на диске, это неперемещаемый файл), а он, в свою очередь, подгружает MSDOS.SYS и COMMAND.COM.

Для старта MS-DOS/PC-DOS/DR-DOS/etc. необходимо во внутренней памяти ПЛИС реализовать несколько обработчиков программных прерываний:
- 10h для работы с видеоадаптером (как минимум - функции вывода символа и установка курсора)
- 12h для работы с диском (или его эмуляцией на флешке).
- 16h для чтения клавиатуры

Не обязательно поддерживать все функции этих прерываний, но какой-то минимально необходимый набор должен быть, иначе система не загрузится. Если делать клон PC XT, то постараться придётся изрядно. А ещё для увеличения быстродействия некоторые программы очень любили лезть к железу напрямую - читать клавиатуру через порты, писать напрямую в видеопамять и т.д. и т.п. Тут уже одним процессором не обойтись, но придётся эмулировать часть железа.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Процессор 8086 2 года 7 мес. назад #5878

Работа с диском int 13h.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
  • 3
Время создания страницы: 0.205 секунд

facebook  GitHub  YouTube  Twitter