Что такое гал в алгоритме
Перейти к содержимому

Что такое гал в алгоритме

  • автор:

Применение параллельных вычислений в задачах многокритериальной оптимизации и их реализация в среде MatLab Текст научной статьи по специальности «Компьютерные и информационные науки»

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Филатова Е.С., Филатов Д.М.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Филатова Е.С., Филатов Д.М.

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

Минимизация потерь энергии при пуске частотно-регулируемого привода на основе генетического алгоритма оптимизации

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

Метод мета-оптимизации поисковых алгоритмов оптимизации
Генетический алгоритм поиска параметров ПИД-регуляторов системы стабилизации шагающего робота
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Применение параллельных вычислений в задачах многокритериальной оптимизации и их реализация в среде MatLab»

сдвигом и поэтому хорошо работают только для неподвижных объектов. При сканировании, человек обычно находится в ортостатическом положении (неподвижном), однако при этом все равно происходят непроизвольные телодвижения. Они приводят к динамическим погрешностям для ВФ, и поэтому, оптимальным методом для определения 3D рельефа человека является метод ПФ, который позволяет по единственному изображению (со спроецированными контрастными полосами) восстановить 3D рельеф с максимальной точностью и достаточным разрешением. В современных медицинских системах [6] точность сканирования достигает 0.1 мм.

1. Salvi J., Pages J., Baffle J. Pattern codification strategies in structured light systems // Pattern Recognition. — 2004. — Vol. 37. — P. 827-849.

2. Geng J. Structured-light 3D surface imaging: a tutorial // Advances in Optics and Photonics. — 2011. — № 3. — P. 128-160.

3. Gorthi S. S., Rastogi P. Fringe Projection Techniques: Whither we are? // Optics and Lasers in Engiering. — 2010. — Vol. 48. — P. 133-140.

4. Yu W. Development of a three-dimensional anthropometry system for human body composition assessment // Ph. D. thesis, University of Texas at Austin, 2008.

5. Womack K.H. Interferometric phase measurement using spatial synchronous detection // Opt. Eng. — 1984. — Vol. 23, No. 4. — P. 391-395.

6. Сарнадский В.Н., Уберт А.И. Алгоритмы автоматического восстановления 3D модели поверхности туловища человека методом компьютерной оптической топографии // Материалы XI международной конференции «Актуальные проблемы электронного приборостроения». — 2012. — Т. V — С. 81-88.

ПРИМЕНЕНИЕ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ В ЗАДАЧАХ МНОГОКРИТЕРИАЛЬНОЙ ОПТИМИЗАЦИИ И ИХ РЕАЛИЗАЦИЯ В СРЕДЕ MATLAB1

© Филатова Е.С.*, Филатов Д.М.Ф

Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина), г. Санкт-Петербург

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

1 Работа выполнена при финансовой поддержке гранта Президента Российской Федерации № 14^56.14.3734-МК.

* Доцент кафедры Систем автоматического управления, кандидат технических наук.

* Доцент кафедры Систем автоматического управления, кандидат технических наук.

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

Ключевые слова генетический алгоритм, параллельные вычисления, математический пакет MatLab.

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

Возможны два подхода в реализации распараллеливания генетических алгоритмов. Первый подход основан на создании одной из существующих моделей параллельных генетических алгоритмов. Такими моделями могут быть [2]:

— модель «мастер-раб» (master-slave GAs). Особенность подхода состоит в синхронной работе популяций. Популяции обладают общим адресным пространством. Мастер или управляющий процесс осуществляет развитие популяции, а подчиненные занимаются расчетом целевой функции;

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

— модель «сетевого взаимодействия» (coarse-grained GAs). Каждый процесс моделирует свою популяцию, используя собственное адресное пространство. Взаимодействие с другими популяциями определяется из описания связей (топологии сети взаимодействия).

Второй подход предполагает применение моделей параллельного программирования, таких как MPI, OpenMP, PVM, Pthreads для распараллеливания исполнения программы, реализующий генетический алгоритм между некоторыми кластерами. В данной работе распараллеливание генетического алгоритма осуществляется с использованием модели OpenMP.

Организация параллельных вычислений в MatLab

Для реализации технологии параллельных и распределенных вычислений в MatLab предусмотрены два пакета расширения, работающих в связке: DCT (Distributed Computing Toolbox) и MDCE (MatLab Distributed Computing Engine).

Дадим несколько определений основным понятиям, которые будут встречаться далее.

Клиент — текущая сессия MatLab, в которой определяются и из которой отправляются задачи.

Кластер — набор компьютеров, объединенных в сеть для решения общей вычислительной задачи.

Главный узел — узел кластера, предназначенный для запуска менеджера задач.

Узел — компьютер, который является частью кластера.

Задача — полностью описанная вычислительная операция большой размерности для выполнения в MatLab, состоящая из набора подзадач.

Подзадача — некоторый сегмент основной задачи, которая будет отправлена на исполнение в рабочий процесс.

Менеджер задач, планировщик — процесс, образующий систему очередей из задач и распределяющий подзадачи для рабочих процессов.

Рабочий процесс — системный процесс MatLab, выполняющий вычисление подзадач.

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

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

Рис. 1. Конфигурация распределенных вычислений

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

цессами выполнены все задачи, менеджер задач начинает управление следующей группой задач с доступными рабочими процессами.

Если используется менеджер задач The MathWorks, каждая машина, на которой запущен рабочий процесс или менеджер задач должна иметь MDCE службу. Служба MDCE восстанавливает рабочий процесс и менеджер задач в случае неисправности машины, то есть она автоматически возобновляет их сессии, которые были запущены перед аварией [3].

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

Типичная сессия параллельных вычислений для клиента включает следующие шаги:

1. Получение ссылки на менеджер задач при помощи специальной функции MatLab.

2. Формирование задачи, в которую будут записаны некоторые подзадачи.

3. Формирование подзадачи — сегмента основной задачи.

4. Постановка задачи в очередь на исполнение в менеджер задач.

5. Получение результатов работы.

6. Удаление задачи и освобождение ресурсов памяти.

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

1. Запуск службы MDCE.

2. Запуск планировщика. Запуск менеджера задач осуществляется при помощи команды Startjobmanager, а при помощи команды Stopjob-manager его остановка.

3. Запуск рабочих процессов на разных узлах. Запуск рабочего процесса аналогичен запуску менеджера задач и осуществляется с помощью команды Startworker. Командой Stopworker можно остановить исполнение рабочего процесса.

