Смекни!
smekni.com

Моделирование работы приемника циклового синхросигнала аппаратуры ЦСП (стр. 2 из 3)

САПР MAX+plusII представляет собой архитектурно независимую среду проектирования, которая легко приспосабливается к конкретным проектным требованиям и может работать на различных компьютерных платформах. MAX+plusII предоставляет различные способы ввода проекта, быструю компиляцию и непосредственное программирование микросхем.

MAX+plusII предоставляет полный спектр возможностей для проектирования цифрового устройства: ввод проекта(различными способами), логический синтез, компиляцию с заданными временными ограничениями, функциональное и временное моделирование, разделение проекта на части и моделирование проекта, выполненного на нескольких микросхемах, временной анализ, автоматическое определение ошибок, программирование и верификацию микросхем. САПР MAX+plusII позволяет вводить и сохранять проекты в виде файлов AHDL(язык описания аппаратуры фирмы Altera), EDIF, Verilog HDL, VHDL, OrCAD.

MAX+plusII состоит из 11 полностью интегрированных программных модулей, каждый из которых выполняет свою функцию при создании проекта. Ввод проекта может осуществляться следующими способами: с помощью графического редактора(составление принципиальной схемы из заранее заготовленных символов путём соединения выводов), с помощью текстового редактора(ввод описания проекта на одном из выше перечисленных языков), а также с помощью редактора временных диаграмм. Проект MAX+plusII может содержать в себе различные типы файлов.

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

Работа над проектом

В связи со сложностью поиска зарубежных аналогов отечественным микросхемам, применяемым в ИКМ-30, в библиотеках MAX+plusII, был выбран путь реализации этих микросхем с помощью текстового редактора.

На языке AHDL были описаны только те элементы функциональной схемы, для которых не нашлось точных аналогов в серии 74. Такими элементами были выбраны: входной семиразрядный сдвиговый регистр(INPUT_Register); опознаватель, представляющий собой элемент 7И-НЕ с инверсиями на некоторых входах(DECODER); накопитель по входу(In_Case); дополнительный счётчик и счётчик-делитель на 512(Count512). Для написания программ, описывающих работу элементов, были использованы стандартные элементы кода AHDL Templates. Листинги этих программ находятся в приложениях. Накопитель по выходу строился путём добавления дополнительной логики к уже существующему библиотечному регистру.

Все вновь созданные элементы были откомпилированы и проверены на симуляторе MAX+plusII. Для этого, при открытом файле программы(*.tdf):


При последовательном нажатии указанных кнопок происходит проверка на ошибки, автоматический выбор микросхемы, компиляция в код ассемблера этой микросхемы, симуляция в симуляторе MAX+plusII. Перед симуляцией необходимо создать файл *.scf с аналогичным именем, что и *.tdf, который будет описывать на какие выводы вновь созданного элемента какие сигналы подавать при симуляции. Этот файл создаётся в редакторе временных диаграмм, который позволяет подавать сигналы любой структуры. Для создания файла *.scf:

Теперь необходимо добавить выводы:


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

Описание элементов схемы

Input_Register представляет собой сдвиговый регистр, состоящий из 7 D-триггеров, соединенных последовательно. ИКМ сигнал подаётся на информационный вход триггера младшего разряда, а снимается в параллельном коде с выходов всех триггеров одновременно. Особенностью этого регистра является то, что он работает по заднему фронту сигнала тактовой частоты, которая подаётся на clk входы всех триггеров.

Decoder – это элемент 7И-НЕ, входы 2, 5, 6(нумерация с 0) включены с инверсией.

In_Case – сдвиговый регистр, состоящий из трёх D-триггеров. Работает по переднему фронту сигнала синхронизации, поступающему с дополнительного счётчика. Имеет вход асинхронной установки в 1 с активным уровнем LOG«0». Особенность: выходы разрядов инвертированы.

Count512 – восьмиразрядный счётчик со сложной структурой. Включает семиразрядный счётчик и дополнительный триггер. При переполнении семиразрядного счетчика выдаётся промежуточный сигнал BR, который и передаётся на выход, но через логическую схему, объединяющую его элементами И с выходными сигналами(прямым и инверсным) дополнительного триггера. Счётчик имеет асинхронную установку. Если на входе R LOG0, то счётчик делит тактовую частоту на 512 и выдаёт 4кГц, если на R LOG1, то счётчик выдаёт на выход сигнал тактовой частоты.

Out_Case – четырёхразрядный последовательно-параллельный регистр, параллельные входы которого соединены с общей шиной, а последовательный вход с шиной питания. Вход MODE выбирает режим работы(параллельная загрузка или сдвиг), в следствие чего изменяя MODE мы можем либо записывать последовательно LOG1 либо сбрасывать все триггеры регистра в 0.

С помощью D-триггера на входе асинхронной установки In_Case мы сбрасываем накопитель по входу в нужный момент. На нём организована проверка Р2 КИ0 нечетных циклов.

RS триггер выбирает режим работы дополнительного счётчика(деление на 512 или сброс и выдача тактовой частоты).

Элемент 4И-2ИЛИ-НЕ формирует сигнал установки счётчика-делителя на 512 в момент, когда накопитель по выходу зафиксировал выход из синхронизма, а накопитель по входу обнаружил новое место синхропоследовательности и есть сигнал отклика от опознавателя.

JK-триггер проверяет Р2 КИ0 нечетных циклов и выбирает режим записи для накопителя по выходу.

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

С 0 разряда накопителя по выходу выдаётся информация об ошибках. Третий разряд выдаёт сигнал о потере циклового синхронизма «Авария ЦС»

Для дальнейшего соединения элементов необходимо создать файлы символов (для каждого). Это делается следующим образом: открываем файл описания, а затем


Файл символа описывает графическую структуру элемента: имя, количество выводов, их наименование. Для библиотечных элементов эти файлы уже существуют.

Сборка проекта

Для сборки проекта из заготовленных элементов воспользуемся графическим редактором MAX+plusII.

Создадим графический файл *.gdf:

Добавлять элементы можно двойным щелчком на пустом пространстве. При этом появляется окно, в котором необходимо выбрать библиотеку и элемент или просто ввести имя элемента.

Когда все элементы размещены, нужно их соединить согласно схеме. Эта операция проводится точно так же как в любом графическом редакторе. Просто рисуем линии проводников. Однако большое количество проводников загромождает рабочее пространство. Чтобы это исключить в MAX+plusII используется привязка с помощью имён. В данном проекте этот приём тоже использован. Два проводника называются одинаково и они уже соединены. Т.е. проводники могут находиться в разных углах экрана и не соединяться графически.

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

Теперь схема собрана. Для компиляции используем приём описанный выше. Схема приёмника циклового синхросигнала готовая для моделирования в симуляторе MAX+plusII находится в приложениях.

Моделирование работы схемы проекта

Чтобы выяснить правильно ли работает схема, её необходимо промоделировать. Воспользуемся редактором временных диаграмм MAX+plusII. Создаём файл *.scf точно так же как это делалось для каждого из элементов. Необходимо проинициализировать проект(определить какой из файлов будет главным в проекте). Для этого выбираем файл схемы *.gdf и:

Сохраняем файл *.scf под тем же именем, что и проект(в данном случае ssreceiver). Добавляем необходимые выводы на временную диаграмму: PRN, Clock, ICM, NAND7, Count1, In_Case[0..2], Count2, Out_Case[0..3].

PRN – сигнал предварительной установки триггеров

Clock – сигнал тактовой частоты 2048кГц

ICM – сигнал, в соответствии со структурой реального сигнала ИКМ

NAND7 – сигнал с выхода опознавателя

Count1, Count2 – сигналы с выходов дополнительного счётчика и счётчика-делителя на 512 соответственно.

In_Case[0..2],Out_Case[0..3] – выходы разрядов накопителей по входу и по выходу соответственно.

Задаём конечное время симуляции 5мс:

Задаём тестовые сигналы на входах:

PRN – устанавливаем в 1 и добавляем единичный сброс в 0 длительностью в 1 синхроимпульс в самом начале диаграммы.

Clock – сигнал тактовой частоты с периодом 488нс(частотой 2048кГц)

ICM – создаём сигнал ИКМ в соответствии с временными интервалами реальной системы. Можно создать чётный и нечетный цикл а потом размножить по всей длине диаграммы. Сигнал ИКМ необходимо сдвинуть относительно начала диаграммы на время, достаточное для достижения устойчивого состояния схемы при включении(в противном случае возникают неопределенности).

Запускаем симуляцию и анализируем результат.

Сначала мы подаём идеальные сигналы, что должно соответствовать состоянию циклового синхронизма. Схема при начале симуляции находится в состоянии рассинхронизации потому, что ИКМ сигнал смещен: дополнительный счётчик находится в режиме поиска синхронизма, а счётчик-делитель на 512 работает в режиме деления частоты, но при этом считает с момента появления сигнала тактовой частоты, а не с момента прихода первой синхрокомбинации(см. приложение №5). Накопитель по выходу фиксирует отсутствие синхронизма и записывает последовательно в течение пяти циклов единицы. Накопитель по входу работает в режиме поиска нового положения синхропоследовательности. При первом же правильно принятом синхросигнале записывает 1 на выход младшего разряда, дополнительный счётчик переходит в режим деления на 512 и теперь только через 256 тактов под действием тактового импульса с выхода S счётчика проверяется наличие 1 в Р2 КИ0 нечетного цикла, единица присутствует, накопитель по входу не меняет своего состояния. В следующем цикле происходит запись 1 в следующий разряд накопителя по входу, сбрасывается счётчик-делитель на 512 и начинает работать в фазе с приходящим ИКМ сигналом. В следующем цикле опять проверяется наличие единицы на месте Р2 и накопители не меняют своего состояния. При приходе синхрокомбинации в пятом по счёту цикле происходит обнуление всех триггеров накопителя по выходу и окончательное заполнение единицами накопителя по входу. Схема вошла в синхронизм с ИКМ сигналом через 4 полных цикла. Далее изменений нет, т.к. сигналы поступают синхронно без воздействия помех и схема находится в синхронизме.