Цифровая обработка сигналов

Потом сигнал 20_MCLK переходит в «1» – это уже Y. Дальше мы берём Y. Соответственно через мультиплексор подаётся «1» , которая инвертируется и переходит в «0». Наша задача сделать также Y младший и Y старший, но поскольку у нас сигнал 20_MCLK равен «1»,а 10_MCLK равен «0», «1» уже признака не выдаёт. Этого не позволит схема, потому что комбинация у нас «1», т.е получится «0» в этом разряде. Но

при этом мультиплексор по 10_MCLK перевели опять в младшее состояние, но здесь уже «0». Таким образом, мы взяли Y младший. Соответственно при комбинации «11» – мы имеем Y старший. Дальше, этот цикл повторяется!

Из-за портов ввода-вывода сигнал выходит с некоторой задержкой. Для того чтобы это нормально принял процессор, мы должны задать строб сопровождения CSTRB. Он будет «защёлкивать» процессор по отрицательному фронту. Для того чтобы всё сформировать, мы берём STR_OUT. Он такой же, как и CSTRB, но в 2 раза большей длительности. Таким образом, мы подаём сигнал, а также этот же сигнал, но задержанный на один такт. Далее с помощью элемента «ИЛИ» мы их суммируем. Получаем этот сигнал и подаём его на выход. Регистр же здесь ставится для того, чтобы убрать некие дребезги (помехи). Этот результирующий регистр двигает всё, ещё на один такт.

Также в проекте есть CDIR, CRDY и CREO. Они не используются, но необходимы, так как процессор выдаёт некие сигналы и, чтобы не было конфликта, нам их необходимо куда-то принять. В ПЛИС ножки, которые не используются, привязаны к земле. Поэтому мы назначаем именно их, для того чтобы забирать сигналы. Это необходимо потому, что порт мы ставим в режим приёма. Следовательно, при подаче питания у нас автоматически включается непрерывный приём данных. Этого мы достигаем с помощью сигнала CACK.

Во втором канале все аналогично! Отличие лишь в том, что там имеется немного другой тест. Взят крайний случай. Для того чтобы можно было посмотреть как сигнал ведёт себя в статике. Также здесь имеется смесь этих синусоид для тестирования программы, которая расположена непосредственно на ПЭВМ.

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

Таким образом, если мы имеем на входе устройство с 4 каналами соответственно. Скорость данных при этом 10Мбайт/сек. Но пропускная способность одного порта всего 10Мбайт/сек. Мы не можем одновременно смотреть X и Y, поэтому принимаем данные, переключаясь либо на X, либо на Y. В проекте есть мультиплексоры. Они работают, переключаясь, на частоте 10Мгц. То есть идёт меандр, и когда «0» он берёт Y, а соответственно при «1», он берёт X. Здесь пропускная способность до 2 байтов. По 10 Мбайт каждый, получаем 20Мбайт, при этом LINK-порт не может работать. Поэтому мы выдаём ему сигналы 5 и 10МГц. Соответственно мы задаём так, чтобы он принимал сигналы в определенные моменты. Этим и объясняется необходимость брать сначала X, либо переключаться и брать Y.

Все серии в проекте формируются следующим образом. Вырабатываем некий сигнал «фазир», поскольку устройство ни к чему не привязано оно формирует сигналы только для внешнего устройства. Формируем в качестве счётчика. Счётчик на 16000 отчетов, который считает вниз, т.е. он начинает считать с 16000. У него есть выход переполнения cout, т.е. есть какое-то максимальное значение. Счётчик начинает считать не с нуля и 16000 является для него переполнением. В этом случае он выдает некий сигнал. Есть сдвиговый регистр. По этому сигналу «фазир» мы загружаем сдвиговый регистр неким числом 524288. Если это число перевести в двоичный код, то получим в старшем разряде «1», а остальные все «0». На дальнейшем такте эта «1» «едет вниз». Когда мы подаем команду на сдвиг «1» «переезжает» дальше, т.е. загружая «1» в старший разряд, она в итоге переходит в младший и т. д. Всё это находится в цикле и, в нашем варианте - 20 разрядов, это дает деление на 20. Если у нас 40Мгц мы делим на 20 и получаем 2 МГц. Имея простую элементарную логику, мы можем формировать любой сигнал.

Например, сигнал 20_MCLK формируется следующим образом. ms10 стоит на установке RS-триггера. По этому сигналу выставляется «1» и по ms20 он сбрасывается и т. д. Соответственно сигнал 10_MCLK формируется аналогично.

Таким образом, мы берем сигналы, какие нам необходимы и как нужно их формируем. Особенность в том что, если мы ставим какую-то логику, в ПЛИС так заведено, что сначала ставится некая логика, поскольку у неё плавающая задержка – она не стабильна, а затем ставиться регистр.

Контроль работы проекта и его дальнейшая настройка проводится с помощью временных диаграмм. На рисунке изображена временная диаграмма, объясняющая принцип вывода информации с ПЛИС.

3.4 Описание принципа работы электрической принципиальной схемы и ее анализ

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

Разъем предназначен для программирования ПЛИС, причем доступны два варианта:

- тестовый – ПЛИС «прошивается» напрямую, в обход ПЗУ, что позволяет сберечь ресурс последней, но требует повторения «прошивки» после каждой перезагрузки ПЛИС, а потому применим этот вариант только для отладки;

- рабочий – ПЛИС «прошивается» через ПЗУ (EPC 2), и, в дальнейшем также при каждой перезагрузке автоматически подгружает проект из памяти.

В ПЗУ ALTERA Flex10K (EPC 2) используется интерфейс JTAG. ПЗУ имеет конечное число перепрожиганий при отладке. Есть порт. Когда мы компилируем проект, для JTAG ПЛИС формируется файл sof, для ПЗУ формируется файл pof. При отладке мы используем JTAG. Прожигаем и при выключении питания конфигурация сбрасывается, т.к. используется технология SRAM – статическая память. По JTAG мы грузим ПЗУ. Она конфигурирует данные, и при выключении питания они остаются в ПЗУ. При последующем включении питания контроллер, который стоит в ПЗУ определяет, что есть ПЛИС, и загружает в неё все данные. Всё это работает по интерфейсу BYTEBLASTER. Этот интерфейс тоже выведен отдельно и по нему также можно загрузить файл. Это сделано для отладки и проверки правильности работы интерфейса.

Также в схеме стоит стабилизатор напряжения. На вход подаётся 5В, а с выхода имеем 3,3В – это для питания плис и для питания ПЗУ.

В схеме есть компаратор с дифференциальными входами. Стоит трансформатор для развязки по цепям и землям. На трансформатор подаётся некая опорная синусоида. Дальше имеются дифференциальные обмотки, которые включены парафазно. Таким образом, сигнал подаётся на дифференциальный вход, и с выхода компаратора мы получаем два противофазных сигнала (+IN,+ OUT и –IN, –OUT). В конечном итоге мы получаем частоту, деленную в 2 раза на тех же ножках «+» и «–». После компаратора мы можем взять любую ножку OUT «+» или «–», и вывести на ПЛИС.

Страница:  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15 
 16  17  18  19  20  21  22  23  24  25 


Другие рефераты на тему «Коммуникации, связь и радиоэлектроника»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы