Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
6502:decoder [2013/09/27 14:35]
org
6502:decoder [2020/02/10 13:10] (текущий)
org
Строка 1: Строка 1:
-==== Декодер ​====+Декодер
  
 Декодер 6502 (англ. PLA) - это обыкновенный демультиплексор,​ но очень большой. Формула демультиплексора получается 21-to-130, но с некоторыми исключениями (об этом ниже) Декодер 6502 (англ. PLA) - это обыкновенный демультиплексор,​ но очень большой. Формула демультиплексора получается 21-to-130, но с некоторыми исключениями (об этом ниже)
Строка 13: Строка 13:
 Логика декодера основана на принципе исключения. Схематически каждый выход представляет собой многовходовый элемент NOR, это значит,​ что если хотя бы на одном из входов будет 1, то вся линейка НЕ сработает. Логика декодера основана на принципе исключения. Схематически каждый выход представляет собой многовходовый элемент NOR, это значит,​ что если хотя бы на одном из входов будет 1, то вся линейка НЕ сработает.
  
-{{6502:​decoder_nice.jpg}} +{{6502:​decoder_nice.jpg?1000}} 
-==== Особенные линии ​====+ 
 +## Особенные линии
  
 Кроме перечисленных выше значений в качестве дополнительных входов могут выступать специальные контрольные линии. Кроме перечисленных выше значений в качестве дополнительных входов могут выступать специальные контрольные линии.
Строка 22: Строка 23:
   * IR0 : обычно для проверки двух младших разрядов кода операции используется общий сигнал IR01, но исключительно для 128й линейки (IMPL) используется значение IR0.   * IR0 : обычно для проверки двух младших разрядов кода операции используется общий сигнал IR01, но исключительно для 128й линейки (IMPL) используется значение IR0.
  
-==== Содержимое PLA ====+Есть мнение что эти специальные управляющие линии хотя и территориально входят в декодер - на самом деле просто части рандомной логики,​ а в декодер попали просто потому что так удобней было развести соединения. 
 + 
 +## Содержимое PLA
  
 Онлайн-декодер : http://​breaknes.com/​files/​6502/​decoder.htm Онлайн-декодер : http://​breaknes.com/​files/​6502/​decoder.htm
Строка 168: Строка 171:
 |K09 |128 |000000011000000000000 ​  ​|XXXX10X0 |TX     ​|IMPL| |K09 |128 |000000011000000000000 ​  ​|XXXX10X0 |TX     ​|IMPL|
  
-==== Что значит Raw bits ====+## Что значит Raw bits
  
 Если представить себе декодер как ROM 21x130, где каждый бит представляет собой транзистор,​ образуемый пересечением полисиликона и диффузии,​ то raw bits будут представлять одну линейку декодера. Если представить себе декодер как ROM 21x130, где каждый бит представляет собой транзистор,​ образуемый пересечением полисиликона и диффузии,​ то raw bits будут представлять одну линейку декодера.
  
-Для примера на картинке представлена 5я линейка декодера. Счёт бит начинается снизу-вверх. 0 означает отсутствие транзистора,​ 1 - наличие.+Для примера на картинке представлена 5-я линейка декодера. Счёт бит начинается снизу-вверх. 0 означает отсутствие транзистора,​ 1 - наличие.
  
 {{6502:​decoder_line.jpg}} {{6502:​decoder_line.jpg}}
  
-==== Branch T0 skipping ​====+## Branch T0 skipping
  
-С контакта RDY через линию задержки приходит специальная линия **/PRDY**. Если процессор был не готов на момент завершения предыдущей инструкции,​ то если следующая инструкция является инструкцией условного перехода (branch), то её 0й цикл (T0) пропускается.+С контакта ​[[6502:​pads#​rdy_sync|RDY]] через линию задержки приходит специальная линия **/PRDY**. Если процессор был не готов на момент завершения ​//предыдущей// инструкции,​ то если следующая инструкция является инструкцией условного перехода (branch), то её 0-й цикл (T0) пропускается.
  
 Зачем они это сделали - не известно. Зачем они это сделали - не известно.
  
-==== Симуляция ​====+## Симуляция
  
 Существует два подхода в симуляции декодеров : Существует два подхода в симуляции декодеров :
   * Обычный перебор всех линий в цикле. При этом каждая итерация будет представлять собой операцию NOR над всеми входами. В нашем случае это будет очень медленно,​ потому что у декодера 6502 очень много линий (130).   * Обычный перебор всех линий в цикле. При этом каждая итерация будет представлять собой операцию NOR над всеми входами. В нашем случае это будет очень медленно,​ потому что у декодера 6502 очень много линий (130).
   * Табличный метод. Смысл в том, что мы заранее генерируем массив массивов для всех 130 линий, перебирая все возможные комбинации входов (IR, T0-T5, /PRDY). Индекс массива получается 8+6+1=15 бит, итого получается 32768 130-байтовых массивов (4.2 MB памяти).   * Табличный метод. Смысл в том, что мы заранее генерируем массив массивов для всех 130 линий, перебирая все возможные комбинации входов (IR, T0-T5, /PRDY). Индекс массива получается 8+6+1=15 бит, итого получается 32768 130-байтовых массивов (4.2 MB памяти).
 +
 +{{template>​6502_blocks}}
  • Показать страницу