Разработка светодиодных систем отображения информации

Системы передачи по волоконно-оптическим линиям связи

 

Светодиодные экраны

Бегущие строки

НПП “Цифровые решения”

Контрактная разработка радиоэлектронных устройств

Цифровая обработка сигналов и изображений

Поставка высокотехнологичных изделий

 

ПЛИС фирмы Altera: проектирование устройств обработки сигналов.

Стешенко В.Б.

 

Глава 3. Язык описания аппаратуры AHDL

3.4. Последовательностная логика

Логическая схема называется последовательностной, если выходы в заданный момент времени являются функцией входов не только в тот же момент, но и во все предыдущие моменты времени. Таким образом, в последовательностную схему должны входить некоторые элементы памяти (триггеры). В языке AHDL последовательностная логика реализована цифровыми автоматами с памятью (state machines), регистрами и триггерами. При этом средства описания цифровых автоматов занимают особое место. Кроме того, к последовательностным логическим схемам относятся различные счетчики и контроллеры.

3.4.1. Объявление регистров

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

Для подсоедиинения примера примитива, макрофункции или цифрового автомата к другой логике в TDF-ФАЙЛ можно использовать порты. Порт примера описывается в следующем формате: <имя примера>.<имя порта>.

Имя порта - это вход или выход примитива, макрофункции или цифрового автомата, что является синонимом имени вывода в файлах проектов (GDF-файл), *.WDF и других.

Ниже приводится файл bur_reg.tdf, содержащий байтовый регистр, который фиксирует значения на входах d по выходам q на фронте синхроимпульса, когда уровень загрузки высокий.

 

SUBDESIGN bur_reg

(

clk, load, d[7..0] : INPUT;

q[7..0] : OUTPUT;

)

VARIABLE

ff[7..0] : DFFE;

BEGIN

ff[].clk = clk;

ff[].ena = load;

ff[].d = d[];

q[] = ff[].q;

END;

Как видно из файла, регистр объявлен в секции VARIABLE как D-триггер с разрешением (DFFE). В первом булевом уравнении в логической секции происходит соединение входа тактового сигнала подпроекта к портам тактового сигнала триггеров ff[7..0]. Во втором уравнении отпирающий тактовый сигнал соединяется с загрузкой. В третьем уравнении входы данных подпроекта соединяются с портами данных триггеров ff[7..0]. В четвертом уравнении выходы подпроекта соединяются с выходами триггеров. Все четыре уравнения оцениваются одновременно.

Можно также в секции VARIABLE объявить T-, JK- и SR-триггеры и затем использовать их в логической секции. При использовании T-триггеров придется в третьем уравнении изменить порт d на t. При использовании JK- и SR-триггеров вместо третьего уравнения придется записать два уравнения, в которых происходит соединение портов j и k или s и r с сигналами.

Примечание. При загрузке регистра по заданному фронту глобального тактового сигнала фирма Altera рекомендует использовать вход разрешения одного из регистров: DFFE, TFFE, JKFFE или SRFFE, чтобы контролировать загрузку регистра.

3.4.2. Объявление регистровых выходов

Можно объявить регистровые выходы, если объявить выходы подпроекта как D-триггеры в секции VARIABLE.

Приведенный ниже файл reg_out.tdf обеспечивает те же функции, что и предыдущий файл bur_reg.tdf, но имеет регистровые выходы.

 

SUBDESIGN reg_out

(

clk, load, d[7..0] : INPUT;

q[7..0] : OUTPUT;

)

VARIABLE

q[7..0] : DFFE;

BEGIN

q[].clk = clk;

q[].ena = load;

q[] = d[];

END;

При присвоении значения регистровому выходу в логической секции это значение формирует входные d сигналы регистров. Выход регистра не изменяется до тех пор, пока не придет фронт синхросигнала. Для определения тактирующего сигнала регистра нужно использовать описание в следующем формате: <имя выходного вывода>.clk для входа тактирующего сигнала регистра в логической секции. Глобальный синхросигнал можно реализовать примитивом GLOBAL или выбором в диалоговом окне компилятора Logic Synthesis (логический синтез) опции Automatic Global Clock.

Каждый отпирающий D-тригер, объявленный в секции VARIABLE, возбуждает выход с таким же именем, поэтому можно обращаться к q выходам объявленных триггеров без использования q порта этих триггеров.

3.4.3. Создание счетчиков

Счетчиками называются последовательностные логические схемы для счета тактовых импульсов. В некоторых счетчиках реализован счет вперед и назад (реверсивные счетчики), в некоторые счетчики можно загружать данные, а также обнулять их. Счетчики обычно определяют как D-триггеры (DFF и DFFE) и используют операторы IF.

Ниже приведен файл ahdlcnt.tdf, который реализует 16-битовый загружаемый счетчик со сбросом.

 

SUBDESIGN ahdlcnt

(

clk, load, ena, clr, d[15..0] : INPUT;

q[15..0] : OUTPUT;

)

VARIABLE

count[15..0] : DFF;

BEGIN

count[].clk = clk;

count[].clrn = !clr;

IF load THEN

count[].d = d[];

ELSIF ena THEN

count[].d = count[].q + 1;

ELSE

count[].d = count[].q;

END IF;

q[] = count[];

END;

В данном файле в секции VARIABLE объявлены 16 D-триггеров и им присвоены имена от count0 до count15. В операторе IF определяется значение, загружаемое в триггеры по фронту синхросигнала (например, если загрузка запускается VCC, то триггерам присваивается значение d[ ]).

 

- Наверх -

 

Координаты:

   г. Москва, пр. Мира, 102

Для писем:

   105066, Россия, г. Москва, а/я 18

Тел.: (495) 778-97-04

e-mail: mail@dsol.ru, info@dsol.ru

 

© НПП “Цифровые решения” 2003 — 2006

Разработка светодиодных экранов | Разработка бегущих строк | Проектирование ПЛИС и СБИС | Разработка законченных устройств и модулей | Синтез алгоритмов |

Rambler's Top100 Rambler's Top100