- •Содержание
- •Часть 1. Описание схемы 4
- •Часть 2. Вспомогательное программное обеспечение. 7
- •Введение
- •Часть 1. Описание схемы Шинная организация
- •Иерархический принцип
- •Синхронизация
- •Система прерываний
- •Микрокомандное управление
- •Часть 2. Вспомогательное программное обеспечение. Ассемблер микрокоманд
- •Симулятор (модель) процессора
- •Литература
- •Приложение №1. Иерархия блоков эвм.
- •Приложение №2. Описание формата микрокоманд.
- •Приложение №3. Полный код микропрограммы.
- •Приложение №4. Исходный код ассемблера микрокоманд и сопутствующих утилит. Ассемблер микрокоманд
- •Утилитаmcd2mif
- •Утилитаlabelmap2mif
- •Приложение №5. Исходный код симулятора
Часть 2. Вспомогательное программное обеспечение. Ассемблер микрокоманд
Для облегчения перевода микрокоманд из текстовой форму в двоичную, был разработан ассемблер микрокоманд mca. Эта программа переводит микрокод из входного текстового файла в файлы промежуточные фалы .mcd(содержит микрокод) и .labelmap. (содержит адреса меток) Затем, две дополнительные утилиты создают из этих фалов файлы .mif, пригодные для использования их в системеQuartus.
Ассемблер поддерживает метки, что облегчает создание и отладку микрокода. Метку можно объявить, если начать строку с символа @ (например, @Metka:). Объявления меток обязательно должны заканчиваться двоеточием. При использовании меток в тексте (в командах перехода) нужно так же начинать их имена с символа @. По принятому соглашению, метки вида @$XX: расцениваются как адреса точек входа в обработчик инструкции с шестнадцатеричным кодомXX(например, @$02: дляljmp). Адреса таких меток потом переводятся в таблицу, загружаемую вrom-память блока управления.
Ассемблер использует хорошо известную технику двойного прохода по тексту, где в первом проходе вычисляются адреса меток, а во втором - подставляются в текст.
Полный исходный код ассемблера mcaи сопутствующих утилит на языкеC# приведен в приложении [4].
Симулятор (модель) процессора
Симулятор процессора позволяет быстро проверить работу микрокоманд, не прибегая
к разработке/изменению схемы. Симулятор выполнен в виде консольной программы для системы Windows. Общение с пользователем происходит в текстовом режиме посредством текстовых команд. Такой интерфейс был выбран для ускорения процесса разработки.
Симулятор поддерживает следующие команды:
CODEbl– вывестиlбайт кода начиная с адресаb
DATAbl- вывестиlбайт памяти данных начиная с адресаb
SETRrd– установить регистрrзначениемd(r=a,b,psw,sp,pc,dptr,r0-r7).
При установке PCсбрасывается счетчик микрокоманд.
REGS- вывести все регистры
SETDa- начать заполнение памятиdataс адресаa
SETCa- начать заполнение памятиcodeс адресаa
INTRn– создать прерывание с номеромn
EXIT– покинуть симулятор
<Enter> - продолжить исполнение микрокоманд
В симуляторе реализована поддержка всех инструкций из задания + инструкцийljmpиretiдля работы с прерываниями. Для облегчения задания начальной программы и регистров симулятор поддерживает скриптовые файлы инициализации. В них можно пользоваться всеми приведенными выше командами, а заканчиваться файл должен символом «.» (обязательное условие). Исходный текст симулятора на языкеC# и примера инициализационного скрипта приведен в приложении [5].
Окно симулятора в процессе работы показано на рисунке 1.
Рис. 1 Окно симулятора sim51
Литература
П.С. Довгий, В.И. Скорубский ПРОЕКТИРОВАНИЕ ЭВМ. Пособие к выполнению курсового проекта. Спб.: СПБГУ ИТМО 2009
Б.С. Иванов. Энциклопедия начинающего радиолюбителя. М: Патриот 1992
Приложение №1. Иерархия блоков эвм.
BE_Mutilation– главный блок ЭВМ
Clock– схема делителя частоты синхронизации
Core– микропроцессорное ядро
Code_xdata– блок памяти кода иXData
Code– блок памяти кода и регистровPCH/L
Control– блок управления
Interrupts – блок контроллера прерываний (управляется непосредственно блокомControl)
Interrupts-fetch – блок детектора прерываний
Datasfr– блок памятиDataи основных регистровSfr(Acc,B,Psw,SP,DPTR)
Datasfr_mem– блок памяти и регистровSfr
Data_ram – блок памяти Ram (адреса 0..127)
Acc – Блок регистра-аккумулятора, сдвиговых операций и десятичной коррекции.
B_sp_sfr– блок регистровBиSP
PSW– блок регистраPSW
DPTR– блок регистровDPTR
Wrk_regs– регистры для хранения промежуточных значений
BusA_Selector– блок выбора значения для шиныBusA(формирует так же адресаR0..R7)
MulDiv– блок аппаратного умножения и деления (управляется блокомDataSfr)
Alu– арифметико-логическое устройство
Bit – блок обработки битовых данных
Cn_mcr– ПЗУ констант
Ports– блок портов ввода-вывода.
BIDI x4 – блоки соответствующих портов, имеющие одинаковое устройство.