IBM PC-совместимые компьютеры. IBM-компьютеры. Персональный компьютер

  • 23.06.2019

Краткие сведения об IBM РС - совместимых компьютерах

В этом реферате мы постараемся достаточно кратко объяснить некоторые особенности IBM РС-совместимых компьютеров, а также введем некоторые базовые понятия, на которые впоследствии будем не раз ссылаться.

Открытая архитектура (блочно-модульный принцип построения)

Привлекательность IBM РС-совместимых компьютеров заключается в их открытой архитектуре. Это, в частности, означает, что подобные компьютеры имеют модульный принцип построения, то есть их основные узлы и блоки выполнены в виде отдельных модулей. Таким образом, установка новых или замена старых устройств, входящих в состав компьютера, не представляют особых сложностей. Усовершенствование таких компьютеров вполне под силу самим пользователям.

В составе IBM РС-совместимого персонального компьютера можно выделить три основных компонента: системный блок, монитор и клавиатуру. В системном блоке находится вся основная электронная начинка компьютера: блок питания, материнская (системная) плата и приводы накопителей (дисководы) со сменным или несменным носителем. Клавиатура является стандартным устройством ввода информации, позволяющим передавать компьютеру определенные символы или

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

От типа корпуса системного блока зависят, в частности, размеры и размещение используемой системной платы, минимальная мощность блока питания (то есть возможное число, подключаемых устройств) и максимальное количество устанавливаемых приводов накопителей. Корпуса компьютеров бывают напольного (tower) и настольного (desktop) исполнения. Основным отличием этих типов корпусов можно считать различное количество установочных мест для накопителей и соответственно мощность блока питания. Кстати, установочные места (монтажные отсеки) для накопителей могут быть двух типов: с внешним доступом и внутренним доступом. Таким образом, по определению, доступ к накопителям, установленным в монтажные отсеки последнего типа может осуществляться только при открытой крышке корпуса системного блока. Такие установочные места могут использоваться только для накопителей с несменным носителем, например, винчестеров.

Системная плата является основой компьютера и представляет собой плоский лист фольгированного стеклостекстолита, на котором находятся основные электронные элементы: базовый микропроцессор, оперативная память, кварцевый резонатор и другие вспомогательные микросхемы.

В соответствии с принципом открытой архитектуры большая часть

IBM РС-совместимых компьютеров имеет системные платы, которые содержат лишь основные узлы, а элементы связи, например, с приводами накопителей, монитором и другими периферийными устройствами, отсутствуют. В таком

случае эти отсутствующие элементы располагаются на отдельных печатных платах, которые вставляются в специальные разъемы расширения, предусмотренные для этого на системной плате. Эти дополнительные платы называют дочерними, а системную плату - материнской. Функциональные устройства, выполненные на дочерних платах, часто называют контролерами или адаптерами, а сами дочерние платы - платами расширения.

Микропроцессоры и системные шины

В IBM РС-совместимых компьютерах используются только микропроцессоры Intel или их клоны, имеющие подобную архитектуру.

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

Для подключения плат расширения на системной шине компьютеров на базе микропроцессора i8088 (IBM РС и IBM РС/ХТ) используются 62-контактные разъемы. В частности, эта системная шина включает 8 линий данных и 20 адресных линий, которые ограничивают адресное пространство компьютера пределом в

1 Мбайт. В компьютерах PC/AT286 впервые стала применяться новая системная шина ISA (Industry Standart Architecture), по которой можно было передавать параллельно уже 16 разрядов данных, а благодаря 24 адресным линиям напрямую обращаться к 16 Мбайтам системной памяти. Эта системная шина отличается от предыдущей наличием дополнительного З6-контактного разъема для соответствующих плат расширения. Компьютеры на базе микропроцессоров i80386/486 стали применять специальные шины для памяти, что позволило максимально использовать ее быстродействие. Тем не менее некоторые устройства, подключаемые через разъемы расширения системной шины, не могут достичь скорости обмена, сравнимой с микропроцессором. В основном это касается работы с контролерами накопителей и видеоадаптерами. Для решения этой проблемы, стали использовать так называемые локальные (local) шины, которые непосредственно связывают микропроцессор с контролерами этих периферийных устройств. В настоящее время известны две стандартные локальные шины: VL-bus (VESA Local-bus) и PCI (Peripheral Component Interconnect). Для подключения устройств к таким шинам на системной плате компьютера имеются специальные разъемы.

Порты, прерывания, прямой доступ к памяти

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

О совершении некоего события микропроцессор может узнать по сигналу, называемому прерыванием. При этом исполнение текущей последовательности команд приостанавливается (прерывается), а вместо нее начинает выполняться другая последовательность, соответствующая данному прерыванию. Обычно прерывания подразделяются на аппаратные, логические и программные.

Аппаратные прерывания (IRQ) передаются по специальным линиям системной шины и связаны с запросами от внешних устройств (например, нажатие клавиши на клавиатуре). Логические прерывания возникают при работе самого микропроцессора (например, деление на ноль), а программные инициируются выполняемой программой и обычно используются для вызова специальных подпрограмм.

В первых компьютерах IBM PC использовалась микросхема контролера прерываний i8259 (Interrupt Controller), которая имеет восемь входов для сигналов прерываний (IRQ0-IRQ7). Как известно, в одно и то же время микропроцессор может обслуживать только одно событие и в выборе данного события ему помогает контролер прерываний, который устанавливает для каждого из своих входов определенный уровень важности - приоритет. Наивысший приоритет имеет линия запроса прерывания IRQ0, а наименьший - IRQ7, то есть приоритет убывает в порядке возрастания номера линии. В IBM PC/AT восьми линий прерывания стало уже недостаточно и их количество было увеличено до 15. В первых моделях для этого использовалось каскадное включение двух микросхем i8259. Оно осуществлялось путем подсоединения выхода второго контролера ко входу IRQ2 первого.

Важно для понимания здесь следующее. Линии прерывания IRQ8 - IRQ15 (то есть входы второго контролера) имеют приоритет ниже чем IRQ1, но выше IRQ3.

В режиме прямого доступа (DMA, Direct Memory Access) периферийное устройство связано с оперативной памятью непосредственно, а не через внутренние регистры микропроцессора. Наиболее эффективной такая передача данных бывает в ситуациях, когда требуется высокая скорость обмена для большого количества информации. Для инициализации процесса прямого доступа на системной шине используются соответствующие сигналы.

В компьютерах, совместимых с IBM РС и PC/XT, для организации прямого доступа в память используется одна 4-канальная микросхема DMA i8237, канал 0 которой предназначен для регенерации динамической памяти. Каналы 2 и 3 служат для управления высокоскоростной передачей данных между дисководами гибких дисков, винчестером и оперативной памятью соответственно.

IBM PC/AT-совместимые компьютеры имеют 7 каналов прямого доступа к памяти. В первых компьютерах это достигалось каскадным включением двух микросхем i8237, как и в случае контролеров прерываний.

Память компьютера

Все персональные компьютеры используют три вида памяти: оперативную, постоянную и внешнюю (различные накопители). Оперативная память предназначена для хранения переменной информации, так как она допускает изменение своего содержимого в ходе выполнения микропроцессором соответствующих операций. Поскольку в любой момент времени доступ может осуществляться к произвольно выбранной ячейке, то этот вид памяти называют также памятью с произвольной выборкой - RAM (Random Access Memory).

Все программы, в том числе и игровые, выполняются именно в оперативной памяти. Постоянная память обычно содержит такую информацию, которая не должна меняться в течение длительного времени. Постоянная память имеет собственное название - ROM (Read Only Memory), которое указывает на то, что ею обеспечиваются только режимы считывания и хранения.

Логическая организация памяти

Как известно, используемый в IBM РС, PC/XT микропроцессор i8088 через свои 20 адресных шин предоставляет доступ всего к 1-Мбайтному пространству памяти. Первые 640 Кбайт адресуемого пространства в IBM РС-совместимых компьютерах называют обычно стандартной памятью (conventional memory). Оставшиеся 384 Кбайта зарезервированы для системного использования и носят название памяти в верхних адресах (UMB, Upper Memory Blocks, High DOS Memory или UM Area - UMA).Эта область памяти резервируется под размещение системной ROM BIOS (Read Only Memory Basic Input Output System), под видеопамять и ROM-память дополнительных адаптеров.

Дополнительная (expanded) память

Почти на всех персональных компьютерах область памяти UMB редко оказывается заполненной полностью. Пустует, как правило, область расширения системного ROM BIOS или часть видеопамяти и области под дополнительные модули ROM. На этом и базируется спецификация дополнительной памяти EMS (Ехpanded Memory Specification), впервые разработанная фирмами Lotus Development, Intel и Microsoft (поэтому называемая иногда LIM-cпeцификацией). Эта спецификация позволяет использовать оперативную память свыше стандартных 640 Кбайт для прикладных программ. Принцип использования дополнительной памяти основан на переключении блоков (страниц) памяти. В области UMB, между видеобуфером и системным RGM BIOS, выделяется незанятое 64-Кбайтное "окно", которое разбито на страницы. Программные и аппаратные средства позволяют отображать любой сегмент дополнительной памяти в любую из выделенных страниц "окна(TM). Хотя микропроцессор всегда обращается к данным, хранимым в "окне" (адрес ниже 1 Мбайта), адреса этих данных могут быть смещены в дополнительной памяти относительно "окна" на несколько мегабайт (см. рис. 1).

