Разработка генератора аналоговых сигналов

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    351,66 Кб
  • Опубликовано:
    2013-06-18
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка генератора аналоговых сигналов

ГБОУ РМ СПО «Саранский техникум энергетики и электронной техники имени А.И. Полежаева»











КУРСОВОЙ ПРОЕКТ

По дисциплине: «Проектирование цифровых устройств»

Тема: «РАЗРАБОТКА ГЕНЕРАТОРА АНАЛОГОВЫХ СИГНАЛОВ»

Выполнила: Козлова Е.И.

Руководитель: Биушкин П. А.





- 2013 учебный год

РЕФЕРАТ

Основные определения:

1. Аналоговый сигнал - сигнал <#"669557.files/image001.gif">

Рисунок 1 - Цифровая генерация аналогового сигнала

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

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

Рисунок 2 - Схема выходного узла генератора

Аналоговый фильтр нижней частоты должен иметь коэффициент передачи в полосе пропускания, равный единице и частоту среза, обеспечивающую эффективное подавление сигнала помехи. Тип схемы фильтра и его порядок не слишком важны. Для удобства пользователя целесообразно сделать фильтр неинвертирующим, чтобы выходные сигналы на обоих выходах генератора (UВЫХ1 и UВЫХ2) были одной полярности. Аттенюатор управляется 8-разрядным кодом амплитуды, что обеспечивает коэффициент деления сигнала от 1/256 до 1. Если амплитуда исходного сигнала UЦАП равна 10 В, то амплитуда выходного сигнала (UВЫХ1 и UВЫХ2) может быть задана с точностью около 40 мВ. Увеличение разрядности кода амплитуды потребовало бы принятия специальных мер, так как слишком малые аналоговые сигналы сильно искажаются шумами и помехами по цепям питания. Цифро-аналоговый преобразователь необходимо применять умножающий с биполярным выходом, чтобы обрабатывать как положительные, так и отрицательные выходные сигналы.

2.2 Проектирование цифровой части генератора

Основной узел генератора должен представлять собой буферную оперативную память с периодическим режимом работы. Причем буфер этот должен быть однонаправленным. Перед началом работы в буфер заносится массив кодов выборок синтезируемого сигнала, а во время работы генератора адреса памяти опрашиваются в нужном темпе, и выходные коды памяти подаются на цифро-аналоговый преобразователь, формирующий аналоговый сигнал UЦАП. Проблема состоит в выборе нужного объема памяти и в способе перебора адресов для обеспечения нужной частоты выходного сигнала. Память может также быть постоянной (ПЗУ), если необходимо формировать одну или несколько постоянных форм сигналов. В этом случае операция записи в память исключается, но проблема выбора способа перебора адресов памяти остается.

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

Рисунок 3 - Опрос памяти с помощью двоичного тока

2.3 Методы перебора адресов

Первый, простейший способ предусматривает перебор адресов памяти генератора с помощью обычного двоичного счетчика. В данном случае, опрашиваются все адреса памяти подряд. Изменение частоты аналогового выходного сигнала генератора производится с помощью изменения тактовой частоты этого счетчика, для чего используется тот или иной управляемый делитель частоты опорного кварцевого генератора (рисунке 3). Частота выходного сигнала будет определяться при таком решении по формуле (1.1).

(1.1)

где Fвых - частота выходного сигнала;

FГ - частота задающего кварцевого генератора;- управляющий код делителя частоты;- разрядность счетчика (разрядность шины адреса памяти).

Главное достоинство данного подхода состоит в том, что при изменении частоты выходного сигнала не меняется точность воспроизведения формы выходного сигнала. Ведь точность воспроизведения формы аналогового сигнала зависит в первую очередь от количества выборок, приходящихся на период выходного сигнала, а здесь оно постоянно и равно количеству адресов памяти. Например, если память имеет 1К адресов, то выходной сигнал при любой частоте будет задаваться с помощью 1024 точек, и он всегда будет иметь 1024 ступеньки.

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

Другой существенный недостаток данного метода связан с высокими требованиями к быстродействию цифро-аналогового преобразователя. Например, если максимальная частота выходного аналогового сигнала генератора должна быть 20 кГц, а память имеет 1К адресов, то цифро-аналоговый преобразователь должен успевать работать с частотой более 20 МГц. То есть иметь время установления менее 50 нс. При большей частоте выходного сигнала и при большем объеме памяти требования к быстродействию Цифро-аналогового преобразователя будут еще выше. И с такой же скоростью должна работать буферная память, то есть требования к быстродействию памяти также велики.

Второй возможный способ перебора адресов памяти генератора аналоговых сигналов состоит в применении накапливающего сумматора с переменным шагом суммирования (рисунок 4).

Рисунок 4 - Опрос памяти с помощью накапливающего сумматора

В память, как и в предыдущем случае, заносится массив кодов выборок периода требуемого сигнала. Но при генерации опрашиваются не все адреса памяти подряд, а только адреса с шагом, задаваемым входным кодом накапливающего сумматора M. Чем больше этот шаг, тем быстрее будет пройден весь объем памяти и тем больше будет частота выходного сигнала генератора. И, соответственно, чем меньше шаг, тем больше времени потребуется на опрос всех адресов памяти, тем меньше будет частота выходного сигнала генератора.

При изменении шага опроса памяти изменяется и количество выборок на период выходного сигнала, что приводит к изменению точности воспроизведения формы сигнала. Количество выборок К на период выходного сигнала вычисляется по формуле (1.2)

 (1.2)

где K - количество выборок;- количество разрядов адреса памяти;

М - управляющий код накапливающего сумматора.

А частота выходного аналогового сигнала определяется формулой (1.3)

 (1.3)

где Fвых - частота выходного сигнала;

FГ - частота задающего кварцевого генератора;

M - управляющий код накапливающего сумматора;- количество разрядов адреса памяти.

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

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

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

Данный метод имеет и существенный недостаток. С ростом частоты выходного сигнала его форма будет передаваться все более грубо, ступеньки будут все больше. На рисунке 5 приведен пример воспроизведения формы синусоидального сигнала, записанного в память объемом 32Кх8 для двух разных шагов наращивания адреса М (количество выборок на период К = 16 и К = 48 ). Понятно, что точность воспроизведения формы сигнала сильно зависит от кода М и это может привести к тому, что некоторые фрагменты сигналов сложной формы могут быть пропущены. К тому же в случае, когда количество выборок на период выходного сигнала К не равно целому числу, периоды выходного сигнала будут несколько отличаться один от другого. Смягчает этот недостаток уже упоминавшееся обстоятельство, что в природе сигналы сложной формы обычно низкочастотные, а именно низкочастотные сигналы воспроизводятся при данном методе наиболее точно.

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

Рисунок 5 - Опрос памяти с разными шагами (количество выборок на период К = 16 и К = 48)

Примем для дальнейшего проектирования, что минимальное количество выборок на период выходного сигнала будет равно 32, а максимальное будет равно количеству адресов памяти. Так как от генератора требуется большой диапазон выходных частот (частоты могут различаться в 1000 раз), объем памяти должен быть большим. Если минимальное количество выборок на период равно 32, то максимальное количество выборок на период потребуется в тысячу раз больше, то есть 32000. Поэтому количество адресов памяти не должно быть меньше 32000. Возьмем память с количеством адресов, равным 32К.

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

.4 Накапливающий сумматор для генератора аналоговых сигналов

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

