Синтез цифровых схем

Синтез цифровых схем арифметических устройств (стр. 2 из 6)

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

· Одноразрядный четверичный умножитель – сумматор (ОЧУС)

R

P2 Р1

от младшего

ОЧУС

ОЧУС

к старшему

ОЧУС

Мн Мт

ОЧУС предназначен для получения одной четверичной цифры путем перемножения диады множимого (Мн) и диады множителя (Мт), и прибавления к полученному результату переноса от младшего ОЧУС (P1).

Если устройство работает как сумматор, то оба слагаемых последовательно (за 2 такта) заносятся в регистр множимого, а на управляющий вход ФДК F2 поступает «1». На выходах ФДК формируется дополнительный код первого слагаемого с учетом знака.

Первое слагаемое без изменений должно быть записано в регистр результата, поэтому управляющие сигналы, поступающие на входы «h» всех ОЧУС, позволяют переписать на выходы ОЧУС разряды первого слагаемого без изменений.

Если на вход «h» поступает «0», то ОЧУС перемножает разряды Мн и Мт и добавляет к полученному результату перенос из предыдущего ОЧУС.

Если устройство работает как умножитель, то множимое и множитель помещаются в соответствующие регистры, а на управляющий вход ФДК F2 поступает «0». Диада множителя поступает на входы ПМ.

Т.к. на входы ОЧУС из регистра Мт не могут прийти коды «3», в таблице истинности работы ОЧУС будут содержаться 16 безразличных входных наборов.

После ОЧУС частичные произведения складываются между собой в ОЧС (на первом такте идет сложение с нулем).

Частичные суммы хранятся в регистре результата.

· Одноразрядный четверичный сумматор (ОЧС)

S

P2 P1

А В

Предназначен для суммирования двух четверичных цифр и прибавления к полученной сумме единицы переноса от предыдущего ОЧС. Формирует единицу переноса в следующий ОЧС.

В ОЧС первое слагаемое складывается с нулем, записанным в регистре результата, и переписывается без изменений в регистр результата.

На втором такте второе слагаемое из регистра множимого через цепочку ОЧУС попадает на входы ОЧС и складывается с первым слагаемым, хранящимся в регистре результата. Сумма хранится в регистре результата.

Если устройство работает как сумматор, никаких сдвигов содержимого регистров не производится.

· Многоразрядный формирователь дополнительного кода (ФДК)

Знак Yn Y1

f1

f2

Знак Xn X1

Предназначен для получения дополнительного кода многоразрядного четверичного числа. ФДК имеет n двоичных входов (Х1-Хn), n двоичных выходов (Y1-Yn), отдельный вход для знака преобразуемого числа, а также управляющие входы (f1) и (f2).

При подаче управляющего сигнала (“1”) на вход f1 ФДК формирует дополнительный код числа в сооответствии с его знаком. При подаче управляющего сигнала (“1”) на вход f2 ФДК формирует двойной дополнительный код числа.

Принцип работы ФДК в зависимости от управляющих сигналов см. в табл.3.

Таблица 3. Работа ФДК.

Синтез преобразователя множителя

Задачей ПМ является исключить из множителя диады 11, заменив их на триады. Регистр множителя является сдвиговым, после каждого такта умножение его содержимое сдвигается на 2 двоичных разряда, и в конце умножения регистр обнуляется.

Выход 3 ПМ переходит в единичное состояние, если текущая диада содержит отрицание ( 01 ).

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

На выходах 1,2 ПМ формируются диады преобразованного множителя, которые поступают на входы ОЧУС вместе с диадами множимого. На трех выходах ОЧУС формируется результат умножения диад Мн * Мт + перенос из предыдущего ОЧУС. Максимальной цифрой в диаде преобразованного множителя является двойка, поэтому перенос, формируемый ОЧУС ,может быть только двоичным:

3 * 2 = 1 2

max maх max

Мн Мт перенос

Табл.4. Таблица истинности преобразователя множителя.