4. Получение ссылки на системные процессы необходимо для управления такими системными процессами как менеджер задач и рабочий процесс из клиентской сессии MatLab. В этом случае в рабочей области MatLab формируется переменная с помощью свойств и методов которой становится возможным управление этими объектами. Для поиска ссылки на указанные процессы используется функция findResource.

В качестве примеров будут рассмотрены две задачи, решаемые на базе генетических алгоритмов: параметрическая идентификация адаптивного регулятора и поиск наилучшей архитектуры нейро-нечеткой сети. Далее

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

Генетический алгоритм определения параметров адаптивного регулятора

Задачей генетического алгоритма является подбор параметров адаптивного регулятора с сигнальным алгоритмом адаптации [k r2] для электрогидравлического привода рулевой поверхности самолета, при которых обеспечивается наискорейшее затухание переходного процесса разности выходных координат объекта управления и эталонной модели.

Обобщенная схема выполнения разрабатываемого генетического алгоритма включает следующие шаги.

1. Создание начальной популяции.

Каждая популяция представляет собой набор из 20 хромосом, в свою очередь представляющих собой пары коэффициентов адаптивного регулятора [kj r2J, где i = 1^20. Двоичное кодирование хромосом не применяется, каждая хромосома состоит из двух чисел типа double (см. рис. 2).

хромосома 1 хромосома 2

Рис. 2. Формирование начальной популяции

Обозначения, принятые на рис. 2: к — шаг выполнения генетического алгоритма (0 обозначает начальную популяцию), Р — текущая популяция, К -коэффициенты, входящие в состав хромосомы. Запись К(0) обозначает, что данная хромосома сформирована на начальном шаге (начальная популяция).

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

2. Оценивание приспособленности.

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

[K(0)11 K(0)i2] [K(0)21 K(0)22]

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

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

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

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

3. Применение генетических операторов.

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

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

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

mutationChildren(i,:) = parent + scale .* randn(1,length(parent)).

Параметр scale, который входит сомножителем в данном выражении определяет степень мутации. Если этот параметр равен 0, то никаких изменений в особи не происходит.

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

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

5. Условие останова алгоритма.

Условием останова в данном случае является два критерия:

1. Достигнуто конечное число итераций равное 50.

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

Генетический алгоритм поиска наилучшей архитектуры нейро-нечеткой сети

Задачей генетического алгоритма является подбор архитектуры нейро-нечетких сетей (ННС), входящих в систему краткосрочного прогнозирования электропотребления, при которых достигается наилучшая точность прогнозирования. Построение ННС осуществляется встроенной функцией Matl-Lab genfis2, которая используется алгоритм кластеризации данных для генерирования ННС. Радиусы влияния кластеров, которые определяют будущую архитектуру ННС и являются параметром, подлежащим подбору при помощи генетического алгоритма.

Подробно реализация данного генетического алгоритма изложена в [4] и практически аналогична схеме, описанной для предыдущей задачи с двумя отличиями. Первое отличие заключается в размере и виде популяции, которая представляет собой набор особей [Гц r2i r3i r4i], i = 1^30. Каждая хромосома в особи является радиусом кластеризации для каждой из четырех ННС, реализующих систему прогнозирования. Начальная популяция задается случайным образом в интервале [0, 1].

Второе отличие заключается в реализации процедуры отбора турнирным методом.

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

Реализация параллельного генетического алгоритма в среде MatLab

В качестве кластера для реализации распараллеливания были использованы две рабочих станции (ПК) на базе двуядерного процессора. На каждом ПК устанавливается среда MatLab Simulink и пакеты расширений Distributed Computing Toolbox и MATLAB Distributed Computing Engine, а так же вспомогательный инструментарий Genetic Algorithm Toolbox для реализации ГА.

Для реализации параллельных вычислений создается параллельная программа и используется корневая (открытая) программа математического

пакета MatLab Fcnvectorizer. Эта программа является частью инструментария Genetic Algorithm Toolbox для реализации ГА. Важным шагом, для работы параллельной программы, является запись в корневой программе Fcnvectorizer команд, которые осуществляют подготовку к параллельным вычислениям и по которым происходит непосредственный запуск параллельной программы.

Для выполнения поставленных задач потребуется разработка и модернизация следующих программ:

1. Программа моделирования Start. В данной программе реализуется настройка и вызов на исполнение генетического алгоритма.

2. Программа Fcnvectorizer (корневая программа Genetic Algorithm Toolbox). В ней происходит настройка кластера состоящего из двух рабочих станций, создание параллельной задачи, её свойств, создание параллельного задания, выполнение задачи и вывод результата. Также в этой программе происходит распараллеливание популяции между двумя узлами кластера при помощи вызова специально созданных подпрограмм Par_chromos и Gal. Таким образом, происходит параллельная работа двух независимых процессов, каждый из которых выполняется в отдельном программном потоке.

i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Par_chromos — параллельная задача. Здесь происходит процесс распараллеливания исполнения программы Gal на два рабочих процесса.

Gal -программа расчета функции оптимизации для ГА. В ней после параллельного моделирования параметров (для первой задачи — это моделирование в Simulink, для второй — запуск системы прогнозирования) происходит получение значения функции приспособленности.

Параллельная программа Par_chromos является подпрограммой корневой программы Fcnvectorizer.

Алгоритм распараллеливания вычислений следующий:

1. Формирование генетическим алгоритмом популяции состоящей из определенного набора хромосом. Популяция будет делиться на количество узлов в кластере.

2. Распараллеливание процесса моделирования используя уникальный идентификатор labindex в программе Par_chromos. Он присваивает каждому рабочему процессу свой порядковый номер. Наш кластер состоит из двух рабочих станций. Если labindex равен единице, то первый рабочий процесс (первый компьютер) из кластера моделирует первую половину популяции. Если labindex равен двум, второй рабочий процесс (второй компьютер) из кластера моделирует вторую половину популяции.

3. Далее программа Gal запускает работу генетического алгоритма.

Таких итераций может быть множество. Процесс распараллеливания

будет проходить каждый раз.

Особенности распараллеливания, связанные с MatLab и Simulink:

1. Математический пакет MatLab должен быть запущен на всех рабочих станциях входящих в кластер;

2. Брандмауэр операционной системы должен быть либо отключен, либо следует произвести его настройку;

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

4. Все созданные для параллельной работы программы должны находиться на главной рабочей станции;

5. Параметры, которые требуются для настройки схемы Simulink, необходимо прописать как в командной строке MatLab, так и непосредственно в параллельной программе;

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

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

Организация программного распараллеливания работы генетического алгоритма между двумя рабочими станциями позволила повысить быстродействие в среднем в 1,5-2 раза по сравнению с реализацией алгоритма на одном ПК.

1. Второв В.Б., Филатов Д.М. Вопросы расчета параметров адаптивного регулятора в системе с эталонной моделью и сигнальной адаптацией // Известия СПбГЭТУ «ЛЭТИ». — СПб., 2009. — № 10. — С. 39-46.

2. Кныш Д.С., Курейчик В.М. Параллельный генетический алгоритм с нечетким оператором миграции // «Искусственный интеллект». — Донецк, 2010. — № 3. — С. 73-80.

3. Оленев Н.Н. Параллельное программирование в Matlab и его приложения. — М.: ВЦ РАН, 2007. — 120 с.

4. Филатова Е.С., Филатов Д.М., Стоцкая А.Д. Генетический алгоритм поиска наилучшей архитектуры нейронечеткой сети // Тезисы докл. Меж-дунар. конф. по мягким вычислениям и измерениям SCM-2015 (Санкт-Петербург, 19-21 мая 2015 г.). — Saint-Petersburg, 2015. — Vol. 1. — P. 379-382.

Что такое Project Galaxy (GAL)?

Что такое Project Galaxy (GAL)?

Project Galaxy — это новая криптовалюта, основанная на блокчейне Ethereum. Он был создан для того, чтобы обеспечить более безопасную и удобную платформу для онлайн-платежей.

  • 1 Токен Founders of Project Galaxy (GAL)
  • 2 Биография основателя
  • 3 В чем ценность Project Galaxy (GAL)?
  • 4 Лучшие альтернативы Project Galaxy (GAL)
  • 5 Инвесторы
  • 6 Зачем инвестировать в Project Galaxy (GAL)
  • 7 Project Galaxy (GAL) Партнерство и отношения
  • 8 Хорошие особенности Project Galaxy (GAL)
  • 9 КАК
  • 10 Как начать с Project Galaxy (GAL)
  • 11 Поставка и распределение
  • 12 Пробный тип Project Galaxy (GAL)
  • 13 Алгоритм
  • 14 Основные кошельки
  • 15 Какие основные биржи Project Galaxy (GAL)
  • 16 Project Galaxy (GAL) Интернет и социальные сети

Токен Founders of Project Galaxy (GAL)

Основателями монеты Project Galaxy (GAL) являются инженер-программист и предприниматель Джимми Нгуен и финансовый аналитик Джон Нгуен.

Биография основателя

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

В чем ценность Project Galaxy (GAL)?

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

Лучшие альтернативы Project Galaxy (GAL)

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

2. НЕО
NEO — это блокчейн-платформа, которая позволяет создавать смарт-контракты и цифровые активы. Он имеет широкий спектр функций, включая сильную систему управления и активное сообщество.

3. ИОТА
IOTA — это блокчейн-платформа, которая позволяет создавать децентрализованные приложения и транзакции данных. Он уделяет большое внимание масштабируемости и низким комиссиям, что делает его привлекательным вариантом для предприятий, желающих внедрить технологию блокчейна.

4. ТРОН
TRON — это блокчейн-платформа, которая позволяет создавать децентрализованные приложения и цифровые активы. Он уделяет большое внимание конфиденциальности и безопасности, что делает его привлекательным вариантом для компаний, желающих внедрить технологию блокчейна в таких чувствительных областях, как здравоохранение или финансы.

Инвесторы

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

Зачем инвестировать в Project Galaxy (GAL)

На этот вопрос нет универсального ответа, так как лучший способ инвестировать в Project Galaxy (GAL) зависит от ваших индивидуальных обстоятельств. Однако некоторые потенциальные причины для инвестирования в GAL включают:

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

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

3. У GAL есть четкое представление о том, как можно использовать и злоупотреблять ее платформой, что дает инвесторам уверенность в том, что компания движется в правильном направлении.

Project Galaxy (GAL) Партнерство и отношения

Партнерские отношения с Project Galaxy (GAL) важны, поскольку они помогают продвигать и связать научные исследования с промышленностью. Партнерские отношения между GAL и ее партнерами помогают улучшить качество исследований, а сами партнерские отношения могут привести к новым открытиям.

Одним из наиболее важных партнерских отношений GAL является Национальный научный фонд (NSF). NSF помогает финансировать большое количество проектов GAL, и это партнерство привело ко многим успешным открытиям. Кроме того, NSF также обеспечивает обучение и поддержку исследователей GAL.

Еще одно важное партнерство — с Министерством энергетики (DOE). Министерство энергетики помогает финансировать ряд проектов GAL, посвященных исследованиям в области энергетики. Это партнерство привело ко многим успешным открытиям, в том числе к работе в области солнечной энергии и аккумуляторов.

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

Хорошие особенности Project Galaxy (GAL)

1. Это платформа, которая обеспечивает бесшовную интеграцию различных блокчейнов и криптовалют.

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

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

КАК

Не существует однозначного способа проецировать Galaxy (GAL). Разные инвесторы будут иметь разные предпочтения, поэтому важно провести собственное исследование, прежде чем инвестировать.

Один из подходов заключается в использовании инструмента прогнозирования криптовалюты, такого как CoinMarketCap.com или Coincap.io. Эти инструменты позволяют вводить информацию о блокчейне Galaxy (GAL) и условиях рынка криптовалют, а затем генерировать прогноз будущей стоимости Galaxy (GAL).

Другой подход заключается в использовании торговой платформы, такой как Kraken или BitMEX, и торговле Galaxy (GAL) на основе прогнозов аналитиков криптовалюты. Такой подход позволяет получать прибыль на основе прогнозов других, а не полагаться на удачу или случайность.

Как начать с Project Galaxy (GAL)

Первый шаг — создать учетную запись на веб-сайте Project Galaxy. После того, как вы создали учетную запись, вам нужно будет выбрать проект.

Следующий шаг – выбор команды. Вы можете присоединиться к команде, нажав кнопку «Присоединиться к команде» на странице проекта или выполнив поиск интересующей вас команды.

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

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

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

Поставка и распределение

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

Пробный тип Project Galaxy (GAL)

Алгоритм

Алгоритм Project Galaxy (GAL) представляет собой вероятностный алгоритм оценки количества галактик в заданном объеме пространства. Алгоритм использует статистическую модель для оценки количества галактик в заданном объеме, а затем использует байесовский вывод для уточнения оценки по мере сбора новых данных.

Основные кошельки

Существует несколько основных кошельков Project Galaxy (GAL). Одним из них является официальный кошелек GAL, который доступен на блокчейн-платформе Galaxy. Другой — кошелек MyGAL, который доступен в мобильном приложении MyGalaxy. Наконец, есть кошелек GALX, который доступен на платформе блокчейна GALX.

Какие основные биржи Project Galaxy (GAL)

Основными биржами Project Galaxy (GAL) являются Binance, Kucoin и HitBTC.

PAL, GAL и путешествие в цифровое ретро

Идея сделать цифровые логические микросхемы с изменяемой структурой была всегда. Почему? Достаточно посмотреть на толстенный каталог чипов серии TTL 74xx (или советской К155), чтобы такая идея самозародилась. В СССР почти у каждого инженера и радиолюбителя был справочник В.Л. Шило «Популярные цифровые микросхемы», который вышел каким-то невероятным тиражом. Но всё равно, хотелось иметь некий «универсальный кристалл», из которого можно сделать все остальные микросхемы (ну хорошо, не все, но многие).

Конечно же, полупроводниковая промышленность тоже была не прочь удовлетворить такой спрос. Поэтому, начиная с конца 1960-х, на рынке каждый год появлялось огромное количество подобных устройств из класса PLD (Programmable Logical Device), самых разнообразных архитектур. Это было интереснейшее время! На рынке постоянно появлялось что-нибудь новенькое. Здесь были и различные ULA и БМК и EPROM-устройства на базе пережигаемых перемычек (82Sxxx) и PLA, у которых программировались оба слоя: «И» и «ИЛИ» (привет нашим К556РТ1 и К556РТ2) и т.д. Обзор этих ретро-технологий – тема для отдельной статьи. Мы же сделаем лишь обзор того, что «выстрелило» и стало мэйнстримом.

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

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

Так вот, в далекие 1970-е годы компания-производитель ПЗУ Monolithic Memories Inc. (MMI) выпустила на рынок очередное семейство программируемых чипов. Семейство ВНЕЗАПНО оказалось настолько удачным, что в 1978 году MMI зарегистрировала торговую марку PAL® (Programmable Array Logic) и стала лицензировать технологию таким гигантам, как Texas Instruments (серия TIBPAL), National Semiconductor, Philips (PLUS), AMD (AMPAL) и другим.

Даже в СССР не отставали и выпустили клоны, серию К1556.

В чем же секрет? Спроектированное инженерами и для инженеров семейство MMI PAL представляло собой практически чистое воплощение идеи ДНФ (Дизъюнктивная Нормальная Форма).

Здесь надо сделать логическое отступление и взглянуть, что же это такое, ДНФ и откуда оно взялось.

Матлогика

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

Лирическое отступление: есть огромное искушение ничего не писать, а просто посоветовать взять и прочитать недавно переведенный учебник Харрис&Харрис «Цифровая схемотехника и архитектура компьютера», а конкретно главу 2 «Проектирование комбинационной логики». Это отличная книга! Там даже есть параграф про PAL (п.5.6 «Матрицы логических элементов»), но такое ощущение, что его безжалостно сократили в очередной редакции.

А для тех, кто захотел канонично, «от печки», разобраться в предмете поглубже (бывает!) можно порекомендовать книги 60-х годов по проектированию ЭВМ. Например, книгу “Синтез цифровых автоматов” В.М. Глушкова (тот самый, который ОГАС!) (М. Государственное издательство физико-математической литературы, 1962г). Книга настолько олдовая, что фамилия Карно записывается как Карнаут. Или можно предложить книгу ”Синтез схем электронных цифровых машин” (Е.Н.Вавилов, Г.П.Портной М. ”Советское радио” 1963).

В современных отечественных учебниках, чем дальше, тем больше этот раздел ужимается.
Например учебник Угрюмов Е.П. «Цифровая схемотехника» издания 2007 года еще содержал главу про PAL, а издания 2010 — уже нет. В настоящее время данная наука почти полностью перекочевала в пыльные бумажные методички кафедр по специальности 230101. Вдобавок, попытка дать студентам этот материал наталкивается на стойкое сопротивление: разговоры про «основы» воспринимаются учащимися как «too old» то есть как совершенно ненужный, устаревший хлам. Даже тут, на Хабре есть несколько статей на данную тему, и комментарии наполнены стонами ”Да-да! Нас тоже зачем-то насиловали этим весь первый курс!”.

Так вот, автор сбрасывает себя обязанность писать про пресловутые ”основы”. Предполагается, что читатель, который заглянул на огонек, всё-таки понимает, что такое булева алгебра, что такое И, ИЛИ, НЕ, знает теорему де Моргана и умеет читать схемы на логических элементах.

ПРИМЕЧАНИЕ: Мне тут подсказывают, что в современном курсе цифровой электроники эта дисциплина (Дискретная математика) и Цифровая схемотехника чаще всего разделены на два предмета и учебники у них — разные. А Харрис&Харрис в попытке впихнуть все в одну книгу породил монстра на 1600 страниц. Ну OK.

Ах да, ДНФ. В старых книжках говорится (объясняется — почему), что при достаточно сложном логическом выражении его лучше всего представить (и это можно сделать для любого выражения!) в виде дизъюнктивной нормальной формы (sum of product, SOP). Несмотря на страшное название, это очень просто. Возьмем логическую функцию Y от трех переменных, A, B, C. Пусть она принимает значение «истина» тогда и только тогда, когда все три входные переменные равны нулю или же все они равны единице. В ДНФ это запишется крайне просто:

Это так называемая алгебраическая форма. Операция «ИЛИ» тут записывается как «+», а операция «И» — как умножение и, как в обычной алгебре, опускается. Так получилось, что существует множество форматов записи (синтаксисов) булевых выражений. Вот в другой записи:

Си-шное выражение для bool переменных:

Или даже так (синтаксис PALASM):

То есть ДНФ (в алгебраической форме) выглядит как цепочка сложений т.е. многочлен (логическое ИЛИ) из произведений (логическое И) входных переменных (sum of product), причем только тех комбинаций, для которых должна получаться «истина». Интуитивно это довольно понятно: Истина, когда это И это, ИЛИ же когда то И то. Как выше упоминалось, в форме ДНФ можно представить любое логическое выражение (и помним, что мы не углубляемся в СДНФ, КНФ, СКНФ, критерий Поста и т.д.).

Оптимизация, оптимизация

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

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

Для изучения механизма работы карты Карно можно, опять же, отправить к учебнику Харрис&Харрис глава 2.7. Но очень уж изящное решение! Кроме того, карты Карно иногда спрашивают на собеседованиях. Карты Карно предназначены для визуального безкомпьютерного упрощения выражений с количеством переменных до 6.

Давайте посмотрим на типичную карту Карно, например на 4 переменных:

Самое важное (и в чем состоит суть изобретения Мориса Карно) – это то, что соседние клеточки по вертикали и горизонтали отличаются значением ровно одной переменной. А если в соседних ячейках стоят «1» то эту переменную можно исключить. Причем «края» карты Карно подразумеваются «склеенными». Так что наша функция ужимается до

Если попытаться изобразить в 3D карту Карно для 4-х переменных, ее можно будет представить как развертку такого «угловатого тора», имеющего 16 граней (нарисовано в OpenSCAD ).

Возвращаясь к PAL

Обогатившись такими знаниями, давайте вернемся к нашим PAL-кам и посмотрим на их внутреннее устройство. И опять же, хорошим подспорьем тут будет учебник Харрис&Харрис «Цифровая схемотехника и архитектура компьютера», а конкретно параграф про PAL (п.5.6 «Матрицы логических элементов»).

При разработке PAL применяется своеобразная графическая запись, первоначально, видимо, предназначенная для ручного кодирования (до появления PALASM).

Давайте возьмем одну ячейку PAL, самого классического PAL16L8:

Итак, сверху вниз идут колонки – входные переменные. Из них: 10 шт. – это самые настоящие входы, то есть «ножки» микросхемы, а 6 шт. – это «возвраты» внутри чипа, что позволяет создавать более сложные многоступенчатые выражения. Понятно, что каждая из этих 16 переменных существует в прямой и инверсной форме, итого мы видим 16*2=32 колонки. Слева мы видим ввод одной переменной в матрицу, в прямом и инверсном виде (вывод 2).

Все эти «вертикальные» переменные одновременно поступают на элементы «И», которые могут использовать некоторые их них (а могут не использовать). Схема примерно такая (тут нарисованы две входные переменные и два элемента «И»):

Мы видим «плавкие перемычки» (fuse, F1..F4 и F5..F8), которые задают, какие переменные подключены к «И». Именно эти fuse и программируются и задают логическую функцию PAL. Картинка получается довольно громоздкая, поэтому применяют такую сокращенную графическую запись (крестики – это подключенные входы):

Вернемся к схеме ячейки PAL:

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

Далее по схеме мы видим, что в PAL16L8 имеется 7 штук таких «И-шек», объединенных по «ИЛИ». Структура у «ИЛИ» у PAL фиксированная (в отличии от PLA и других архитектур) и не программируется. Кстати, обратите внимание, можно использовать меньшее количество «ИЛИ» (просто не задавая функций у «И» в ячейке), а вот больше – нельзя!

Как несложно заметить, такая конструкция и является физической реализацией ДНФ или SOP (Sum Of Product – то есть сумма произведений). Бинго!

Такие устройства стали называться SPLD (Simple PLD) в противовес CPLD (Complex PLD) и FPGA. Про CPLD кстати, имеется отдельная статья.

Такая простая и элегантная конструкция быстро стала чрезвычайно популярной и стала быстро вытеснять остальные семейства. Вот почему такие гранды, как AMD, Philips, National Semiconductor лицензировали ее.

Популярность PAL-ок пришлась на середину 80-х и начало 90-х. Многие производители чипов, прямо в Datasheet-ах публиковали листинги на PALASM для подключения своих микросхем к другим чипам и к разнообразным микропроцессорным шинам. Некоторые платы начала 90-х представляли собой «россыпи» PAL-ок, на которых были реализованы сложнейшие схемы. Это позволяло быстро выйти на рынок, до начала производства заказных микросхем LSI. (Погуглите, ну скажем, картинки материнской платы EISA i486 Everex Step Mega Cube или Intel iSBC 386. Все узкие микросхемы с бумажками – это PAL ).

Сейчас эту нишу занимают CPLD и FPGA.

Компания MMI выпускала книжки, содержащие массу примеров применения своих микросхем, которые сопровождались забавными рисунками (извините, утащил).

Или даже так, ужас-ужас (Текст: В этой конструкции одна PAL16R8 заменяет 15 TTL микросхем малой и средней степени интеграции ):

Семейство PAL было довольно обширное. Существовали разновидности на разное количество ячеек и входов. Были разновидности с триггерами, что позволяло делать на них синхронные схемы и даже маленькие конечные автоматы (например PAL16R8). Существовали универсальные (Versatile) разновидности, в которых можно выбирать комбинаторную логику или триггера (PAL16V8). Существовали чуть более крупные PAL-ки в 24-выводном корпусе, типа PAL22V10. Микросхемы могли быть упакованы в различные корпуса и могли быть разной «скорости», от -5 до -25 наносекунд. Наконец, существовали низкопотребляющие варианты и варианты в CMOS исполнении (например Texas Instrument TICPAL или Cypress Semiconductor PALC).

PALASM

Невероятный успех микросхемам PAL фирмы MMI принёс еще один компонент, без которого покорение рынка было бы немыслимо. Это — утилита PALASM. С ее помощью создание прошивки для PAL стало делом настолько легким и простым, что любой инженер с нормальной подготовкой, понимал идею практически сразу. В PALASM вводится названия пинов и логические выражения в человеческой алгебраической форме (которые обычно выглядят как ДНФ), после чего PALASM выдает файл прошивки для программатора (JEDEC). Грубо говоря, компания MMI сделала тот шаг, который когда-то в 1950-е прошли обычные компьютеры, при переходе от ручного выписывания двоичных кодов к более понятной записи выражений машинного языка (ассемблера). А сам PALASM первых версий, в свою очередь, был написан на языке FORTRAN IV и распространялся в исходных текстах, что позволяло запускать его на любой тогдашней машине, где был компилятор, вплоть до ранних персоналок под CP/M и DOS. Да, да, когда-то FORTRAN был общим системным языком для переноса программ…

Позже вышел PALASM2, синтаксис немного изменился, оброс разнообразными возможностями, появилось некоторое подобие макросов, оптимизатор, поддержка конечных автоматов и даже симулятор. Компания MMI тоже претерпела изменения, ее активы были поглощены AMD, потом выделены в отдельную компанию Vantis, которую позже купила Lattice Semiconductor. Сам входной язык PALASM послужил прообразом множества подобных и более продвинутых языков, его следы есть в ABEL, CUPL и в VHDL (а вообще-то он сам вырос из FORTRAN-а ).

Наиболее развитый PALASM – это версия PALASM4 v1.5a от AMD 1992 года. Понятно, что такая ретро-программа требует для запуска ретро-DOS. Но к счастью, этот вопрос давно решен. Тут нам поможет прекрасная утилита DOSBOX, позволяющая запускать DOS-программы даже на современном Windows 10 64-бит. Хотя DOSBOX вообще-то, предназначен для запуска ретро-игр, но и не-игровые DOS-утилиты неплохо в нем живут и PALASM — не исключение. Компания AMD сделала широкий жест и отпустила PALASM в Public Domain, так что пользоваться им можно совершенно легально.

Тут можно найти инструкцию, как поставить PALASM на DOSBOX и также скачать саму программу. Конфигурационный файл DOSBOX хранится в профиле пользователя
C:\Users\%USERNAME\AppData\Local\DOSBox\ dosbox-0.74.conf
Лучше дополнить секцию [autoexec]:

. . [autoexec] # Lines in this section will be run at startup. # You can put your MOUNT lines here. @echo off mount c c:\DOSBOX set PALASM=C:\PALASM set PATH=%PATH%;C:\PALASM C:

Из под Linux тоже можно запустить PALASM например с помощью того же DOSBOX или похожего DOSEMU.

Из PAL в GAL

При всём своём удобстве PAL-ы имели и некоторые проблемы. Одна из таких проблем состоит в том, что PAL – это однократно программируемое устройство (OTP) с плавкими титано-вольфрамовыми перемычками (Ti-W fuse). При появлении исправлений и замене прошивки приходилось старую микросхему просто выкидывать. Так что многие производители стали предлагать ”стираемые” PAL-ки. История тут длинная, можно, например, вспомнить УФ-стираемые чипы с «окошечком», или тот факт, что очень хотелось сохранить совместимость с парком программаторов и алгоритмами прошивки оригинальных PAL (серии PALCE и PEEL от International CMOS Technology (ICT) Corporation) и т.д.

Наконец фирма Lattice Semiconductor в 1985 г. выпустила семейство GAL, которое можно считать своеобразной вершиной PAL-строения. Подобно исходным MMI PAL-ам c буковкой V ( Versatile) (например PAL16V8) чипы GAL (соответственно название будет GAL16V8) могут принимать прошивки ВСЕХ (ну почти) моделей PAL, а вдобавок чип GAL — электрически стираемый и многократно прошиваемый. Устройства GAL практически вытеснили все остальные SPLD, за исключением, пожалуй Atmel (нынче Microchip) серии ATF (аналогичный чип у них будет называться ATF16V8).

Для переноса JEDEC файлов (прошивок) старых PAL фирма Lattice Semiconductor выпустила утилиту PALTOGAL (тоже бесплатную и тоже под DOS).

ПРМЕЧАНИЕ: Фирма Lattice Semicronductor рекомендует использовать для разработки ABEL (пакет ispLEVER), а фирма Atmel – CUPL (WinCUPL или ProChip Designer). National Semiconductor предлагала свой Opal JR. Но мы в ретро-целях останемся верны PALASM.

ПРИМЕЧАНИЕ2: (для совсем нердов) У GAL все же есть некоторые мелкие отличия, связанные с тем, что MMI PAL – это ТТЛШ микросхема, а GAL – CMOS.

И конечно же, для прошивки микросхем GAL (и ATF) потребуется специальный программатор. Существуют и PAL-ы, прошиваемые по JTAG, но это редкость (Lattice ispGAL). Хотя программатор для GAL можно сделать самостоятельно (ищется по именам GALBLAST и ATFBLAST), всё же лучше приобрести готовый. Например, TL866 (известный еще как Minipro), которыми забит Aliexpress:

Сами чипы GAL или ATF можно приобрести на том же Aliexpress. Цена за десяток может доходить до 5$ и менее. Не стоит ожидать чудес, чипы будут б/у (помним, что их можно и нужно(!) стереть) и могут иметь следы пайки и маркировку краской или лазером от погибших неведомых устройств, откуда их вытащили трудолюбивые китайцы. Lattice GAL сняты с производства в 2011, но запасов из старой техники хватит еще на пару десятков лет. ATF еще выпускаются.

7-SEG LED

Если помните, в начале статьи мы собирались зажечь светодиод. А точнее — не один, а целых семь! Да- да, речь пойдет о 7-сегментном индикаторе, а точнее – о реализации банального дешифратора HEX-to-7SEG.

Почему-то так сложилось, что готовых микросхем с такой функцией не так уж и много. Есть десятичные BCD дешифраторы (т.е. без шестнадцатеричных символов ABCDEF), например 7446/7447/7448/7449 и 74246/74247/74248/74249). Полных HEX дешифраторов не так много — например Motorola MC14495 Hexadecimal-to-Seven Segment Driver или Fairchild DM9368.

