Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Топ:
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Интересное:
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Дисциплины:
2017-10-09 | 301 |
5.00
из
|
Заказать работу |
|
|
4.1 Схема объединения операционного и управляющего автоматов
Рис. 4.1 Схема объединения операционного и управляющего автоматов
4.2 Результаты тестирования
Рис. 4.2.1 Результат ускоренного умножения двух беззнаковых чисел
Рис. 4.2.2 Результат деления целых двоичных беззнаковых чисел без восстановления остатка
ВЫВОД
Данный курсовой проект разработан для изучения современных средств проектирования цифровых вычислительных машин. В этом проекте был разработан двухуровневый процессорный модуль, который был спроектирован на основе управляющего автомата типа П с естественной адресацией и операционного автомата класса I. С помощью данного устройства можно выполнять такие микрооперации, как сложение, умножение и деление двоичных знаковых и беззнаковых чисел. П-автомат является автоматом с программируемой логикой. Для таких автоматов затраты оборудование больше (при несложных микрокомандах), чем в автоматах с жесткой логикой. Чем сложнее микропрограмма, тем меньше аппаратные затраты.
Управляющие автоматы и автоматы с жесткой логикой отличаются степенью гибкости. Для автоматов с жесткой логикой, при возникновении ошибки в микропрограмме, необходимо перестраивать структуру автомата. Программируемая логика позволяет решить задачу перестройки структуры относительно просто – путем прошивки в ПЗУ дополнительных микрокоманд, изменяемых при внесении изменений в микропрограмму. Таким образом, можно считать, что гибкостью обладают только автоматы с программируемой логикой.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1. Майоров С.А., Новиков Г.И., Структура электронных вычислительных машин. - Л.: Машиностроение. Ленингр. Отделение, 1979. -
384 с., ил.
|
2. Баранов С.И., Скляров В. А., Цифровые устройства на программируемых БИС с матричной структурой. - М.: Радио и связь, 1986. - 272 с, ил.
3. Угрюмов Е.П., Проектирование элементов и узлов ЭВМ: Учеб.
Пособие для спец. ЭВМ вузов. - М.: Высш. шк., 1987. - 318 с, ил.
4. ДСТУ 3008-95. «Звіти у сфері науки і техніки. Структура та
правила оформлення».
ПРИЛОЖЕНИЕ А
Листинг программы
---------------
-- unit.vhd
---------------
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_unsigned.all;
entity OU is
generic (n:natural:=8);
port(-- n = 8
clk,rst:in std_logic;
d1:in std_logic_vector(2*n-1 downto 0);
d2:in std_logic_vector(n-1 downto 0);
f:in std_logic;
y:in std_logic_vector(22 downto 1);
x:out std_logic_vector(9 downto 1);
DBUS:out std_logic_vector(2*n-1 downto 0)
);
end OU;
--}} End of automatically maintained section
architecture OU of OU is
--use ieee.std_logic_unsigned.all;
signal A:std_logic_vector(2*n downto 0);
signal B:std_logic_vector(n downto 0);
signal C:std_logic_vector(n+1 downto 0); --Po GSA 7
signal CnT:std_logic_vector(3 downto 0);
--signal CnTu:std_logic_vector(2 downto 0);
signal TgA,IRQ1,IRQ2:std_logic;
--signal stop:std_logic:= '0';
begin
process (clk,rst) is
begin
if rst='0' then A <=(others=>'0');
B <=(others=>'0');
C <=(others=>'0');
Cnt <= "1000";
-- CnT <= "111";
elsif rising_edge(clk) then
if y(1)='1' then A <= ("00000000" & d1(2*n-1 downto 0));
elsif y(15)='1' then A <= ("00000000" & d1(n-1 downto 0));
elsif y(3)='1' then A(2*n downto n) <= IEEE.std_logic_signed."+"(A(2*n downto n), (not B));
A(2*n-1 downto n-1) <= IEEE.std_logic_signed."+"(A(2*n downto n),1);--****
elsif y(8)='1' then A(2*n downto n) <= IEEE.std_logic_signed."+"(A(2*n downto n), B);
elsif y(5)='1' then A <= '0'&A(2*n-1 downto 0) & '0';
elsif y(17)='1' then A <= '0'&A(n-1 downto 0) & '0';
end if;
if y(2)='1' then B <= ("00000000" & d2(n-1 downto 0));
elsif y(16)='1' then B <= d2(n-1 downto 0);
elsif y(20)='1' then B <= '0' & C(1 downto 0) & B(n-1 downto 2);
end if;
if y(6)='1' then C <=(others=>'0');
elsif y(9)='1' then C <= '0'&C(n-2 downto 0)&(not A(2*n));
elsif y(19)='1' then C(n+1 downto 0) <= IEEE.std_logic_signed."+"(C(n+1 downto 0), (not A));
C(n downto -1) <= IEEE.std_logic_signed."+"(C(n+1 downto 0),1);--****
elsif y(18)='1' then C(n+1 downto 0) <= IEEE.std_logic_signed."+"(C(n+1 downto 0), A);
elsif y(21)='1' then c <= '0' & C(n+1)& C(n+1)& C(n+1 downto 2);
end if;
if y(7)='1' then CnT<="1000";
elsif y(10)='1' then CnT <= CnT - 1;
end if;
if y(4)='1' then TgA <= A(2*n);
end if;
if y(13)='1' then IRQ1 <= '1'; assert (0>1) report "IRQ1 was thrown" severity failure;
elsif y(14)='1' then IRQ2 <= '1'; assert (0>1) report "IRQ2 was thrown" severity failure;
|
end if;
end if;
end process;
----------------------
-- IRQ1 <= '1' when y(13)='1';--assert (0>1) severity failure;
-- IRQ2 <= '1' when y(14)='1';--assert (0>1) severity failure;
DBUS <= C(n-1 downto 0) & B(n-1 downto 0) when y(22)='1'else
--DBUS <=
C(n-1 downto 0) when y(11)='1' else
A(2*n-1 downto n) when y(12)='1' else (others=>'Z');
x(1) <= f;
x(2) <= '1' when B = "000000000" else '0';
x(3) <= A(2*n);
x(4) <= TgA;
x(5) <= '1' when CnT = "000" else '0';
x(6) <= (not B(1)) and (C(n+1) xor B(0));
x(7) <= ((not C(n+1)) and B(1) and (not B(0))) or (C(n+1) and (not B(1))and B(0));
x(8) <= B(1) and (C(n+1) xor B(0));
x(9) <= C(n+1);
end OU;
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.std_logic_unsigned.all;
entity CU is
port(
clk,rst:in std_logic;
x:in std_logic_vector(9 downto 1);
y:out std_logic_vector(22 downto 1)
);
end CU;
architecture CU of CU is
subtype TCommand is std_logic_vector(10 downto 0);
type TROM is array (0 to 37) of TCommand;
constant ROM:TROM:= (
"10001010110",--0
"00001001000",--1
"10010001110",--2
"00010000000",--3
"10011010000",--4
"00011010011",--5
"10100010010",--6
"00010000000",--7
"00011011100",--8
"10101010100",--9
"10100001100",--10
"00100000000",--11
"00101100000",--12
"10000000000",--13
"00110000000",--14
"10000000000",--15
"00111000000",--16
"10000001111",--17
"00100000000",--18
"10000001000",--19
"00000010000",--20
"10000000110",--21
"01000101011",--22
"10110011111",--23
"01010000000",--24
"01100110100",--25
"10101100101",--26
"11001011101",--27
"01010000000",--28
"00000111000",--29
"10000000000",--30
"10111100010",--31
"01001000000",--32
"10000011000",--33
"11000100100",--34
"01011000000",--35
"10000011001",--36
"10000010111");--37
signal RegCom:TCommand;
signal PC:integer;
begin
process(rst,clk) is
variable PCv:integer range 0 to 37;
begin
if rst='0' then PCv:=0;
elsif rising_edge(clk) then
if RegCom(10)='1' and ((x and RegCom(9 downto 6))="0000") then
PCv:=conv_integer(RegCom(5 downto 0));
else
PCv:=PCv+1;
end if;
end if;
RegCom<=ROM(PCv);
PC<=PCv;
end process;
y <= RegCom(9 downto 0) when RegCom(10)='0' else (others=>'0');
end CU;
----------------
--cpu.vhd
----------------
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use work.all;
entity CPU is
port(
clk,rst:in std_logic;
d1:in std_logic_vector(15 downto 0);
d2:in std_logic_vector(7 downto 0);
F:in std_logic;
DBUS:out std_logic_vector(15 downto 0)
);
end CPU;
--}} End of automatically maintained section
architecture cpu of cpu is
component OU
port(
clk,rst:in std_logic;
d1:in std_logic_vector(15 downto 0);
d2:in std_logic_vector(7 downto 0);
f:in std_logic;
y:in std_logic_vector(22 downto 1);
x:out std_logic_vector(9 downto 1);
DBUS:out std_logic_vector(15 downto 0)
);
end component;
component CU
port (
clk,rst:in std_logic;
x:in std_logic_vector(9 downto 1);
y:out std_logic_vector(22 downto 1)
);
end component;
signal y: std_logic_vector (22 downto 1);
signal x: std_logic_vector (9 downto 1);
signal nclk: std_logic;
begin
nclk <= not clk;-- after 10 ns;
dd1:OU port map (nclk,rst,d1,d2,f,y,x,DBUS);
dd2:CU port map (clk,rst,x,y);
end cpu;
|
|
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!