Главная страница
Навигация по странице:

  • Триггер

  • RS-триггер

  • Т-триггер

  • Триггер. Триггер (1). Триггер (бистабильный мультивибратор4) это цифровой автомат, имеющий несколько входов и 2 выхода. Триггер


    Скачать 360 Kb.
    НазваниеТриггер (бистабильный мультивибратор4) это цифровой автомат, имеющий несколько входов и 2 выхода. Триггер
    АнкорТриггер
    Дата25.12.2022
    Размер360 Kb.
    Формат файлаdoc
    Имя файлаТриггер (1).doc
    ТипДокументы
    #863124

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

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

    При изготовлении триггеров применяются преимущественно полупроводниковые приборы (обычно биполярные и полевые транзисторы), в прошлом — электромагнитные реле, электронные лампы. В настоящее время логические схемы, в том числе с использованием триггеров, создают в интегрированных средах разработки под различные программируемые логические интегральные схемы (ПЛИС). Используются, в основном, в вычислительной технике для организации компонентов вычислительных систем: регистров, счётчиков, процессоров, ОЗУ.

    Определения


    У этого термина существуют и другие значения, см. Триггер (значения).

    Триггер (бистабильный мультивибратор[4]) — это цифровой автомат, имеющий несколько входов и 2 выхода.

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

    Триггерами называют[5] такие логические устройства, выходные сигналы которых определяются не только сигналами на входах, но и предысторией их работы, то есть состоянием элементов памяти.

    Триггер — один из базовых (основных) элементов цифровой техники[6]. Некоторые исследователи[7] включают триггер в 100 великих изобретений.

    Триггер не является логическим элементом первого уровня, а сам состоит из логических элементов первого уровня — инверторов или логических вентилей. По отношению к логическим элементам первого уровня триггер является логическим устройством второго уровня.

    Триггер — элементарная ячейка оперативной памяти.

    Триггер — простейшее устройство, выполняющее логическую функцию с обратной связью, то есть простейшее устройство кибернетики.

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

    Триггер — это логическое устройство с двумя устойчивыми состояниями 0 и 1, имеющие несколько входов и два выхода,один прямой, а другой инверсный.

    Классификация



    Рис. 3. Временная диаграмма работы динамического триггера
    Рис. 4. Симметричные триггеры: а — с непосредственной связью между каскадами; б — с резистивной связью
    Рис. 5. Функциональная классификация триггеров
    Рис. 6. Классификация триггеров по способу ввода информации

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

    Динамический триггер представляет собой управляемый генератор, одно из состояний которого (единичное) характеризуется наличием на выходе непрерывной последовательности импульсов определённой частоты, а другое (нулевое) — отсутствием выходных импульсов. Смена состояний производится внешними импульсами (рис. 3). Динамические триггеры в настоящее время используются редко.

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

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

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

    Симметричные статические триггеры составляют основную массу триггеров, используемых в современной радиоэлектронной аппаратуре. Схемы симметричных триггеров в простейшей реализации (2х2ИЛИНЕ) показаны на рис. 4.

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

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

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

    Асинхронный триггер изменяет своё состояние непосредственно в момент появления соответствующего информационного сигнала(ов), с некоторой задержкой равной сумме задержек на элементах, составляющих данный триггер.

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

    Триггеры со статическим управлением воспринимают информационные сигналы при подаче на вход С логической единицы (прямой вход) или логического нуля (инверсный вход).

    Триггеры с динамическим управлением воспринимают информационные сигналы при изменении (перепаде) сигнала на входе С от 0 к 1 (прямой динамический С-вход) или от 1 к 0 (инверсный динамический С-вход). Также встречается название «триггер управляемый фронтом».

    Одноступенчатые триггеры (latch, защёлки) состоят из одной ступени представляющей собой элемент памяти и схему управления, бывают, как правило, со статическим управлением. Одноступенчатые триггеры с динамическим управлением применяются в первой ступени двухступенчатых триггеров с динамическим управлением. Одноступенчатый триггер на УГО обозначают одной буквой - Т.

    Двухступенчатые триггеры (flip-flop, шлёпающие) делятся на триггеры со статическим управлением и триггеры с динамическим управлением. При одном уровне сигнала на входе С информация, в соответствии с логикой работы триггера, записывается в первую ступень (вторая ступень заблокирована для записи). При другом уровне этого сигнала происходит копирование состояния первой ступени во вторую (первая ступень заблокирована для записи), выходной сигнал появляется в этот момент времени с задержкой равной задержке срабатывания ступени. Обычно двухступенчатые триггеры применяются в схемах, где логические функции входов триггера зависят от его выходов, во избежание временны́х гонок. Двухступенчатый триггер на УГО обозначают двумя буквами - ТТ.

    Триггеры со сложной логикой бывают также одно- и двухступенчатые. В этих триггерах наряду с синхронными сигналами присутствуют и асинхронные. Такой триггер изображён на рис. 1, верхний (S) и нижний (R) входные сигналы являются асинхронными.

    Триггерные схемы классифицируют также по следующим признакам:

    • числу целочисленных устойчивых состояний (основанию системы счисления) (обычно устойчивых состояний два, реже — больше, см. двоичный триггер, троичный триггер, четверичный триггер[8], …, десятичный триггер, …, n-ичный триггер, …);

    • числу уровней — два уровня (высокий, низкий) в двухуровневых элементах, три уровня (положительный, ноль, отрицательный) в трёхуровневых элементах[9], …, N-уровней в N-уровневых элементах, … ;

    • по способу реакции на помехи — прозрачные и непрозрачные. Непрозрачные, в свою очередь, делятся на проницаемые и непроницаемые.

    • по составу логических элементов (триггеры на элементах И-НЕ, ИЛИ-НЕ и др.).

    Базовые понятия


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

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

    В графе триггера каждая вершина графа соединена со всеми другими вершинами, при этом переходы от вершины к вершине возможны в обе стороны (двухсторонние). Граф двоичного триггера — две точки соединённые отрезком прямой линии, троичного триггера — треугольник, четверичного триггера — квадрат с диагоналями, пятеричного триггера — пятиугольник с пентаграммой и т. д. При N=1 граф триггера вырождается в одну точку, в математике ему соответствует унарная единица или унарный ноль, а в электронике — монтажная «1» или монтажный «0», то есть простейшее ПЗУ. Устойчивые состояния имеют на графе триггера дополнительную петлю, которая обозначает, что при снятии управляющих сигналов триггер остаётся в установленном состоянии.

    Состояние триггера определяется сигналами на прямом и инверсном выходах. При положительном кодировании (позитивная логика) высокий уровень напряжения на прямом выходе отображает значение лог. 1 (состояние = 1), а низкий уровень — значение лог. 0 (состояние = 0). При отрицательном кодировании (негативная логика) высокому уровню (напряжению) соответствует логическое значение «0», а низкому уровню (напряжению) соответствует логическое значение «1».

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

    Входы триггеров разделяются на информационные (R, S, T и др.) и управляющие (С, V). Информационные входы предназначены для приема сигналов запоминаемой информации. Названия входных сигналов отождествляют с названиями входов триггера. Управляющие входы служат для управления записью информации. В триггерах может быть два вида управляющих сигналов:

    • синхронизирующий (тактовый) сигнал С, поступающий на С-вход (тактовый вход);

    • разрешающий сигнал V, поступающий на V-вход.

    На V-входы триггера поступают сигналы, которые разрешают (V=1) или запрещают (V=0) запись информации. В синхронных триггерах с V-входом запись информации возможна при совпадении сигналов на информационном С и V-входах.

    Работа триггеров описывается с помощью таблицы переключений, являющейся аналогом таблицы истинности для комбинационной логики. Выходное состояние триггера обычно обозначают буквой Q. Индекс возле буквы означает состояние до подачи сигнала (t) либо (t-1) или после подачи сигнала (t+1) или (t). В триггерах с парафазным (двухфазным) выходом имеется второй (инверсный) выход, который обозначают как Q, /Q или Q'.

    Кроме табличного определения работы триггера существует формульное задание функции триггера в секвенциальной логике. Например, функцию RS-триггера в секвенциальной логике представляет формула . Аналитическая запись SR-триггера выглядит так: .

    Типы триггеров

    RS-триггеры

    RS-триггер асинхронный



     

     

    Q(t)

    Q(t)

    Q(t+1)

    Q(t+1)

    0

    0

    0

    1

    0

    1

    0

    0

    1

    0

    1

    0

    0

    1

    0

    1

    0

    1

    0

    1

    1

    0

    0

    1

    1

    0

    0

    1

    1

    0

    1

    0

    1

    0

    1

    0

    1

    1

    0

    1

    не определено

    не определено

    1

    1

    1

    0

    не определено

    не определено


    Асинхронный RS-триггер с инверсными входами

    RS-триггер[10][11], или SR-триггер — триггер, который сохраняет своё предыдущее состояние при нулевых входах и меняет своё выходное состояние при подаче на один из его входов единицы.

    При подаче единицы на вход S (от англ. Set — установить) выходное состояние становится равным логической единице. А при подаче единицы на вход R (от англ. Reset — сбросить) выходное состояние становится равным логическому нулю. Состояние, при котором на оба входа R и S одновременно поданы логические единицы не определено и зависит от реализации, например в триггере на элементах «или-не» оба выхода переходят в состояние логического «0», которое является неустойчивым и переходит в одно из устойчивых состояний при снятии управляющего сигнала с одного из входов.

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

    RS-триггеры иногда называют RS-фиксаторами[12].




    Условное графическое обозначение асинхронного RS-триггера



    Логическая схема асинхронного RS-триггера на элементах 2И–НЕ



    Граф переходов асинхронного RS-триггера



    Карта Карно асинхронного RS-триггера



    Асинхронный RS-триггер на логических элементах 2ИЛИ-НЕ



    Схема устранения дребезга контактов

    RS-триггер синхронный



     

     

     

     Q(t) 

    Q(t+1)

    0

    x

    x

    0

    0

    1

    1

    1

    0

    0

    0

    0

    1

    0

    0

    1

    1

    1

    0

    1

    0

    0

    1

    0

    1

    1

    0

    1

    1

    0

    0

    1

    1

    1

    0

    1

    1

    1

    1

    1

    0

    не определено

    1

    1

    1

    1

    не определено
    Схема синхронного RS-триггера совпадает со схемой одноступенчатого парафазного (двухфазного) D-триггера, но не наоборот, так как в парафазном (двухфазном) D-триггере не используются комбинации S=0, R=0 и S=1, R=1.

    Алгоритм функционирования синхронного RS-триггера можно представить формулой



    где x — неопределённое состояние.




    Условное графическое обозначение синхронного RS-триггера



    Схема синхронного RS-триггера на элементах 2И-НЕ



    Граф переходов синхронного RS-триггера



    Карта Карно синхронного RS-триггера

    RS-триггер двухступенчатый со сложной логикой



    Рис. 1 Схема RS-триггера двухступенчатого со сложной логикой на элементах 2И-НЕ и 3И-НЕ

    УГО данного триггера изображено на рис.1. Следует отметить, что на данном рисунке неправильно подается тактовый сигнал (На второй каскад тактовый сигнал должен подаваться с инверсией).

    D-триггеры


    D-триггеры также называют триггерами задержки(от англ. Delay).

    D-триггер синхронный




    Пример условного графического обозначения (УГО) D-триггера с динамическим синхронным входом С и с дополнительными асинхронными инверсными входами S и R


    D

    Q(t)

    Q(t+1)

    0

    0

    0

    0

    1

    0

    1

    0

    1

    1

    1

    1
    D-триггер (D от англ. delay — задержка[13][14][15] либо от data[16] - данные) — запоминает состояние входа и выдаёт его на выход. D-триггеры имеют, как минимум, два входа: информационный D и синхронизации С. После прихода активного фронта импульса синхронизации на вход С D-триггер открывается. Сохранение информации в D-триггерах происходит после спада импульса синхронизации С. Так как информация на выходе остаётся неизменной до прихода очередного импульса синхронизации, D-триггер называют также триггером с запоминанием информации или триггером-защёлкой. Рассуждая чисто теоретически, парафазный (двухфазный) D-триггер можно образовать из любых RS- или JK-триггеров, если на их входы одновременно подавать взаимно инверсные сигналы.

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

    В одноступенчатых D-триггерах во время прозрачности все изменения информации на входе D передаются на выход Q. Там, где это нежелательно, нужно применять двухступенчатые (двухтактные, Master-Slave, MS) D-триггеры.




    Условное графическое обозначение D-триггера со статическим входом синхронизации С

    D-триггер двухступенчатый


    В одноступенчатом триггере имеется одна ступень запоминания информации, а в двухступенчатом — две такие ступени. Вначале информация записывается в первую ступень, а затем переписывается во вторую и появляется на выходе. Двухступенчатый триггер обозначают ТТ. Двухступенчатый D – триггер называют триггером с динамическим управлением. Общая схема двухступенчатого триггера

    T-триггеры


    Т-триггер (от англ. Toggle - переключатель) часто называют счётным триггером, так как он является простейшим счётчиком до 2.

    Т-триггер асинхронный


    Асинхронный Т-триггер не имеет входа разрешения счёта - Т и переключается по каждому тактовому импульсу на входе С.



    Работа схемы асинхронного двухступенчатого T-триггера с парафазным входом на двух парафазных D-триггерах на восьми логических вентилях 2И-НЕ. Слева — входы, справа — выходы. Синий цвет соответствует 0, красный — 1

    T-триггер синхронный



    T

    Q(t)

    Q(t+1)

    0

    0

    0

    0

    1

    1

    1

    0

    1

    1

    1

    0


    Условное графическое обозначение (УГО) синхронного T-триггера с динамическим входом синхронизации С на схемах.

    Синхронный Т-триггер[17], при единице на входе Т, по каждому такту на входе С изменяет своё логическое состояние на противоположное, и не изменяет выходное состояние при нуле на входе T. Т-триггер можно построить на JK-триггере, на двухступенчатом (Master-Slave, MS) D-триггере и на двух одноступенчатых D-триггерах и инверторе.

    Как можно видеть в таблице истинности JK-триггера, он переходит в инверсное состояние каждый раз при одновременной подаче на входы J и K логической 1. Это свойство позволяет создать на базе JK-триггера Т-триггер, объединяя входы J и К.

    В двухступенчатом (Master-Slave, MS) D-триггере инверсный выход Q соединяется со входом D, а на вход С подаются счётные импульсы. В результате триггер при каждом счётном импульсе запоминает значение Q, то есть будет переключаться в противоположное состояние.

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

    T-триггер двухступенчатый со сложной логикой

    TV-триггер двухступенчатый со сложной логикой

    JK-триггер




    JK-триггер с дополнительными асинхронными инверсными входами S и R


     

     

    Q(t)

    Q(t+1)

    0

    0

    0

    0

    0

    0

    1

    1

    0

    1

    0

    0

    0

    1

    1

    0

    1

    0

    0

    1

    1

    0

    1

    1

    1

    1

    0

    1

    1

    1

    1

    0
    JK-триггер[18][19] работает так же как RS-триггер, с одним лишь исключением: при подаче логической единицы на оба входа J и K состояние выхода триггера изменяется на противоположное. Вход J (от англ. Jerk — включение) аналогичен входу S у RS-триггера. Вход K (от англ. Kill — отключение) аналогичен входу R у RS-триггера. При подаче единицы на вход J и нуля на вход K выходное состояние триггера становится равным логической единице. А при подаче единицы на вход K и нуля на вход J выходное состояние триггера становится равным логическому нулю. JK-триггер в отличие от RS-триггера не имеет запрещённых состояний на основных входах, однако это никак не помогает при нарушении правил разработки логических схем. На практике применяются только синхронные JK-триггеры, то есть состояния основных входов J и K учитываются только в момент тактирования, например по положительному фронту импульса на входе синхронизации.

    На базе JK-триггера возможно построить D-триггер или Т-триггер. Как можно видеть в таблице истинности JK-триггера, он переходит в инверсное состояние каждый раз при одновременной подаче на входы J и K логической 1. Это свойство позволяет создать на базе JK-триггера Т-триггер, объединив входы J и К[20].

    Алгоритм функционирования JK-триггера можно представить формулой






    Условное графическое обозначение JK-триггера со статическим входом С



    Граф переходов JK-триггера



    Карта Карно JK-триггера

    JK-триггер двухступенчатый со сложной логикой

    Триггеры с любым числом устойчивых состояний






    Модель пятеричного RS1S2S3S4-триггера в логическом симуляторе Atanua[21]

    Триггер с любым числом устойчивых состояний N строится из N логических элементов (N-1)ИЛИ-НЕ или (N-1)И-НЕ путём соединения выхода каждого элемента (Q0, Q1, …, Q(N-1)) с соответствующими входами всех других элементов[22][неавторитетный источник?]. То есть наименьшее число логических элементов для построения N-ичного триггера равно N.

    Триггеры на элементах (N-1)ИЛИ-НЕ работают в прямом одноединичном коде (на выходе Q одного из элементов — «1», на выходах Q других элементов — «0»).

    Триггеры на элементах (N-1)И-НЕ работают в инверсном однонулевом коде (на выходе Q одного из элементов — «0», на выходах Q других элементов — «1»).

    При добавлении N транзисторов доступа эти триггеры могут работать как ячейки статической сверхоперативной памяти (SRAM).

    При добавлении схем управления переключением эти триггеры могут работать как N-ичные аналоги двоичного RS-триггера.

    В непозиционных системах счисления:
    удельные затраты инверторов от числа состояний триггера не зависят: , где  — число инверторов,  — число состояний триггера.
    Удельные затраты диодов в логических частях логических элементов от числа состояний триггера имеют линейную зависимость: , где  — число инверторов,  — число состояний триггера,  — число диодов в логической части одного логического элемента. По этому параметру выгоднее двоичные триггеры.
    Снимок модели пятеричного RS1S2S3S4-триггера Larry K. Baxter’а в логическом симуляторе Atanua

    В приведённом выше подходе построения триггеров с любым числом устойчивых состояний при увеличении числа устойчивых состояний — n, увеличивается число входов в логических элементах в каждой элементарной ячейке триггера. Larry K. Baxter, Lexington, Mass. Assignee: Shintron Company, Inc., Cambridge, Mass. US Patent 3,764,919 Oct. 9, 1973 Filed: Dec. 22, 1972 Fig.3 предлагает другой подход к построению триггеров с любым числом устойчивых состояний, при котором число логических элементов и число входов в логических элементах в каждой элементарной ячейке триггера остаётся постоянным, но при этом увеличивается время переключения триггера пропорционально числу разрядов триггера.

    Физические реализации триггеров

    Триггеры с тиристорами


    Тиристор подходит для замены элемента памяти в триггерах.

    Описание схемы на примере RS триггера: К катоду тиристора подключается выход триггера Q, к управляющему электроду подключается вход S, к аноду подключается постоянное напряжение через полевой транзистор с изолированным затвором, к затвору полевого транзистора подключается вход R.

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

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

    Как итог мы получаем RS триггер на трех транзисторах.

    Триггеры на релейно — контакторной базе


    Основная статья: релейно-контакторная логика

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

    Таковы, например:

    • триггерная схема «с самоподхватом» для пуска асинхронных двигателей с короткозамкнутым ротором.

    • схемы автопереключения резервных источников питания в промышленности и питании зданий.


    написать администратору сайта