Исходя из выше изложенной таблицы синтезируется схема.

Преобразователь множителя.

Структурная схема устройства приведена на рисунке в приложении. Она содержит регистры: множимого (Рг Мн), множителя (Рг Мт), результата (Рг Рез), формирователи дополнительного кода (ФДК) , 16 блоков ОЧС, 15 блоков ОЧУС и преобразователь множителя (ПМ).

Устройство умножения работает следующим образом:

Исходные сомножители записываются в регистры ( Рг Мн, Рг Мт) Рг Рез обнуляется.

С выходов ФДК на входы ОЧУС поступают по 2 двоичные цифры. Результат операции поступает в ОЧС, где суммируется с содержимым Рг Рез и записывается снова в Рг Рез.

После проведения этих операций происходит сдвиг Рг Мн , Рг Мт .

Если на вход “h” подаётся “1” то ОЧУС становятся “прозрачными” и устройство работает как сумматор благодаря ОЧС. Слогаемые последовательно (за 2 такта) заносятся в регистр множимого.

Временные затраты на умножение сомножителей определяются в основном затратами на образование частичных произведений, получаемых на выходах ОЧУС, и примерно равны:

Ту = 8(tсдв + tПМ + tФДК + 15tОЧУС + 16tОЧС), где:

tОЧС- время формирования единицы переноса в ОЧС

tОЧУС – время умножения на одном ОЧУС

tсдв -время сдвига множимого (множителя)

tПМ – время задержки в преобразователе множителя

tФДК – время задержки на ФДК

На самом деле, операции выполняются параллельно в нескольких узлах, и время задержки будет определятся наибольшей составляющей (либо 15tОЧУС, либо 15tОЧУС, в зависимости от конкретной реализации).

Логический синтез одноразрядного четверичного умножителя-сумматора

ОЧУС – это комбинационное устройство, имеющее 6 входов (2 разряда из регистра МН, 2 разряда из регистра Мт, вход переноса и управляющий вход h) и 3 выхода. Принцип работы ОЧУС описывается с помощью таблицы истинности (табл.5).

Разряды множителя закодированы : 0 – 00; 1 – 01; 2 – 10; 3 – 11.

Разряды множимого закодированы : 0 – 00; 1 – 11; 2 – 01; 3 – 10.

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

Табл. 5

В таблице выделено 16 безразличных наборов, т.к. на входы ОЧУС из разрядов множителя не может поступить код 11.

Источник: http://MirZnanii.com/a/122644-2/sintez-tsifrovykh-skhem-arifmeticheskikh-ustroystv-2