Как уже отмечалось, частота выходного аналогового сигнала прямо пропорциональна управляющему коду накапливающего сумматора М. Абсолютная погрешность установки частоты составит 0,5/М. Поэтому для малых частот погрешность установки частоты будет максимальной. Например, если коду М = 1 будет соответствовать частота 20 Гц, то следующее разрешенное значение частоты будет равно 40 Гц (при М = 2). Это не слишком удобно, хорошо бы иметь точность установки частоты не ниже хотя бы 10% во всем частотном диапазоне. Возьмем, например, абсолютную погрешность установки частоты 0,5 Гц. Значит, при М = 1 генератор должен выдавать частоту 1 Гц. Такие низкие частоты мы можем просто не использовать, зато частота 20 Гц (при М = 20) будет иметь точность установки 2,5%. Разрешенные значения частот вблизи 20 Гц составят при этом 19 Гц, 20 Гц, 21 Гц.

Выберем теперь величину тактовой частоты накапливающего сумматора (то есть частоты задающего кварцевого генератора). Максимальная частота выходного сигнала нашего генератора должна быть равна 20 кГц, при этом на период выходного сигнала должно приходиться 32 выборки. То есть тактовая частота накапливающего сумматора должна быть не менее 20 кГц • 32 = 640 кГц. Выберем с запасом тактовую частоту равной 1 МГц. Максимальная частота выходного аналогового сигнала при 32 выборках на период будет при этом составлять 1 МГц/32 = 31,25 кГц.

Количество разрядов накапливающего сумматора должно быть таким, чтобы он обеспечивал весь выбранный частотный диапазон. Нетрудно подсчитать, что нам потребуется 20-разрядный накапливающий сумматор (так как 220 = 1048576), то есть при тактовой частоте 1 МГц минимальный период выходного сигнала составит 1048576 тактов или чуть более одной секунды, что примерно соответствует частоте выходного сигнала в 1 Гц.

Если использовать 4-разрядные микросхемы полных сумматоров (ИМ3 или ИМ6), то для построения 20-разрядного сумматора потребуется 5 микросхем сумматоров. Для запоминания выходного кода сумматоров надо будет использовать три микросхемы 8-разрядных регистров, причем регистры эти должны быть со входом сброса (например, ИР35) для начального сброса накапливающего сумматора.

Получившаяся в итоге схема накапливающего сумматора приведена на рис. 6. В качестве тактового сигнала она использует в режиме генерации сигнал с кварцевого генератора частотой 1 МГц (разрешающий сигнал «ген.»), а в режиме записи в память кодов выборок - строб записи в память «- зап.». На входы адреса памяти подаются сигналы 15 старших выходных разрядов накапливающего сумматора, а 5 младших разрядов накапливающего сумматора не используются. Код частоты М подается на 15 младших входных разрядов накапливающего сумматора, а на старшие 5 разрядов поданы нулевые сигналы. В результате при максимальном коде М=32767 накапливающий сумматор будет переполняться за 32 такта (выходная частота 31,25 кГц), а при минимальном коде М=1 - за 1048576 тактов (выходная частота около 1 Гц).

Рисунок 6 - Накапливающий сумматор генератора аналоговых сигналов

Перед началом записи в память накапливающий сумматор должен быть сброшен в нуль сигналом «- сброс нс». Во время записи в память каждый строб записи «- зап.» должен увеличивать на единицу адрес памяти, поэтому код частоты М должен быть установлен в данном режиме равным 32 (двоичный код 100000).

Условия правильной работы накапливающего сумматора следующие. За период тактового генератора должны успеть сработать регистр и сумматор. В нашем случае это условие довольно легко выполняется, так как период тактового генератора 1 мкс. Но при построении более высокочастотных генераторов аналоговых сигналов требуется более высокая тактовая частота, и при этом может уже сказаться накопление задержек переноса пяти микросхем сумматоров. При тактовой частоте больше 10 МГц это уже может вызвать большие проблемы. Точно так же за период следования стробов записи в памяти «- зап.» должны успевать срабатывать регистр и сумматоры. Это условие обычно значительно проще выполнить, чем первое.

Посмотрим, какой будет частота сигнала помехи, и какой должна быть частота среза выходного аналогового низкочастотного фильтра. При управляющем коде частоты М больше или равном 32 каждый тактовый импульс будет вызывать изменение адреса памяти. Поэтому частота помехи будет равна частоте тактового генератора (1 МГц). Это соответствует частоте выходного сигнала, большей 32 Гц. Однако нам надо обеспечить нижнюю частоту выходного аналогового сигнала 20 Гц.

Если код частоты М будет лежать в пределах от 16 до 31, то адрес памяти будет изменяться не реже одного раза на два такта тактового генератора. Частота помехи будет не менее 500 кГц. То есть при частоте выходного сигнала, большей 16 Гц, частота сигнала помехи будет в пределах от 500 кГц до 1 МГц. Максимальная частота выходного аналогового сигнала равна 31,25 кГц. Значит, частота среза фильтра должна быть такой, чтобы сильно ослаблять частоты, большие 500 кГц, но не искажать частоты, меньшие 31,25 кГц. Эти частоты различаются в 16 раз, поэтому фильтр построить не слишком сложно.

В результате мы получаем, что выбранная схема накапливающего сумматора обеспечивает диапазон частот выходного аналогового сигнала от 16 Гц до 31,25 кГц, причем погрешность установки частоты составляет 0,5 Гц во всем частотном диапазоне. Количество выборок сигнала на период будет изменяться от 32 на верхнем краю частотного диапазона до 32К на нижнем краю частотного диапазона. Это вполне удовлетворяет требованиям к генератору, сформулированным в начале данного раздела.

Переходим теперь к проектированию схемы управления для генератора аналоговых сигналов.

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

Рисунок 7 - Схема управления для генератора аналоговых сигналов

Первый (левый по рисунку) триггер служит для разрешения или запрещения генерации. По внешнему сигналу «строб» (положительный фронт) в него записывается единица для разрешения генерации или нуль для запрещения генерации. Выходной сигнал «ген.» используется для разрешения тактовых импульсов накапливающего сумматора (рисунок 8) и для управления остальной частью схемы. Перед началом работы генератора этот триггер сбрасывается в нуль внешним сигналом начального сброса «- сброс».

генератор аналоговый сигнал цифровой

2.5 Память и цифро-аналоговый преобразователь

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

Прежде всего, надо обеспечить, чтобы цифро-аналоговый преобразователь, формирующий выборки аналогового сигнала по кодам из памяти, выдавал как положительные, так и отрицательные сигналы, то есть был биполярным. Это существенно повысит универсальность генератора. Цифро-аналоговый преобразователь должен формировать выходное напряжение (а не выходной ток), что позволит более просто обрабатывать выходной сигнал выходным узлом (рисунок 2). Требования к быстродействию цифро-аналогового преобразователя в нашем случае невелики: коды всегда поступают на него с периодом в 1 мкс, значит, за это время цифро-аналоговый преобразователь должен успеть установить свое выходное напряжение. Таких цифро-аналоговых преобразователей существует довольно много. Опорное напряжение цифро-аналогового преобразователя удобно выбирать равным 10В, что обеспечит размах выходного сигнала от -10 В до +10 В. При этом шаг изменения выходного сигнала (минимально возможная высота ступеньки) составит 20В/256, то есть около 80 мВ. Но это только для сигнала максимальной амплитуды 10 В. Если же требуется генерация сигнала с амплитудой 1 В (ослабление выходным аттенюатором в 10 раз), то шаг изменения выходного сигнала будет около 8 мВ.

Входной код цифро-аналогового преобразователя (то есть выходной код буферной памяти) должен фиксироваться в параллельном регистре, чтобы все разряды этого кода подавались на входы цифро-аналогового преобразователя одновременно. В момент отсутствия генерации на выходе цифро-аналоговый преобразователь должно быть нулевое напряжение, поэтому данный регистр должен иметь вход сброса, на который подается сигнал «ген.». Однако надо учитывать, что при биполярном выходе цифро-аналогового преобразователя нулевому уровню выходного сигнала соответствует не нулевой код 00000000, а код 10000000 (с единицей в старшем разряде). Поэтому регистр должен сбрасываться не в нуль, а именно в состояние 10000000. При этом просто поставить дополнительный инвертор на старший разряд кода нельзя, так как он внесет задержку, и старший разряд кода будет устанавливаться позже остальных разрядов, что может вызвать недопустимо большие выбросы выходного напряжения. Поэтому этот входной регистр цифро-аналогового преобразователя должен иметь как прямые, так и инверсные выходы (например, ТМ8), причем все разряды, кроме старшего, надо брать с прямых выходов регистра, а старший разряд - с инверсного выхода. Это обеспечит одновременное изменение всех разрядов кода. Для компенсации инверсии старшего разряда надо дополнительно проинвертировать сигнал старшего разряда на входе регистра.

