Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
6502:decoder [2013/09/27 16:48]
org [Декодер]
6502:decoder [2020/02/10 13:10] (текущий)
org
Строка 1: Строка 1:
-==== Декодер ​====+Декодер
  
 Декодер 6502 (англ. PLA) - это обыкновенный демультиплексор,​ но очень большой. Формула демультиплексора получается 21-to-130, но с некоторыми исключениями (об этом ниже) Декодер 6502 (англ. PLA) - это обыкновенный демультиплексор,​ но очень большой. Формула демультиплексора получается 21-to-130, но с некоторыми исключениями (об этом ниже)
Строка 14: Строка 14:
  
 {{6502:​decoder_nice.jpg?​1000}} {{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}}
  • Показать страницу