Реферат “Модель логических устройств компьютера”


Реферат “Модель логических устройств компьютера”.


Автор Третьяков Алексей 11 класс
Руководитель Гверцители Софио

Москва 2017
Введение

В основу любого арифметико-логического устройства ЭВМ входит сумматор. Он выполняет операции сложения и вычитания, причем операция вычитания в сумматоре представляется, как операция сложения с отрицательным числом. Сумматор используется, как составная часть более сложных арифметико-логических устройств.
В зависимости от способа работы сумматоры бывают параллельные и последовательные. В параллельном сумматоре сложение всех разрядов происходит практически одновременно, а в последовательном – по очереди от младших разрядов к старшим. Может производиться сложение чисел, как с фиксированной, так и с плавающей запятой.
Одна из важных характеристик сумматора – разрядность. Разряды подразделяются на знаковые и цифровые. Знаковые разряды содержат знак числа, цифровые содержат число, над которым выполняется операция сложения.
Существуют три основных кода представления чисел: прямой, обратный и дополнительные. При переводе из одного кода в другой изменяются только цифровые разряды. Знаковые разряды остаются постоянными в любом коде.
В данной работе был спроектирован последовательный 16-ти разрядный сумматор (2 знаковых разряда и 14 цифровых) с фиксированной запятой. Сумматор выполняет сложение чисел в обратном коде. В случае, если после сложения знаковые разряды отличаются, фиксируется переполнение. В процессе схемотехнического проектирования сумматора были учтены такие особенности устройств последовательного действия, как подача синхросигнала и согласование временных задержек.
1. Теоретическая часть
1.1 Классификация существующих сумматоров
Сумматор – это электронный узел, предназначенный для выполнения микрооперации арифметического сложения (суммирования) двух чисел (слов). При сложении двух чисел, представленных в виде двоичных кодов A (a0, a1, an) и B (b0, b1, bn) образуется сумма S (s0, s1, sn). Значение i-x разрядов образуется в соответствии с правилом:
Si=ai+bi+pi-1; pi=0 – при (ai+bi+pi-1) < q, Si=ai+bi+pi-1; pi=1 – при (ai+bi+pi-1) >= q,
где: Si – сумма в iм разряде, pi-1 – перенос из соседнего младшего разряда, q – основание системы счисления.
Сумматоры классифицируют:
– По принятой системе счисления и кодирования различают: двоичные, двоично-десятичные, десятичные и др;
– В зависимости от количества входов и выходов бывают: сумматоры по модулю 2, полусумматоры и полные сумматоры;
– По способу организации процесса суммирования одноразрядной суммирующей схемы: комбинационного типа, накапливающего типа и комбинированные;
– По способу организации цепей переноса между разрядами: с последовательным, с параллельным, с групповым и с одновременным переносами;
– По способу обработки многоразрядных чисел различают: последовательные, параллельные и комбинированные.
Для сложения многоразрядных чисел сумматор представляет собой набор одноразрядных сумматоров, имеющих входы для слагаемых и переноса из младшего разряда и выходы суммы и переноса в старший разряд.
1.2 Последовательный сумматор

Сумматор для последовательных операндов содержит всего один одноразрядный сумматор, обрабатывающий числа последовательно разряд за разрядом, начиная с младшего. Сложив младшие разряды (a0 и b0), одноразрядный сумматор вырабатывает сумму (s0) для младшего разряда результата и перенос (c0), который запоминается на один такт.
В следующем такте складываются вновь поступившие разряды слагаемых (a1 и b1) с переносом из младшего разряда (с0) и т.д. Условная схема последовательного nразрядного сумматора (рис. 1), помимо одноразрядного двоичного сумматора, содержит сдвигающие регистры слагаемых и суммы, а также триггер, запоминающий перенос. Регистры и триггер тактируются сигналом ТИ.


Рис. 1. Схема последовательного nразрядного сумматора.

1.3 Контроль работы сумматора

Для контроля работы сумматоров часто применяют контроль по модулю два. Суть метода заключается в следующем:
пусть имеются два складываемых числа (X и Y) и их сумма (S):
13EMBED Equation.31415
определим код четности суммы:
13EMBED Equation.31415
заменим 13EMBED Equation.31415, получим:
13EMBED Equation.31415
Обозначив контрольные коды четности буквами ks, kx, ky и kp:
13EMBED Equation.31415 или 13EMBED Equation.31415
Полученное тождество и определяет сущность контроля сумматора, контроля сложения двух чисел. Код четности суммы равен сумме по модулю два контрольных кодов слагаемых и контрольного кода переноса. Важным выводом из полученного контрольного соотношения является необходимость формирования и учета контрольного кода переноса.
1.4 Преобразования кода
Преобразование двоичного числа в код Грея производится в соответствии с табл. 1.
Таблица 1
Двоичные
числа
Числа в
коде Грея

0 0 0 0
0 0 0 0

0 0 0 1
0 0 0 1

0 0 1 0
0 0 1 1

0 0 1 1
0 0 1 0

0 1 0 0
0 1 1 0

0 1 0 1
0 1 1 1

0 1 1 0
0 1 0 1

0 1 1 1
0 1 0 0

1 0 0 0
1 1 0 0

1 0 0 1
1 1 0 1

1 0 1 0
1 1 1 1

1 0 1 1
1 1 1 0

1 1 0 0
1 0 1 0

1 1 0 1
1 0 1 1

1 1 1 0
1 0 0 1

1 1 1 1
1 0 0 0


Анализ таблицы показывает, что код Грея можно интерпретировать как двоичную систему счисления с весами разрядов, равными
13EMBED Equation.31415
где: i =1,2,, n. – номера разрядов, считая справа налево;
j – количество единиц слева от данного разряда с номером i. Такая интерпретация позволяет сформулировать правило преобразования любого двоичного числа в код Грея:
1. самая старшая значащая цифра (единица) числа в коде Грея совпадает с самой старшей значащей цифрой этого же числа в двоичном коде;
2. цифра в любом другом, более младшем разряде числа в коде Грея:
а) совпадает с соответствующей цифрой числа в двоичном коде, если слева от данной цифры в коде Грея имеется четное количество единиц;
б) совпадает с отрицанием соответствующей цифры в двоичном коде, если слева от данной цифры в коде Грея имеется нечетное количество, единиц; т.е.: 13EMBED Equation.31415.
Правила составления преобразователя двоичного кода в двоично-десятичный код: веса разрядов входных сигналов всех преобразователей кодов должны находится в отношении 1:2:4:8, так как каждый преобразователь кодов преобразует только один двоичный разряд в двоично-десятичный разряд (вес 8 изменяется на вес 5), то преобразователь двоичного кода в двоично-десятичный код имеет пирамидальную структуру; построение продолжается до тех пор, пока не будут получены веса 13EMBED Equation.31415, где j=0,1,2, (за исключением старшего десятичного разряда); на преобразователи нельзя подавать двоичные числа, превышающие сумму весов входных сигналов 5+4+2+1=12.
Часть схемы имеет 5 входов и 6 выходов и выполняет функцию:
X, если 0X+3, если 5X+6, если 10Y= X+9, если 15X+12, если 20X+15, если 25X+18, если 30Остальная часть схемы также может быть разбита на узлы.
Я хочу рассмотреть изучение схем полусумматора и триггера.
При изучении базовых логических устройств компьютера (сумматор, триггер) целесообразно использовать компьютерные модели. Такие модели позволяют визуализировать процесс преобразования логических значений входных сигналов в значения выходных сигналов.
Microsoft Visual Basic средство разработки программного обеспечения, разрабатываемое корпорацией Microsoft и включающее язык программирования и среду разработки. Язык Visual Basic унаследовал дух, стиль и отчасти синтаксис своего предка языка Бейсик, у которого есть немало диалектов. В то же время Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно –ориентированных языков программирования. Среда разработки VB включает инструменты для визуального конструирования пользовательского интерфейса.
В создании программы я решил использовать Visual Basic по нескольким причинам:
Высокая скорость создания приложений с графическим интерфейсом для MS Windows.
Простой синтаксис, позволяющий очень быстро освоить язык.
Защита от ошибок, связанных с применением указателей и доступом к памяти. Этот аспект делает Visual Basic приложения более стабильными, но также является объектом критики.
Полусумматоры
Полусумматор логическая схема, имеющая два входа и два выхода (двухразрядный сумматор, бинарный сумматор). Полусумматор используется для построения двоичных сумматоров. Полусумматор позволяет вычислять сумму A+B, где A и B это разряды двоичного числа, при этом результатом будут два бита S,C, где S это бит суммы по модулю, а C бит переноса. Однако, как можно заметить, для построения схемы двоичного сумматора (трёхразрядный сумматор, тринарный сумматор) необходимо иметь элемент, который суммирует три бита A, B и C, где C бит переноса из предыдущего разряда, таким элементом является полный двоичный сумматор, который как правило состоит из двух полусумматоров и логического элемента 2 ИЛИ.
Двоичный полусумматор Представляет собой объединение двух бинарных (двухоперандных) двоичных логических функций: сумма по модулю два - S и разряд переноса при двоичном сложении - C.
Троичный полусумматор представляет собой объединение двух троичных бинарных логических функций - «сложение по модулю 3» и «разряд переноса при троичном сложении». Так как существуют две троичных системы счисления - несимметричная, в которой в разряде переноса не бывает значения больше "1" и симметричная (Фибоначчи), в которой в разряде переноса возможны все три состояния трита, и, как минимум, три физических реализации троичных систем - трёхуровневая однопроводная, двухуровневая двухпроводная (BCT) и двухуровневая трёхбитная одноединичная, то и троичных полусумматоров может быть большое множество.

Ранее были построены формальные логические модели устройств компьютера. Так, двоичный одноразрядный полусумматор состоит из четырех базовых логических элементов (два конъюнктора, один дизъюнктор и один инвертор). На вход полусумматора подаются сигналы двух слагаемых А и В, а на выходе имеются сигнал суммы S и сигнал переноса в старший разряд Р.
Полусумматор логическая схема имеющая два входа и два выхода (двухразрядный сумматор, бинарный сумматор). Полусумматор используется для построения двоичных сумматоров.
Построим компьютерную модель полусумматора с использованием языка программирования Visual Basic.
Модель полусумматора
1. Поместить на форму четыре метки для изображения базовых логических элементов и шесть текстовых полей для ввода и вывода логических значений.
2. Создать событийную процедуру, реализующую определение логических значений на выходе каждого базового логического элемента и их вывод в текстовые поля:
Dim blnА, blnВ, blnР, blnS As Boolean
Sub cmdl_Click()
blnА = txtA.Text
blnВ = txtB.Text
blnР = blnА And blnВ
blnS = (blnА Or blnВ) And Not (blnА And blnВ)
txtP.Text = blnР
txtOtr.Text = Not blnР
txtOr.Text = blnА Or blnВ
txtS.Text = blnS
End Sub
3. Запустить проект, ввести логические значения аргументов и щелкнуть по кнопке

Модель полусумматора

Триггеры.
Триггер это запоминающий элемент с двумя (или более) устойчивыми состояниями, изменение которых происходит под действием входных сигналов и предназначен для хранения одного бита информации, то есть 0 или 1.
Триггеры подразделяются на две большие группы динамические и статические. Названы они так по способу представления выходной информации.
Устройство, имеющее два устойчивых состояния, называют триггером. Он имеет два выхода, один из них называют прямым, а другой инверсным. Потенциалы на них взаимно инвертированы: лог. 1 на одном выходе соответствует лог. 0 на другом. С прихо­дом переключающих (запускающих) сигналов переход триггера из одного состояния в другое происходит лавинообразно, и потен­циалы на выходах меняются на противоположные.
В интервале между переключающими сигналами состояние триггера не меняется, т. е. триггер "запоминает" поступление сигна­лов, отражая это величиной потенциала на выходе. Это дает возможность использовать его как элемент памяти.
При лавинообразных переключениях на выходе триггера формируются прямоугольные импульсы с крутыми фронтами. Это по­зволяет использовать триггер для формирования прямоугольных импульсов из напряжения другой формы (например, из синусои­дального).
При двух последовательных переключениях триггера на выходе формируется один импульс, т.е. триггер можно использовать как делитель частоты переключающих сигналов с коэффициентом, равным двум.
Триггеры можно разделить на не тактируемые и тактируемые. Не тактируемый (асинхронный) триггер может менять свое состояние

