Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Модуль сопряжения с микросхемой FT245RQ

Читайте также:
  1. C) модульдері тең, бір біріне қарсы бағытталған екі параллель күш
  2. Python. Модуль math. Математические функции
  3. Блок обмена информацией по USB (микросхема FT245RQ)
  4. ДОПОЛНИТЕЛЬНЫЙ МОДУЛЬ
  5. ЗАВДАННЯ ДЛЯ МОДУЛЬНОГО КОНТРОЛЮ
  6. ЗАПИТАННЯ ДЛЯ МОДУЛЬНИХ ФОРМ КОНТРОЛЮ
  7. ЗМІСТОВИЙ МОДУЛЬ 1

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

Модуль разбивается на два: модуль верхнего уровня (v_usb_ram), который осуществляет взаимодействие с внешними модулями, и модуль нижнего уровня (v_usb_ctrl), который реализует побайтовый прием и передачу данных в микросхему FT245RQ.

Рассмотрим модуль нижнего уровня.

Модуль нижнего уровня

Все входы/выходы модуля можно разделить на 4 группы:

· системные;

· связь с микросхемой;

· выдача прочитанных данных;

· прием записываемых данных.

Системные порты – тактовый сигнал (clk), сигнал глобального сброса (i_reset).

Выводы для связи с микросхемой (io_usb_data, o_read_l, o_wr, i_rfx_l, i_trx_l) и временные задержки на этих выводах соответствуют документации на микросхему. Следует отметить реализацию двунаправленной шины данных. В модуле используется триггер read_enable, от значения которого зависит, к чему подключается шина данных. При высоком выходном уровне данного триггера шина данных io_usb_data подтягивается к третьему состоянию (Z) для чтения информации, приходящих по ней; при низком выходном уровне шина подсоединяется к выходу регистра usb_send_data, для передачи данных в микросхему.

Группа, отвечающая за выдачу прочитанных данных, состоит из входа, разрешающего процесс чтения данных, и двух выходов: 8-битной параллельной шины данных и флага готовности данных к чтению.

Прием записываемых данных осуществляется через входы, отвечающие за старт передаваемых данных (i_start_transmit), параллельных данных ([7:0] i_data), флага корректности данных (i_valid), окончание данных (i_finish_transmit). Также есть сигналы, показывающие состояние выполнения передачи: флаг готовности к приему данных (o_rdy) и флаг передачи (o_sending).

Для корректной передачи данных необходимо:

1. Подать импульс длиной один такт i_start_transmit;

2. Дождаться флага готовности к приему;

3. Выставить один байт данных (вывести данные на шину и подать импульс длиной один такт i_valid);

4. Повторить 2 и 3 пункт при необходимости;

5. После окончания передачи (момент заднего фронта сигнала o_sending) подать импульс об окончании передачи данных.

 

Внутренний цикл модуля основан на конечном автомате. Конечный автомат имеет основное состояние eWait. Из него он может перейти в две ветви: чтения (eReadCycle), записи (eTransmitCycle). В ветви чтения формируются выходные сигналы, запрашивающие чтение принятых данных (eSet_read_high), с определенными задержками (состояние eCountPeriods высчитывает задержку); и соответственно само чтение 8-ми бит данных, после чего через определенное время происходит возвращение в состояние eWait.

В ветви записи происходит ожидание прихода данных, затем переход в состояние eStartTrans, в котором сбрасывается флаг готовности и начинает формироваться управляющий сигнал записи данных. Через определенный цикл задержки (eCountPeriods) сигнал записи данных сбрасывается (состояние eSet_write_low) и происходит возврат (опять же через определенный период времени) в состояние eTransmitCycle. При приходе новых данных цикл записи повторяется. Выход из него (и из состояния eTransmitCycle) происходит, когда приходит сигнал об окончании записи данных, и конечный автомат возвращается в свое начальное состояние eWait.

Модуль верхнего уровня

Входы/выходы модуля верхнего уровня также можно разделить на 4 группы:

· системные;

· связь с микросхемой;

· выдача принятого пакета данных потребителю;