Но цены на PAL (GAL) упали настолько, что сделать дешифратор на SPLD дешевле и быстрее! Вот и давайте для практики его и сделаем, включая шестнадцатеричные цифры ABCDEF (Нет, ЕГГОГ мы декодировать не будем ). Отличное приложение наших олдскульных знаний по матлогике и старым программируемым микросхемам.

Построение такого дешифратора является каноническим примером комбинационной логики и типовой лабораторной работой. В учебнике Харрис&Харрис «Цифровая схемотехника и архитектура компьютера» пункт 2.7.2 «Логическая минимизация на картах Карно» содержит пример 2.10 построения такого дешифратора, но только BCD.

На Википедии есть статья, в которой даже приведена нужная нам таблица перекодировки для полного HEX.

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

Давайте для примера рассмотрим сегмент D (нижний). Как мы видим, он загорается 11 раз из 16 возможных входных комбинаций (вертикаль «d»). Если выписать ДНФ, то формула будет такой:

Но здесь есть проблема! Как мы писали выше, матрица обычных PAL (например в PAL16L8) имеет только 7 «ИЛИ» (сложений), а у нас — 11. Надо или применять более сложный чип или выражение придется оптимизировать.

ПРИМЕЧАНИЕ: В PALASM4 есть встроенный оптимизатор. Вероятно, он смог бы упростить это выражение, только надо эту оптимизацию включить. Но для сохранения ретро-духа пройдем этот этап вручную.