Рис. 1
переключающими сигналами в любое время. Так­тируемый (синхронный) триггер переключается синхронно с поступлением специального тактирующего импульса. Эти и другие типы триггеров, показанные в таблице классификации, подробно рассмотрены далее.
Промышленность выпускает разнообразные типы триггеров в интегральном исполнении. Кроме того, они могут быть выполнены на цифровых интегральных микросхемах, операционных усилителях и на транзисторах. Рис.1.
Не тактируемые триггеры
На выходе элемента И-НЕ (ИЛИ-НЕ) имеется инвертор (усилитель). В структуре из двух таких элементов можно обеспечить положительную обратную связь, если вход одного элемента соединить с выходом другого, и баланс амплитуд. Такой структурой является RS-триггер. Он имеет два выхода: прямой () и инверсный () и два входа: S установки прямого выхода в 1 (говорят: "установки триггера в 1") и R установки триггера в 0. Такой триггер является асинхронным RS-триггером. Он применяется самостоятельно, а также в качестве запоминающей ячейки входит в состав более сложных интегральных триггеров.
Структуры триггеров

Рис. 2
RS-триггер на элементах ИЛИ-НЕ (рис. 2,а). Прежде всего рассмотрим воздействие на такой триггер комбинаций сигналов S=1, R=1 и S=0, R=0. Сочетание S=1, R=1 является запрещенным, так как при нем на обоих выходах триггера устанавливаются логические 0 и после снятия входных сигналов состояние его не­предсказуемо.
Для элемента ИЛИ-НЕ логический 0 является пассивным сигналом: с его поступлением на вход состояние выхода элемента не изменяется. Поэтому появление комбинации S=0, R=0 не изменяет состояния триггера.
Логическая 1 для элемента ИЛИ-НЕ является активным сигналом: наличие ее на входе элемента однозначно определяет на его выходе логический 0 вне зависимости от сигнала на другом входе. Отсюда следует, что переключающим сигналом для рассматриваемого триггера является логическая 1, а также то, что вход S (установки триггера в состояние Q=1) должен быть связан с элементом, выход которого принят за ()
Из сказанного ясно, что для переключения триггера в состояние Q=1 на его входы следует подать комбинацию S=1, R=0, а для переключения в состояние Q=0 комбинацию S=0,R=1.
Пусть триггер (рис. 2,а) находится в состоянии 0 (Q=0, =1), а на входах действуют сигналы S=0, R=0. Для его переключения в состояние Q=1 подадим на входы комбинацию о S=1, R=0. Тогда на выходе элемента Э2 установится логический 0, на входах элемента Э1 будут одновременно присxутствовать, логические 0, и на выходе Q установится логическая 1 триггер переключается в новое состояние (Q=1, =0). Для его переключения из этого состояния на входы должна поступить комбинация S=0, R=1. После этого на выходе Q будет логический 0, на входах элемента Э2 одновременно окажутся логические 0 и его выход примет потенциал, соответствующий =1, триггер переключается в состояние Q=0, =1.

Рис. 3
Из изложенного следует, что время переключения триггера (tпер) равно удвоенному времени переключения логического элемен­та (удвоенному времени задержки 2tз). Часто, предусматривая запас, принимают tпер=3tз. Для надежного переключения триггера длительность входного переключающего сигнала не должна быть меньше tпер. Условное изображение RS-триггера приведено на рис. 2,б. На рис.3 приведена идеализированная временная диаграмма RS-триггера, на которой время переключения триггера принято равным нулю. Предполагается, что до момента t1 S=0, R=0, а триггер находится в состоянии Q=0. В момент t1 комбинация S=1, R=0 пере­ключает триггер в состояние Q=1. При t=t2 на входах устанавливается сочетание S=0, R=0, при котором состояние триггера сохраняется прежним. Комбинация S=1, R=0, появляющаяся в момент t3, и комбинация S=0, R=0 в момент t4 никаких изменений не вносят, по-прежнему Q=1. Только в момент t5 сочетание S=0, R=1 вызывает переключение триггера в состояние Q=0. Вслед за этим изменение логической переменной на входе R состояния триггера не меняет. Новое переключение происходит в момент t6 при поступлении на входы комбинации S=1, R=0. Заметим, что запрещенное сочетание сигналов S=1, R=1 на диаграмме отсутствует.