· прием пакета данных для передачи на микросхему.

Системные порты – тактовый сигнал (clk), сигнал глобального сброса (reset).

Выводы для связи с микросхемой транслируются из модуля нижнего уровня.

Выдача информационного пакета потребителю осуществляется следующим образом:

1. Выставляется высокий уровень сигнала o_packet_start, по фронту которого можно считывать заголовок сообщения (o_source_port, o_dest_port, o_mes_id, o_last_packet, o_length_mes, o_number_mes). Сигнал o_packet_start держится в активном состоянии до тех пор, пока не будет выдан первый байт пришедших данных.

2. По мере прихода данных они выдаются на выход через o_packet_data и o_packet_data_valid. Последний сигнал является флагом корректности данных на выходе, и по нему должна происходить запись данных.

3. По окончанию приема (когда принято количество, указанное в заголовке o_length_mes) выставляется импульс o_packet_finish длиною один такт, свидетельствующий об окончании сообщения.

4. Далее при появлении данных повторяются операции, указанные в пунктах 1-3.

 

Прием сообщения для передачи на микросхему осуществляется похожим способом:

1. Ожидается выставления сигнала o_rdy_transm, после чего можно осуществлять передачу данных.

2. Выставляется импульс i_start_dataflow. По его фронту происходит считывание заголовка сообщения, выставленного на шине i_header.

3. Далее происходит прием данных, а именно по единичному уровню сигнала i_valid считываются данные на шине i_data. Выход из цикла приема данных осуществляется по приходу сигнала i_finish_dataflow.

4. Далее происходит передача данных в модуль нижнего уровня, после чего возможно повторения приема сообщения для передачи на микросхему по пунктам 1-3.

Чтение и запись происходят независимо друг от друга.

Цикл чтения принятых данных

При побайтном чтении данных, приходящих с FT245RQ, осуществляется формирование сигналов для выдачи информационного пакета потребителям, а именно сначала формируется заголовок сообщения, затем передаются данные в соответствии с алгоритмом, описанным выше. При окончании формирования сообщения выставляется флаг finished_message, по которому заканчивается формирование сигналов (а именно выставляет импульс сигнала o_packet_finish).

Цикл записи данных для передачи через USB

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

По сигналу i_start_dataflow автомат переходит в состояние eReceivingData, в котором осуществляется прием данных и запись их в оперативную память. По сигналу i_finish_dataflow осуществляется переход в цикл передачи данных на микросхему, а именно состояние eWait_rdy_transm. В нем он увеличивает адрес чтения оперативной памяти (если заголовок сообщения уже отправлен). По сигналу готовности модуля нижнего уровня автомат переходит в состояние eDelayWrite, необходимый для задержки чтения данных с оперативной памяти. В следующем состоянии eWrite_FTDI происходит передача байта данных (либо части заголовка, либо принятых от внешних модулей) в модуль нижнего уровня. После этого автомат возвращается в состояние eWait_rdy_transm.

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

Модуль для тестирования соединения

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

Порты модуля можно разбить на 4 группы:

· системные;

· шина принятых по USBданных;

· передача информации в модуль сопряжения;

· управление мьютексом.

Системные сигналы: тактовый сигнал (clk) и сигнал сброса (reset).

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

Управление мьютексом осуществляется с помощью трех портов:

1. Захват мьютекса o_get – импульс, выставляемый модулем для захвата мьютекса.

2. Освобождение мьютекса o_ret – импульс, выставляемый модулем для освобождения мьютекса.

3. Флаг выданного управления i_got – входной сигнал от мьютекса, высокий уровень показывает, что данному модулю выдано управление модулем сопряжения.


 

Блок цифровой обработки сигналов

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

Управляется блок ЦОС командами от МЦО.

Блок ЦОС состоит из следующих модулей:

1. Буфер принятых отсчетов;

2. Модуль БПФ;

3. Модуль контроля обнаружителя;

4. Модуль обнаружителя по спектру;

5. Модуль обнаружителя во временной области;

6. Модуль осциллографа

