close

Вход

Забыли?

вход по аккаунту

?

Отчет(1)

код для вставкиСкачать
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Московский государственный технический университет
имени Н.Э. Баумана»
(МГТУ им. Н.Э. Баумана)
Факультет «Робототехника и комплексная автоматизация» (РК)
Кафедра «Системы автоматизированного проектирования» (РК6)
Отчет
по домашним лабораторным работам
по дисциплине
«Организация ЭВМ и систем»
Вариант №19
Выполнил: Юшин А. В.
группа РК6-91
Москва 2012
1. Разработка VHDL-описания последовательных схем
с регулярной структурой
Тип синтезируемого устройства: Асинхронный реверсивный
синхронных двухступенчатых JK-триггерах с запрещающими связями.
счётчик
на
1.1. Структурное описание
1.1.1. Компонент И-НЕ с тремя входами и одним выходом.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity andNot is
port(
A : in STD_LOGIC;
B : in STD_LOGIC;
C : in STD_LOGIC;
D : out STD_LOGIC
);
end andNot;
architecture andNot of andNot is
begin
D <= not(A and B and C);
end andNot;
2
1.1.2. Исключающее ИЛИ с двумя входами и одним выходом.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity \xor\
port(
A
B
C
);
end \xor\;
is
: in STD_LOGIC;
: in STD_LOGIC;
: out STD_LOGIC
architecture \xor\ of \xor\ is
begin
C <= (A xor B);
end \xor\;
1.1.3. Синхронный двуступенчатый JK-триггер с запрещающими
связями.
3
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity jktrig is
port(
J : in STD_LOGIC;
K : in STD_LOGIC;
C : in STD_LOGIC;
R : in STD_LOGIC;
S : in STD_LOGIC;
a : out STD_LOGIC;
b : out STD_LOGIC
);
end jktrig;
architecture jktrig of jktrig is
component andNot is
port(
A : in STD_LOGIC;
B : in STD_LOGIC;
C : in STD_LOGIC;
D : out STD_LOGIC
);
end component andNot;
signal
signal
signal
signal
signal
signal
signal
signal
q1:
q2:
q3:
q4:
q5:
q6:
q7:
q8:
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
begin
na1:
na2:
na3:
na4:
na5:
na6:
na7:
na8:
andNot
andNot
andNot
andNot
andNot
andNot
andNot
andNot
port
port
port
port
port
port
port
port
map
map
map
map
map
map
map
map
(J, C, q8, q1);
(K, C, q7, q2);
(q1, q4, S, q3);
(q2, q3, R, q4);
(q1, q2, q3, q5);
(q1, q2, q4, q6);
(q8, q5, S, q7);
(q6, R, q7, q8);
a <= q7;
b <= q8;
end jktrig;
4
1.1.4. Счетчик.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity NCounter is
generic(
N: integer := 4
);
port(
SUBTRACT : in STD_LOGIC;
S : in STD_LOGIC;
R : in STD_LOGIC;
count : in STD_LOGIC;
Q : out STD_LOGIC_VECTOR (0 to N-1);
neQ : out STD_LOGIC_VECTOR (0 to N-1)
);
end NCounter;
architecture NCounter of NCounter is
component jktrig is
port(
J : in STD_LOGIC;
K : in STD_LOGIC;
C : in STD_LOGIC;
R : in STD_LOGIC;
S : in STD_LOGIC;
a : out STD_LOGIC;
b : out STD_LOGIC
);
end component jktrig;
component \xor\ is
port(
A : in STD_LOGIC;
B : in STD_LOGIC;
C : out STD_LOGIC
);
5
end component \xor\;
signal X: STD_LOGIC_VECTOR (0 to N-1);
signal neX: STD_LOGIC_VECTOR (0 to N-1);
signal Y: STD_LOGIC_VECTOR (0 to N-2);
begin
count_0: jktrig port map('1', '1', count, R, S, X(0),
neX(0));
counter1: for i in 1 to N-1 generate
x_or: \xor\ port map(X(i-1), SUBTRACT, Y(i-1));
count_i: jktrig port map('1', '1', Y(i-1), R, S, X(i),
neX(i));
end generate;
Q <= X;
neQ <= neX;
end NCounter;
6
1.1.5. Временные диаграммы
Счетчик работает в режиме вычитания. SUBTRACT = 1.
Счетчик работает в режиме сложения. SUBTRACT = 0.
7
1.2. Поведенческое описание.
1.2.1. Код на VHDL.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity counter2 is
generic(
C : integer := 16; --число до которого считает счетчик
N : integer := 4 --количество разрядов счетчика
);
port(
S : in STD_LOGIC;
R : in STD_LOGIC;
subtract: in STD_LOGIC;
count : in STD_LOGIC;
Q: out STD_LOGIC_VECTOR (0 to N-1);
neQ: out STD_LOGIC_VECTOR (0 to N-1)
);
end counter2;
architecture counter2 of counter2 is
signal result: integer;
signal vectorRes: STD_LOGIC_VECTOR (N-1 downto 0);
signal vectorNotRes: STD_LOGIC_VECTOR (N-1 downto 0);
function
BinaryTranslate(arg:
in
integer)
return
STD_LOGIC_VECTOR is
variable tempResult: integer;
variable modResult: integer;
variable i: integer;
variable vector: STD_LOGIC_VECTOR (N-1 downto 0);
begin
--Зануляем вектор vector
for i in 0 to N-1 loop
vector(i) := '0';
end loop;
--Переводим целое в двоичное представление
tempResult := arg;
i := 0;
while (not(tempResult = 0) and (i < N)) loop
modResult := tempResult mod 2;
if modResult = 0 then
vector(i) := '0';
else
vector(i) := '1';
end if;
tempResult := tempResult / 2;
i := i + 1;
8
end loop;
return vector;
end BinaryTranslate;
begin
process(count, subtract)
begin
if S = '1' and R = '0' then
result <= 0;
else
if (count = '1') then
if(subtract = '1') then
if result = 0 then
result <= C-1;
else
result <= result - 1;
end if;
else
if result = C then
result <= 0;
else
result <= result + 1;
end if;
end if;
end if;
end if;
vectorRes <= BinaryTranslate(result);
vectorNotRes <= not(vectorRes);
Q <= vectorRes;
neQ <= vectorNotRes;
end process;
end counter2;
9
1.2.2. Временные диаграммы.
Счетчик работает в режиме вычитания. subtract = 1.
Счетчик работает в режиме сложения. subtract = 0.
10
2. Управляющие автоматы.
2.1. Поведенческое описание.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity Mealy is
port(
RESET: in STD_LOGIC;
C: in STD_LOGIC;
Z: in STD_LOGIC_VECTOR(1 downto 0);
W: out STD_LOGIC_VECTOR(2 downto 0)
);
end Mealy;
architecture Mealy of Mealy is
type state is (a1,a2,a3,a4);
signal curState, nextState: state;
begin
process(C, RESET)
begin
if (RESET = '0') then
curState <= a1;
elsif (C'event and C = '1') then
curState <= nextState;
end if;
end process;
process(curState, Z)
begin
case curState is
when a1 =>
case Z is
when "01" => W <= "100";
nextState <= a3;
when "10" => W <= "101";
nextState <= a4;
when "11" => W <= "011";
11
nextState <= a3;
when others => W <= "000";
nextState <= a1;
end case;
when a2 =>
case Z is
when "01" => W <= "001";
nextState <= a2;
when "10" => W <= "010";
nextState <= a2;
when "11" => W <= "100";
nextState <= a3;
when others => W <= "000";
nextState <= a1;
end case;
when a3 =>
case Z is
when "01" => W <= "011";
nextState <= a1;
when "10" => W <= "010";
nextState <= a4;
when "11" => W <= "100";
nextState <= a1;
when others => W <= "000";
nextState <= a1;
end case;
when a4 =>
case Z is
when "01" => W <= "100";
nextState <= a1;
when "10" => W <= "011";
nextState <= a3;
when "11" => W <= "001";
nextState <= a3;
when others => W <= "000";
nextState <= a1;
end case;
when others => W <= "000";
nextState <= a1;
end case;
end process;
end Mealy;
12
2.2. Временные диаграммы.
13
Документ
Категория
Рефераты
Просмотров
24
Размер файла
216 Кб
Теги
отчет
1/--страниц
Пожаловаться на содержимое документа