Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Топ:
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Интересное:
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Дисциплины:
2017-10-09 | 300 |
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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!