Проектирование цифрового автомата в САПР OrCAD 9.1 и Active-HDL 7.1

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Содержание

  • 1. Постановка задачи
  • 2. Краткое описание объекта проектирования (УГО, назначение выводов, логическая таблица, диаграмма состояний автомата)
  • 3. Синтез цифрового автомата с комбинационной частью на логических элементах
  • 4. Реализация спроектированного автомата в виде иерархического блока со схемой замещения на зарубежных библиотечных компонентах в режиме SPICE — проектов. Верификация схемы
  • 5. Разработка абстрактных символов, используемых в проекте, в соответствии с требованиями ЕСКД
  • 6. Написание VHDL — моделей для ранее созданных символов
  • 7. Реализация спроектированного автомата в виде иерархического блока со схемой замещения на созданных в предыдущих пунктах «самодельных» символах. Моделирование схемы, сравнение с результатами, полученными в пункте 4
  • 8. Разработка функциональной VHDL — модели цифрового автомата (без учета задержек)
  • 9. Разработка потоковой VHDL — модели автомата
  • Постановка задачи
  • В работе необходимо синтезировать трехразрядный цифровой автомат на JK-триггерах с комбинационной частью на логических элементах с двумя режимами работы, управляемый входным сигналом m. При m = 0 цифровой автомат выполняет функцию регистра сдвига влево, а при m = 1 — вычитающий двоичный счетчик по модулю 6. Сброс осуществляется R=1 (высоким уровнем), автомат тактируется по срезу сигнала С. Также необходимо разработать абстрактные символы, поддерживаемые VHDL-моделями и используемые в проекте элементов, спроектировать иерархический блок со схемой замещения на зарубежных библиотечных компонентах в режиме SPICE — проектов, и на ранее созданных абстрактных символах, разработать функциональную и потоковую VHDL-модели автомата.

Краткое описание объекта проектирования (УГО, назначение выводов, логическая таблица, диаграмма состояний автомата)

Условное графическое обозначение (УГО) проектируемого цифрового автомата:

/

Назначение выводов:

M — управляющий сигнал (задающий режим работы: при m=0 — автомат работает как сдвигающий регистр влево, если m =1 — двоичный счетчик по модулю 6).

C — тактирующий сигнал (по срезу).

DL — число, «вдвигаемое» при работе в режиме регистра сдвига влево.

R — сброс автомата (высоким уровнем).

Q2, Q1, Q0 — выходы, отображающие текущее состояние автомата.

Логическая таблица.

Число входных импульсов

m

Текущее cостояние (t)

СледующееСостояние (t+1)

0

0

0

0

0

0

0

DL

1

0

0

0

1

0

1

DL

2

0

0

1

0

1

0

DL

3

0

0

1

1

1

1

DL

4

0

1

0

0

0

0

DL

5

0

1

0

1

0

1

DL

6

0

1

1

0

1

0

DL

7

0

1

1

1

1

1

DL

8

1

1

0

1

1

0

0

9

1

1

0

0

0

1

1

10

1

0

1

1

0

1

0

11

1

0

1

0

0

0

1

12

1

0

0

1

0

0

0

13

1

0

0

0

1

0

1

Диаграмма состояний автомата:

цифровой автомат абстрактный символ

Рис. 0 Граф автомата.

Синтез цифрового автомата с комбинационной частью на логических элементах

Составим таблицу сигналов возбуждения триггеров, при M=1, т. е. для двоичного вычитающего счетчика по модулю 6. Выберем наиболее удобные выходы из запрещенных состояний.

Q2t

Q1t

Q0t

Q2t+1

Q1t+1

Q0t+1

J2

K2

J1

K1

J0

K0

1

0

1

1

0

0

*

0

0

*

*

1

1

0

0

0

1

1

*

1

1

*

1

*

0

1

1

0

1

0

0

*

*

0

*

1

0

1

0

0

0

1

0

*

*

1

1

*

0

0

1

0

0

0

0

*

0

*

*

1

0

0

0

1

0

1

1

*

0

*

1

*

Запрещенные состояния:

1

1

0

1

0

1

*

0

*

1

1

*

1

1

1

1

0

0

*

0

*

1

*

1

Из таблицы видно, что сигналы возбуждения для триггера Т0 следующие:

J0A=K0A=1

Для триггеров Т1 и Т2 составим карты Карно и найдем сигналы возбуждения:

J1A

Q2Q1Q0

01

11

10

00

0

*

*

1

*

*

1

K1A

Q2Q1Q0

01

11

10

00

0

*

1

*

1

*

1

1

*

J2A

Q2Q1Q0

01

11

10

00

0

*

*

1

1

*

*

K2A

Q2Q1Q0

01

11

10

00

0

*

*

*

*

1

1

При М=0 автомат выполняет функцию регистра сдвига влево, сигналы возбуждения для триггеров в этом случае будут следующими:

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

Где SA — сигнал возбуждения для режима М=1 и SB — сигнал возбуждения для режима М=0. Тогда:

Сброс будет происходить в состояние 000 при М=0 и в состояние 101 при М=1. Синтез сигналов сброса прост и не требует описания реализации.

Реализация спроектированного автомата в виде иерархического блока со схемой замещения на зарубежных библиотечных компонентах в режиме SPICE — проектов. Верификация схемы

Соберем разработанную схему в OrCAD 9.1 в режиме SPISE на компонентах серии 74LS. Схема будет представлять собой 5 страниц, это три страницы для комбинационных схем сигналов возбуждения триггеров (рис. 1−3), одна страница — реализация комбинационной схемы для сигнала сброса (рис. 4) и последняя страница — триггеры, входные выходные порты, некоторые преобразования сигналов (рис. 5).

Рис. 1 комбинационная схема для Т0

Рис. 2 комбинационная схема для Т1

Рис. 3 комбинационная схема для Т2

Рис. 4 комбинационная схема для сигналов сброса

Рис. 5 Основная схема.

Для верификации схемы схема была объединена в иерархический блок (рис. 6) и были проведены испытания схемы, временные диаграммы представлены ниже (рис. 7).

Рис. 6 Иерархический блок.

Рис. 7 Временные диаграммы.

На временной диаграмме продемонстрировано испытание спроектированного автомата, сначала он работает в режиме регистра сдвига, потом переходит в режим счетчика, причем в запрещенное состояние, сигналы сброса есть и в режиме регистра (инициализация автомата 25нс), так и в режиме счетчика (2800нс).

Рис. 7.1 Задержки по сбросу.

Рис. 7.2 Задержки по переключению.

Задержки составляют:

-при сбросе 25нс (рис. 7. 1);

-при переключении 15нс (рис. 7. 2).

Задержки по переключению это целиком задержка триггера — 15нс, задержка по сбросу, это задержка триггера (15нс) и задержка комбинационной схемы сброса (один элемент, 10нс). Комбинационная схема для триггеров успевает прийти в равновесие к следующему тактирующему сигналу, поэтому ее задержки не влияют.

Разработка абстрактных символов, используемых в проекте, в соответствии с требованиями ЕСКД

В проекте использовались элементы AND2, OR2, INV, NAND2, JK-триггер, тактируемые срезом, имеющий сигналы сброса и установки по сигналу '0'. Так же потребовался источник сигнала '1'. Абстрактные символы, находящиеся в разработанной библиотеке rgr_lib. olb представлены на рисунке 8.

Рис. 8 Абстрактные символы.

Написание VHDL — моделей для ранее созданных символов

В моделях отражены задержки, характерные для реальных элементов, использованных в пункте 4.

Все разработанные модели находятся в библиотеке rgr_lib. vhd. Код библиотеки представлен в листинге 1.

Листинг 1. Библиотека rgr_lib. vhd

LIBRARY ieee;

USE ieee. std_logic_1164. all;

ENTITY AND3 IS PORT (

A: IN std_logic;

B: IN std_logic;

C: IN std_logic;

Y: OUT std_logic);

END AND3;

ARCHITECTURE model OF AND3 IS

BEGIN

Y <= (A AND B AND C) AFTER 13 ns;

END model;

НЕ

LIBRARY ieee;

USE ieee. std_logic_1164. all;

ENTITY INV IS PORT (

A: IN std_logic;

Y: OUT std_logic);

END INV;

ARCHITECTURE model OF INV IS

BEGIN

Y <= NOT (A) AFTER 10 ns;

END model;

2И-НЕ

IBRARY ieee;

USE ieee. std_logic_1164. all;

ENTITY NAND2 IS PORT (

A: IN std_logic;

B: IN std_logic;

Y: OUT std_logic);

END NAND2;

ARCHITECTURE model OF NAND2 IS

BEGIN

Y <= NOT (A AND B) AFTER 10 ns;

END model;

2И

LIBRARY ieee;

USE ieee. std_logic_1164. all;

ENTITY AND2 IS PORT (

A: IN std_logic;

B: IN std_logic;

Y: OUT std_logic);

END AND2;

ARCHITECTURE model OF AND2 IS

BEGIN

Y <= (A AND B) AFTER 13 ns;

END model;

2ИЛИ

LIBRARY ieee;

USE ieee. std_logic_1164. all;

ENTITY OR2 IS PORT (

A: IN std_logic;

B: IN std_logic;

Y: OUT std_logic);

END OR2;

ARCHITECTURE model OF OR2 IS

BEGIN

Y <= (A OR B) AFTER 13 ns;

END model;

JK-триггер

LIBRARY ieee;

USE ieee. std_logic_1164. all;

ENTITY JK IS PORT (

J: IN std_logic;

C: IN std_logic;

K: IN std_logic;

S: IN std_logic;

R: IN std_logic;

Q: OUT std_logic;

nQ: OUT std_logic);

END JK;

ARCHITECTURE model OF JK IS

signal Qint: std_logic;

BEGIN

process (C, R, S)

begin

if (R='0' and S='0') then

Qint<= 'X';

elsif R='0' then--asynchronous RESET

Qint <= '0';

elsif S='0' then

Qint <= '1';

elsif (C'event and C='0') then --CLK

if (J='1' and K='1') then

Qint< =not (Qint);

elsif (J='1') then

Qint< ='1';

elsif (K='1') then

Qint< ='0';

end if;

end if;

end process;

Q< =Qint after 15ns;

nQ<= not (Qint);

END model;

Реализация спроектированного автомата в виде иерархического блока со схемой замещения на созданных в предыдущих пунктах «самодельных» символах. Моделирование схемы, сравнение с результатами, полученными в пункте 4

Реализация схемы замещения аналогична схеме замещения на стандартных элементах, она проиллюстрирована на рисунках 9−13.

Рис. 9 комбинационная схема для Т0

Рис. 10 комбинационная схема для Т1

Рис. 11 комбинационная схема для Т2

Рис. 12 комбинационная схема для сигналов сброса

Рис. 13 Основная схема.

Автомат в виде иерархического блока представлен на рисунке 14. Временные диаграммы — на рисунке 15.

Рис. 14 Иерархический блок.

Рис. 15 Временные диаграммы автомата.

Схема испытания аналогична пункту 4. Временные диаграммы (рис. 15) совпали, это говорит о правильности спроектированных компонентов.

Рис. 15.1 Задержки по сбросу.

Рис. 15.2 Задержки по переключению.

Задержки по сбросу (рис. 15. 1) и установке (рис. 15. 2) совпали, (сброс 25нс, переключение 15нс). Это говорит об идентичности спроектированных компонентов библиотечным.

Разработка функциональной VHDL — модели цифрового автомата (без учета задержек)

Для разработки функциональной модели в среде Active-HDL написан VHDL-код (Листинг 2). Для удобства программирования Выходной сигнал объединен в шину (Рис. 16).

Листинг2. VHDL-код функциональной модели автомата.

library IEEE;

use IEEE. STD_LOGIC_1164. all;

ntity 3 is

port (

M: in STD_LOGIC;

C: in STD_LOGIC;

DL: in STD_LOGIC;

R: in STD_LOGIC;

Q: out STD_LOGIC_VECTOR (2 downto 0)

);

end 3;

--}} End of automatically maintained section

library IEEE;

use IEEE. std_logic_unsigned. all;

architecture 3 of 3 is

signal intQ: STD_LOGIC_VECTOR (2 downto 0);

begin

process (C, R)

begin

if R='1' then

if M='1' then

intQ< ="101″;

else

intQ< ="000″;

end if;

elsif C’event and C='0' then

if M='1' then

if (intQ="110″) or (intQ="000″) then

intQ< ="101″;

elsif intQ="111″ then

intQ< ="100″;

else

intQ< =intQ-1;

end if;

else

