User Tag List

Показано с 1 по 10 из 472

Тема: Потактовый клон i8080 на FPGA/CPLD

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как оно конвертировалось, с точки зрения абстрактной логики, картинка:

    Нажмите на изображение для увеличения. 

Название:	convert.jpg 
Просмотров:	420 
Размер:	20.2 Кб 
ID:	64092

    Весь процессор ВМ80 можно представить как схему состоящую из двух групп защелок (latch), первая группа срабатывает от фазы F1, вторая от фазы F2. Между группами защелок имеются наборы логики, часть логических функций формирует выходные сигналы. Можно переписать логику так что она будет зависеть только от выходов группы защелок F2, и свести ее к единому набору, а защелки группы F2 непосредственно присоединяются к выходам группы F1. Далее остается только заменить группы защелок на регистры (flip-flops). Регистры являются нативными базовыми элементами FPGA и предоставляют уже готовую реализацию. Как видно из картинки, в схеме остались только элементы, срабатывающие по фронту F2, соответственно все выходные сигналы будут тоже синхронизированы с фронтом F2, что нам и требовалось для системы в FPGA. Внутренняя же логика обработки процессора осталась практически той же самой, все такты T и циклы М неизменны, их отлично видно на симуляторе.

    Update: еще прикол в том что Wishbone достаточно простой, и почти совпадает с внешней шиной оригинального i8080 (если не цепляться к синхронности). В системе WB шину модели можно в пару строчек конвертировать в привычную шину.
    Последний раз редактировалось Vslav; 04.02.2018 в 11:49.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Update: еще прикол в том что Wishbone достаточно простой, и почти совпадает с внешней шиной оригинального i8080 (если не цепляться к синхронности). В системе WB шину модели можно в пару строчек конвертировать в привычную шину.
    С этого места поподробнее, я записываю
    В моей реализации Ориона, например, сигнал DSYN формируется как "cpu_rd or cpu_wr", а в оригинальной реализации - задержанный на 1 такт F2 сигнал SYNC от процессора.
    Глядя на сигналы и комментарии к ним, понимаю, что надо плясать от wb_tgc_o и wb_we_o, но что там ещё надо намешать - хз даже =/

    - - - Добавлено - - -

    Цитата Сообщение от Mick Посмотреть сообщение
    Скажи, а ты 580ВМ1 не планируешь также разобрать на транзисторы, как ВМ80?
    А при реверсе сперва как раз на транзисторы и разбирается в любом случае
    Потом уже по схеме восстанавливается логика.
    "Байт-48"

  4. #3

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от andreil Посмотреть сообщение
    С этого места поподробнее, я записываю
    В моей реализации Ориона, например, сигнал DSYNC формируется как "cpu_rd or cpu_wr", а в оригинальной реализации - задержанный на 1 такт F2 сигнал SYNC от процессора.
    На DSYN, фазы и прочее - забить. Можно использовать сигналы типа гангнам ВК28-стайл:
    Код:
    • nMEMRD = ~(wb_stb_o & ~wb_we_o & ~wb_tgc_o[1] & ~wb_tgc_o[4]);
    • nMEMWR = ~(wb_stb_o & wb_we_o & ~wb_tgc_o[1] & ~wb_tgc_o[4]);
    • nIORD = ~(wb_stb_o & ~wb_we_o & wb_tgc_o[1] & ~wb_tgc_o[4]);
    • nIOWR =~(wb_stb_o & wb_we_o & wb_tgc_o[1] & ~wb_tgc_o[4]);
    • nINTA = ~(wb_stb_o & wb_tgc_o[4]);
    Ну и wb_ack_i теперь заменяет бывший READY, подать туда постоянно высокий и получить обычный процессор с шиной ISA8
    Теги wb_tgc_o стабильны на протяжении всего цикла обмена и содержат всю информацию что выводил раньше ВМ80А при активном DSYN - M1, IO, stack, INTA и прочее. Убраны только ненужные подтверждения прерываний в момент останова, ну и защелка по DSYN теперь просто не нужна.

    Update: осталось еще клок-модератор прикрутить, чтобы оригинальный режим при низкой тактовой работал - то есть шина останется быстрая, а само ядро сможет жужжать медленно, хоть на родных 2.5МГц, не тормозя при этом остальную систему.
    Последний раз редактировалось Vslav; 04.02.2018 в 12:59.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Комманды ассемблера/коды i8080/КР580ВМ80А
    от sergey2b в разделе Разное
    Ответов: 4
    Последнее: 29.11.2015, 14:01
  2. МикроСтеплер. Компилятор ЯП СТЕПЛЕР для i8080
    от Kakos_nonos в разделе Программирование
    Ответов: 8
    Последнее: 31.05.2013, 16:34
  3. Эмулятор i8080
    от Higgins в разделе Разное
    Ответов: 2
    Последнее: 20.05.2011, 11:43
  4. Использование FPGA и CPLD (ПЛИС и ПЛМ)
    от Mick в разделе Для начинающих
    Ответов: 69
    Последнее: 03.05.2006, 11:47

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •