Ошибка базы данных WordPress: [Table './meandr_base/anzpz_usermeta' is marked as crashed and last (automatic?) repair failed]
SELECT user_id, meta_key, meta_value FROM anzpz_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC

1

ASPECT 128 AVR ZX Spectrum Персональный компьютер (радиоконструктор)

Описываемое устройство было разработано на радость всем кто помнит старый добрый персональный ком-пьютер ZX Spectrum, разработанный в Англии в 80-х годах в Sinclair Research LTD, который стал, пожалуй, самым известным и популярным персональным компьютером практически во всём мире в 80-х и 90-х годах.

Инструкция по сборке и программированию
Устройство представляет из себя полноценный программно-аппаратный эмулятор ПК ZX Spectrum, поддер-живающий совместимость с моделями 48 К, 128 К, Pentagon, +2, +3 и имеющий потенциал аппаратных возможно-стей для реализации эмуляции моделей с объёмом памяти ОЗУ до 512 К и общим количеством страниц памяти ROM до 3 по 16 К каждая.
В устройстве программно реализована эмуляция документированных и недокументированных команд мик-ропроцессора Z80, порта #FE, порта #7FFD. Поддерживается функция отображения теневого экрана.
Принципиальная электрическая схема устройства и перечень элементов приведены на рисунках 1 и 2 соответственно.

Рис. 1. Принципиальная электрическая схема устройства

 

Рис. 2. Перечень элементов
На микросхеме D2 ATMega128-16AU реализован блок эмуляции центрального процессора и портов #FE и #7FFD. Видеоконтроллер реализован на аналогичной микросхеме D1, мультиплексоре D5 74AC257 и классической схеме формирования видеосигнала на транзисторах VT1-VT4 КТ315. Оба эти устройства (блок эмуляции ЦП и видеоконтроллер) параллельно работают с блоком ОЗУ, реализованном на микросхеме CY7C4096D, восьмибитном параллельном регистре-защёлке младшего адреса D6 74AC373MTC и страничном мультиплексоре D8 74AC257. Контроллер интерфейса PS/2 стандартной клавиатуры реализован на микроконтроллере D4 ATTiny2313A-SU. Стабилизатор питания выполнен на микросхеме D3 L7805.
Теперь рассмотрим схему и принцип работы устройства более подробно.
Блок эмуляции ЦП и портов ввода-вывода начинает свою работу с момента включения питания. При появ-лении напряжения питания +5 В, формируемого стабилизатором D3, происходит внутренний сброс контроллера D2, начальная конфигурация портов ввода-вывода и всех его внутренних устройств. Далее стартует основная программа эмуляции. Эмулируемая программа хранится во Flash памяти микроконтроллера D2 начиная с физиче-ского адреса #0000 страницами по 16 К каждая. Номер текущей страницы ROM устанавливается в специально от-ведённом регистре – указателе ROMID, который устанавливается при инициализации и обращении к порту #7FFD. Так как адрес #0000 flash памяти контроллера оказывается занятым эмулируемым кодом, адрес всех векторов прерывания, включая RESET, перенесён в область памяти #FE00, что достигается установкой («0») бита конфигурации BOOTRST c незапрограммированными («1») битами конфигурации BOOTSZ1 и BOOTSZ0.

 

В ходе эмуляции команды происходит следующее:

1. Проверка внешнего прерывания MINT (аналог маскированного прерывания INT Z80) если оно было разрешено. В случае разрешенного маскированного прерывания и его наличием происходит его обработка.

2. Инкрементируется регистр регенерации памяти R, аналогичный присутствующему в Z80.

3. Происходит проверка указателя счётчика команд PC ( аналогичен присутствующему в Z80).

4. В том случае, если счётчик команд указывает на адрес памяти ROM (flash), происходит чтение кода команды из внутренней flash памяти микроконтроллера с учётом указателя страницы ROMID. В противном случае происходит чтение кода команды из ОЗУ.

5. В соответствии с прочтённым кодом операции во внутренней регистровой паре Z микроконтроллера происходит формирование адреса, по которому находится программа эмуляции данной команды и затем происходит переход по этому адресу.

6. Выполняется собственно программа эмуляции команды.

7. В завершении происходит возврат в начало цикла эмуляции (M1) c учётом необходимых временных задержек.

При эмуляции команд, предусматривающих обращение к ОЗУ, микроконтроллер производит операцию чтения или записи ОЗУ. Реализуется это по стандартной схеме с запиранием младшего байта адреса RAM по шине AD7:AD0 в регистре-защёлке D6 по спаду сигнала ALE, после чего происходит установка старшего адреса на шине A14_CPU:A13_CPU:A12:8 и формирование сигнала чтения RAM (~RD) или записи RAM (~WR). При обращении к ОЗУ эмулятор ЦП имеет наивысший приоритет. При обращении к RAM эмулятор ЦП сигнализирует об этом видеоконтроллеру переводом сигнала RBBCP из высокого состояния в низкое. Сразу после этого происходит цикл обращения к ОЗУ, который занимает 3 такта при чтении одного байта и 6 тактов при чтении двух байт. Сразу после обращения к RAM эмулятор ЦП сигнализирует об окончании работы с ОЗУ видеоконтроллеру переводом сигнала RBBCP из низкого состояния в высокое. При обращении к области памяти RAM #C000 — #FFFF происходит подключение страницы памяти RAM, номер которой устанавливается в порте #7FFD. При этом задействуется страничный мультиплексор D8. Адреса памяти #C000 — #FFFF имеют значение старших разрядов A15:A14 равное 11. Соответственно при обращении именно к этой области памяти оба сигнала A14_CPU и A15_CPU имеют высокий уровень. При этом сигнал управления на выводе 1 (~A/B) мультиплексора D8 переходит из низкого состояния в высокое и таким образом происходит переключение старших адресов памяти RAM A17:A16:A15:A14 из состояния 0:SCRA16:A15_CPU:A14_CPU в состояние MUXA17: MUXA16: MUXA15: MUXA14, а данные сигналы формируются программно при обращении к порту #7FFD (будут описаны ниже). Также требуется отметить, что во время, когда не происходит обращения к памяти, линии PC7 и PC6 эмулятора ЦП сконфигурированы как выходы и имеют значение 01, что позволяет страничному мультиплексору D8 находиться в состоянии «A», т. е. старшие адреса RAM установлены в состояние 0001 (SCRA16=0), что необходимо для работы видеоконтроллера, который использует это время для чтения видеоданных из области адресов #4000 — #5CFF.

 

При эмуляции команд, предусматривающих работу с портами ввода-вывода #FE и  #7FFD происходит формирование или чтение соответствующих сигналов, которые представлены в таблице 1.

admin

1 комментарий

  1. Ошибка базы данных WordPress: [Table './meandr_base/anzpz_usermeta' is marked as crashed and last (automatic?) repair failed]
    SELECT user_id, meta_key, meta_value FROM anzpz_usermeta WHERE user_id IN (5735) ORDER BY umeta_id ASC

class="comment byuser comment-author-rakvv even thread-even depth-1">

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *