User Tag List

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

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

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

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

    По умолчанию

    Прогресс 3го листа:

    Очень интересная и логичная затея: ВМ80 формирует свое слово состояния, запоминая его в отдельном регистре на весь машинный цикл, а затем использует его биты для управления внутренней логикой. Т.е., само по себе слово состояния всегда есть в любом процессоре, просто здесь его выводят наружу чтобы не требовалось угадывать мысли процессора.
    Так же обнаружил мультиплексор бит 0-2/3-5, которые участвуют не только в выборе номера регистра, но еще и номера регистровой пары. Кстати, в самом мультиплексоре стоит отдельный 3NOR, который активирует аккумулятор (код 111 = 7).

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

    Очень интересно обрабатываются флаги. Берется сигнал с вышеупомянутого мультиплексора 0-2/3-5 бит 0/3 и ANDится с ORом бита внутренней шины данных и комбинации выходов мультиплексора. В результате получаем сигнал JMPTAKE, который переключает процессор на переход. Кусочек эквивалентной схемы:

    И мультиплексор:

    Что тут забавного:
    1. Бит флага привязан к комбинации битов 1/4 и 2/5 опкода. Если посмотреть на табличку, то биты 4 и 5 выбирают флаг, а бит 3 установку или сброс. В обоих случаях это один и тот же выбор мультиплексора: ((T4 == 0) | (ID_MOV == 0)) & (ID_O P == 0)
    2. Внутренняя шина данных используется не только для передачи данных, но и при анализе флагов. Я еще не добрался до АЛУ, но я думаю здесь тот же механизм что и выставление флагов в команде PUSH PSW.
    3. Сигнал T4F1 формируется на листе с АЛУ и является сигналом T4, засинхронизированным к F1. Вообще, чем больше я анализирую схему тем сильнее убеждаюсь, что именно F1 является основной тактовой последовательностью. А F2 используется в основном для внешней синхронизации. Теоретически, можно попробовать запустить процессор (виртуальный, конечно) только на F1, подогнав все схемы, использующие F2, например, под инверсию F1.

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

  3. #2

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

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    2. Внутренняя шина данных используется не только для передачи данных, но и при анализе флагов. Я еще не добрался до АЛУ, но я думаю здесь тот же механизм что и выставление флагов в команде PUSH PSW.
    АЛУ свои флаги на шину не выдает, только в зашелки флагов. В модели, кстати, трансляция флагов на шину выброшена (кроме случая push PSW), наружу они не выходят, используются внутри только схемой переходов по флагам, это упростило мультиплексор шины и заметно итоговую частоту подняло. Думаю, проводнички сэкономили, или была какая-то задумка еще у интеловцев с флагами на шине, так оно и осталось.

  4. #3
    HardWareMan
    Гость

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    АЛУ свои флаги на шину не выдает, только в зашелки флагов. В модели, кстати, трансляция флагов на шину выброшена (кроме случая push PSW), наружу они не выходят, используются внутри только схемой переходов по флагам, это упростило мультиплексор шины и заметно итоговую частоту подняло. Думаю, проводнички сэкономили, или была какая-то задумка еще у интеловцев с флагами на шине, так оно и осталось.
    Я понимаю, что итоговая симуляционная модель может иметь значительные упрощения и оптимизации, но мы сейчас говорим за конкретную транзисторную схему. И я вижу, что биты опкода ANDятся с битами шины, между прочим разряды которой соответствуют флагам. Дойду до АЛУ там и пойму что и как.

    PS Для тех кто не понял всю красоту формирования JMPTAKE: OR результат бита с его позицией (позиция - комбинация битов 4 и 5 в опкоде) ANDится с битом 3 опкода. Причем, OR результат с прямым битом 3, а NOR результат с инверсным битом 3. На выходе по OR получаем результат. Таким образом, мы в одной маленькой схемке обрабатываем одновременно сброс флага в CNx/JNx и установку флага в Cx/Jx. Очень красиво, я считаю.

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

    Последний кусочек листа №3: триггер-перекидушка, который перекинется только если в такте T2 будет замечена команда ID_XCHG. При этом это возможно только если F2 будет =1 (F2MX это инверсия F2):

    Я сначала стормозил: почему он всегда перекидывается и не предустанавливается. Но потом понял, что он на выходе просто переключает роутинг управления регистрами DE и HL, и в сущности не важно кто из них кто. Таким образом работает однотактовый своп HL и DE. Уверен, что подобный трюк использован и в Z80 с регистровыми банками (команды EXX и EX AF,AF'). Так что третий лист закончен и прогресс следующий:

    Что делать следующим: АЛУ или регистровый файл с 16ти битным INC/DEC?
    Последний раз редактировалось HardWareMan; 10.01.2016 в 20:02.

  5. #4

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

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Что делать следующим: АЛУ или регистровый файл с 16ти битным INC/DEC?
    А там без разницы. Это старый психологический прием (иногда говорят что это английская поговорка), "как съесть слона, если он такой большой?" называется. "Отрезать по кусочку каждый день и съедать, когда-нибудь слон кончитcя". Психологи называют это "декомпозиция сложной задачи", о как.

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

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

Эту тему просматривают: 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

Ваши права

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