X
|
x1
|
x2
|
x3
|
x4
|
x5
|
K(X)
|
001
|
010
|
011
|
100
|
101
|
Согласно кодам микроопераций, логических условий
и кодированной микропрограмме составим матрицу программирования памяти:
Таблица 3.10 - Матрица программирования памяти
|
|
Y1
|
Y2
|
Y3
|
Y4
|
Y5
|
X
|
A(0)
|
A(1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0
|
0000
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
1
|
1
|
0
|
0
|
1
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
1
|
1
|
0001
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
0
|
2
|
0010
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
1
|
1
|
3
|
0011
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
1
|
0
|
0
|
4
|
0100
|
0
|
1
|
1
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
1
|
0
|
0
|
1
|
1
|
5
|
0101
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
6
|
0110
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
7
|
0111
|
0
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
0
|
0
|
1
|
1
|
0
|
0
|
0
|
8
|
1000
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
0
|
9
|
1001
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
10
|
1010
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
1
|
1
|
0
|
1
|
1
|
11
|
1011
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
1
|
. Построение схемы управляющего автомата уровня
регистровых передач.
Согласно обобщенной структуре управляющего
автомата для построения схемы используются следующие элементы:
PROM - постоянное запоминающее устройство,
которое хранит набор выполняемых команд;
Т-триггер для разрешения чтения из постоянного
запоминающего устройства PROM;
регистр RG, хранящий текущую микрооперацию;
DC - декодирующее устройство, преобразующее
позиционный двоичный код;
MX1 - мультиплексор, выбирающий одно из
проверяемых логических условий;
MX2 - мультиплексор, формирующий адрес следующей
микрокоманды.
Рисунок 3.5 - Схема управляющего устройства
уровня регистровых передач
4. ПРОЕКТИРОВАНИЕ ПРОЦЕССОРНОГО МОДУЛЯ
Согласно декомпозиции процессорного модуля,
представленной на рисунке 1.1, проектирование заключалось в выполнении двух
этапов: проектирование операционного устройства и управляющего автомата.
Очевидно, что полученный процессорный модуль
является соединением двух отедльных устройств - ОА и УА. На входы всего
процессорного модуля подаются операнды (D1, D2), условие выбора операции (ОРP
или D3) и управляющие сигналы (Clk1, Clk2, Start, Stop, Reset). Внутреннее
взаимодействие между ОА и УА заключается во взаимопередаче сигналов: ОА
генерирует значения вычисленных логических условий {X} на каждом такте, УА
формирует сигналы выполнения необходимых на данном такте микроопераций {Y}.
Также операционное устройство формирует результат выполнения заданного
значением регистра ОРP действия, который подается на выходную шину R.
Помимо схем ОА и УА уровня регистровых передач
результатом выполнения курсового проекта являются тексты VHDL-моделей
управляющего устройства, операционного автомата и процессорного модуля.
VHDL-модель процессорного модуля включает в себя в качестве компонентов модели
ОА и УА.
Стоит отметить, что при проектировании
VHDL-модели процессорного модуля сигнал синхронизации Clk подавался УА и ОА в
противофазе, т.к. это обеспечивает согласованную работу обоих устройств. В
другом случае могли иметь место конфликты между компонентами.
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).
Особенностью VHDL-модели является то, что для
реализации преобразования кодов логических условий и микроопераций из команд в
унарные коды использовалась функция conv_integer(). Т.к. при нулевых значения
векторов функция возвращает 0, пришлось ввести дополнительный нулевой бит во
входной вектор логических условий и выходной вектор микроопераций.
Моделирование работы устройства осуществлялось
по стратегии обхода всех дуг. В результате моделирования был сделан вывод о
работоспособности модели, т.к. во всех состояниях УА в качестве выходного
вектора подавались сигналы микроопераций, соответствующие отмеченным в
уточненной ГСА.
5.3 Тестирование
VHDL-модели процессорного модуля
После разработки VHDL-модели УА были получены
временные диаграммы выполнения двух действий, представленные на рисунках 5.3 и
5.4. Для моделирования на входы модели процессорного модуля были поданы сигналы
синхронизации и асинхронного сброса, входные данные для выполняемого действия
(d1,d2 - операнды; d3 - код выполняемой операции). Результат выполнения
операции был получен на выходной шине r.
Рисунок 5.3 - Временная диграмма работы
прцессорного модуля: выполнение операции умножения целых двоичных беззнаковых
чисел, начиная с младших разрядов множителя
Проверка результатов моделирования работы,
представленных на рисунке 5.3 (умножение целых беззнаковых чисел):
*AA=21DE16
*10101010=00100001110111102
При моделировании получен верный результат.
Проверка результатов моделирования работы,
представленных на рисунке 5.4 (умножение целых заковых чисел):
*18=-45010 = F3E316
*00010010=11111110001111102
При моделировании получен верный результат.
Рисунок 5.4 - Временная диграмма работы
прцессорного модуля: выполнение умножения целых заковых чисел
ВЫВОДЫ
Целью выполнения данного курсового проекта
является проектирование процессорного модуля - устройства, которое в
соответствии с входными данными выполняет одно из двух действий: умножение
целых беззнаковых чисел и преобразование двоичного числа в двоично-десятичное.
Исходными данными к проектированию были
граф-схемы алгоритмов заданных действий и рзарядность операндов.
При проектировании всего процессорного модуля
были обобщены и структурированы знания по дисциплине Компьютерная схемотехника:
углублены теоретические знания по организации и функционированию сложных
цифровых систем обработки информации, получены практические навыки по
проектированию данных систем с использованием языка VHDL. При проектировании УА
для разбиения множества микроопераций на непересекающиеся подмножества в
соответствии с матрицей совместимости S был использован алгоритм прямого включения.
В соответствии с заданием к проекту был
спроектирован процессорный модуль, выполняющий заданные действия. Полученный
процессорный модуль состоит из двух устройств: операционного и управляющего
автоматов. Проектирование каждого из устройств проводилось отдельно в
соответствии с заданием. Спроектирован ОА типа I; УА является устройством с
принудительной адресацией и сполнымным форматом микрокоманды.
В результате анализа автоматизированного синтеза
устройств можно сделать вывод о правильном и полном выполнении задания к
курсовому проектированию, т.к. разработанный процессорный модуль правильно
выполняет предусмотренные заданием действия.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1.
Кораблев Н. М. - Конспект лекций по дисциплине «Компьютерная схемотехника» -
Харьков, 2010 г.
.
Кораблев Н.М., Саранча С. Н., Саранча О. Н. - Методические указания к
лабораторным работам по дисциплине «Компьютерная схемотехника»: Часть 2
«Проектирование сложных систем» - Харьков: ХНУРЭ, 2006 г.
.
Кораблев Н.М., Саранча С. Н., Чиженков Ю. Я. - Методические указания к
лабораторным работам по дисциплине «Цифровые ЭВМ»: Часть 1 «Проектирование
отдельных функциональных узлов» - Харьков: ХНУРЭ, 2006 г.
.
Угрюмов Е.П. Цифровая схемотехника. Учебн. пособие.- СПб.: БХВ - Петербург.,
2000.-528 с.
.
Организация ЭВМ и систем. Однопроцессорные ЭВМ. Часть 1.: Конспект лекций /
И.В. Хмелевский, В.П. Битюцкий. 2-е изд., испр. и допол. Екатеринбург: ГОУ ВПО
УГТУ-УПИ, 2005. 87 с.
.
Бибило П.Н. Синтез логических схем с использованием языка VHDL.- М.: СЛОН-Р,
2002.- 384 с.
.
http://vhdl-1.ru/
.
http://ru.wikipedia.org/
ПРИЛОЖЕНИЕ 1
модель операционного
автоматаIEEE;IEEE.STD_LOGIC_1164.all;IEEE.STD_LOGIC_unsigned.all;
OA is
port(
clk,rst : in STD_LOGIC;
y : in STD_LOGIC_VECTOR(13
downto 0);
d1 : in STD_LOGIC_VECTOR(7
downto 0);
d2 : in STD_LOGIC_VECTOR(7
downto 0);
d3 : in STD_LOGIC;
r: out STD_LOGIC_VECTOR(15
downto 0);
x: out STD_LOGIC_VECTOR(5
downto 0)
);OA;
OA of OA is
signal A,B,Bin,Ain: STD_LOGIC_VECTOR(7
downto 0);
signal Cnt, Cntin: integer;
signal C,Cin: STD_LOGIC_VECTOR(8 downto
0);
signal COP, TgB, TgBin: STD_LOGIC;
signal res: STD_LOGIC_VECTOR(15 downto
0);
process(clk,rst)is
begin
if rst='0' then
A<=(others=>'0');
B<=(others=>'0');
C<=(others=>'0');
elsif rising_edge(clk)then
A<=Ain;
B<=Bin;
C<=Cin;
r<=res;
Cnt<=Cntin;
TgB<=TgBin;
end if;
end process;
COP<=d3 when y(3)='1'
else COP;
Ain<=d1 when y(1)='1'
else A;
Bin<=d2 when y(2)='1'
else C(0) & B(7 downto 1) when
y(7)='1'
else B;
Cin<="000000000" when
y(4)='1'
else C + A(7 downto 0) when y(6)='1'
else "0" & C(8 downto 1)
when y(8)='1'
else "0" & C(7) & C(7
downto 1) when y(11)='1'
else C + not(A(7 downto 0)) + 1 when
y(12)='1'
else C;
Cntin<=8 when y(5)='1'
else Cnt-1 when y(9)='1'
else Cnt;
res(15 downto 0)<= C(7 downto 0)
& B(7 downto 0) when y(13)='1'
else res;
TgBin<= B(0) when y(10)='1'
else TgB;
--Formirovanie priznakov rezultata
x(1)<=COP;
x(2)<='1' when B(0)='1' else '0';
x(3)<='1' when Cnt=0 else '0';
x(4)<='1' when C(8)='1' else '0';
x(5)<='1' when TgB='1' else '0';OA;
ПРИЛОЖЕНИЕ 2
модель управляющего
автоматаIEEE;IEEE.STD_LOGIC_1164.all; IEEE.STD_LOGIC_unsigned.all;
YA is
port(
clk, rst : in STD_LOGIC;
x : in STD_LOGIC_VECTOR(5
downto 0);
y : out STD_LOGIC_VECTOR(13
downto 0)
);YA;
YA of YA isTCommand is std_logic_vector(19
downto 0);TROM is array(0 to 11) of TCommand;ROM:TROM := (
-yyyyyyyyyxxxaaaaaaaa
"00101011100100100001", --0
"00000000001001110110", --1
"00000000001001000011", --2
"01000000000001000100", --3
"01110100001100100101", --4
"11000000000000000000", --5
"01000000000001110111", --6
"01111100010010011000", --7
"00010000001100011010", --8
"10000000001100011010", --9
"00000000010101011011", --10
"10100000000001010101" --11
); RegCom:TCommand;TY is array(0 to 6) of
INTEGER; Y1: TY :=(0,1,6,7,11,12,13);Y2: TY :=(0,2,8,10,0,0,0);Y3: TY
:=(0,3,9,0,0,0,0); Y4: TY :=(0,4,0,0,0,0,0);Y5: TY :=(0,5,0,0,0,0,0);yConv:
STD_LOGIC_VECTOR(13 downto 0);
process(rst,clk) is
begin
if rst='0' then
RegCom<=(others=>'0');
elsif rising_edge(clk) then
if
x(conv_integer(RegCom(10 downto 8))) ='0' then
RegCom<=ROM(conv_integer(RegCom(7
downto 4)));
else
RegCom<=ROM(conv_integer(RegCom(3 downto 0)));
end if;
end if;
end process;
process (RegCom) is
begin
yConv<=(others=>'0');
yConv(Y1(conv_integer(RegCom(19
downto 17))))<='1';
yConv(Y2(conv_integer(RegCom(16
downto 15))))<='1';
yConv(Y3(conv_integer(RegCom(14
downto 13))))<='1';
yConv(Y4(conv_integer(RegCom(12
downto 12))))<='1';
yConv(Y5(conv_integer(RegCom(11
downto 11))))<='1';
end process;
y<=yConv;
architecture YA;
ПРИЛОЖЕНИЕ 3
модель процессорного устройствоIEEE;IEEE.STD_LOGIC_1164.all;
IEEE.STD_LOGIC_unsigned.all;
PM is
port(
clk, rst : in STD_LOGIC;
d1 : in STD_LOGIC_VECTOR(7
downto 0);
d2 : in STD_LOGIC_VECTOR(7
downto 0);
d3 : in STD_LOGIC;
r:out STD_LOGIC_VECTOR(15
downto 0)
);PM;
PM of PM isOA is
port(
clk,rst : in STD_LOGIC;
y : in STD_LOGIC_VECTOR(13
downto 0);
d1 : in STD_LOGIC_VECTOR(7
downto 0);
d2 : in STD_LOGIC_VECTOR(7
downto 0);
d3 : in STD_LOGIC;
r:out STD_LOGIC_VECTOR(15
downto 0);
x: out STD_LOGIC_VECTOR(5
downto 0)
);component;
YA is
port(
clk, rst : in STD_LOGIC;
x : in STD_LOGIC_VECTOR(5
downto 0);
); component;nclk: std_logic;y:
STD_LOGIC_VECTOR (13 downto 0);x: STD_LOGIC_VECTOR (5 downto 0);
nclk<= not clk;
OA_I: OA port map(clk, rst, y(13 downto
0), d1, d2, d3, r, x);
YA_P: YA port map(nclk, rst, x, y);PM;