Добавил:
t.me Установите расширение 'SyncShare' для решения тестов в LMS (Moodle): https://syncshare.naloaty.me/ . На всякий лучше отключить блокировщик рекламы с ним. || Как пользоваться ChatGPT в России: https://habr.com/ru/articles/704600/ || Также можно с VPNом заходить в bing.com через Edge браузер и общаться с Microsoft Bing Chat, но в последнее время они форсят Copilot и он мне меньше нравится. || Студент-заочник ГУАП, группа Z9411. Ещё учусь на 5-ом курсе 'Прикладной информатики' (09.03.03). || Если мой материал вам помог - можете написать мне 'Спасибо', мне будет очень приятно :) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
z9411_КафкаРС_ЭБВСиС_лаб.docx
Скачиваний:
16
Добавлен:
18.05.2022
Размер:
1.24 Mб
Скачать

Санкт-Петербург 2021

Цель работы: знакомство с особенностями применения примитивов языка AHDL и построения цифровых устройств на их основе.

Ход работы:

Примитив D-триггера dffe описывается следующим прототипом функции:

FUNCTION DFFE (D, CLK, CLRN, PRN, ENA)

RETURNS(Q).

Таблица истинности данного триггера имеет вид:

Входы

Выходы

CLRN

PRN

ENA

D

CLK

Q

L

H

X

X

X

L

H

L

X

X

X

H

L

L

X

X

X

Illegal

H

H

L

X

X

Qo

H

H

H

L

L

H

H

H

H

H

H

H

X

X

L

Qo

Программа именованного экземпляра D-триггера может быть записана следующим образом:

TITLE "D-TRIGGER";

SUBDESIGN DTR

(

data, clock : INPUT;

out : OUTPUT;

)

VARIABLE

a_trig : dffe;

BEGIN

a_trig.d=data;

a_trig.clk=clock;

a_trig.clrn=vcc;

a_trig.prn=vcc;

a_trig.ena=vcc;

out=a_trig.q;

END;

Результат симуляции:

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

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

TITLE "REGD-TRIGGER***";

SUBDESIGN regdtr

(

data, clock, resetn, setn, oe : INPUT;

a, b, c, d : OUTPUT;

)

VARIABLE

dt1, dt2, dt3, dt4 : dffe;

BEGIN

dt1.d=data # d;

dt1.clk=clock;

dt1.clrn=resetn;

dt1.prn=setn;

dt1.ena=oe;

a=dt1.q;

dt2.d=a;

dt2.clk=clock;

dt2.clrn=resetn;

dt2.prn=setn;

dt2.ena=oe;

b=dt2.q;

dt3.d=b;

dt3.clk=clock;

dt3.clrn=resetn;

dt3.prn=setn;

dt3.ena=oe;

c=dt3.q;

dt4.d=c;

dt4.clk=clock;

dt4.clrn=resetn;

dt4.prn=setn;

dt4.ena=oe;

d=dt4.q;

END;

Временная диаграмма:

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

Примитив TFF (Триггер Т-типа, Flipflop)

Прототип функции: FUNCTION TFF (T, CLK, CLRN, PRN)

RETURNS(Q);

Входы

Выходы

PRN

CLRN

CLK

T

Q

L

H

X

X

H

H

L

X

X

L

L

L

X

X

Illegal

H

H

L

Qo

H

H

H

Toggle

H

H

L

X

Qo

Toggle – переключательный (счетный) режим.

Программа для описания Т-триггера без его объявления имеет вид:

TITLE "T-trigger";

SUBDESIGN ttr

(

clock : INPUT;

outa : OUTPUT;

)

BEGIN

outa=tff(vcc,clock,vcc,vcc);

END;

Временная диаграмма:

На основе нескольких Т-триггеров можно построить двоичный счетчик. Программа для его реализации имеет вид:

SUBDESIGN Sttr

(

clock, setn, resetn : INPUT;

tt1, tt2, tt3, tt4: OUTPUT;

)

BEGIN

tt1=tff(vcc,clock,resetn,setn);

tt2=tff(tt1,clock,resetn,setn);

tt3=tff(tt1&tt2,clock,resetn,setn);

tt4=tff(tt1&tt2&tt3,clock,resetn,setn);

END;

Временная диаграмма:

Сформируем счетчик – делитель на 14.

Программа, полученная на основе модификации предыдущей, будет иметь вид:

SUBDESIGN sttr

(

clock, setn, resetn : INPUT;

tt1, tt2, tt3, tt4, R : OUTPUT;

)

BEGIN

tt1=tff(vcc,clock,R,setn);

tt2=tff(tt1,clock,R,setn);

tt3=tff(tt1&tt2,clock,R,setn);

tt4=tff(tt1&tt2&tt3,clock,R,setn);

R=!(!tt1& tt2 & tt3 & tt4);

END;

Временная диаграмма:

Дополним структуру счетчика схемами дешифрации. Выделим состояния счетчика: 0, 5, 8, 12. В этом случае изменения в последней программе будут следующими.

SUBDESIGN sttr

(

clock, setn, resetn : INPUT;

tt1, tt2, tt3, tt4,t1,t2,t3,t4: OUTPUT;

)

BEGIN

tt1=tff(vcc,clock,resetn,setn);

tt2=tff(tt1,clock,resetn,setn);

tt3=tff(tt1 & tt2,clock,resetn,setn);

tt4=tff(tt1 & tt2 & tt3,clock,resetn,setn);

t1=!tt1 & !tt2 & !tt3 & !tt4;

t2=tt1 & !tt2 & tt3 & !tt4;

t3=!tt1 & !tt2 & !tt3 & tt4;

t4=!tt1 & !tt2 & tt3 & tt4;

END;

Временная диаграмма:

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

SUBDESIGN sttr

(

clock, setn, resetn : INPUT;

tt1, tt2, tt3, tt4,t1,t2,t3,t4, st1, st2, st3: OUTPUT;

)

BEGIN

tt1=tff(vcc,clock,resetn,setn);

tt2=tff(tt1,clock,resetn,setn);

tt3=tff(tt1 & tt2,clock,resetn,setn);

tt4=tff(tt1 & tt2 & tt3,clock,resetn,setn);

t1=!tt1 & !tt2 & !tt3 & !tt4;

t2=tt1 & !tt2 & tt3 & !tt4;

t3=!tt1 & !tt2 & !tt3 & tt4;

t4=!tt1 & !tt2 & tt3 & tt4;

st1=srff(t1,t2,clock,vcc,vcc);

st2=srff(t1,t3,clock,vcc,vcc);

st3=srff(t1,t4,clock,vcc,vcc);

END;

Временная диаграмма:

Вывод: мы ознакомились с принципами и особенностями применения примитивов языка и построения цифровых устройств на их основе в программе Quartus II.

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

КАФЕДРА 41

ОЦЕНКА

ПРЕПОДАВАТЕЛЬ

кандидат технических наук, доцент

В. И. Исаков

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №4

Создание и использование модулей цифровых устройств

по дисциплине: Элементарная база вычислительных систем и сетей

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №

Z9411

Р. С. Кафка

номер группы

подпись, дата

инициалы, фамилия

Студенческий билет №

2019/3603