Синтез цифровых схем арифметических устройств (исходные операнды – десятичные числа

Минимизацию данной функции проведем при помощи карт Карно-Вейча.

L = {10001, 10010, 10011, 10101, 11001, 11010, 11011, 11101}.

______            X2            ______

X1          1 1 1 1 1 1 Y1
1 * * * * 1
* * * *

___________________________

_____________             Y2            _____________

H                                                     H        

Минимальная форма функции выхода Р3 будет такова:

Сmin = { 1XXX1, 1XX1X }

b             

P3 =X1H +X1Y2  ;

К = (8*5 + 8 + 4) / (4+2) =  8,667.

Множество единичных  кубов для выходов P4:

L = { 00000, 00100, 01000, 01001, 01010, 01011, 01100, 01101, 10000, 11000, 11001, 11010, 11011, 11101 }

Результаты умножения Ci * Ci приведены в таблицах 4.1, 4.2, 4.3, 4.4.

Z0 = Æ;

Z1 = Æ;

Z2 = {0XX00, XX000, 0X1X0};

Z3 = {X10XX, 01XXX, X1XX1, X1X1X, XX11X}.

Z  = {0XX00, XX000, 0X1X0, X10XX, 01XXX, X1XX1, X1X1X, XX11X }

По результатам вычитания Z # (Z z) не все кубы множества Z являются обязательными (см. табл. 4.5).

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

Пересечение    множества    L    с   остатками,    полученными    при    выделении L-экстремалей, показывает, содержат ли остатки единичные кубы, т.е. нужен нам этот куб или нет. (табл. 4.

6) После проведенной операции L – экстремалями являются кубы {XX000, X1XX1}. Zk = {0XX00, 0X1X0, X10XX, 01XXX, X1X1X, XX11X}.

Найдем множество L2,  используя  операцию  вычитания   (см. табл. 4.7). L2  = {00100, 01010, 01100, 11010}.

Проведем операцию пересечения множества L2 с множеством Zk (см. табл. 4.8).  В результате всех проведенных действий получим несколько тупиковых форм:

Сmin1 = {0X1X0, X1X1X, XX000, X1XX1}

Сmin 2= {0X1X0, X10XX, XX000, X1XX1}.

Сmin 3= {0XX00, X10XX, XX000, X1XX1}.

Сmin 4= {0XX00, X1X1X, XX000, X1XX1}.

Выберем одну из них:

Сmin1 = {0X1X0, X1X1X, XX000, X1XX1}

b             

P4=X1 Y1 H  + X2 Y2 + Y1 Y2 H + X2 H

К = (14*5 +1 4 + 5) / (10 + 4 + 4) =  4,944.

Для реализации полученных минимальных функций в заданном базисе ИЛИ-НЕ используем правила де Моргана.

E          b             

P1 = X2 Y1 H  

E      b             

P2  =  H         

P3  = X1 H + X1 Y2 =

P4  = X1Y1 H + X2 Y2  + Y1 Y2 H  + X2 H

Функциональная схема блока ОЧУ приведена на рис. 4.

Логический синтез

ОДНОРАЗРЯДНОГО  ЧЕТВЕРИЧНОГО  СУММАТОРА

ОЧС – это комбинационное устройство, имеющее 5 входов (2 разряда одного слагаемого, 2 разряда второго слагаемого и вход переноса) и 3 выхода. Принцип работы ОЧС описывается с помощью таблицы истинности (табл.21).

Разряды обоих слагаемых закодированы: 0 – 11; 1 – 00; 2 – 01; 3 – 10.

Табл. 21

А1 А2 В1 В2 p П S1 S2 Пример операции в четверичной с/с
1 1 2+2+0=10 *
1 1 1 1 2+2+1=11 *
1 2+0+0=02
1 1 1 2+0+1=03
1 1 1 1 2+3+0=11 *
1 1 1 2+3+1=12 *
1 1 1 2+1+0=03
1 1 1 1 1 2+1+1=10
1 0+2+0=02 *
1 1 1 0+2+1=03 *
1 1 1 0+0+0=00
1 1 1 1 1 0+0+1=01
1 1 1 0+3+0=03 *
1 1 1 1 1 0+3+1=10 *
1 1 1 1 1 0+1+0=01
1 1 1 1 0+1+1=02
1 1 1 1 3+2+0=11 *
1 1 1 3+2+1=12 *
1 1 1 3+0+0=03
1 1 1 1 1 3+0+1=10
1 1 1 3+3+0=12 *
1 1 1 1 1 3+3+1=13 *
1 1 1 1 1 3+1+0=10
1 1 1 1 1 1 1 3+1+1=11
1 1 1 1+2+0=03 *
1 1 1 1 1 1+2+1=10 *
1 1 1 1 1 1+0+0=01
1 1 1 1 1+0+1=02
1 1 1 1 1 1+3+0=10 *
1 1 1 1 1 1 1 1+3+1=11 *
1 1 1 1 1+1+0=02
1 1 1 1 1 1 1+1+1=03

Так как ОЧС синтезируется для схемы 1-го типа, то в таблице истинности присутствуют 16 безразличных наборов, т.к. со старших выходов ОЧУ не могут прийти коды 2 и 3.

Минимизация выходов проводится с помощью карт Карно-Вейча.

Для выхода П:

______            A2            ______

A1          * * 1 * * B1
* * 1 1 * *
* * 1 * *
* * * *

___________________________

_____________             B2            _____________

p                                                     p        

__                 _              _

Пmin= A2 B1 P + A1 A2 P + A1 A2 B1;

Эффективность минимизации можно оценить отношением числа входов схемы (цены схемы) до и после минимизации:

К = (4*5 + 4 + 4) / (9 + 3 + 1) =  2,1538;

Для выхода S1:

______            A2            ______

A1         * * 1 1 * * B1
* * 1 1 * *
* * 1 1 * *
* * 1 1 * *

___________________________

_____________             B2            _____________

p                                                     p        

В результате имеем:                                                                   

_                         e

S1min =A1 B1 P + A1 B1 P + A1 B1 P + A1 B1 P.

Коэффициент минимизации для S1min:

К = (8*5 + 8 + 4) / (4*3 + 4 + 3) =  2,737;

Для выхода S2:

______            A2            ______

A1         * * 1 1 * * B1
* * 1 1 * *
* * 1 1 * *
* * 1 1 * *

___________________________

_____________             B2            _____________

p                                                     p        

   e

Smin = A1 A2 B1 + A1 A2 P + A2 B1 P + A1 A2 P + A1 A2 B1 + A2 B1 P ;

Коэффициент минимизации для S2:

К = (8*5 + 8 + 4) / (18 + 6 + 4)  =  1,857.

Синтез функциональной схемы ОЧС на мультиплексорах.

Мультиплексор – это логическая схема, имеющая n информационных входов, m управляющих входов и один выход. При этом должно выполняться условие n = 2m.

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

Для реализации наших функций используем мультиплексоры 1 из 8.

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

Реализация ОЧС с учетом безразличных наборов приведена на рис. 5.

Реализация ОЧС  в нашем логическом базисе приведена на рис. 6.

Логический синтез ПРЕОБРАЗОВАТЕЛЯ МНОЖИТЕЛЯ (ПМ)

Задачей ПМ является исключение из множителя диады 11 путем замены их на триады 101, при этом единица переноса будет добавлена по цепи обратной связи к следующей диаде множителя (см. выход П ). Выход О ПМ переходит в единичное состояние, если текущая диада содержит отрицание. Принцип работы ПМ описывается в табл. 22.

Табл. 5

D1 D2 D3   П1 П2 O
1 1
1 1
1 1 1
1 1 1
1 1 1 1
1 1 1 1
1 1 1

0 = D1 D3 + D1 D2

П1 = D1 D2 D3 + D1 D2 D3

П2 = D2 D3 + D2 D3

ПМ реализуется  в нашем элементарном логическом базисе и привлекателен  простотой  способа  реализации.  Реализация ПМ приведена на рис.7.

РАССЧЁТ ВРЕМЕНИ УМНОЖЕНИЯ

В общую сумму времени, требуемого для умножения на один разряд множителя, входят следующие составляющие:

tСДВ  –  время сдвига множителя и частичной суммы на один четверичный    разряд.

tПМ   –  время преобразования двоичной диады множителя.

tФДК  –  время формирования дополнительного кода множимого требуемого знака.

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

Источник: https://vunivere.ru/work96954

Синтез цифровых схем

Такое серьезное институтское название… Не пугайтесь раньше времени. Давайте по порядку.

В электронике довольно часто используют понятие «черный ящик». Это, конечно же, не тот черный ящик, который ищут МЧСовцы после очередного крушения ТУ-154 компании «Аэрофлот». Другой ящик…

В электронике «черный ящик» – это некая схема, рисовать которую лениво. Эта схема имеет сколько-то входов, сколько-то выходов и мы точно знаем, как она себя ведет. То есть, можно легко предсказать, что получится на выходе, если чего-то подать на вход. Грубо говоря, схема черного ящика описывается математическим выражением вида:

y = f(x), где х – входной сигнал y – выходной сигнал.

У черных ящиков просто уйма жизненных примеров… Взять хотя бы такую тривиальную вещь как утюг. У него есть ручечка регулировки температуры и кнопочка выброса пара – это «входы» черного ящика. Также, у него есть нагревающаяся поверхность, а в ней – дырочки – это «выходы».

Как связаны между собой входы и выходы?

  1. Температура поверхности пропорциональна углу поворота ручки
  2. Пар из дырок выходит тогда, когда нажата кнопка.

Может этот пример довольно примитивен, но зато нагляден до неприличия. Ведь утром, гладя брюки, вы не задумываетесь над тем, как устроен утюг? Зато вы прекрасно знаете, что нужно сделать с ручечкой и кнопочкой, чтоб получить желаемый результат…

К чему я это все? А к тому, что в технике приходится очень часто прибегать к понятию «черного ящика» чтобы упростить разработку на определенном этапе. Однако, на последующих этапах, все равно придется «разворачивать» черный ящик – то есть, проектировать его схему.

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

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

Задание номер раз

Есть некий элемент с двумя входами и одним выходом, и известна его таблица истинности:

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

Внимательно смотрим и думаем… Нас интересуют те позиции таблицы истинности, в которых выходной сигнал равен 1.

А! Вот чего мы видим: единица на входе b в любом случае приводит кединице на выходе. Здорово!

Значит, мы можем соединить вход b напрямую с выходом c … Точнее – могли бы. Но у нас есть еще одна единица на выходе – когда на оба входа поданы нули. Вспоминаем, какой элемент реагирует на два нуля? Разрешаю подглядеть в предыдущий параграф…

Правильно, элемент «ИЛИ-НЕ»! Значит, вторая единица будет формироваться элементом ИЛИ-НЕ. Давайте нарисуем для каждого случая свою схему:

Теперь надо объединить эти схемы в одну. Помним, что непосредственно соединять цифровые выходы нельзя. Значит надо их соединить через какой-то элемент. Причем, этот элемент должен выдавать единицу на выход в случае, если хотя бы на одном входе есть единица. Ну, какой это элемент?

Конечно, это «ИЛИ».

Итак:

Вот и вся схема. Довольно просто, не так ли? Дальше – хуже.

Задание номер следующее

Элемент, к которому нужно нарисовать схему, имеет три входа и один выход. Соответственно, таблица истинности увеличивается автоматом до 8 строчек:

Ну как вам??? М-да, тут немного сложнее. Но! Для нас ведь нет ничего сложного, правда? Тогда – вперед и с песнями!

Итак, выделяем те строчки, в которых выходной сигнал = 1. Их всего пять:

Теперь нарисуем для каждой выделенной строчки отдельную схему, используя только элементы «И» и «НЕ».

Все! Теперь только осталось объединить эти схемы в одну. При этом сразу сократится число инверторов:

Ну как, нормально?

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

Выходные сигналы элементов «И» смешиваются при помощи 5-входового элемента «ИЛИ».

Каскадирование элементов «И» и «ИЛИ»

Как вы могли заметить, в последней схеме мы использовали элементы «И» с тремя входами и элемент «ИЛИ» аж с пятью входами! У кого-то наверно возникнет вопрос: каковы их таблицы истинности?

Все в порядке, господа! Элемент «И» остается элементом «И», даже имея 100 входов. На его выходе единица возможна лишь в том случае, если на все входы поданы единицы.

То же и с элементом ИЛИ. Он выдаст единицу в случае, если хотя бы на одном входе будет единица, будь у него хоть тыща входов.

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

Если вы не верите – составьте таблицу истинности для каждой «ступеньки» каскада – и проверьте 🙂

А мы пока что едем дальше.

Впереди у нас карты Карно. Еще один довольно нудный – но полезный параграф.

Источник: https://studlib.info/tehnologii/2277023-sintez-cifrovykh-skhem/

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}