В компьютерах на процессоре i8088 для реализации дополнительной памяти должны применяться специальные платы с аппаратной поддержкой "подкачки" блоков (страниц) памяти и соответствующий программный драйвер. Разумеется, платы дополнительной памяти могут устанавливаться и в компьютер на базе процессоров i80286 и выше.

Расширенная (extended) память

Компьютеры, использующие процессор l80286 с 24-разрядными адресными шинами, физически могут адресовать 16 Мбайт, а в случае процессоров i80386/486 - 4 Гбайта памяти. Такая возможность имеется только для защищенного режима работы процессора, который операционная система MS-DOS не поддерживает. Расширенная память (extended) располагается выше области адресов 1 Мбайт (не надо путать 1 Мбайт ОЗУ и 1 Мбайт адресного пространства). Для работы с расширенной памятью микропроцессор должен переходить из реального в защищенный режим и обратно. В отличие от l80286 микропроцессоры i80386/486 выполняют эту операцию достаточно просто, именно поэтому для них в составе MS-DOS имеется специальный драйвер - менеджер памяти ЕММ386 (см. рис. 2).

Кстати, при наличии соответствующего драйвера расширенную память можно эмулировать как дополнительную. Аппаратную поддержку в этом случае должен обеспечивать микропроцессор не ниже i80386 или вспомогательный набор специальных микросхем (например, наборы NEAT фирмы Chips and Technologies). Следует заметить, что многие платы памяти, поддерживающие стандарт LIM/EMS, могут использоваться также и в качестве расширенной памяти.

Expanded- память

Область HMA

Область НМА - память

Системный ROM BIOS

Расширение ROM BIOS

" Окно EMS "

Hard Disk ROM BIOS

EGA/VGA ROM BIOS

Видеопамять

Дисплей CGA

Монохромный дисплей

Дисплей EGA/VGA

Драйвер ЕМM.SYS

TSR-прогрсммы

Рис. 1 Дополнительная память

Рис. 2 Расширенная память

Кэш-память

Кэш-память предназначена для согласования скорости работы сравнительно медленных устройств, таких, например как динамическая память с быстрым микропроцессором. Использование кэш-памяти позволяет избежать циклов ожидания в его работе, которые снижают производительность всей системы.

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

Запоминающие устройства

Запоминающие устройства можно классифицировать по следующим критериям:

по типу запоминающих элементов

по функциональному назначению

по типу способу организации обращения

по характеру считывания

по способу хранения

по способу организации

По типу запоминающих элементов

Полупроводниковые

Магнитные

Конденсаторные

Оптоэлектронные

Голографические

Криогенные

По функциональному назначению

По типу способу организации обращения

С последовательным поиском

С прямым доступом

Адресные

Ассоциативные

Стековые

Магазинные

По характеру считывания

С разрушением информации

Без разрушения информации

По способу хранения

Статические

Динамические

По способу организации

Однокоординатные

Двухкоординатные

Трехкоординатные

Двух- трехкоординатные

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://referat2000.bizforum.ru/

Совместимость компьютеров

Наименование параметра Значение
Тема статьи: Совместимость компьютеров
Рубрика (тематическая категория) Технологии

Классификация компьютеров.

Е поколение (середина 40-х - середина 50-х-годов).

Поколения ЭВМ

Делœение компьютерной техники на поколения - весьма условная, нестрогая классификация вычислительных систем по степени развития аппаратных и программных средств, а также способов общения с компьютером

Идея делить машины на поколения вызвана к жизни тем, что за время короткой истории своего развития компьютерная техника проделала большую эволюцию как в смысле элементной базы (лампы, транзисторы, микросхемы и др.), так и в смысле изменения её структуры, появления новых возможностей, расширения областей применения и характера использования.

Развитие ЭВМ прошло несколько этапов, связанных с поколениями ЭВМ. Каждое поколение ЭВМ отличается элементной базой, архитектурой, областью применения, интерфейсами, программными средствами решения задач.

Элементная база - электронные лампы, резисторы, конденсаторы; архитектура - простейшая; применение - научные расчёты; способы общения - непосредственное ручное управление устройствами ЭВМ, программирование на языке машины.

1945-1950 гᴦ. Выдающийся ученый Дж. фон Нейман (США) разработал концепции и конструкцию ЭВМ EDVAC. Основные положения концепции фон Неймана используются до настоящего времени.

1946 ᴦ. Американские инженеры Д.Эккерт и Д.Моучли в Пен­сильванском университете построили первую действу­ющую ЭВМ ENtAC.

1947-1950 гᴦ. Группа инженеров под руководством акад. С. А.Лебедева разрабатывает и вводит в эксплуатацию первую в СССР малую электронную счетную машину (МЭСМ).

1948 ᴦ. Группа американских физиков сконструировала тран­зистор - основной элемент ЭВМ 2-го поколения.

1949 ᴦ. В Англии под руководством М.Уилкса создана первая ЭВМ с хранимой программой EDSAK.

Начало 50-х годов. В нескольких странах начинается серий­ный выпуск ЭВМ 1-го поколения, основной элемент­ной базой которых были электронные лампы. ОЗУ строились на ртутных линиях задержки, ЭЛТ и позднее на ферритовых кольцах.

В СССР после МЭСМ выпускаются: в Москве большая электронная счетная машина БЭСМ-1, БЭСМ-2 (С.А.Лебедев) а самая быстродействующая в Европе ЭВМ того времени М-10 (Л.Лебедев и Ю.А.Базилевский), в Пензе -ʼʼУралʼʼ (В.И.Рамеев), в Минске-ʼʼМинск-1, ʼʼМинск-14ʼʼ (В.В.Пржисловський), в Киеве - ʼʼКиевʼʼ (В.М.Глушков), в Ереване – ʼʼРозданʼʼ (Ф.Т.Саркисян).

Внедрение первых ЭВМ не могло проходить без опережающего развития численных методов решения задач и основ программирования. Эту работу в СССР возглавили академики А.А.Марков, А.Н.Колмогоров, И.В.Курчатов, М.А.Лаврентьева, А.А. Дородницын, М.В.Келдыш.

1942-1953 гᴦ. Советские ученые А.А.Ляпунов и М.Р.Шура-Пура предложили операторный метод программиро­вания.

1943-1955 гᴦ. Группа математиков под руководством Д.Бейкуса (США) разработала алгоритмический язык Фор­тран.

2-е поколение (середина 50-х-середина 60-х годов): полупроводниковые транзисторы и диоды, резисторы, конденсаторы; более сложная архитектура; решение научных, технических и народнохозяйственных задач; применение операционных систем; создание вычислительных комплексов; коллективного пользования; развитие алгоритмических языков.

1954-1957 гᴦ. В США создастся первая ЭВМ на транзистор NCR 304.

Конец 50-х годов. В Массачусетсском технологическом институте разработан алгоритмический язык ЛИСП, работ по проблемам искусственного интеллекта прикладном плане - для экспертных систем).

Начало 60-х годов. Серийное производство в СССР ЭВМ 2-г поколения на транзисторах: М-220, БЭСМ-3, БЭСГ 4, ʼʼУрал-11ʼʼ, ʼʼУрал-14ʼʼ, ʼʼУрал-16ʼʼ, ʼʼМинск-22ʼʼ, ʼʼМинск-32ʼʼ, ʼʼРаздан-2ʼʼ, ʼʼРаздан-3ʼʼ, ʼʼДнепр-1ʼʼ, ʼʼДнепр-3ʼʼ и др.

1961 ᴦ. Фирма Intel (США) выпустила в продажу первые интегральные схемы (ИС).

1966 ᴦ. В СССР введена в эксплуатацию самая быстродействующая в мире (для того времени) большая ЭВГ БЭСМ-6 (С.А.Лсбсдсв). Большое быстродействие БЭСМ-6 обусловили впервые примененные мультипрограммный режим работы и конвейерная процедура обработки данных, которые используются практически во всœех современных ЭВМ.

3-е поколение (середина 60-х - середина 70-х годов) интегральные микросхемы; архитектура связана с многопроцессорными, многомашинными и многоканальными комплексами; решение широкого круга задач автоматизации управления, конструирования и планирования; эффективные операционные системы, прикладные программы и языки программирования; появление первых компьютерных сетей.

1965 ᴦ. В США начат выпуск ЭВМ 3-го поколения серии 360 на интегральных схемах.

1966 ᴦ. Для обработки коммерческой информации разработан алгоритмический язык КОБОЛ (США).

1986 ᴦ. Фирма DEC (США) разработала мини-ЭВМ семейства PDP с широким диапазоном применения: научные ис­следования, управление технологическими процесса­ми, обработка экспериментальных данных в реальном масштабе времени, автоматизация инженерных, эко­номических и управленческих работ и др.

Начало 70-х годов. В СССР совместно со специалистами НРБ, ВНР, ЧССР, ГДР разработаны и производят в необ­ходимом количестве ЭВМ 3-го поколения единой си­стемы (ЕС ЭВМ). Эти ЭВМ, совместимые с IBM 360, послужили основой для организации вычислительных центров коллективного пользования и автоматизиро­ванных систем управления в крупных организациях и на предприятиях.

1971 ᴦ. Фирма Intel (США) выпустила микропроцессор, изго­товленный на базе технологии ИС.

1971 ᴦ. Управление перспективных исследований Министер­ства обороны США объявило о вводе в действие пер­вой части глобальной информационно-вычислитель­ной сети ARPANET. В 1982 ᴦ. ARPANET была объединœена с другими сетями и это сообщество сетей получило название Internet.

70-е - начало 80-х годов. В США, Англии и СССР вступают в действие суперЭВМ: ILLIAC-IV, STATAN-100, Сгау-1 (2, 3, MX), Cyber-205, DAP, Phenix, Connection machine, ʼʼЭльбрусʼʼ.

1973-1976 гᴦ. Специалисты СССР, НРБ, ВНР, ПНР, ЧССР, ГДР, Монголии и Кубы разработали серию мини-ЭВМ, совместимых с PDP (США).

4-е поколение (середина 70-х годов - 2000 ᴦ.): большие интегрированные схемы; сложная архитектура; решение раз­ных задач во всœех областях деятельности человека; многозадачные и многопользовательские операционные системы; ʼʼличного типа манипуляторы; устройства речевого ввода и вывода; средства мультимедиа; эффективные прикладные программы и языки, поддерживающие искусственный интеллект; развитие инфраструктуры компьютерных сетей.

1977 ᴦ. В США молодые предприниматели С.Джобсон и С.Возняк организовали фирму по изготовлению недорогих ПК, предназначенных для широкого круг пользователœей. Эти ПК, названные APPLE (ʼʼЯблокоʼʼ), послужили основой для широкого распространения ПК во всœем мире.

1979-1980 гᴦ. Специалисты Японии разработали и начали пуск первых электронных словарей-переводчиков.

1981 ᴦ. Группа ведущих специалистов нескольких электронных фирм Японии объявила о создании в 90-е годы ЭВМ 5-го поколения (ʼʼЯпонский вызов мируʼʼ).

1982 ᴦ. Фирма IBM (США), занимавшая ведущее положение выпуске больших ЭВМ, приступила к производству ПК IBM PC. Многие фирмы мира начали выпускав IBM - совместные ПК.

Середина 80-х годов. Группы ученых под руководством К.Саган (США) и В.В. Александрова (СССР) разработали математические модели последствий ʼʼядерной зимыʼʼ и ʼʼядерной ночиʼʼ. Эти выводы сыграли огромную роль в формировании политики стран-держателœей атомного оружия.

1988 ᴦ. В СССР начат массовый выпуск школьных ПК (ʼʼКорветʼʼ, УКНЦ, ʼʼНемигаʼʼ и др.) и бытовых ПК (БК 0010, ʼʼПартнерʼʼ, ʼʼВекторʼʼ, ʼʼБайтʼʼ и др.).

Сегодня большое количество электронных фирм мира производят разнообразные классы ЭВМ от бытовых до суперЭВМ в стационарном и портативном исполнении. Парк ЭВМ сейчас в мире примерно составляет: ПЭВМ 2,5 ‣‣‣ 10 8 шт.; мини-ЭВМ-10 6 шт.; манфреймы - 2 * 10 4 шт.суперЭВМ - 100 шт.

5-е поколение (начало XXI века). Сейчас трудно предсказать, как будут выглядеть ЭВМ 6-го поколения, однако можно указать общие тенденции развития компьютерных технологий и их влияние на общество.

Развитие идет также по пути "интеллектуализации" компьютеров, устранения барьера между человеком и компьютером. Компьютеры будут способны воспринимать информацию с рукописного или печатного текста͵ с бланков, с человеческого голоса, узнавать пользователя по голосу, осуществлять перевод с одного языка на другой.

В компьютерах шестого поколения произойдёт качественный переход от обработки данных к обработке знаний .

Создание семейства ЭВМ с принципиально новыми возможностями, которые обеспечат:

эффективное использование всœех имеющихся ресурсов страны: материальных, энергетических, людских информационных;

улучшение дел в областях с низкой производительностью труда;

включение страны в международное сотрудничество;

усовершенствование использования интеллектуального потенциала общества;

повышение конкурентоспособности товаров на меж­дународном рынке;

увеличение производительности жизни населœения;

способствование высокому уровню образования.

В элементной базе ЭВМ предполагается:

достижение предельной плотности упаковки элемен­тов в СБИС на кремниевой основе;

производство СБИС на базе арсенида галлия;

использование криогенной технологии на базе эффекта Джозефсона.

Архитектуры ЭВМ совершенствуются по следующим направлениям:

· создание системы ЭВМ различной мощности, сбалан­сированных по архитектуре, что позволит пользова­телю быстро, просто и эффективно использовать ог­ромный потенциал такой системы;

· выработка однопроцессорных ПЭВМ с командным управлением, на новой быстродействующей элементной базе; эти направление развивают те фирмы, которые хотят сохранить программную совместимость но­вых ПК с существующими;

· выработка ЭВМ на нескольких быстрых процессо­рах с командным управлением, часть которых явля­ется универсальными, а другая часть - конвейерны­ми или параллельными с небольшим числом процессорных элементов;

· выработка высокопроизводительных многопроцес­сорных ЭВМ с конвейерной, параллельной или мат­ричной обработкой информации.

Кроме известных способов обработки информации, ЭВМ ориентированы на распознавание образов и обработку структурированных знаний и принятие интеллектуальных решений.

Совершенствование интеллектуальных интерфейсов:

технических и программных средств ввода / вывода различных видов информации;

общение на проблемно-ориентированном естественном разговорном языке;

использование текстовых документов, как печатный так и рукописных, и изображений;

всœемерное развитие известных и новых алгоритмических языков программирования;

применение языков искусственного интеллекта: Лисп Пролог, PS, FRL, VALID, OCCAM и др.

Реализация программ создания ЭВМ 5-го поколения позволит в ряде стран построить так называемое информационное общество.

Существуют различные классификации компьютерной техники:

по этапам развития (по поколениям);

по архитектуре;

по производительности;

по условиям эксплуатации;

по количеству процессоров;

по потребительским свойствам и т.д.

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

По условиям эксплуатации компьютеры делятся на два типа:

офисные (универсальные);

специальные.

Офисные предназначены для решения широкого класса задач при нормальных условиях эксплуатации.

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

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

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

Компьютер Ergotouch

Компьютер Ergotouch (Эрготач) исполнен в литом алюминиевом полностью герметичном корпусе, который легко открывается для обслуживания.

Cтенки компьютера поглощают практически всœе электромагнитные излучения как изнутри, так и снаружи. Машина оборудована экраном, чувствительным к прикосновениям.

Компьютер можно, не выключая, мыть из шланга, дезинфицировать, дезактивировать, обезжиривать.

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

Важное направление в создании промышленных компьютеров - выработка "операторского интерфейса" - пультов управления, дисплеев, клавиатур и указательных устройств во всœевозможных исполнениях. От этих изделий напрямую зависит комфортность и результативность труда операторов.

По производительности и характеру использования компьютеры можно условно подразделить на:

микрокомпьютеры, в т.ч. - персональные компьютеры;

миникомпьютеры;

мэйнфреймы (универсальные компьютеры);

суперкомпьютеры.

Микрокомпьютеры - это компьютеры, в которых центральный процессор выполнен в виде микропроцессора.

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

Микрокомпьютеры представляют из себяинструменты для решения разнообразных сложных задач. Их микропроцессоры с каждым годом увеличивают мощность, а периферийные устройства - эффективность. Быстродействие - порядка 1 - 10 миллионов опеpаций в сек.

Разновидность микрокомпьютера - микроконтроллер.
Размещено на реф.рф
Это основанное на микропроцессоре специализированное устройство, встраиваемое в систему управления или технологическую линию.

Современные средства компьютерной техники бывают классифицированы следующим образом:

· Персональные компьютеры;

· Корпоративные компьютеры;

· Суперкомпьютеры.

Персональные компьютеры (ПК) - это микрокомпьютеры универсального назначения, рассчитанные на одного пользователя и управляемые одним человеком.

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

Персональные компьютеры представляют из себявычислительные системы, всœе ресурсы которых полностью направлены на обеспечение деятельности одного работника.

Наиболее известными являются компьютеры семейства IBM PC и Macintosh. Это два различных направления развития ПК, несовместимых между собой по аппаратному и программному обеспечению. Так уж сложилось, что компьютеры семейства Macintosh очень удобны в работе, располагают широкими графическими возможностями и получили большое распространение в среде профессиональных художников, дизайнеров, в издательском делœе и в сфере образования.

В семействе IBM – совместимых ПК также можно выделить несколько разновидностей компьютеров, которые значительно отличаются друг от друга по своим характеристикам и внешнему виду, и, тем не менее, всœе они – персональные компьютеры. Это, прежде всœего, настольные (desktop) и переносные (laptop) ПК, которые, несмотря на существенные внешние отличия, располагают приблизительно одинаковыми характеристиками и возможностями.

Переносные ПК – дорогие изделия, зато они компактны и транспортабельны. Существенно отличаются от настольных и переносных – карманные компьютеры – так называемые органайзеры, или ʼʼпереносные секретариʼʼ. Эти ПК-блокноты не имеют ни периферийных устройств, ни клавиатуры, выбор команд осуществляется прямо на миниатюрном экране с помощью указки – стило.

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

Основные разновидности портативных компьютеров:

Laptop (наколенник, от lap - колено и top - поверх). По размерам близок к обычному портфелю. По основным характеристикам (быстродействие, память) примерно соответствует настольным ПК. Сейчас компьютеры этого типа уступают место ещё меньшим.

Notebook (блокнот, записная книжка). По размерам он ближе к книге крупного формата. Имеет вес около 3 кᴦ. Помещается в портфель-дипломат. Важно заметить, что для связи с офисом его обычно комплектуют модемом . Ноутбуки зачастую снабжают приводами CD-ROM .

Многие современные ноутбуки включают взаимозаменяемые блоки со стандартными разъёмами . Такие модули предназначены для очень разных функций. В одно и то же гнездо можно по мере нужнобности вставлять привод компакт-дисков, накопитель на магнитных дисках, запасную батарею или съёмный винчестер.
Размещено на реф.рф
Ноутбук устойчив к сбоям в энергопитании . Даже если он получает энергию от обычной электросœети, в случае какого-либо сбоя он мгновенно переходит на питание от аккумуляторов.

Персональный цифровой помощник

Palmtop (наладонник) - самые маленькие современные персональные компьютеры. Умещаются на ладони. Магнитные диски в них заменяет энергонезависимая электронная память. Нет и накопителœей на дисках - обмен информацией с обычными компьютерами идет линиям связи. В случае если Palmtop дополнить набором деловых программ, записанных в его постоянную память, получится персональный цифровой помощник (Personal Digital Assistant ).

Корпоративные компьютеры (иногда называемые мини-ЭВМ или main fram) представляют из себявычислительные системы, обеспечивающие совместную деятельность многих работников в рамках одной организации, одного проекта͵ одной сферы информационной деятельности при использовании одних и тех же информационно-вычислительных ресурсов. Это многопользовательские системы, имеющие центральный блок с большой вычислительной мощностью и значительными информационными ресурсами, к которому присоединяется большое число рабочих мест с минимальной оснащенностью (видеотерминал, клавиатура, устройство позиционирования типа ʼʼмышиʼʼ и, возможно, устройство печати). В принципе в качестве рабочих мест, соединœенных с центральным блоком корпоративного компьютера, бывают использованы и персональные компьютеры. Область применения корпоративных компьютеров – реализация информационных технологий обеспечения управленческой деятельности в крупных финансовых и производственных организациях, правительственные учреждения, создание информационных систем, обслуживающих большое число пользователœей в рамках одной функции (биржевые и банковские системы, бронирование и продажа билетов и т.п.).

Особенности корпоративных компьютеров:

Исключительная надежность;

Высокое быстродействие;

Большая пропускная способность ввода-вывода.

Стоимость таких компьютеров – миллионы долларов. Спрос – высокий.

Преимущества – централизованное хранение и обработка данных обходятся дешевле, чем обслуживание распределœенных систем обработки данных, состоящих из сотен и тысяч ПК.

Суперкомпьютеры представляют из себявычислительные системы с предельными характеристиками вычислительной мощности и информационных ресурсов. Οʜᴎ используются в военной и космической областях деятельности, в фундаментальных научных исследованиях, глобальном прогнозировании погоды, военной промышленности, геологии и т.д. К примеру, прогнозирование погоды или моделирование ядерного взрыва.

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

В этих машинах параллельно, то есть одновременно, выполняется множество похожих операций (это принято называть мультипроцессорной обработкой ). Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, сверхвысокое быстродействие обеспечивается не для всœех задач , а только для задач, поддающихся распараллеливанию.

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

Векторная аппаратура очень дорога, в частности, потому, что требуется много сверхбыстродействующей памяти под векторные регистры.

Наиболее распространённые суперкомпьютеры - массово-параллельные компьютерные системы. Οʜᴎ имеют десятки тысяч процессоров, взаимодействующих через сложную, иерархически организованую систему памяти.

В качестве примера рассмотрим характеристики многоцелœевого массово-параллельного суперкомпьютера среднего класса Intel Pentium Pro 200 . Этот компьютер содержит 9200 процессоров Pentium Pro на 200 Мгц, в сумме (теоретически) обеспечивающих производительность 1,34 Терафлоп (1 Терафлоп равен 10 12 операций с плавающей точкой в секунду), имеет 537 Гбайт памяти и диски ёмкостью 2,25 Терабайт. Система весит 44 тонны (кондиционеры для неё - целых 300 тонн) и потребляет мощность 850 кВт.

Супер-компьютеры используются для решения сложных и больших научных задач (метеорология, гидродинамика и т. п.), в управлении, разведке, в качестве централизованных хранилищ информации и т.д.

Элементная база - микросхемы сверхвысокой степени интеграции.

Стоимость – десятки миллионов долларов.

Назначение – решение тех задач, для которых производительности ПК недостаточно;

Обеспечение централизованного хранения и обработки данных.

Особенности: возможность подключения десятков и сотен терминалов или ПК для работы пользователœей; наличие специальных аппаратных средств для трехмерного моделирования и анимации, в связи с этим именно на них создается большое количество кинофильмов.

Мэйнфреймы предназначены для решения широкого класса научно-технических задач и являются сложными и дорогими машинами. Их целœесообразно применять в больших системах при наличии не менее 200 - 300 рабочих мест.

Централизованная обработка данных на мэйнфрейме обходится примерно в 5 - 6 раз дешевле, чем распределённая обработка при клиент-серверном подходе.

Известный мэйнфрейм S/390 фирмы IBM обычно оснащается не менее чем тремя процессорами. Максимальный объём оперативного хранения достигает 342 Терабайт.

Производительность его процессоров, пропускная способность каналов, объём оперативного хранения позволяют наращивать число рабочих мест в диапазоне от 20 до 200000 с помощью простого добавления процессорных плат, модулей оперативной памяти и дисковых накопителœей.

Десятки мэйнфреймов могут работать совместно под управлением одной операционной системы над выполнением единой задачи.

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

Вместе с тем, приведенная классификация учитывает только автономное использование вычислительной техники. Сегодня преобладает тенденция их объединœения в вычислительные сети, что позволяет интегрировать информационно-вычислительные ресурсы для наиболее эффективной реализации информационных технологий.

ІВМ РС – совместимые компьютеры - ϶ᴛᴏ около 90% всœех современных компьютеров.

Совместимость – это:

Программная совместимость – всœе программы для IBM PC будут работать на всœех IBM PC – совместимых компьютерах.

Аппаратная совместимость – большинство устройств (кроме пяти или десятилетней давности) для компьютеров ІВМ РС и более новых версий ІВМ РС ХТ, ІВМ РС АТ и других пригодны для ІВМ РС – совместимых компьютеров.

Преимущества ІВМ РС – совместимых компьютеров:

1) полная совместимость вызвала появление сотен тысяч программ для всœех сфер человеческой деятельности;

2) открытость рынка ІВМ РС – совместимых компьютеров вызвала острую конкуренцию среди производителœей компьютеров и их комплектующих, что обеспечило высокую надежность, относительно низкую цену и максимально быстрые внедрения технических новинок;

3) модульная конструкция и интеграция компонентов ІВМ РС – совместимых компьютеров обеспечивающих компактность, высокую надежность, простоту ремонта͵ возможность легкой модернизации и увеличения мощности компьютера (более мощный процессор или более емкий НЖМД).

Широкие возможности ІВМ РС – совместимых компьютеров позволяет использовать их в различных отраслях и для решения разнообразных задач.

Вопросы для самоконтроля

1. По каким признакам можно разделять компьютеры на классы и виды?

7. Как эволюционировала элементная база компьютеров от поколения к поколению?

8. Когда микрокомпьютеры стали доступны для широкого домашнего применения?

9. Можете ли связать понятия "яблоко", "гараж" и "компьютер"?

10. На базе каких технических элементов создавались компьютеры первого поколения?

11. Какую основную проблему перед разработчиками и пользователями выдвинул опыт эксплуатации компьютеров первого поколения?

12. Какая элементная база характерна для второго поколения компьютеров?

13. Какую функцию выполняет операционная система в процессе работы компьютера?

14. На какой элементной базе конструируются машины третьего поколения?

15. Для каких поколений компьютеров характерно широкое использование интегральных схем?

16. Какое быстродействие характерно для машин четвёртого поколения?

17. Что подразумевают под "интеллектуальностью" компьютеров?

18. Какую задачу должен решать "интеллектуальный интерфейс" в машинах пятого поколения?

19. Какими особенностями должны обладать промышленные компьютеры?

20. Что такое операторский компьютерный интерфейс?

21. По каким основным признакам можно отличить мэйнфреймы от других современных компьютеров?

22. На какое количество пользователœей рассчитаны мэйнфреймы?

23. Какие идеи лежат в базе архитектуры суперкомпьютеров?

24. На каких типах задач максимально реализуются возможности суперкомпьютеров?

Тема 5. ПЭВМ КАК ОСНОВА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

1. Архитектура ПК

2. Структура ПК

3. Функциональные характеристики ПК

Совместимость компьютеров - понятие и виды. Классификация и особенности категории "Совместимость компьютеров" 2017, 2018.

С поддержкой же работы SD-карты возникло сразу два больших вопроса – аппаратная поддержка шины SPI и протокол взаимодействия с самой картой.

В принципе, SPI можно реализовать полностью программно, но мне хотелось поразвлекаться и с «железом» тоже, поэтому я героически принялся за рисование приемо-передатчика байта в схемном дизайне. К моему удивлению, ничего сложного в этом не оказалось, и довольно скоро я уже наблюдал на экране осциллографа резво бегающие 8-битовые пакеты, содержащие именно то, что мне хотелось. Кстати, тут я впервые оценил возможность нового осциллографа не просто показывать кучу сигналов, а еще и объединять их логически в соответствующую шину. Намного приятнее видеть, что осциллограф понял, что передается именно байт A5, а не вручную смотреть, в нужных ли местах находятся переходы с 0 в 1 и наоборот.

Для упрощения задачи я не пытался подстраиваться под все типы и разновидности карт, а ограничился оригинальной SD (не SDHC или еще какие-то варианты) картой. Немного программирования, и вот уже на экране стало отображаться содержимое 0-го сектора карты. Сразу после этого привел эти функции в некоторое подобие INT 13h, добавил в зачаточном виде INT 19h (boot load) и увидел на экране следующее:

Так как в тот момент при чтении всегда считывался только 0-ой сектор, то начальный загрузчик (находящийся как раз в этом секторе), не находил ОС для загрузки, о чем и сообщал. Но это уже мелочи – главное, что моя схема потихоньку начала превращаться в настоящий компьютер и уже даже пыталась загрузиться!

Далее пошла борьба с пересчетом физических секторов в логические блоки. Тут я тоже схалявничал и вместо определения параметров (образа) диска просто жестко забил цифры для конкретного экземпляра образа. С этой частью пришлось повозиться – вычисления почему-то приводили к совершенно неожиданным результатам (вообще никогда не любил арифметику на ассемблере). Тем не менее, после некоторых мучений физические сектора/цилиндры/головки стали исправно переводиться в логические блоки, и пришло время попробовать загрузиться уже по серьезному.

Естественно, сразу загрузка не прошла, да я и не ожидал этого. Заранее зная, что у меня в BIOS’е не реализована куча функций, я поставил на все прерывания заглушки, и при обращении к нереализованной функции на экран выводилась вся необходимая информация – к какому прерыванию и с какими аргументами обращаются. Далее шел процесс написания обработчика соответсвующей функции (а еще чаще – просто временной заглушки), и процесс продолжался. Неожиданно все остановилось на функции, которая вообще отсутствует в оригинальной PC – одна из функций INT 2F, связанную с обработкой событий. Я видел, что DOS определяет тип PC, и вроде не должна вызывать прерывания, отсутствующие на данном типе, но, тем не менее, это происходило, и процесс останавливался. Простая заглушка не помогла, а всю функцию реализовывать не хотелось из принципа.

Сейчас уже не помню весь ход мыслей (очень много чего смотрел в тот момент в исходниках DOS и в процессе загрузки), но в очередной раз на данном «зависании» я решил вызвать кучу прерываний (в тот момент у меня был отключен таймер на INT 08h) и нажал клавишу Shift. Неожиданно случилось чудо:

Скажу честно, эмоций на меня нахлынуло довольно много – проделать путь от макетки с парой микросхем до загрузки DOS за месяц, да еще и короткими набегами (из-за хронической нехватки времени) вроде довольно круто (извините за хвастовство)!

Кстати, с этим сообщением у меня есть до сих пор неразгаданная загадка. Дело в том, что после доделки прерывания таймера DOS стала загружаться без зависания в данном месте, но вот сообщение о копирайте Microsoft почему-то не выводится. Вроде оно также не выводится и на настоящем компьютере (к сожалению, попробовать не на чем). В чем тут первопричина – тайна, покрытая мраком. Я пытался понять логику по исходным кодам DOS, но сходу не увидел, а много времени тратить не захотел. Тем не менее, вопрос все еще мучает потихоньку…

После запуска DOS пришла очередь позапускать другие программы. Наверное, можно догадаться, чья очередь была первой – естественно, как говорят, старый добрый Norton Commander. Как ни странно, возни с ним было заметно больше, чем с DOS’ом. NC при запуске вызывал дикое количество функций, причем в ряде случаев обойтись простыми заглушками не удавалось, приходилось писать хотя бы минимум функциональности.

Тем не менее, проблемы были больше количественные, чем качественные, и вскоре удалось довести процесс загрузки NC до логического завершения:

Такой «интересный» внешний вид обусловлен несколькими причинами:
- видеоадаптер не поддерживал на тот момент атрибуты
- у меня не было второй части знакогенератора, в которой содержиться псевдографика, поэтому в соответствующих местах оказались символы из нижней части кодовой таблицы
- не были реализованы некоторые функции INT 10h.

Вообще меня периодически удивляло, каким именно образом реализованы те или иные функции в различных программах (и даже в DOS). Например, команда CLS (очистка экрана) вызывала функцию INT 10h, вызывающую сдвиг окна вверх. При этом в качестве окна указывалась вся доступная экранная область, и сдвигалась она на количество строк, равное количеству строк на экране. Так как я не ожидал, что функции работы с окнами вообще кто-то использует, то и не спешил их реализовывать. Результат оказался налицо (вернее, на экране). Впрочем, к странностям некоторых программ еще вернемся немного дальше…

После запуска NC у меня возникло естественное желание привести его в божеский вид. Тем более, что такая часть работы иногда даже более приятна, чем попытки завести вообще мертвое устройство. С псевдографикой особых проблем не было – просто довольно много времени на ручное рисование символов (знакогенератор у меня был прямо в виде VHDL кода). А вот с атрибутами пришлось немного напрячься.

Еще раньше, по ходу процесса, я стал применять некоторые элементы VHDL. Сначала практически насильно – все-таки было желание еще раз попробовать освоить этот язык, а потом и потому, что в определенных случаях это оказывалось удобнее, чем использовать схемный дизайн. Даже в самом видеоадаптере мне пришлось вникнуть в код – изначально поддерживалось 43 (или что-то около этого) строки, мне же нужно было переделать на 25 строк. И поддержку атрибутов я сначала попытался сделать схемным дизайном, но вдруг стал осознавать, что вроде использовать VHDL для этого может оказаться проще. Естественно, все двигалось с большим трудом и использованием самых простых конструкций языка, но я вдруг начал понимать суть VHDL – пока еще совсем чуть-чуть, но уже достаточно, чтобы начать на нем что-то осознано создавать, а не просто модифицировать уже имеющееся.

Моя возня с VHDL не прошла даром, и через некоторое время я смог увидеть что-то давно и хорошо знакомое:

Да, там еще можно было заметить некоторые недоделки (типа сдвинутого на один символ атрибута), но в целом цветной текстовый режим 80x25 заработал так, как должен.

Следующим на очереди стоял контроллер прерываний 8259. Сначала возникла мысль попытаться использовать уже имеющийся из какого-то проекта, но ни один из них мне по разным причинам не понравился (либо слишком примитивные, либо, наоборот - я не понимал, как они работают, а документация отсутствовала). Была даже попытка купить коммерческую IP (в данном случае IP это не Internet Protocol, а Intellectual Property), но производители не хотели заморачиваться с продажей целой одной штуки…

В конечном итоге пришлось взяться за листик бумаги и набросать нечто типа (блок)схемы контроллера, которую потом начал реализовывать на VHDL. За полной совместимостью не гнался – мне нужна была (на данном этапе) поддержка одного основного режима приоритетных прерываний, возможность маскировать прерывания (также читать маску прерываний) и выполнять команду EOI (End Of Interrupt). На мой взгляд, этого должно быть достаточно, чтобы подавляющее большинство программ с этим нормально работали. Забегая вперед, скажу, что и по настоящий день я не обнаружил ни одной программы, которая пыталась бы сделать с контроллером прерываний что-то свыше заложенной мною функциональности.

Наверное, контроллер прерываний был моим первым настоящим (пускай и маленьким) проектом на VHDL – от начала и до конца. Писал я его тщательно, не поленился даже (опять таки впервые в своей жизни) сделать test bench (не уверен, как правильно перевести на русский – фактически, последовательность сигналов для проверки правильности функционирования устройства). Моделирование в симуляторе ModelSim показало вроде полную работоспособность контроллера, после чего из него был сгенерирован очередной графический символ и добавлен в мое устройство.

Нормального таймера 8254 у меня еще не было, для генерации прерываний 18.2 Гц использовался обычный счетчик, который я и подключил к контроллеру прерываний. Поведение компьютера показало, что вроде все работает – DOS загрузился без необходимости нажимать на клавишу, а в NC наконец-то пошли часы. Казалось, пройден очередной этап, и можно смело двигаться дальше.

Как оказалось, рано я радовался – в этот момент обнаружилась, пожалуй, самая большая проблема во всем проекте. Если кто помнит, у NC есть встроенная экранная заставка – «звездное небо». Оставив мой компьютер на некоторое время, после возвращения к нему я обнаружил, что звезды на заставке почему-то застыли, проще говоря, компьютер завис. Хотя я понимаю, что таких случайностей не бывает, мне все-таки хотелось верить в чудо – в то, что это единичный случай. К сожалению, как всегда, чуда не случилось – после полного сброса и перезагрузки компьютер снова подвис после часа или около того работы. Стало однозначно понятно, что где-то есть проблема, причем очень труднонаходимая.

Чтобы максимально сузить круг поиска, я написал простейший тест памяти, который запускался сразу после сброса процессора, без инициализации всех ненужных устройств типа таймера и т.д. В принципе, индикацию ошибки памяти я воспринял с облегчением – по крайней мере, проблема была явно в железе. Осталось дело за малым – понять, в каком именно месте. И вот с этим оказалось все совсем не просто.
Дело в том, что вообще схема, задействованная в процессе тестирования памяти, по своей сути довольно примитивна. Задействован минимум логики, кроме процессора нет никаких других сложных программируемых элементов. В результате после какого-то времени, затраченного на анализ схемотехники, у меня появилась более-менее уверенность в том, что дело не в принципиальной ошибке в схеме, а в чем-то более случайном – например, в помехах.

С этой стороной схемотехники у меня вообще все было плохо. Я знал, что нужно ставить побольше блокирующих конденсаторов, и что длинные провода – это вроде плохо. На этом мои познания заканчивались. Поэтому за советом я снова обратился на один из профессиональных форумов. Советов мне надавали много, иногда было сложно отделить действительно толковые советы от советующих по принципу «скажу все, что хоть немного знаю на эту тему». Расписывать здесь все это не буду – слишком много всего обсуждалось, так что это может быть темой отдельной статьи. По результатам обсуждений моя плата обросла почти двумя десятками блокировочных конденсаторов и полностью потеряла изначальный более-менее гламурный вид.

К сожалению, очередной запуск теста показал, что проблема не ушла. Возможно, она стала проявляться чуть реже, но это сказать трудно – и раньше сбой мог возникнуть то через 20-30 минут, то через несколько часов. Сейчас же, как минимум, оставленная на ночь плата утром оказывалась гарантированно сбойнувшей. В отчаянии я снова вернулся к анализу схемотехники и еще более внимательному изучению диаграмм работы шин процессора. В одном месте у меня возникла определенная мысль, и я опять пошел на тот же форум. В ходе обсуждения моей идеи я в очередной раз получил порцию полезных (а иногда и не очень) советов, попробовал реализовать некоторые вещи (в первую очередь, связанные с небольшой задержкой некоторых управляющих сигналов), но на наличие сбоев это не повлияло вообще никак.

В конце дороги отчетливо вырисовывался конкретный такой тупик, поэтому я начал проверять вообще бредовые идеи. В частности, не сбоит ли сама микросхема памяти? Для проверки я сгенерировал прямо внутри FPGA модуль RAM, который и использовал вместо внешней памяти. Честно говоря, на результат я не надеялся – просто делал все, что приходило в голову. Но представьте мое удивление, когда после этого сбои вдруг исчезли! Вообще я даже как-то не был готов к этому, поэтому не совсем понимал, как использовать это знание. В то, что микросхема памяти неисправна, не верилось даже в этот момент. Также была почти полная уверенность, что я работаю с этой микросхемой правильно – по управляющим сигналам там все проще простого. Но факт оставался фактом – с микросхемой сбой гарантированно происходил не позже, чем через несколько часов теста, с внутренней памятью все проработало без сбоев несколько дней, пока мне не надоело.

Для очистки совести я все же решил потестировать память полностью другой схемой, без использования моей процессорной платы. В процессе обдумывания, как это лучше сделать, мне вдруг в голову пришла мысль – я понял единственное существенное отличие между использованием внутренней и внешней памяти. Дело в том, что внешняя память была асинхронная, а внутренняя – частично синхронная, и для нее дополнительно требовался сигнал, по которому во внутреннем буфере защелкивался адрес ячейки, к которой происходило обращение.
Я вообще не понимал, как это может относиться к проблеме случайных сбоев – по всем диаграммам было совершенно однозначно понятно, что у меня адрес держится намного больше, чем минимально необходимо для памяти, поэтому, теоретически, это не могло быть причиной. Тем не менее, я тут же нарисовал в Quartus’е еще один регистр, подал на него адрес и защелкнул его тем же сигналом, который использовался для внутренней памяти. Выход регистра, естественно, подал на адресные линии внешней памяти. Понимая, что делаю полную чушь, я запустил тест. И тест отработал успешно до тех пор, пока я его не выключил на следующий день. Далее еще пару раз с регистром и без – совершенно четко было видно, что наличие регистра убирает сбои полностью.

Это было совершенно необъяснимо – даже на осциллографе я видел, что адресные сигналы и так держатся больше, чем это в принципе может быть нужно, но факт оставался фактом. После целых выходных разборок я плюнул на это и решил смириться с этим, как с данностью…

Итак, DOS грузилась, многие программы, не требовавшие графического режима, запускались, можно было двигаться дальше. Естественно, возникло желание запустить какую-то игрушку. Но для игрушки, как правило, требуется графика, а ее у меня пока не было. И если для текстового видеоадаптера удалось обойтись малой кровью путем переделки существующего, то для графики с этим было не так просто.

Дело было даже не в отсутствии готовых решений. Проблема была в том, что мне нужна была практически полная совместимость со стандартным видеоадаптером на аппаратном уровне – ведь все игры работают с графикой напрямую с железом, без использования BIOS. Я понял, что проще сделать видеоадаптер «с нуля», чем пытаться переделать какой-то готовый. Да и, естественно, самому сделать было намного интереснее.

Итак, пишем свой собственный CGA адаптер – даже EGA на пару порядков сложнее, так что пока на него замахиваться не будем. В принципе, немножко для начала я все-таки подсмотрел – нашел, фактически, наброски модуля генерирования VGA-развертки. Но это было полтора десятка строчек, да еще и не до конца работающих. Так что, реально, они были использованы как шаблон для начала писанины – морально так было легче.

Естественно, CGA монитора у меня нет и не планировалось, поэтому идея заключалась в использовании режима VGA 640х400, в которых превосходно ложился CGA-шный режим 320х200 путем простого дублирования точек как по горизонтали, так и по вертикали.
Вообще графический адаптер у меня получился неожиданно легко – мозг к этому моменту вдруг научился мыслить категориями VHDL, плюс появилось небольшое понимание, что можно требовать от VHDL, а чего не стоит. Вообще основное время отладки у меня занял поиск совершенно глупой ошибки, связанной с разрядностью чисел (две такие проблемы наложились друг на друга и дали весьма забавный вариант). В остальном же я начал получать удовольствие от того, как строчки в редакторе превращаются в практически реальное «железо» внутри FPGA и делают именно то, что я хочу.

В самом начале, естественно, адаптер получился далек от совершенства и совместимости, но Checkit смог опознать его и даже вывести первую тестовую картинку:

Кстати, Checkit оказался довольно полезной программой – многие вещи он определял довольно хитрыми способами, что заставляло делать всю конструкцию все более PC-совместимой. А так как Checkit мог проверить все узлы и компоненты, то и совместимость тестировалась тоже для всех частей системы.

После исправления самых явных ляпов (типа видимого на предыдущей фотографии дублирования точки из предыдущего байта) удалось, с некоторым трудом, найти игру, которая вроде даже заработала:

Цвета на этой картинке не соответствуют оригинальным – в этот момент переключение палитр еще не было сделано, да и сами цвета вообще не были настроенными.

Попытки найти работающие игры показали, что игровые программы, в большинстве случаев работающие напрямую с «железом», куда требовательнее к совместимости, чем какой-нибудь NC или даже QuickBasic. К счастью, FPGA предоставляла практически неограниченные возможности по выявлению фактов обращения программы к интересующим портам, адресам памяти и т.д. Особенно вместе с тем, что BIOS я тоже мог менять по собственному усмотрению, это давало отличный механизм отладки. Кстати, в какой-то момент (уже не помню точно, когда), заработал и Turbo Debugger, что тоже расширило арсенал отладочных инструментов.

Сразу же стало ясно, что нужно делать хотя бы минимальный таймер 8253. Причем программы пытались использовать таймер не только для звуков (канал 2), а еще и активно перепрограммировали канал 0, изменяя таким образом частоту прерываний от таймера, а также использовали этот канал для определения временных параметров.

Почитав документацию к 8253, мне стало немного тоскливо. Делать нужно было много и не очень интересно. Решив заняться этим как-нибудь потом, в тот момент просто залез на все тот же opencores и стащил пару модулей таймера. Один на Verilog, причем весьма упрощенный, второй – по виду крайне навороченный, да еще и на VHDL. К сожалению, таймер на VHDL подключался по шине Wishbone – это открытый стандарт для разработок на FPGA. С Wishbone я до этого никогда не сталкивался, так что решил для начала использовать модуль на Verilog’е, который по интерфейсу выглядел попроще.

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

Дальше же мне пришлось принять кардинальное решение. До этого момента INT 10h я писал сам. В текстовом режиме с этим еще можно было смириться, но вот необходимость поддерживать эти функции в графических режимах меня расстроила. Учитывая, что к этому моменту страсть к программированию на ассемблере была практически удовлетворена (все-таки сказалось то, что в свое время уже пришлось делать это в промышленных объемах), поступил по принципу «Если гора не идет к Мухаммеду, то тот посылает ее нафиг». А именно решил сделать свой CGA адаптер настолько совместимым по «железу», чтобы оригинальный BIOS мог работать с ним.

В принципе, особой сложности не возникло – регистров не очень много, функциональность их крайне проста. Из неявных вещей - пришлось эмулировать регистр состояния, в котором находятся признаки обратного хода луча кадровой и строчной развертки. Довольно логично оказалось, что многие программы (включая BIOS) активно пользуются этим регистром, чтобы избежать «снег» при попытке одновременного обращения к видеопамяти со стороны процессора и адаптера.

Почему-то процесс приведения в порядок видеоадаптера мне показался очень увлекательным, и в конечном итоге этот узел оказался самым проработанным с точки зрения совместимости с оригинальным устройством. Попутно были добавлены недостающие вещи типа переключаемых палитр, режима 640х200 и т.д. Кстати, для тестирования режима 640х200 оказалось довольно непросто найти программу, поддерживающую данный режим. Единственное, что удалось раскопать, это шахматы:

На мой взгляд, выглядит довольно красиво…

Оригинальный обработчик INT 10h отнёсся к такому адаптеру весьма дружелюбно, а я вздохнул с облегчением от отсутствия необходимости писать вещи типа распознавания символа, напечатанного в определенном месте экрана в графическом режиме.

Последним препятствием на пути к приемлемой совместимости с PC была, как ни странно, клавиатура. Хотя это было чуть ли не первое, что я прикрутил к проекту, но с точки зрения совместимости там вообще еще конь не валялся. Основная проблема заключалась в том, что все нормальные программы работают с первым набором скан-кодов, который применялся еще в IBM PC. А вот все клавиатуры, начиная с PC AT, выдают, как минимум, второй набор скан-кодов, очень отличающийся от первого. Только контроллер клавиатуры внутри компьютера преобразовывает эти коды в оригинальный, первый набор, и все обычные программы работают именно с ним (даже если эти программы вроде бы обращаются к клавиатуре напрямую, не используя BIOS). У меня же, естественно, никакого контроллера не было (кстати, в PC AT и даже в поздних PC XT для этого использовался отдельный микроконтроллер на базе 8051). Функции INT 09/16 у меня были реализованы в самом минимальном варианте, а уж о прямой работе программ с клавиатурой вообще и речи не могло быть – они (программы) просто не поняли бы ни одного скан-кода.

К этому моменту я вдруг почувствовал эйфорию от владения VHDL – мне казалось, что я уже постигнул истину, и могу вообще все. Поэтому без промедления был написан изящный (как мне казалось) модуль на VHDL, который выполнял перекодирование скан-кодов. В этом модуле все было очень красиво и хорошо, за исключением одной маленькой детали – он не работал. Причем причину неработоспособности я понять никак не мог, что расстраивало и вызывало недоумение – там всего был десяток строчек.

Очередной раз обратившись на форум к знатокам, я получил изрядное количество действительно толковых советов. Мало того, мое понимание самой концепции VHDL очередной раз чуть ли не в корне поменялось (в т.ч., появилось некоторое разочарование). Основное – чудес не бывает. VHDL (а также все другие HDL) не сделает того, что невозможно сделать обычным способом из имеющихся аппаратных ресурсов. Если я пишу строчку, вроде правильную с точки зрения синтаксиса языка, но при этом даже близко не представляю, как это может быть реализовано в железе, то, скорее всего, оно и не будет реализовано при компиляции. Как минимум, не будет делать то, что от этого требуется. И еще – очень важно использовать шаблоны. Оказывается, многие конструкции языка превращаются в правильные аппаратные узлы только тогда, когда компилятор распознает соответствующий шаблон. Определенная гибкость, конечно, присутствует, но все-равно нужно всегда помнить о рекомендованных стилях описания тех или иных узлов.

Думаю, именно после этих разборок я действительно хоть совсем чуть-чуть, но уже по-настоящему начал понимать суть VHDL (да и Verilog к этому моменту тоже перестал быть совсем уж непонятным). Волшебным образом учебники по этим языкам вдруг обрели смысл, и за словами становилась понятна суть описываемых вещей.

Короче говоря, сделав модуль преобразователя чуть менее красивым, но зато намного более правильным, получил на его выходе коды в первом наборе. Далее осталось скормить эти коды уже оригинальному обработчику INT 09h, и проверить все тем-же Checkit’ом правильность распознавания нажатий клавиш. Итак, клавиатура тоже была почти 100% совместима на аппаратном уровне.

К этому моменту я начал ощущать все больше и больше неудобств от того, что верхним уровнем проекта у меня все еще оставался схемный дизайн. Окончательным толчком, побудившим взяться за полный переход на VHDL, послужила смена домашнего компьютера. На столе у меня оказался iMac Retina с установленным Windows. К сожалению, Quartus попал в число программ, которые оказались совершенно не готовы к работе с таким разрешением экрана. Схемный дизайн стал совершенно нечитаемым, и никакие мои попытки что-то настроить никаких реальных улучшений не произвели. Деваться было некуда, я стиснул зубы и взялся за текстовый редактор.

Как ни странно, все прошло более, чем гладко. Сейчас уже даже не помню, нужно ли было хоть что-то отлаживать, или же все заработало сразу после переделки. В любом случае, серьезных затыков точно не было, а вот работать сразу стало намного удобнее и эффективнее. Я сразу вспомнил советы ряда знающих людей, настоятельно рекомендовавших мне с самого начала забыть о схемном дизайне и сразу начинать с VHDL/Verilog. Кстати, относительно VHDL vs Verilog – пожалуйста, не спорьте со мной, что лучше/хуже, и почему я остановился именно на VHDL. Давайте считать, что мне просто так захотелось, и это практически правда. Больше на эту тему я рассуждать не буду…

При переходе на VHDL был также полностью переделан последний модуль на схемном дизайне – интерфейс SPI. Если помните, он обеспечивал аппаратный прием/передачу только одного байта, причем вокруг этого нужно было произвести целый ряд подготовительных шагов. Вкупе с медленным процессором (и лениво написанным INT 13h) это давало всего около 35% от быстродействия оригинального жесткого диска PC XT (согласно Checkit). Так как я уже практически чувствовал себя гуру VHDL и вообще цифровой электроники, то сразу решил писать не копию имеющегося интерфейса, а модуль, обеспечивающий пакетную передачу.

Правда, с DMA (или, как говорят у нас в России, ПДП) решил не заморачиваться – контроллера DMA еще не было, а браться сразу за два новых модуля не хотелось, потом не разберешься, где именно проблема. Отладка модуля прошла не совсем гладко – пришлось немного повозиться, в том числе активно задействуя цифровые каналы осциллографа в качестве анализатора протокола. Кстати, почему-то в ходе всего процесса я практически забыл, что в состав Quartus’а входит встроенный цифровой анализатор SignalTap, который, наверное, был бы еще удобнее. Возможно, в будущем у меня руки дойдут и до него (еще ни разу не пользовался), но пока мне очень нравится использовать для этого отдельную железку.

Наверное, с учетом нового модуля можно было бы более серьезно переписать INT 13h, но мне было лень, и я отделался только минимально необходимой модификацией. В результате получилось не очень красивое и совсем неэффективное нагромождение, но все равно скорость с новым модулем выросла практически в 5 раз:

Далее пошел частично нудный, частично увлекательный процесс запуска различных программ (в первую очередь, игровых) с целью выяснения, почему они не работают (вернее, что в моем компьютере недостаточно совместимое). О поисках причин можно написать отдельную большую статью, просто приведу несколько примеров:
- у меня нет DMA. Оказалось, что нулевой канал DMA (используемый для регенерации памяти на оригинальных PC) также используется некоторыми программами как счетчик для определения коротких временных промежутков. Пришлось эмулировать соответствующую часть счетчиков контроллера DMA
- обычно (но не всегда) при чтении из несуществующей области памяти или порта ввода/вывода считывается байт FF. У меня считывалось наоборот – 00. Это не понравилось программе, которая проверяла таким образом (и более ничем другим) наличие джойстика, после чего решала, что он есть, и что зажаты все кнопки
- самым оригинальным способом определения наличия CGA адаптера воспользовалась программа, которая записывала определенное значение в регистр местоположения курсора, потом считывала значение и сверяла с тем, что записывала (потом восстанавливала оригинальное значение). Согласно имеющейся у меня документации, этот регистр вроде должен быть только для записи, но переделал на чтение/запись, после чего программа успокоилась
- не связанное с моим компьютером – потратил кучу времени на выяснение причин зависания простейшей старинной игры Paratrooper. Оказалось что хотя игра и старая, но имевшийся у меня файл был сжат самораспаковывающимся архиватором com/exe файлов. Так вот, та часть, которая отвечала потом за распаковку программы при запуске, содержала команду, которая появилась только, начиная с 286 процессора. Неприятность заключалась в том, что данная команда не сильно влияла на процесс распаковки и портила только некоторые байты (меньше одного из тысячи). Пожалуй, на эти разборки я потратил больше всего времени.

Так, потихоньку, практически все игры, которые у меня были, стали запускаться и работать без особых проблем, в некоторые из них я даже попытался сыграть:

В ходе запуска многочисленных игр выяснилось, что имеющийся у меня модуль таймера далеко не идеален – в большинстве случаев звуки были не совсем правильными. Решив, что все-равно захочу разобраться с шиной Wishbone, я решил прикрутить таймер на VHDL, о котором уже упоминал ранее. Для начала, почитал описание Wishbone и сваял нечто типа переходника между Wishbone интерфейсом и шиной 8088 – ничего сложного. К сожалению, таймер не заработал. Пришлось снова доставать осциллограф и смотреть, что же там происходит (в первую очередь, правильно ли формируются Wishbone сигналы).

Кто мог подумать, что в этот момент меня будет ждать великое открытие… Помните, как я мучился со сбоями памяти, и вынужден был ввести промежуточный регистр, необходимости в котором не видел в принципе? Так вот, на экране осциллографа у меня оказалась следующая картинка:

Естественно, первое, что бросилось в глаза, так это жуткий звон сигнала 2. Причем звон этот перешел из количественного параметра в качественный. Сигнал 6 формируется одноразрядным счетчиком, на вход которого подан сигнал 2. Фактически, по каждому восходящему фронту сигнала 2 сигнал 6 инвертируется. Но на осциллограмме видно, что сигнал 6 переключился один раз не только по нормальному фронту сигнала 2, но по фронту самого сильного «звона»! Т.е. в моей схеме на некоторых линиях звон был такой амплитуды, что мог вызвать ложные переключения логики. Сказать, что я офигел – не сказать ничего. Даже не верилось, что при всем этом мне удалось добиться устойчивой работы схемы…

Далее, после небольшого анализа схемы с учетом новых данных, мне стало совершенно понятно, где именно возникали старые сбои, и почему тот регистр их вылечил. Тем не менее, нужно было что-то делать, так как именно сигнал 2 мне был нужен для работы с новым модулем таймера. И снова традиционное обращение к знатокам. Из нескольких советов на форуме был выбран вариант с разрезанием дорожки и впаиванием туда резистора. Результат был далек от идеала, но более ложных переключений от звона при тестировании в течение нескольких часов я не зафиксировал:

К сожалению, на работоспособность VHDL модуля таймера это не повлияло – он молчал. Повозившись еще некоторое время, причина была обнаружена в довольно неожиданном месте – в самом модуле. Причем была она довольно прозаична (и часто встречающаяся в программировании) – модуль неправильно обрабатывал одно из крайних значений, а именно при делителе 0 он вместо деления на максимальное значение (65536) не делал ничего. Я же проверял все время именно инициализацию канала 0, который инициализируется максимальным делителем, чтобы получить частоту 18.2 Гц. Когда я для эксперимента использовал делитель FFFF, все заработало.

Я даже связался с автором модуля, который (автор) уже и забыл, что он этот модуль писал. Тем не менее, автор помог мне найти конкретное место, где была допущена ошибка, и я даже кое-как попытался ошибку исправить. Именно эта проблема решилась, но были обнаружены другие, так что я пока остановился на первой версии модуля, на Verilog.

К этому моменту готовность моей конструкции была такова, что я созрел для главного эксперимента. Дело в том, что в далеком 86 году я читал статью из журнала «В мире науки», который является русским переводом американского журнала «Scientific American», в которой рассказывалось о новейшем продукте компании Microsoft – а именно об игре MS Flight Simulator. Учитывая, что уже в том время я фанател от компьютеров, но при этом твердо собирался стать летчиком, можно понять, какие эмоции тогда бурлили у меня в голове (да и в других частях тела).

И вот сейчас, спустя почти 30 лет, у меня появилось неутолимое желание запустить именно тот исторический Flight Simulator на моем компьютере. Интерес подогревался еще и тем, что вроде бы в те времена для тестирования на совместимость чуть ли не официально использовались две программы – тот самый Flight Simulator, а также Lotus 1-2-3. Говорилось, что они так плотно используют аппаратные особенности компьютера, что если заработали эти программы, то все остальное и подавно будет работать.

Вообще у меня были некоторые сомнения – я все-таки знал о некоторых подводных камнях в моей конструкции, но все же решил рискнуть (особенно учитывая, что ничем, естественно, не рисковал). Результат на экране:

Кстати, загадочная зернистость картинки вначале вызвала у меня подозрение – я сразу стал думать о каком-то совсем хитром способе работы с видеоадаптером, который у меня не поддерживается. На самом деле, как оказалось, таким образом Microsoft пытался получить дополнительные цвета, комбинируя точки из имеющихся цветов. Должен заметить, что, учитывая разрешение 320х200, результат был, мягко говоря, сомнительный.

Никаких проблем с запуском Lotus 1-2-3 тоже не возникло, так что на этом эксперимент можно было бы считать оконченным. Тем не менее, я провел еще ряд небольших доделок и подкруток, после чего стали запускаться и абсолютно нормально работать вообще все программы, которые у меня есть на настоящий момент. Единственной новой функцией, которую я добавил после этого, была EMS. Мне просто не давало покоя, что пропадает больше мегабайта доступной памяти (если честно, то просто хотелось еще что-то сделать), поэтому я нашел описание платы EMS с драйвером, и написал модуль, эмулирующий работу этой платы. Драйвер успешно память опознал:

Совсем последним штрихом стала переделка самой процессорной платы. Мне совершенно не нравился тот кошмар, что творился с формой сигналов, а также хотелось еще раз попрактиковаться с Eagle. В результате была разведена 4-слойная печатная плата, у которой один из внутренних слоев был выделен под землю, второй – под оба напряжения питания. Кроме того, самым существенным моментом было устранение шлейфов – разъемы установлены так, что моя плата прямо втыкается в отладочную плату FPGA (если быть совсем уж точным, то в плату расширения портов GPIO отладочной платы FPGA – такая вот матрешка):

Были также некоторые схемотехнические изменения – убран полностью формирователь тактовой последовательности 8284 (решил, что можно без проблем убрать его внутрь FPGA, не нанеся ни малейшего ущерба совместимости по сигналам шины) и регистр-защелка на шине адреса/данных (также убран внутрь FPGA). Быстрая проверка формы сигналов на новой плате показала, что сигналы стали практически идеальными:

Итак, путь от мигающего светодиода на беспаечной макетке до вполне нормального компьютера был пройден за пару месяцев, при этом получено огромное количество удовольствия, а также знаний в целом ряде областей. На выходе получился компьютер с довольно неплохой совместимостью с IBM PC, на котором вообще без замечаний работают все программы, которые я не поленился раздобыть, в т.ч. и те, которые считаются крайне требовательными к совместимости «железа». На компьютере практически полностью (за исключением обработчика INT 13h) используется BIOS 3-ей версии от IBM PC.

Насчет бюджета проекта сказать что-то определенное практически невозможно. Для начала, что туда включить - только несколько микросхем (подразумевая, что монтаж можно сделать МГТФ"ом, плата FPGA и приборы для настройки и так есть), или же все, начиная от сверхсрочного изготовления плат, покупки отладочной платы FPGA специально для этого проекта, и заканчивая не самым дешевым осциллографом?

Конкретные типы микросхем и всего остального в статье я вроде указал, так что любой желающий сможет посмотреть, во что все это обойдется именно в его варианте. Естественно, необязательно использовать именно DE2-115, для ориентира привожу требуемые ресурсы FPGA:

Следует учесть, что здесь еще присутствует куча артефактов, использовавшихся для отладки, да и сам код практически не оптимизировался.

Что делать со всем этим (и делать ли вообще что-либо) – не совсем уверен. В ходе процесса очередной раз стало понятно, что, хотя на энтузиазме и эрудиции тоже можно кое-чего добиться, формальное знание основ позволило бы все ускорить, избежать многих граблей, а главное – больше сконцентрироваться на творчестве, а не изобретении велосипеда с квадратными колесами. Поэтому пока есть большое желание заполнить каким-нибудь экспресс-методом прорехи (вернее, зияющие дыры) в знании как просто основ электроники и схемотехники вообще, так и VHDL в частности. Насколько это получится, увидим – всегда присутствует проблема в мотивации и наличии свободного времени.

Итак, почему современные настольные компьютеры (за исключением компьютеров фирмы Apple) до сих пор величают IBM-совместимыми, хотя доля ПК, произ­веденных непосредственно самой фирмой IBM, достаточно мала? Дело в том, что только фирма IBM на заре производства персональной компьютерной техники в своем варианте компьютера продекларировала принцип «открытой архитектуры». Это означало, что фирма IBM, в отличие от всех других производителей, не была намерена делать секрета из того, что именно находится внутри ее персональных
компьютеров, а главное - она открыто поощряла другие фирмы как выпускать комплектующие для IBM-совместимых компьютеров, так и производить точно такие же компьютеры, которые с того момента и стали называться IBM-совместимыми

Именно благодаря такой политике IBM-совместимые компьютеры плотно оккупировали рынок, совершенно вытеснив всех имеющихся на тот момент конкурентов, коих было немало: многие
совершенно случайно фирмы выпускали свои собственные персональные компьютеры, архитектура которых была совершенно закрытой- Commodore, Olivetti...

Однако парадокс заключался в том, что, подарив миру IBM-совместимые компьютеры, сама фирма достаточно быстро потеряла главенствующие позиции в их производстве. Пользуясь полностью открытой и хорошо документированной архитектурой этих машин, различные производители стали выпускать свои собственные модификации, которые часто были намного лучше IBM моделей, в результате чего на арену вышли такие известные фирмы, как Compaq, Hewlett Packard, Acer, Dell и прочие.

Кроме того, открытость архитектуры привела к появлению так называемых Noname (безымянных) компьютеров, которые, как игрушечный компьютер, были составлены из комплектующих совершенно различных, не слишком известных производителей. Впрочем, нужно отметить, что практически все из так называемых brand-name (бренд-нейм - известная марка) компьютеров собираются из комплектующих различных фирм. А задача фирмы, которая ставит свою марку, - обеспечить подбор этих комплектующих и высокий контроль качества.

Существует, впрочем, один-единственный, совершенно отдельный тип персональных компьютеров, который не является IBM-совместимым. Это компьютеры фирмы Apple, которые производит только она. Apple-компьютеры нередко используются как персональные машины, но основное их предназначение - издательство и полиграфия.