Важная информация

User Tag List

Страница 35 из 48 ПерваяПервая ... 313233343536373839 ... ПоследняяПоследняя
Показано с 341 по 350 из 472

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

  1. #341
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,404
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Крута! А в чем рисуется и проверяется?
    И картинка не масштабируется по клику
    Да все в кактусе. Не масштабируется, да, но пока и не надо. По завершению, когда модель будет работоспособна, я попробую сделать оптимизацию (есть несколько потенциальных узлов) и потом проект ляжет здесь, для всех желающих. Ну а позже, можно будет попробовать переложить его на верилог, я думаю он сильно упроститься относительно первоначального.

  2. #342
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,404
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Итак, известно, что внутренняя шина данных у процессора двунаправленная, в первом листе для буфера внешней шины данных используются 2 сигнала управления: nDBIN_PIN и nDB_ENA. Первый разрешает проброс внешних сигналов с ножек на внутреннюю шину, а второй наоборот включает буферы с внутренней шины на внешние ножки. Так же, процессор использует емкость внутренней шины данных для временного запоминания, об этом, кстати, мало где говорится, но в одном из советских справочниках по ВМ80 на блок-схеме показан некий "Bus precharge", эта блок-схема была найдена пользователями соседнего NedoPC. Так вот, на этой схеме он находится на 4й странице:

    Накачка шины включается всегда, кроме состояния сброса и записи в такте Т3, синхронно по F1. К чему я это? А вот к чему. Регистр инструкций имеет следующую схему управления:

    Сигнал F2 проходит на регистр только либо в такте Т3 машинного цикла М1, либо в момент сброса. А во время сброса накачка шины запрещена, т.е. там 0. Входы и выходы так же неактивны. Следует ли рассматривать это явление как занесение 00H в регистр инструкций (сброс IR)? Я помню вроде есть требования на период сигнала сброса, имеет ли к нему отношение сама емкость внутренней шины?

    В любом случае, регистр инструкций позже все равно запишет новое действующее значение в такте Т3 машинного цикла М1. А запись NOPа по сбросу, я предполагаю, нужен для приведение остальных схем в известное состояние не пробрасывая сам сигнал сброса по всей схеме и усложняя ее. Например для АЛУ, хотя я его еще не разбирал, он пойдет следующим листом.

    ---------- Post added at 17:05 ---------- Previous post was at 15:50 ----------

    А вот и первое научное объяснение первому недокументированному опкоду:

    Все потому, что не учитывается 1 бит при дешифрации:

    Логический эквивалент:


    ---------- Post added at 17:11 ---------- Previous post was at 17:05 ----------

    То же самое у CALL:




    ---------- Post added at 17:16 ---------- Previous post was at 17:11 ----------

    А вот и NOPы!




    ---------- Post added at 17:29 ---------- Previous post was at 17:16 ----------

    А вот так элегантно "вырезан" опкод 76H, чтобы не вызывать бессмысленную команду MOV M,M и заменить ее на HLT.



    ---------- Post added at 17:37 ---------- Previous post was at 17:29 ----------

    Вот и JMP:




    ---------- Post added at 18:11 ---------- Previous post was at 17:37 ----------

    Обнаружены дублирующие куски схемы. На схеме сигналы помечены как, например, ID_OPA/ID_OPAX, ID_OPI/ID_OPIX. Даже есть ID_HLT/ID_HLTX. Я не знаю, зачем эти повторы, единственное что приходит на ум это то, что они находятся в разных местах кристалла, и добавить еще один элемент ИЛИ-НЕ проще чем тянуть провод. Так как сейчас перевод "влоб", то я их оставлю, а в будущем постараюсь сократить.
    Последний раз редактировалось HardWareMan; 06.07.2015 в 17:16.

  3. #343
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,404
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Текущий прогресс:

    Заполнение третьего листа:

    Регистр инструкций, 4 матрицы. Они замкнули практически полностью первый лист (слева на первом листе заглушек значительно поубавилось). Если закончить 3й лист полностью, то заглушки уйдут совсем. Останется только АЛУ на 2м и регистровый файл на четвертом.

    ---------- Post added at 20:41 ---------- Previous post was at 20:15 ----------

    А действительно. Симуляция текущей схемы показывает, что генерация сброса порождает цикл чтения NOP без генерации внешних сигналов управления, причем такт Т1 растягивается на все время действия сигнала сброса:

    Вполне логичное решение для приведение процессора во вменяемое состояние.

  4. #344
    Junior
    Регистрация
    21.06.2014
    Адрес
    г. Киев, Украина
    Сообщений
    10
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нашел фотографии литографических масок для Intel 8080.

    Вытянул с сайта полноразмерные картинки. Качество не самое плохое, так что надеюсь будет интересно и полезно. А может кто-то и сравнение с ВМ80 сделает.

    intel_8080_masks_1.zip
    intel_8080_masks_2.zip
    intel_8080_masks_3.zip

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

    По умолчанию

    Маски прикольные, несмотря на невысокое разрешение вполне можно отвреверсить процессор. От ВМ80А топология i8080A очевидно отличается, общее расположение блоков одинаково, часть блоков очень похожи. Не совсем близнецы.

  6. #346
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,404
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прогресс 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.

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

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

    По умолчанию

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

  9. #348
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,404
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от 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.

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

    По умолчанию

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

  11. #350
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,404
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Во-первых, смотря как поставлена задача. Быть может, вопрос стоит "как съесть слона за раз, если он такой большой?".
    Во-вторых, мне больше по душе русское: Глаза боятся а руки делают. Всегда вспоминаю когда начинаю делать что-то большое и скучное.

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

    А АЛУ забавный.

Страница 35 из 48 ПерваяПервая ... 313233343536373839 ... ПоследняяПоследняя

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

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

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

Ваши права

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