Давайте оптимизируем это выражение по карте Карно. Можно сделать это вручную и получить удовольствие, а можно воспользоваться сайтами, где на JavaScript реализованы эти алгоритмы, например:

  • http://www.32×8.com/index.html
  • https://charlie-coleman.com/experiments/kmap/

Как видите, наше выражение для сегмента D превращается в короткое:

Тут всего 5 штук «ИЛИ» вместо 11 так что выражение влезает в ячейку PAL. Проделаем это для всех сегментов.

Получается такой файл PALASM 7SEG.PDS

;PALASM Design Description ;-------------- Declaration Segment ------------ TITLE 7-SEG LED decoder PATTERN 7SEG.PDS REVISION A AUTHOR ALECV COMPANY HABR DATE 01/01/90 CHIP DECODER PAL16L8 ;-------------- PIN Declarations --------------- ;PINS 1 2 3 4 5 6 7 8 9 10 NC D0 D1 D2 D3 NC NC NC NC GND ;PINS 11 12 13 14 15 16 17 18 19 20 NC NC G F E D C B A VCC ;--------------- Boolean Equation Segment ------ EQUATIONS /A = /D0*/D2 + /D0*D3 + D1*D2 + D1*/D2*/D3 + D0*D2*/D3 + /D1*/D2*D3 /B = /D2*/D3 + /D0*/D2 + /D0*/D1*/D3 + D0*D1*/D3 + D0*/D1*D3 /C = D0*/D1 + D0*/D2 + /D1*/D2 + D2*/D3 + /D2*D3 /D = D2*/D1*D0 + /D3*/D2*/D0 + /D2*D1*D0 + D2*D1*/D0 + D3*/D1 /E = /D0*/D2 + D2*D3 + /D0*D1 + D1*D3 /F = /D0*/D1 + /D2*D3 + D1*D3 + /D0*D2 + /D1*D2*/D3 /G = D1*/D2 + D0*D3 + /D2*D3 + /D0*D1 + /D1*D2*/D3 ;------------- Simulation Segment ------------- SIMULATION TRACE_ON A B C D E F G SETF /D3 /D2 /D1 /D0 ; 0 SETF /D3 /D2 /D1 D0 ; 1 SETF /D3 /D2 D1 /D0 ; 2 SETF /D3 /D2 D1 D0 ; 3 SETF /D3 D2 /D1 /D0 ; 4 SETF /D3 D2 /D1 D0 ; 5 SETF /D3 D2 D1 /D0 ; 6 SETF /D3 D2 D1 D0 ; 7 SETF D3 /D2 /D1 /D0 ; 8 SETF D3 /D2 /D1 D0 ; 9 SETF D3 /D2 D1 /D0 ; A SETF D3 /D2 D1 D0 ; B SETF D3 D2 /D1 /D0 ; C SETF D3 D2 /D1 D0 ; D SETF D3 D2 D1 /D0 ; E SETF D3 D2 D1 D0 ; F TRACE_OFF

Откомпилируем файл .PDS в файл .JED с помощью PALASM:

Очень интересно, как PALASM разложил наши выражения на плавкие перемычки. Для этого можно заглянут в файл Fuse plot (рисунок перемычек).

Fuse plot файл 7SEG.XPT

PALASM4 PAL ASSEMBLER - MARKET RELEASE 1.5a (8-20-92) (C) - COPYRIGHT ADVANCED MICRO DEVICES INC., 1992 TITLE :7-SEG LED decoder AUTHOR :ALECV PATTERN :7SEG.PDS COMPANY:HABR REVISION:A DATE :01/01/90 PAL16L8 DECODER 11 1111 1111 2222 2222 2233 0123 4567 8901 2345 6789 0123 4567 8901 0 ---- ---- ---- ---- ---- ---- ---- ---- 1 -X-- ---- -X-- ---- ---- ---- ---- ---- 2 -X-- ---- ---- X--- ---- ---- ---- ---- 3 ---- X--- X--- ---- ---- ---- ---- ---- 4 ---- X--- -X-- -X-- ---- ---- ---- ---- 5 X--- ---- X--- -X-- ---- ---- ---- ---- 6 ---- -X-- -X-- X--- ---- ---- ---- ---- 7 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 8 ---- ---- ---- ---- ---- ---- ---- ---- 9 ---- ---- -X-- -X-- ---- ---- ---- ---- 10 -X-- ---- -X-- ---- ---- ---- ---- ---- 11 -X-- -X-- ---- -X-- ---- ---- ---- ---- 12 X--- X--- ---- -X-- ---- ---- ---- ---- 13 X--- -X-- ---- X--- ---- ---- ---- ---- 14 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 15 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 16 ---- ---- ---- ---- ---- ---- ---- ---- 17 X--- -X-- ---- ---- ---- ---- ---- ---- 18 X--- ---- -X-- ---- ---- ---- ---- ---- 19 ---- -X-- -X-- ---- ---- ---- ---- ---- 20 ---- ---- X--- -X-- ---- ---- ---- ---- 21 ---- ---- -X-- X--- ---- ---- ---- ---- 22 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 23 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 24 ---- ---- ---- ---- ---- ---- ---- ---- 25 X--- -X-- X--- ---- ---- ---- ---- ---- 26 -X-- ---- -X-- -X-- ---- ---- ---- ---- 27 X--- X--- -X-- ---- ---- ---- ---- ---- 28 -X-- X--- X--- ---- ---- ---- ---- ---- 29 ---- -X-- ---- X--- ---- ---- ---- ---- 30 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 31 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 32 ---- ---- ---- ---- ---- ---- ---- ---- 33 -X-- ---- -X-- ---- ---- ---- ---- ---- 34 ---- ---- X--- X--- ---- ---- ---- ---- 35 -X-- X--- ---- ---- ---- ---- ---- ---- 36 ---- X--- ---- X--- ---- ---- ---- ---- 37 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 38 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 39 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 40 ---- ---- ---- ---- ---- ---- ---- ---- 41 -X-- -X-- ---- ---- ---- ---- ---- ---- 42 ---- ---- -X-- X--- ---- ---- ---- ---- 43 ---- X--- ---- X--- ---- ---- ---- ---- 44 -X-- ---- X--- ---- ---- ---- ---- ---- 45 ---- -X-- X--- -X-- ---- ---- ---- ---- 46 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 47 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 48 ---- ---- ---- ---- ---- ---- ---- ---- 49 ---- X--- -X-- ---- ---- ---- ---- ---- 50 X--- ---- ---- X--- ---- ---- ---- ---- 51 ---- ---- -X-- X--- ---- ---- ---- ---- 52 -X-- X--- ---- ---- ---- ---- ---- ---- 53 ---- -X-- X--- -X-- ---- ---- ---- ---- 54 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 55 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 56 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 57 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 58 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 59 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 60 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 61 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 62 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 63 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX SUMMARY ------- TOTAL FUSES BLOWN = 1262

Этот файл лучше рассматривать одновременно с документацией на PAL16L8. Ее можно найти, например, на сайте Texas Istruments: pal16r8am.pdf страница 5.

Сегмент D у нас выведен на 16-й вывод микросхемы. Если мы посмотрим схему PAL, то за него отвечают перемычки, начиная с номера 768. Как несложно догадаться 768 / 32 = 24 – это 24-я строка. Сама она отвечает за управление выходом и поэтому пустая. Логические выражения начинаются с перемычки 800, то есть строки 25. Если посмотреть на схему, то в 25-й строке собираются по «И»: прямой вход D0 (вывод микросхемы 2), инверсия D1 (вывод 3) и прямой вход D2 (пин 4). Это в точности соответствует первому минитерму в формуле для сегмента D! Остальные минитермы из выражения также транслируются в перемычки и в конце объединяются по «ИЛИ». Так что PALASM, не мудрствуя лукаво, просто переводит наши ДНФ-выражения в прошивку один в один.

Именно таким способом проектировали прошивки до появления PALASM, в самой старой документации MMI как раз описан этот способ. Надо отметить, что другие семейства, например PLA, не получили вообще или получили утилиты класса PALASM довольно поздно (например ICT PEEL Array PLACE) и не стали такими популярными.

Для программирования GAL полученный файл 7SEG.JED отконвертируем утилитой PALTOGAL:

PALTOGAL –C2 –R 7SEG.JED 7SEG_GAL.JED

При подключении индикатора к FPGA (на VHDL и Verilog) или к микроконтроллеру логические функции раскладывать нет необходимости и просто используют таблицу. Можно погуглить или посмотреть на Youtube, поиск «Семисегментный индикатор».

Практика

Давайте соберем модель декодера семисегментного индикатора (и сдадим курсовик, ха-ха). В качестве генератора импульсов применим обычную микросхемку NE555 (К1006ВИ1). Для наблюдения нам нужен период примерно 1 секунда. Для делителя на 16 в коде 1-2-4-8 можно применить что-нибудь типа К155/К555 ИЕ5 или ИЕ7 (совсем круто было бы сделать счетчик тоже на GAL, но это в следующий раз). В коробочке нашлась К555ИЕ7 (SN74LS193), значит так тому и быть. На вывод «R» подадим ноль, на выводы «V» и «-1» — единицу, на вывод «+1» — тактовые импульсы с NE555. Счетчик начал считать. Возьмем семисегментный индикатор с общим анодом и нашу GAL. Перед этим сотрем её и прошьем JEDEC файлом. Индикатор попался LTS-4801WC, OK. Выводы счетчика Q0,Q1,Q2,Q3 соединим со входами D0,D1,D2,D3 GAL, а выходы GAL – с катодами индикатора через 7 резисторов на 330 Ом.

Получается как-то так:

Заключение

Итак, мы окунулись в историю программируемых логических микросхем (PLD). Мы увидели, что за конструкцией PAL скрывается Древняя Могучая Теория. Выяснилось, что даже сейчас, вполне еще можно применять эти устройства в небольших самоделках. Мы рассмотрели вполне боевой «workflow», как это сделать. И да, PAL и GAL совместимы с олдовой теплой 5V TTL электроникой.

Конечно, в такой короткой статье невозможно отразить все аспекты. Вот кратко, про что мы не рассказали:

Не рассмотрели работу симулятора. В PALASM (2 и 4) встроен довольно мощный симулятор, практически язык программирования, с циклами, условными операторами и т.д.

Не рассмотрели построение на PALASM конечных автоматов. Как-нибудь в другой раз.

Не рассмотрели тонкости и ограничения оптимизации, но зато сделали оптимизацию вручную, по карте Карно. Это исключительно в ретро-целях! Сейчас так никто уже не делает (как и сами разработки на PAL).

Не ответили на вопрос: можно ли вводить в PALASM выражения не в ДНФ? Конечно можно. Если выражение синтаксически корректно, PALASM скорее всего его поймет. Но внутри все равно преобразует в ДНФ для воплощения в перемычках.

Не рассмотрели вопрос программирования (прошивки) исходных MMI PAL. Проблема здесь в том, что это однократно программируемые микросхемы и сейчас довольно сложно найти чистые PAL. И их не стереть. А программировались они специальным программатором (например, российский «Стерх» это умеет). Изначально у MMI был даже метод прошивать PAL как ПЗУ 512×4 на старых программаторах с помощью специальной «personality card» — у первых PAL было ровно 2048 перемычек, но ныне этот способ утрачен.

И еще много чего.

  • FPGA
  • История IT
  • Старое железо
  • DIY или Сделай сам

Зарегистрировать домен в .GAL доменной зоне

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

Международная Доменная Зона

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

Откройте дополнительные возможности от Regery для Вашего бизнеса
Сигналы & Уведомнения

Мониторинг состояния вашего доменного имени в зоне .GAL или в другой доменной зоне, и получение мгновенных уведомлений.

Бесплатная защита Whois контактов

Защитите контактные данные Whois для домена с помощью бесплатного сервиса Privacy Guard. В соответствии с политикой реестра эта функция может быть отключена для некоторых доменов.

Автоматическое Продление

Клиентам нет необходимости переживать о том, что они забудут окончание срока действия GAL домена. В зарегистрированной в сервисе Regery учетной записи сохранятся SSL сертификаты и все другие продукты.

Бесплатная Переадресация Домена

Бесплатно переадресовывайте свое доменное имя в зоне .GAL на новый веб-сайт, кто угодно, кто открывает это доменное имя в браузере, перемещается непосредственно на ваш новый сайт. Например, у вас есть старый веб-сайт: my-old-shop.GAL, и вам нужно переадресовать всех своих посетителей в новый домен: my-best-store.GAL, это возможно с помощью служб Regery.

Бесплатное Перенаправление Почты

Перенаправляйте почту с домена в зоне .GAL на другой почтовый адрес бесплатно. С сервисами Regery это просто.

Бесплатная Блокировка .GAL Домена

Бесплатная блокировка .GAL домена предотвращает случайную или преднамеренную передачу владения доменом и запрещает кому-либо перенаправлять ваши серверы имен.

Перенос GAL Домена

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

Несколько Языков
Регистрировать выбранное имя в зоне GAL можно на родном или английском языке.
Быстрая система DNS

Настройте все DNS записи (MX, A, NS, TXT, . ) в единой системе. Перенаправление адресов бесплатно. Например перенаправление всех посетителей со старого сайта oldstore.GAL на новый new-ultra-store.GAL бесплатно.

Легкая Панель Управления
Простой и понятный интерфейс панели управления
Поддержка 24/7
Круглосуточная поддержка и оперативное реагирование на возникающие запросы
SSL Сертификаты

К сайту рекомендуется также подключить SSL сертификат для того, чтобы он мог открываться по безопасному HTTPS протоколу. На Regery представлен полный набор SSL сертификатов известных брендов, например RapidSSL. Также доступны бесплатные SSL сертификаты Comodo.

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

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