Память выборок сигнала целесообразно использовать многоразрядную с совмещенной входной и выходной шинами данных, что позволит упростить схему. Микросхемы с организацией 32Кх8 выпускаются многими фирмами. Память лучше брать нетактируемую, чтобы в режиме чтения (при генерации) можно было постоянно подавать на вход -CS сигнал логического нуля. Быстродействие памяти не слишком критично, так как перебор адресов происходит довольно медленно. За период тактового сигнала (1 мкс) в режиме чтения должен успеть сработать регистр накапливающего сумматора, и память должна успеть выдать читаемый код (с задержкой выборки адреса).

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

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

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

Перед началом работы в память должны быть записаны коды выборок (8-разрядная шина «зап. дан».) по стробу «- зап.». Данные должны выставляться до начала строба и сниматься после его окончания. Во время строба записи «- зап.» память переходит в режим записи (сигнал -WR), а буфер открывается (сигналы -EZ1 и -EZ2). За счет задержки буфера, записываемые данные снимаются с входов данных памяти позже, чем заканчивается сигнал «- зап.». Поэтому данные записываются в память. По окончании сигнала «- зап.» происходит смена адреса памяти (рисунок 6). Всего должно быть проведено 32К циклов записи для полного заполнения памяти.

Когда начинается генерация (сигнал «ген.»), адреса памяти перебираются накапливающим сумматором, а читаемая из них информация записывается по сигналу «такт» (рисунок 6) в 8-разрядный регистр (две микросхемы ТМ8), а затем поступает на входы цифро-аналогового преобразователя. В результате выдача выборок выходного сигнала (UЦАП) задерживается на один такт относительно момента чтения из памяти, но эта задержка, как правило, не имеет никакого значения. После окончания генерации регистр сбрасывается в состояние 10000000, соответствующее нулю выходного сигнала UЦАП. Так как по сигналу начального сброса «- сброс» (рисунок 7) генерация запрещается, на выходе генератора в этот момент также будет нулевое напряжение.

Таким образом, схема генератора аналоговых сигналов полностью спроектирована.

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1.       Калабекова Б.А. Цифровые устройства и микропроцессорные системы: учебное пособие - М: Горячая линия - Телеком - : М 2007 - 336с

.         Лехин С.Н. Схемотехника ЭВМ: учебное пособие - С-П: БХВ - Питербург - С-П: 2010-379с

.         Медведев Б.Л., Пирогов Л. Г. Практическое пособие по цифровой схемотехнике: практическое пособие - М: Мир, 2004. - 408с

4.       Межлумян А. Цифровой генератор аналоговых сигналов. - Радио: 2007, №10;

5.       Новиков Ю.В. Основы цифровой схемотехники. Базовые элементы и схемы. Методы проектирования: учебное пособие - М: Мир «2001» -М: 2009 - 379с

6.       Псурцев В., Федоров М. Цифровой синтез аналогового сигнала. - Радио: 2008, №2.

7.       Собакин Е.Л. Цифровая схемотехника: учебное пособие - Томск: ТПУ, 2002. - 160с

.         Угрюмов Е.П. Цифровая схемотехника: справочник - М: Инфра-М: 2010 - 515с

ПРИЛОЖЕНИЕ

Схема цифро-аналогового преобразователя

Похожие работы на - Разработка генератора аналоговых сигналов

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!