Обобщенная структурная схема блока ЦОС приведена на рисунке 8.

Рассмотрим отдельно каждый модуль блока.

Модуль БПФ

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

p_fft_depth – степень двойки для указания размера ядра;

p_signal_width – разрядность одной квадратуры входного сигнала;

p_coef_width – разрядность одной квадратуры коэфициента преобразования Фурье.

 

Модуль обладает следующими портами

i_signal_1 – первый сигнальный вход для подачи комплексного сигнала с шириной шины в два раза больше, чем p_signal_width;

i_signal_2 – второй сигнальный вход для подачи комплексного сигнала с шириной шины в два раза больше, чем p_signal_width;

i_valid – признак готовности данных на входе;

i_clk – вход тактового сигнала;

i_reset – вход сброса:

 

o_signal_1 – первый выход комплексного отсчета спектра с шириной шины в два раза больше, чем p_signal_width;

o_signal_2 - второй выход комплексного отсчета спектра с шириной шины в два раза больше, чем p_signal_width;

o_valid – признак готовности отсчетов спектра;

o_first – признак первой пары спектральных отсчетов в выходном пакете;

o_last – признак последней пары спектральных отсчетов в выходном пакете.

 

Работа модуля начинается после подачи на вход i_clk тактового сигнала. Первым после поступления тактового сигнала подается сигнал синхронного сброса i_reset. Минимальная длительность импульса сигнала сброса равна одному периоду i_clk.

На входы i_signal_1 и i_signal_2 подаются два комплексных отсчета входного сигнала, взятых в соседние моменты времени. Оба сигнала сопровождаются единичным уровнем сигнала i_valid.

После записи отсчетов ( пар сигналов i_signal_1 и i_signal_2) модуль начинает производить оценку спектра записанной реализации. Оценка спектра происходит конвейерным методом, поэтому сразу же после окончания записи первой реализации в отсчетов можно сразу же начинать записывать следующую реализацию. По факту модуль позволяет производить преобразование входного сигнала, имеющего тактовую частоту оцифровки в два раза превышающую тактовую частоту модуля БПФ, без разрывов сигнала i_valid.

Через тактов модуль БПФ выставляет результаты расчета спектра на выходные шины o_signal_1 и o_signal_2, сопровождая их признаком готовности данных на выходе o_valid.

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

Модуль состоит из двух последовательно включающихся ядер БПФ преобразования v_fft_core. Каждый из модулей v_fft_core является модулем конвейерного БПФ преобразования, состоящим из последовательно включенных модулей v_fft_layer. Каждый модуль v_fft_layer содержит оперативную память, достаточную для хранения одной выборки, устройство кодирования адреса записи и адреса чтения в соответствии с алгоритмом БПФ с прореживанием по частоте.

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

Суммарное время обработки в слое равно времени поступления одной выборки. Таким образом, через тактов после окончания записи выборки в слой, слой заканчивает обработку. Аналогичным образом работают все остальные слои.

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

То есть ядро v_fft_core позволяет обработать каждую вторую выборку, поступающую на его вход.

Два ядра v_fft_core одного модуля v_fft работают в смещенном режиме – когда в одном ядре четные слои обрабатывают информацию, во втором ядре обработкой занимаются нечетные слои, и наоборот.

Это позволяет производить предварительное разделение на частотные каналы на частоте меньшей, чем скорость поступления данных.

На выходе модуля v_fft располагается мультиплексор, коммутирующий выходы модулей v_fft_core на один выход v_fft в зависимости от активности выходного v_fft_layer заданного v_fft_core.

 

 

+

Рисунок 8 – Структурная схема блока ЦОС

 


Дата добавления: 2015-10-28; просмотров: 148 | Нарушение авторских прав


Читайте в этой же книге: Описание системы | Подмодуль формирования отправляемых данных | Модуль передатчика |
<== предыдущая страница | следующая страница ==>
Блок обмена информацией по USB (микросхема FT245RQ)| Модуль контроля обнаружителя

mybiblioteka.su - 2015-2024 год. (0.014 сек.)