Рис. 4
RS -триггер на элементах И-НЕ (рис. 4,а). Для элемента И-НЕ активным сигналом является логический 0: наличие его хотя бы на одном входе обусловливает на выходе логическую 1 независимо от сигналов на других входах. Логическая 1 для такого элемента является пассивным сигналом: с ее поступлением на вход состояние выхода элемента не изменяется. В силу сказанного триггер на элементах И-НЕ переключается логическим 0. На условном изображении такого триггера (рис. 4,б) это отражают инверсными входами.
Нетрудно понять, что для данного триггера комбинация входных сигналов S=0, R=0 является запрещенной, а комбинация S=1, R=1 не меняет его предыдущего состояния.
Тактируемые триггеры
На входы логического элемента или устройства сигналы не всегда поступают одновременно, так как перед этим они могут проходить через разное число элементов, не обладающих к тому же одинаковой задержкой. Это явление описывают как состязания или гонки сигналов. В результате в течение некоторого времени на входах создается непредвиденная ситуация: новые значения од­них сигналов сочетаются с предыдущими значениями других, что может привести к ложному срабатыванию элемента (устройства). Последствия гонок можно устранить временным стробированием, когда на элемент, кроме информационных сигналов, подаются тактирующие (синхронизирующие) импульсы, к моменту прихода которых информационные сигналы заведомо успевают установиться на входах.
Структуры триггеров

Рис. 5
Тактируемый RS-триггер (рис.5,а). Схема такого триггера (собранного на элементах ИЛИ-НЕ) содержит асинхронный RS-триггер T1 и два конъюнктура входной логики. Последние передают переключающую логическую 1 с информационного S- или R-входа на соответст­вующие входы Т1 только при наличии на синхронизирующем входе С логической 1. При С=0 информация с S- и R-входов на триггер Т1 не передается.
Рассматриваемый триггер может быть выполнен и на запоминающей ячейке, реализованной на элементах И-НЕ.
Условное изображение тактируемого триггера приведено на рис. 5,б. В тексте тактируемый RS-триггер сокращенно обозначают как RSC-триггер.
Синхронизирующие входы триггера могут быть статическими и динамическими. Статический вход не теряет своего управляющего действия, пока на нем присутствует тактовый (синхро) импульс. Такие входы имеет триггер, изображенный на рис. 5,а. В присутствии тактового импульса эти триггеры будут менять свое состояние при каждой смене комбинаций логических потенциалов на входах S и R. Динамический синхровход воздействует на состояние выходов триггера в момент своего появления (передним фронтом) или окончания (задним фронтом).

Рис. 6
Двухступенчатый тактируемый RS-триггер (рис.6,а). Каждая ступень такого триггера представляет собой тактируемый RS-триггер. При появлении на входе С логической 1 триггер Т1 воспринимает информацию на входах S и R, определяю­щую его состояние. В это время на С-входе триггера Т2 за счет инвертора логический 0, и информация с выходов Т1 не воздействует на Т2. В момент окон­чания действия логической 1 на входе С (С=0) на выходе инвертора появляется логическая 1, разрешающая перезапись в Т2 информации из Т1. Таким образом, в первую ступень информация с входов S и R записывается с поступлением тактового импульса, т. е. по его переднему фронту; состояние первой ступени передается второй с окончанием тактового импульса, т. е. по его срезу. По этому внешнему проявлению тактирующего импульса C-вход описанного триггера можно рассматривать как динамический.
Условное изображение двухступенчатого RS-триггера, в котором переключение выходов второй ступени триггера происходит перепадом входного сигнала из 1 в 0 (перепадом 1 / 0), приведено на рис.6,б. Условное изображение триггера с C-входом, переключающим триггер перепадом 0/1, приведено на рис. 6, в.
Тактируемый (синхронный) триггер
Рис. 7.
Тактируемый (синхронный) триггер обычно имеет дополнительные асинхронные входы, но которым он вне зависимости от сиг­нала на тактовом входе переключается в состояние 1 (по входу S) или в 0 (по входу R). Такие входы называют не тактируемыми или асинхронными. Логические потенциалы на них воздействуют на запоминающие ячейки триггера непосредственно (для чего эти ячейки триггера выполнены на трехвходовых элементах), минуя входную логику.
D -триггер (триггер задержки) – рис. 8.

Рис. 8
D-триггер имеет один информационный D-вход и тактовый С-вход. Он состоит из синхронного RSC-триггера, дополненного инвертором. При С=1 потенциал D-входа передается на S-вход триггера T1 (S=D), а на входе R устанавливается потенциал R=: сигналы на входах оказываются взаимно инвертированными. Это приводит к тому, что любой сигнал на входе D создает на S- и R-входах комбинацию (S=1, R=0 или S=0, R=1), способную переключить триггер в состояние Q=S=D. Таким образом, при С=1 D-триггер является повторителем: на выходе Q повторяется потенциал входа D. Однако это повторение начинается только с поступлением тактового импульса на вход С, т. е. с задержкой относительно сменившегося потенциала на D-входе. При С=0 триггер Т1 и D-вход разобщены, поэтому S=0 и триггер хранит информацию, поступившую с D-входа при С = 1. Так как в D - триггере информация поступает по одной линии – на D-вход, то явление гонок не проявляется. Поэтому в быстродействующих цифровых устройствах используют D-триггеры.
Тактируемый триггер, кроме информационных входов, имеет синхронизирующий (тактирующий, тактовый) вход; сигналы на информационных входах воздействуют на такой триггер только с поступлением сигнала на синхронизирующий вход.
Триггеры со сложной логикой бывают также одно- и двухступенчатые. В этих триггерах наряду с синхронными сигналами присутствуют и асинхронные. Такой триггер изображён на рис. 5, верхний (S) и нижний (R) входные сигналы являются асинхронными.

Схема RS-триггера двухступенчатого со сложной логикой на элементах 2И-НЕ и 3И-Н0415
Модель триггера
Поместить на форму
Два текстовых поля TextBoxSet и TextBoxReset для ввода начальных логических значений на входах триггера;
Две надписи LabelOr1 и LabelOr2 для вывода промежуточных логических значений;
Две надписи LabelQ2 и LabelQ1 для вывода состояний выходов триггера;
4 надписи для обозначения составляющих триггер логических элементов;
4 надписи для обозначения входов и выходов триггера;
Кнопку Button1 для запуска событийной процедуры установки значений триггера;
Кнопку Button1 для запуска событийной процедуры сброса значения триггера
Определить логические переменные:
Dim S, R, Or1, Or2, Not1, Not2 As Boolean
Создать событийную процедуру установки значения триггера:
Private Sub Button1_Click()
S=TextBoxSet.Text
R=TextBoxReset.Text
Or1=S Or Not2
Not1=Not Or 1
Or2=Not1 Or R
Not2=Not Or2
LabelOr1.Text=Or1
LabelOr2.Text=Or2
LabelQ2.Text=Not1
LabelQ1.Text=Not2
End Sub
Создать обработчик события сброса значения триггера:
Private Sub Button2_Click()
S=TextBoxSet.Text
R=TextBoxReset.Text
Or1=S Or Not2
Not1=Not Or1
Or2=Not1 Or R
Not2=Not Or1
LabelOr1.Text=Or1
LabelOr2.Text=Or2
LabelQ2.Text=Not1
LabelQ1.Text=Not2
End Sub
Запустить проект. Установить триггер ввести в поле TextBoxSet значение True, проследить за установкой значений на элементах триггера.
Сбросить триггер ввести в поле TextBoxReset значение True.

Модель триггера

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

1. Аванесян Г.Р., Левшин В.П. Интегральные микросхемы ТТЛ, ТТЛШ: Справочник. – М.: Машиностроение, 1993. – 256 с.: ил.
2. Пухальский Г.И., Новосельцева Т.Я. Проектирование дискретных устройств на интегральных микросхемах: Справочник. – М.: Радио и связь, 1990. – 304 с.: ил.
3. Угрюмов Е.П. Цифровая Схемотехника: Учеб. пособие для вузов. – 2ое изд., перераб. и доп. – СПб.: БХВ-Петербург, 2004. – 800 с.: ил.
4. Файзулаев Б.Н., Тарабрин Б.В Применение интегральных микросхем в электронной вычислительной технике: Справочник. – М.: Радио и связь, 1986.
5. Шило В.Л. Популярные цифровые микросхемы: Справочник. – М.: Радио и связь, 1988.
6. Угринович Н. Д. Информатика и ИКТ М. 2012










Root EntryEquation NativeEquation NativeEquation NativeEquation Native

Приложенные файлы


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