intQ<= intQ (1 downto 0) & DL;

end if;

end if;

end process;

Q< =intQ;

-- enter your statements here --

end 3;

Рис. 16 Испытание функциональной модели автомата.

Рис. 17 Испытание функциональной модели. Временные диаграммы.

Временные диаграммы (рис. 17) функциональной VHDL-модели совпадают с временными диаграммами автоматов, спроектированных в пунктах 4 и 7, за исключением задержек.

Разработка потоковой VHDL — модели автомата

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

Листинг 3. VHDL-код потоковой модели автомата.

library IEEE;

use IEEE. STD_LOGIC_1164. all;

entity 2 is

port (

M: in STD_LOGIC;

C: in STD_LOGIC;

DL: in STD_LOGIC;

R: in STD_LOGIC;

Q2: out STD_LOGIC;

Q1: out STD_LOGIC;

Q0: out STD_LOGIC

);

end 2;

--}} End of automatically maintained section

architecture 2 of 2 is

signal intQ0: STD_LOGIC;

signal intQ1: STD_LOGIC;

signal intQ2: STD_LOGIC;

signal nM: STD_LOGIC;

signal nDL: STD_LOGIC;

signal J0: STD_LOGIC;

signal J1: STD_LOGIC;

signal J2: STD_LOGIC;

signal K0: STD_LOGIC;

signal K1: STD_LOGIC;

signal K2: STD_LOGIC;

signal J1ta: STD_LOGIC;

signal J2ta: STD_LOGIC;

signal K1ta: STD_LOGIC;

signal KJ2ta: STD_LOGIC;

signal J0tb: STD_LOGIC;

signal K0tb: STD_LOGIC;

signal J1tb: STD_LOGIC;

signal J2tb: STD_LOGIC;

signal K1tb: STD_LOGIC;

signal K2tb: STD_LOGIC;

begin

-- enter your statements here --

nM<= not (M) after 10ns;

nDL<= not (DL) after 10ns;

J1ta< =intQ2 and not (intQ0) and M after 13ns;

K1ta< =(intQ2 or not (intQ0)) and M after 26ns;

KJ2ta< =not (intQ1) and not (intQ0) and M after 13ns;

J0tb< =DL and nMafter 13 ns;

K0tb< =nDL and nM after 13 ns;

J1tb< =intQ0 and nM after 13 ns;

K1tb< =not (intQ0) and nM after 13 ns;

J2tb< =intQ1 and nMafter 13 ns;

K2tb< =not (intQ1) and nM after 13 ns;

J0<= M or J0tb after 13ns;

K0<= M or K0tb after 13ns;

J1< =J1ta or J1tb after 13ns;

K1< =K1ta or K1tb after 13ns;

J2< =KJ2ta or J2tb after 13ns;

K2< =KJ2ta or K2tb after 13ns;

process (C, R)

begin

if M='0' and R='1' then

intQ2 <= '0' after 10ns;

intQ1 <= '0' after 10ns;

intQ0 <= '0' after 10ns;

elsif M='1' and R='1' then

intQ2 <= '1' after 10ns;

intQ1 <= '0' after 10ns;

intQ0 <= '1' after 10ns;

elsif C’event and C = '0' then

if (J0='1' and K0='1') then

intQ0< =not (intQ0);

elsif (J0='1') then

intQ0< ='1';

elsif (K0='1') then

intQ0< ='0';

end if;

if (J1='1' and K1='1') then

intQ1< =not (intQ1);

elsif (J1='1') then

intQ1< ='1';

elsif (K1='1') then

intQ1< ='0';

end if;

if (J2='1' and K0='1') then

intQ2< =not (intQ2);

elsif (J2='1') then

intQ2< ='1';

elsif (K2='1') then

intQ2< ='0';

end if;

end if;

end process;

Q0< =intQ0 after 15ns;

Q1< =intQ1 after 15ns;

Q2< =intQ2 after 15ns;

end 2;

Рис. 17 Временные диаграммы.

Рис. 17. 1 Измерение задержек.

Временные диаграммы (рис. 17) совпали с предыдущими. Задержки (рис. 17. 1) по сбросу (25нс) и по переключению (15нс) так же совпали, это говорит о том, что модель автомата спроектирована правильно.

ПоказатьСвернуть
Заполнить форму текущей работой