Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа.doc
Скачиваний:
57
Добавлен:
01.05.2014
Размер:
469.5 Кб
Скачать

1.3 Функциональная схема и принцип работы блока “Анализатор информации, принятой по последовательному интерфейсу rs-232” (Part3, второй блок устройства).

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

Итак, перечислим функции блока Part3:

1) Прием количества сигналов в последовательности. Количество сигналов – первый параметр последовательности, он передается в первом байте по RS-232. В блоке Part3 количество сигналов подается на подблок Decounter – “счетчик наоборот”, который сохраняет его. При последующем приеме байтов этот подблок по переполнению счетчика lpm_counter3 (каждые 6 сигналов о приходе пакета по RS-232) уменьшает количество сигналов на единицу и посылает полученное число в подблок Sig_Counter.

2) Прием и обработка параметров каждого сигнала. Как следует из технического задания, для каждого сигнала задается 4 параметра: начальная и конечная частоты, длительность и пауза после сигнала. В рамках данной реализации сигнал рассматривается как последовательность полупериодов. Линейное увеличение частоты – постепенное уменьшение периода, и наоборот. Основная задача блока Part3 состоит в том, чтобы сформировать по 4м входным параметрам 5 новых: периоды сигнала, начальный и конечный; разность между двумя соседними полупериодами сигнала (если начальный и конечный периоды не были равны); количество периодов в сигнале и “направление” (увеличение или уменьшение периода сигнала). Рассмотрим вычисление этих параметров подробнее.

Периоды вычисляются исходя из значений частот по формуле: T=1/f, где f – частота, а T – период.

Количество периодов в сигнале вычисляется по формуле арифметической прогрессии n=S/(a1/2-an/2), где n – количество импульсов, S – длительность последовательности (сумма всех ее членов), a1 и an – соответственно, начальный и конечный периоды (первый и последний члены последовательности).

Разность между двумя соседними полупериодами сигнала (в дальнейшем будем называть ее delta) вычисляется также по формуле арифметической прогрессии: d = (a1/2-an/2)/(n-1), где d – искомая delta, a1 и an – соответственно, начальный и конечный периоды (первый и последний члены последовательности), а n – количество импульсов в последовательности (сигнале).

“Направление” определяется следующим образом: начальный и конечный периоды сигнала сравниваются и, если начальный период больше конечного, delta прибавляется к следующему полупериоду, если же нет – delta вычитается из следующего полупериода.

Все изложенные выше операции выполняет подблок Sig_Counter. На его вход поступают сигналы о приходе пакета, которые являются его внутренней синхронизацией. Внешняя синхронизация этого блока – External_clk.

Sig_Counter начинает свою работу только в том случае, если байт с количеством импульсов принят, о чем свидетельствует сигнал равенства eq с компаратора lpm_compare0 а также количество импульсов (colimp), подаваемое с блока Decounter, которое должно быть больше 0 и меньше 17. В процессе работы вместе с сигналом прихода пакета Sig_Counter получает байты с RS-232 и обрабатывает их значения в соответствии с приведенными выше формулами.

Перечислим выходы подблока Sig_Counter.

Dir – направление, битовый сигнал;

Delta - разность между двумя соседними полупериодами сигнала, 11 разрядов;

K_vo – количество периодов в сигнале, 8 разрядов;

P – начальный период сигнала, 18 разрядов;

Pausa – пауза после сигнала, 7 разрядов.

Остальные выходы – kolimp (количество импульсов), eq(сигнал равенства eq с компаратора lpm_compare0) и q(выход счетчика байт, принятых с RS-232, lpm_counter2) – являются вспомогательными для блока Part4.

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

Надо отметить, что исходя из требований к точности, начальная и конечная частоты принимаются в виде четырех байт (по два байта на значение частоты). Поэтому перед отправкой по каналу RS-232 они должны быть закодированы следующим образом: все число переводится в двоичную систему счисления, а затем делится на два байта, старший и младший. Эти байты по-отдельности переводятся обратно в десятичную систему и передаются по RS-232. На приемной стороне нужно произвести обратное преобразование, т. е. старший байт умножить на 256 и прибавить к нему младший. Например, число 5000 перед передачей должно быть преобразовано как 19 и 136; при обратном преобразовании получим: 19 * 256 + 136 = 5000.

Учитывая, что мы работаем с целыми числами (тип Integer), в формулы подблока Sig_Counter были введены некоторые коэффициенты. Далее, в блоке Part4 эти коэффициенты учтены при генерации сигналов с соответствующей частотой при соответствующей частоте clk. Также выбор коэффициентов ориентирован на заданную для нашей реализации точность.

Так, для значения периодов выбран коэффициент 1000000, для длительности – 100000, для “delta” – 5 а для паузы - 1.

Пример расчета параметров сигнала в блоке Part3.

Допустим, параметры нашего сигнала таковы: начальная частота – 5000 Гц, конечная – 50 Гц, длительность сигнала – 500мс, пауза после сигнала – 200мс.

В этом случае на вход блока Part3 должны поступить байты со следующими значениями: 0,50,19,136,50,20 Вычисленные периоды будут равны, соответственно, 200000 и 2000. Эти значения приведены в сотнях наносекунд. Количество импульсов в сигнале, вычисленное по приведенной выше формуле будет равно (100000*50/(200000/2+2000/2))=49, а delta - 5*(200000/2-2000/2)/(198-1)=10312 (в сотнях наносекунд). Пауза же будет равна 20 (в десятках микросекунд), а истинная ее величина будет получена в блоке Part4 за счет умножителя lpm_mult0 (п. 1.4). Полученные в блоке Part3 значения не являются окончательными. Впоследствии они корректируются блоком Part4. Эта особенность устройства связана с тем, что изначально была выбрана другая частота clk, а впоследствии оказалось, что на плате нет такого генератора clk. Иллюстрацию приведенного выше примера можно увидеть на временной диаграмме работы блока Part3 (см. приложение 3). Также это связано с исправлением замеченных в ходе разработки и тестирования устройства ошибок.

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

Рис. 1.5.

Схема блока part3 приведена в Приложении 1 на рисунке пр_1.3. Тексты подблоков Sig_Counter и Decounter приведены в приложении 2.