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

1.4 Функциональная схема и принцип работы блока “Формирователь сигналов” (Part4, третий блок устройства).

В третьем блоке нашего устройства выполняются основные действия, связанные с его назначением, а именно – генерация сигналов с заданными частотами, длительностями и паузами после них. Генерация осуществляется на основании данных, полученных из предыдущего блока (part3). Рассмотрим блок part4 подробнее. Этот блок состоит из следующих компонентов (подблоков).

1) Конечный автомат requester. В его функции входит следующее:

- выдача сигнала записи в FIFO по завершении приема данных об очередном сигнале (выходное значение счетчика lpm_counter2 блока part3 кратно 6);

- когда завершен прием данных (количество непринятых сигналов стало равно нулю), выдача сигнала чтения из FIFO, а также сигнала разрешения генерации сигнала. Текст автомата приведен в приложении 2.

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

2) Выявитель перехода значения количества импульсов из 1 в 0 (spad). Этот переход означает, что полностью завершен прием информации по RS-232, и можно начинать генерацию сигналов. Выход этого подблока используется автоматом requester. Текст устройства приведен в приложении 2.

3) Блок FIFO. Этот блок используется для хранения значений параметров сигналов до тех пор, пока по каналу RS-232 не поступит вся информация о последовательности. Каждое устройство FIFO содержит 16 слов (количество сигналов в последовательности от 1 до 16). Также у каждого FIFO своя разрядность в соответствии с разрядностью параметра, который в нем хранится (разрядности параметров выбраны с учетом требуемой точности).

4) Генератор сигналов Sig_Sender. Этот блок осуществляет непосредственно генерацию последовательности сигналов, используя сигналы управляющего автомата requester и данные из FIFO. Принцип работы подблока Sig_Sender заключается в следующем. При поступлении сигнала разрешения работы и данных из FIFO он отсчитывает количество периодов clk, равное половине периода генерируемого сигнала, после чего переключает свой выходной сигнал (sig) в ‘1’. Одновременно с этим к следующему полупериоду сигнала прибавляется (или вычитается, если сигнал dir равен ‘1’) delta (если, конечно, начальный и конечный периоды сигнала не равны). В результате ‘1’ на выходе держится (период + delta) или (период - delta) периодов clk. Таким образом, период сигнала либо возрастает, либо убывает в арифметической прогрессии до тех пор, пока количество периодов не достигнет заданного значения. После этого генерация сигнала прекращается и начинается счет периодов clk до тех пор, пока не будет достигнуто время окончание паузы после сигнала. В этом случае подблок Sig_Sender выдает сигнал dq – сигнал сгенерирован, по которому автомат requester разрешает чтение данных из FIFO и генерацию следующего сигнала.

Коэффициенты в устройстве:

а) для того, чтобы период генерируемого сигнала соответствовал заданному при частоте clk 25 МГц вводим коэффициент полупериода – 10.

б) количество импульсов и delta дополнительных коэффициентов не требуют.

в) соответствие действительности паузы требует введения коэффициента 5.

Текст устройства приведен в приложении 2.

5) Умножитель lpm_mult0. Это устройство умножает значение паузы на 100000 перед записью его в FIFO. Это нужно для того, чтобы при генерации паузы ее сгенерированное значение соответствовало истинному. Дело в том, что с требуемой точностью значение паузы не превышает 100, но измеряется в десятках миллисекунд. Поэтому нам нужно домножить паузу так, чтобы единицами ее измерения стали сотни наносекунд. Таким образом, если пауза равняется 1 с, то в десятках миллисекунд это 100, а в сотнях наносекунд 100*100000=107.

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

Рис. 1.5.

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