|
|
|
|
|
|
|
|
1
|
a0
|
0000
|
a1
|
1000
|
1
|
y1y2y3y4
|
D3
|
2
|
1000
|
a2
|
0011
|
1
|
y5
|
D1D0
|
3
|
a2
|
0011
|
a3
|
0000
|
y6-
|
|
|
4
|
|
|
a3
|
0000
|
--
|
|
|
5
|
|
|
a6
|
0010
|
y11D1
|
|
|
6
|
a3
|
0000
|
a4
|
0110
|
1
|
y7
|
D2D1
|
7
|
a4
|
0110
|
a5
|
0101
|
1
|
y8y9
|
D2D0
|
8
|
a5
|
0101
|
a0
|
0001
|
y10D0
|
|
|
9
|
|
|
a3
|
0000
|
y6-
|
|
|
10
|
|
|
a3
|
0000
|
--
|
|
|
11
|
a6
|
0010
|
a7
|
0100
|
y6D2
|
|
|
12
|
|
|
a7
|
0100
|
-D2
|
|
|
13
|
a7
|
0100
|
a8
|
0111
|
1
|
y9y12
|
D2D1D0
|
14
|
a8
|
a6
|
0010
|
y11D1
|
|
|
15
|
|
|
a0
|
0001
|
y13D0
|
|
|
- исходное состояние
- двоичный код
исходного состояния
- результирующее
состояние
- двоичный код
результирующего состояния
- условие
перехода
- формируемый
выход
- функции
возбуждения
3.
Из данной таблицы можно получить следующие зависимости:
- для дешифратора состояний:
для функций выхода
для функции возбуждения
триггеров
4.
Построим схему УА уровня регистровых передач:
Согласно обобщенной структуре
управляющего автомата для построения схемы используются следующие элементы:
Т-триггер
DC - декодирующее устройство,
преобразующее позиционный двоичный код;
MX - мультиплексор, выбирающий одно
из проверяемых логических условий;
Рисунок 3.4 - Схема УА уровня
регистровых передач
4. Проектирование
процессорного модуля
Согласно декомпозиции процессорного
модуля, представленной на рисунке 1.1, проектирование заключалось в выполнении
двух этапов: проектирование операционного устройства и управляющего автомата.
Очевидно, что полученный
процессорный модуль является соединением двух отдельных устройств - ОА и УА. На
входы всего процессорного модуля подаются операнды (D1, D2),
условие выбора операции (СОР или D3) и управляющие сигналы (Clk,
Start, Stop, Reset). Внутреннее взаимодействие между ОА и УА заключается во
взаимопередаче сигналов: ОА генерирует значения вычисленных логических условий
{X} на каждом такте, УА формирует сигналы выполнения необходимых на данном
такте микроопераций {Y}. Также операционное устройство формирует результат
выполнения заданного значением регистра СОР действия, который подается на
выходную шину R.
Помимо схем ОА и УА уровня регистровых
передач результатом выполнения курсового проекта являются тексты VHDL-моделей
управляющего устройства, операционного автомата и процессорного модуля.
VHDL-модель процессорного модуля включает в себя в качестве компонентов модели
ОА и УА.
5. Анализ результатов
синтеза
В результате автоматизированного
синтеза были получены модели операционного автомата, управляющего устройства и
всего процессорного модуля. Оценить работу разработанных компонентов можно с
помощью полученных временных диаграмм, построенных в среде проектирования.
5.1 Тестирование
VHDL-модели операционного устройства
После разработки VHDL-модели ОА была
получена временная диаграмма работы устройства, представленная на рисунке 5.1.
Рисунок 5.1 - Временная диаграмма
работы VHDL-модели ОА
Моделирование работы ОА
осуществлялось при подаче на входы устройства входных данных (d1, d2, d3),
текущей микрокоманды и сигналов синхронизации (clk) и асинхронного сброса
(rst). В результате моделирования и отладки был сделан вывод о соответствии
работы устройства требованиям к ОА. (Текст VHDL-модели операционного автомата -
в приложении 1).
5.2 Тестирование
VHDL-модели управляющего устройства
После разработки VHDL-модели УА была
получена временная диаграмма работы устройства, представленная на рисунке 5.2.
Рисунок 5.2 - Временная диаграмма
работы VHDL-модели УА
Для моделирования работы
управляющего устройства на входы устройства были поданы сигналы синхронизации
(clk) и асинхронного сброса (rst) а также значения вычисленных операционным
автоматом логических условий. (Текст VHDL-модели управляющего автомата - в
приложении 2).
Моделирование работы устройства
осуществлялось по стратегии обхода всех дуг. В результате моделирования был
сделан вывод о работоспособности модели, т. к. во всех состояниях УА в качестве
выходного вектора подавались сигналы микроопераций, соответствующие отмеченным
в уточненной ГСА.
5.3 Тестирование VHDL-модели
процессорного модуля
После
разработки VHDL-модели УА были получены
временные диаграммы выполнения двух действий, представленные на рисунках 5.3 и
5.4. Для моделирования на входы модели процессорного модуля были поданы данные
для выполняемого действия (d1, d2 - операнды; d3 - код выполняемой операции). Результат выполнения операции был
получен на выходной шине r.
Рисунок 5.3 - Умножение целых
двоичных беззнаковых чисел, начиная с младших разрядов множителя
Проверка результатов моделирования
работы, представленных на рисунке 5.3:
* 10 = 280, или
* 00001010 =100011000.
При моделировании получен верный
результат.
Рисунок 5.4 - Умножение целых
двоичных беззнаковых чисел, начиная со старших разрядов множителя
При моделировании получен верный
результат.
Выводы
Результатом выполнения курсового
проекта является процессорный модуль, состоящий из операционного М-автомата и
управляющего автомата с жёсткой логикой типа Мили, и выполняющий действия,
согласно заданию: умножение целых двоичных беззнаковых чисел, начиная со
старших разрядов множителя и умножение целых двоичных беззнаковых чисел,
начиная с младших разрядов множителя
Исходными данными к проектированию
были граф-схемы алгоритмов заданных действий, типы ОА и УА и разрядность
операндов.
При выполнении курсового проекта
были получены знания по организации и функционированию сложных цифровых систем
обработки информации, получены практические навыки по проектированию
процессорного модуля с использованием языка VHDL.
В результате анализа
автоматизированного синтеза устройств можно сделать вывод о правильном и полном
выполнении задания к курсовому проектированию, т. к. разработанный процессорный
модуль правильно выполняет предусмотренные заданием действия.
Список использованных
источников
1. Кораблев Н.М. - Конспект лекций по дисциплине «Компьютерная
схемотехника» - Харьков, 2010 г.
. Кораблев Н.М., Саранча С.Н., Саранча О.Н. - Методические
указания к лабораторным работам по дисциплине «Компьютерная схемотехника»:
Часть 2 «Проектирование сложных систем» - Харьков: ХНУРЭ, 2006 г.
. Бибило П.Н. Синтез логических схем с использованием языка VHDL.
- М.: СЛОН-Р, 2002. - 384 с.
. http://vhdl-1.ru/
. http://www.vhdl-1.ru/compon.html
6. http://www.bsuir.by/vhdl/index.php? section=main
Приложение 1
модель операционного автомата
use
IEEE.STD_LOGIC_1164.all;IEEE.STD_LOGIC_unsigned.all;
OA_M is(, rst: in
STD_LOGIC;: in STD_LOGIC_VECTOR (13 downto 1);: in STD_LOGIC_VECTOR (7 downto
0);: in STD_LOGIC_VECTOR (7 downto 0);: in STD_LOGIC;: out STD_LOGIC_VECTOR (15
downto 0);: out STD_LOGIC_VECTOR (4 downto 0)
);OA_M;
arch of OA_M is
объявление внутренних сигналовA, B, Arg2:
STD_LOGIC_VECTOR (7 downto 0);CF: STD_LOGIC_VECTOR (8 downto 0);C, Arg1, Z:
STD_LOGIC_VECTOR (15 downto 0);Cnt: INTEGER;COP: STD_LOGIC;
- сигналы A, B, C, COP - входы соответствующих регистров
сигналы Arg1, Arg2 - шины аргументов
сигнал Cnt - счётчик
begin(clk, rst)
isrst='0' then
асинхронный сброс<=(others=>'0');<=(others=>'0');<=(others=>'0');<=0;<='0';rising_edge(clk)
then
- синхронная записаь в регистр Аy(1)='1' then A<=d1;if;
синхронная записаь в регистр В
if y(2)='1' then
B<=d2; (y(7) or y(12))='1' then B<=Z (7 downto 0);
end if;
синхронная записаь в регистр С
if y(3)='1' then
C<=(others=>'0');(y(6) or y(8) or y(11))='1' then C<=Z;
end if;
синхронная запись результата
if y(10)='1' then
r<=C (7 downto 0)&B (7 downto 0);y(13)='1' then r<=C;
end if;
синхронная запись в счетчик
if y(4)='1' then
Cnt<=8;y(9)='1' then Cnt<=Cnt-1;
end if;
синхронная запись в регистр СОР
if y(5)='1' then
COP<=d3;COP<='0';if;if;process;
Шина аргумента 1<= C when (y(6) or
y(7) or y(8) or y(11))='1'(others=>'0');
Шина аргумента 2<= A when y(6)='1'B
when (y(7) or y(12))='1'
else (others=>'0');
Формирование флага переноса
CF<=('0'&A (7
downto 0))+('0'&B (7 downto 0)) when y(8)='1';
Шина результата<=Arg1 (15 downto
0)+arg2 (7 downto 0) when y(6)='1'«00000000»&Arg1 (0)&Arg2 (7 downto 1)
when y(7)='1'«00000000»&CF(8)&Arg1 (7 downto 1) when y(8)='1'Arg1 (14
downto 0)&'0' when y(11)='1'«00000000»&Arg2 (6 downto 0)&'0' when
y(12)='1'
else (others=>'0');
формирование признаков результата
x(1)<=COP;(2)<='1'
when B(0)='1' else '0';(3)<='1' when Cnt=0 else '0';(4)<='1' when
B(7)='1' else '0';
x(0)<='0';
arch;
Приложение 2
модель управляющего автомата
library
IEEE;IEEE.STD_LOGIC_1164.all;
ua_mili is(: in
STD_LOGIC; - вход синхронизации: in STD_LOGIC; - вход
сброса: in STD_LOGIC_VECTOR (4 downto 1);
- входы логических условий: out STD_LOGIC_VECTOR (13 downto 1)
- выходы микроопераций
);ua_mili;
arch of ua_mili isTState
is (a0, a1, a2, a3, a4, a5, a6, a7, a8); - множество
внутренних состоянийState: TState;
(clk, rst) is - функция
переходовrst='0' then
state<=a0;rising_edge(clk) thenstate
isa0=>state<=a1;a1=>state<=a2;a2=>if x(1)='1' then
state<=a3;state<=a6;if; a3=>state<=a4; a4=>state<=a5;a5=>if
x(3)='1' then
state<=a0;state<=a3;if;a6=>state<=a7;a7=>state<=a8;a8=>if
x(3)='1' then state<=a0;state<=a6;if;case;if;process;
(state) is - функция
выходов<= «0000000000000»;state
isa0=>y(1)<='1'; y(2)<='1'; y(3)<='1';
y(4)<='1';a1=>y(5)<='1';a2=>if x(1)='1' thenx(2)='1' then
y(6)<='1';if;y(11)<='1';if;
a3=>y(7)<='1';a4=>y(8)<='1';
y(9)<='1';a5=>if x(3)='1' then y(10)<='1';if x(2)='1' then
y(6)<='1';if;if;a6=>if x(4)='1' then y(6)<='1';if;a7=>y(9)<='1';
y(12)<='1';a8=>if x(3)='1' then y(13)<='1';y(11)<='1';if;case;process;arch;
struct of ua_mili is
signal D, Q:std_logic_Vector (3 downto 0); - входы и выходы
регистра состояния
signal a0, a1, a2, a3,
a4, a5, a6, a7, a8:STD_LOGIC;
begin(clk, rst) is - процесс описывает 4-хразрядный регистр
beginrst ='0'then Q<=
«0001»;rising_edge(clk) then<=D;if;process;
дешифратор состояний<=(not Q(3)) and (not
Q(2)) and (not Q(1)) and Q(0);<=Q(3) and (not Q(2)) and (not Q(1)) and (not
Q(0));<=(not Q(3)) and (not Q(2)) and Q(1) and Q(0);<=(not Q(3)) and (not
Q(2)) and (not Q(1)) and (not Q(0));<=(not Q(3)) and Q(2) and Q(1) and (not
Q(0));<=(not Q(3)) and Q(2) and (not Q(1)) and Q(0);<=(not Q(3)) and (not
Q(2)) and Q(1) and (not Q(0));<=(not Q(3)) and Q(2) and (not Q(1)) and (not
Q(0));<=(not Q(3)) and Q(2) and Q(1) and Q(0);
функции возбуждения триггеров(0)<=a1 or a4 or (a5
and x(3)) or a7 or (a8 and x(3));(1)<=a1 or (a2 and not x(1)) or a3 or a7 or
(a8 and not x(3));(2)<=a3 or a4 or (a6 and x(4)) or (a6 and not x(4)) or a7; (3)<=a0;
функции выходов(1)<=a0; y(2)<=a0;
y(3)<=a0; y(4)<=a0; y(5)<=a1; (6)<=(a2 and x(1) and x(2)) or
(a5 and not x(3) and x(2)) or (a6 and x(4));(7)<=a3; y(8)<=a4;
y(9)<=a4 or a7; y(10)<=a5 and x(3);(11)<=(a2 and not x(1))
or (a8 and not x(3));(12)<=a7; y(13)<=a8 and x(3);
struct;
Приложение 3
модель процессорного устройства
library IEEE;
use
IEEE.STD_LOGIC_1164.all;IEEE.STD_LOGIC_unsigned.all;PM is(, rst: in STD_LOGIC;:
in STD_LOGIC_VECTOR (7 downto 0);: in STD_LOGIC_VECTOR (7 downto 0);: in
STD_LOGIC;:out STD_LOGIC_VECTOR (15 downto 0)
);PM;
PM of PM is
- компонент - операционный автомат типа М
component OA_M is
port (, rst: in
STD_LOGIC;: in STD_LOGIC_VECTOR (13 downto 1);: in STD_LOGIC_VECTOR (7 downto
0);: in STD_LOGIC_VECTOR (7 downto 0);: in STD_LOGIC;:out STD_LOGIC_VECTOR (15
downto 0);: out STD_LOGIC_VECTOR (4 downto 1)
);
end component;
- компонент - управляющий автомат с жесткой логикой типа Мили
component ua_mili is(,
rst: in STD_LOGIC;: in STD_LOGIC_VECTOR (4 downto 1);: out STD_LOGIC_VECTOR (13
downto 1)
);
end component;
сигналы, которыми обмениваются ОА и УА.
: OA_M port map (clk,
rst, y (13 downto 1), d1, d2, d3, r, x);: ua_mili port map (clk, rst, x, y (13
downto 1));
end PM;