[FPGA, Прототипирование, Схемотехника, Производство и разработка электроники, DIY или Сделай сам] Реализация процессорной архитектуры из книги Чарльза Петцольда «Код. Тайный язык информатики»

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
06-Фев-2021 19:30

О книгеНаверное многие, из тех, кто увлекается изучением того, как работает компьютер на самом низком уровне читали такие книги как: Таненбаум "Архитектура компьютера" или Харрис, Харрис "Цифровая схемотехника и архитектура компьютера", которые безусловного являются объемлющими трудами и хорошими книгами для обучения. Но если вы не являетесь инженером, но всё равно хотите погрузиться в мир цифровых вычислений и более глубоко понять то, а как же работает компьютер. В этом вам сможет помочь книга Чальза Петцольда "Код. Тайный язык информатики", которая начинает свой рассказ от причин, по которым людям понадобился обмен информацией и её обработка , с какими проблемами при этом столкнулись и заканчивает рассказам об устройстве реальных операционных систем и процессоров и их архитектуру. При этом автором был отлично подобран уровень абстракции, которого он придерживался при написании. В каких-то моментах подробно описывая работу элементарных частей процессора, а в других рассказывая простыми словами о сложных вещах.Описание архитектурыТак в главе 17 "Автоматизация" автор, начиная с описания с того, как автоматизировать суммирование данных с промежуточным сохранением состояния между операциями, переходит к реализации архитектуры с набором команд, достаточным для исполнения практически любых вычислений. Эта архитектура отличается от используемых тем, что размерности шины адреса, шины данных, и машинного слова имеют разные размерности. Обращение к памяти является является побайтовой, что является достаточно обычным. Машинное слово фиксированной длины little-endian состоит из 12 бит или 3 байта, разделённых на две части. Младший байт слова содержит код операции содержит номер команды, старшие два - её аргумент. Из-за ограничений тракта данных на один такт процессора тратится 4 такта счётчика, из которых 3 уходят на чтение команды и 1 на исполнение вычислений. Архитектурой описывается один программно доступный регистр общего назначения, в котором сохраняется результаты выполнения операций с АЛУ, а также 2 регистра-флага, являющихся аналогами C и Z регистра CPSR архитектуры ARM и означающими то, имел ли результат последней операции, выполненной с помощью АЛУ, бит переноса или равнялся нулю соответственно. Архитектура описывает 12 команд, которые можно логически разделить на 4 группы:
  • Операции взаимодействия с внутренним регистром
  • Загрузить
  • Сохранить
  • Арифметические операции
  • Сложить
  • Вычесть
  • Сложить с переносом
  • Вычесть с переносом
  • Операции перехода (условного и безусловного)
  • Перейти
  • Перейти если 0
  • Перейти если перенос
  • Перейти если не 0
  • Перейти если не перенос
  • Операция останова
  • Остановить
Так как количество операций, которые могут быть закодированными с помощью 8 бит равняется 2^8=256, то для расширения архитектура оставляет 256-12=244 вариантов команд, к которым могут быть добавлены, например различные часто используемые арифметические операции
  • Побитовое И (AND)
  • Побитовое ИЛИ (OR)
  • Побитовое НЕ (NOT)
  • Побитовое исключающее ИЛИ (XOR)
  • Логический сдвиг влево
  • Логический сдвиг вправо
  • Арифметический сдвиг
также регистры флаги могут быть расширены состояниями N - последние операция отрицательная и V - последние операция имеет переполнением и соответствующие этим состояниям условия для перехода и их комбинации. Несмотря на то, что архитектура не предполагает увеличения количества внутренних регистров общего назначения я считаю, что это возможно реализовать.В варианте реализации данной архитектуры, предлагаемой автором возможна реализация конвейерной технологии, однако это не даст существенного прироста производительности из-за большого количества обращений к памяти за данными, то же самое можно сказать и про применение байпаса. Существенно улучшить проблему производительности может только увеличение тракта данных до ширины машинного слова.Наверное самой важной частью системы является интерфейс взаимодействия с человеком. Так в главе 22 "Операционная система" Петцольд демонстрирует панель прямого доступа к памяти. Доступ к памяти осуществляется с помощью перехвата тракта адреса и остановки выполнения текущей программы. Адресация предполагается с помощью ручного ввода значения переключением тумблеров в состояние логического 0 или 1, содержимое ячейки сразу отображается с помощью световых индикаторов. Изменение значения ячейки осуществляется с помощью тумблеров данных и возможно только если активирован тумблер, разрешающий запись. Активация тумблер сброс отвечает за обнуление счётчика команд.
РеализацияНесмотря на все установленные недочёты и предложенные улучшения, для реализации была выбрана цель строгого соответствия архитектуры и её реализации, описанным в книге. Однако эти улучшения могут быть беспроблемно реализованы и добавлены в будущем.МикроархитектураСхема микроархитектуры, предлагаемая автором.
Для реализации микроархитектуры использовалась САПР для ПЛИС Quartus II 13.0sp1, предоставляющая широкие возможности для разработки и отладки ПЛИС. Несмотря на возможность описания архитектуры с помощью специализированных языков таких как VHDL и Verilog, для большей наглядности всё проектирование осуществлялось исключительно в графическом режиме. Широко использовались возможности встроенных функций таких как:
  • lpm_mux (сокр. от multiplexer)
  • lpm_decode
  • lpm_counter
  • lpm_ff (сокр. от flip-flop)
  • lpmaddsub
  • lpm_constant
На начальных этапах разработки тестирование проводилось в программе ModelSim, поставляемой в пакете программ для разработки. На финальных этапах отладка и тестирование производилось непосредственно на самой исполняющей плате с помощью встроенной утилиты In-System Memory Content Editor для изменения состояния входящих данных.В качестве исполняющей платы была выбрана Cyclone II EP2C5 Mini Dev Board на основе чипа ПЛИС EP2C5T144C8, обладающий встроенным кварцевым генератором на 50 МГц, более 80 контактами интерфейса ввода/вывода общего назначения и разъёмом JTAG для прошивки и отладки. Техническим ограничением стал существенно меньший объем оперативной памяти, доступный для использования, вследствие чего для адресации используются только 13 младших бит в отличие от 16 бит, описанных в архитектуре. Однако это не вносит никаких критических изменений в работу процессора и может быть исправлено заменой исполняющей платы на более производительный аналог.
Внешний видЭто изображение сформировало в голове довольно запоминающийся образ и с первого взгляда реализовать такой пульт достаточно не сложно. Для его реализации потребуется 16 + 8 + 3 = 27 двухпозиционных тумблеров, 8 светодиодов и непосредственно листовой материал на котором будет всё размещаться. Использовались микротумблеры MTS-102 ON-ON. В нижнем положении соединяющие верхнюю ножку со средней, в верхнем - нижнюю со средней. Это было удобно, так как по всем нижним можно было пустить высокое напряжении, верхние подключить к земле и снимать значение со средних.
Однако высота крепления тумблера вносило ограничение на толщину материала, то от использования фанеры было решение отказаться. И так как с самого начала была цель придерживаться внешнего вида, как у советских приборов, в качестве фальш панели использовался стеклотекстолит, так как при достаточно небольшой толщине может хорошо выдерживать нагрузки на излом, которые будут создаваться при переключении тумблеров и в отличие от металлов проще обрабатывается, и обладает более высокими прочностными характеристиками чем пластик.Для индикации использовались обычные 5 миллиметровые светодиоды с низким уровнем свечения, размещенные на панели с помощью специальным креплений.Большой проблемой стало нанесение надписей, для этого в Autodesk Fusion 360 была разработана схема расположения надписей на фронтальной панели и с помощью плоттера вырезан шаблон для покраски.
Для питание используется разъем GX16 5P, но для удобства использования впаянный в шнур с USB для удобства использования с обычными блоками питания.Панель размещена на деревянной коробке с защёлкой для удобства доступа к внутренним элементам. Все части из текстолита покрыты бесцветным матовым лаком, а сам корпус - лаком цвета махагон. Штекер расположен со стороны, противоположной панели управления.
Внешний вид в целом соответствует взятому за основу изображению. Для лучшей читаемости нумерация на тумблерах изменена с десятичной записи на шестнадцатеричную.Внутреннее пространствоКак уже было сказано выше в качестве вычислительного модуля была выбрана плата Cyclone II EP2C5 Mini Dev Board на основе чипа ПЛИС EP2C5T144C8. Для подключения тумблеров и светодиодов к плате было решено не использовать пайку и использовать провода, используемые для макетного моделирования. Однако другая сторона распаяна к тумблерам или светодиодам, к которым относятся.
Так как хотелось сделать коробку ещё и автономной, решил внедрить плату от powerbank'a, которая включает в себя плату регулировки заряда литиевых аккумуляторов и повышения напряжения до 5 вольт, также к ней припаян бокс для аккумулятора размера 18650.Для удобства крепления вычислительной платы и платы питания внутри корпуса в САПР Autodesk Fusion 360 были разработаны крепления, приклеенные к тыльной стороне.
В заключение хочется сказать, что внутреннее пространство выглядит достаточно пустым и незаполненным, однако это позволят управляющим проводам располагаться более свободно при закрытии.
ИтогС появлением ПЛИС, разработчикам стало удобнее прототипировать свои устройства. И даже задача проектирование своего процессора не кажется такой невозможной. Конечно, в данном проектке был задействован лишь малый функционал данного устройства. Однако ПЛИС не пользуются высокой популярностью среди разработчиков любителей, в отличие от микроконтроллеров, хотя имеют более высокую скорость быстродействия, что может быть полезно в системах реального времени и IoT.Отдельная благодарность блогеру Стасу Васильеву за рекомендацию данной книги и вдохновлении работы над данный проектом. Поскольку сейчас одной из самых важных задач является заинтересовать инженеров в работе над интересными проектами.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_fpga, #_prototipirovanie (Прототипирование), #_shemotehnika (Схемотехника), #_proizvodstvo_i_razrabotka_elektroniki (Производство и разработка электроники), #_diy_ili_sdelaj_sam (DIY или Сделай сам), #_quartus_ii, #_modelsim, #_shemotehnika (схемотехника), #_diy, #_kod (код), #_arm, #_protsessory (процессоры), #_fpga, #_prototipirovanie (
Прототипирование
)
, #_shemotehnika (
Схемотехника
)
, #_proizvodstvo_i_razrabotka_elektroniki (
Производство и разработка электроники
)
, #_diy_ili_sdelaj_sam (
DIY или Сделай сам
)
Профиль  ЛС 
Показать сообщения:     

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

Текущее время: 22-Ноя 07:05
Часовой пояс: UTC + 5