Разработка VHDL-описания последовательных схем с регулярной структурой
Тип синтезируемого устройства: регистр сдвига на синхронных двухступенчатых D-триггерах с запрещающими связями. Синхронный двухступенчатый D-триггер с запрещающими связями. Временные диаграммы и поведенческое описание. Кодировка выходного алфавита.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | отчет по практике |
Язык | русский |
Дата добавления | 14.10.2017 |
Размер файла | 269,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
"Московский государственный технический университет имени Н.Э. Баумана" (МГТУ им. Н.Э. Баумана)
Факультет "Робототехника и комплексная автоматизация" (РК)
Кафедра "Системы автоматизированного проектирования" (РК 6)
Отчет по домашним лабораторным работам
по дисциплине
"Организация ЭВМ и систем"
Разработка VHDL-описания последовательных схем с регулярной структурой
Выполнил: Кошман А.А.
Москва 2012
Тип синтезируемого устройства: регистр сдвига на синхронных двухступенчатых D-триггерах с запрещающими связями
Структурное описание
Компонент И-НЕ с двумя входами
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity NAND2 is
port (
X1: in STD_LOGIC;
X2: in STD_LOGIC;
Y: out STD_LOGIC
);
end NAND2;
architecture NAND2 of NAND2 is
begin
Y <= not (X1 and X2);
end NAND2;
Компонент И-НЕ с тремя входами
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity NAND3 is
port (
X1: in STD_LOGIC;
X2: in STD_LOGIC;
X3: in STD_LOGIC;
Y: out STD_LOGIC
);
end NAND3;
architecture NAND3 of NAND3 is
begin
Y <= not (X1 and X2 and X3);
end NAND3;
Синхронный двухступенчатый D-триггер с запрещающими связями
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity D is
port (
NSa: in STD_LOGIC;
D: in STD_LOGIC;
C: in STD_LOGIC;
NRa: in STD_LOGIC;
Q: out STD_LOGIC;
NQ: out STD_LOGIC
);
end D;
architecture D of D is
component NAND2
port (
X1: in STD_LOGIC;
X2: in STD_LOGIC;
Y: OUT STD_LOGIC
);
end component;
component NAND3
port (
X1: in STD_LOGIC;
X2: in STD_LOGIC;
X3: in STD_LOGIC;
Y: OUT STD_LOGIC
);
end component;
signal S: STD_LOGIC_VECTOR(1 to 8);
begin
E1: NAND2
port map (D, C, S(1));
E2: NAND2
port map (C, S(1), S(2));
E3: NAND3
port map (NSa, S(1), S(4), S(3));
E4: NAND3
port map (NRa, S(2), S(3), S(4));
E5: NAND3
port map (S(1), S(2), S(3), S(5));
E6: NAND3
port map (S(1), S(2), S(4), S(6));
E7: NAND3
port map (NSa, S(5), S(8), S(7));
E8: NAND3
port map (NRa, S(6), S(7), S(8));
Q <= S(7);
NQ <= S(8);
end D;
Регистр сдвига
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity RG is
generic (
N: integer := 4
);
port (
X_in: in STD_LOGIC_VECTOR(N downto 1);
X_serial: in STD_LOGIC;
Set: in STD_LOGIC;
Shift: in STD_LOGIC;
Reset: in STD_LOGIC;
Q_out: out STD_LOGIC_VECTOR(N downto 1)
);
end RG;
architecture RG of RG is
component D
port (
NSa: in STD_LOGIC;
D: in STD_LOGIC;
C: in STD_LOGIC;
NRa: in STD_LOGIC;
Q: out STD_LOGIC;
NQ: out STD_LOGIC
);
end component;
component NAND2
port (
X1: in STD_LOGIC;
X2: in STD_LOGIC;
Y: OUT STD_LOGIC
);
end component;
signal S,Q,NQ: STD_LOGIC_VECTOR(N downto 1);
begin
INPUT: for i in 1 to N generate
NUMi: NAND2
port map (Set, X_in(i), S(i));
end generate;
TRIG1: D
port map (S(1), X_serial, Shift, Reset, Q(1), NQ(1));
TRIGGERS: for i in 2 to N generate
TRIGi: D
port map (S(i), Q(i-1), Shift, Reset, Q(i), NQ(i));
end generate;
Q_out <= Q;
end RG;
Временные диаграммы
Поведенческое описание
VHDL-код
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity FUN_RG is
generic (
N : integer := 4
);
port(
X_in: in STD_LOGIC_VECTOR(N downto 1);
X_serial: in STD_LOGIC;
Set: in STD_LOGIC;
Shift: in STD_LOGIC;
Reset: in STD_LOGIC;
Q_out: out STD_LOGIC_VECTOR(N downto 1)
);
end FUN_RG;
architecture FUN_RG of FUN_RG is
signal state : STD_LOGIC_VECTOR(N downto 1);
begin
process(Set, Shift, Reset)
begin
if (Reset = '0') then
for i in 1 to N loop
state(i) <= '0';
end loop;
elsif (Set = '1') then
state <= X_in;
elsif(Shift = '0') and (Shift'last_value = '1') then
for i in N downto 2 loop
state(i) <= state(i-1);
end loop;
state(1) <= X_serial;
end if;
end process;
Q_out <= state;
end FUN_RG;
Временные диаграммы
Управляющие автоматы
Входные сигналы |
Состояния |
||||
a1 |
a2 |
a3 |
a4 |
||
z1 |
a3 / w5 |
a2 / w1 |
a2 / w2 |
a1 / w5 |
|
z2 |
a4 / w5 |
a2 / w5 |
a4 / w3 |
a3 / w3 |
|
z3 |
a3 / w5 |
a1 / w4 |
a1 / w4 |
a1 / w5 |
Таблица задания функционирования конечного автомата
Введем следующую кодировку входного и выходного алфавитов:
Входной сигнал |
Двоичный код |
Десятичное значение |
Выходной сигнал |
Двоичный код |
Десятичное значение |
||
z1 |
01 |
1 |
w1 |
001 |
1 |
||
z2 |
10 |
2 |
w2 |
010 |
2 |
||
z3 |
11 |
3 |
w3 |
011 |
3 |
||
w4 |
100 |
4 |
|||||
w5 |
101 |
5 |
Поведенческое описание
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity Mealy is
port(синхронный синтезируемый триггер
clock, reset: in STD_LOGIC;
data_in: in STD_LOGIC_VECTOR(0 to 1);
data_out: out STD_LOGIC_VECTOR(0 to 2)
);
end Mealy;
architecture Mealy of Mealy is
type state_values is (a1,a2,a3,a4);
signal pres_state, next_state: state_values;
begin
-- FSM register
statereg: process(clock, reset)
begin
if (reset = '0') then
pres_state <= a1;
elsif (clock'event and clock = '1') then
pres_state <= next_state;
end if;
end process statereg;
-- FSM combinational block
fsm: process(pres_state, data_in)
begin
case pres_state is
when a1 =>
case data_in is
when "01" | "11" => data_out <= "101";
next_state <= a3;
when "10" => data_out <= "101";
next_state <= a4;
when others => data_out <= "000";
next_state <= a1;
end case;
when a2 =>
case data_in is
when "01" => data_out <= "001";
next_state <= a2;
when "10" => data_out <= "101";
next_state <= a2;
when "11" => data_out <= "100";
next_state <= a1;
when others => data_out <= "000";
next_state <= a1;
end case;
when a3 =>
case data_in is
when "01" => data_out <= "010";
next_state <= a2;
when "10" => data_out <= "011";
next_state <= a4;
when "11" => data_out <= "100";
next_state <= a1;
when others => data_out <= "000";
next_state <= a1;
end case;
when a4 =>
case data_in is
when "01" | "11" => data_out <= "101";
next_state <= a1;
when "10" => data_out <= "011";
next_state <= a3;
when others => data_out <= "000";
next_state <= a1;
end case;
when others => data_out <= "000";
next_state <= a1;
end case;
end process fsm;
end Mealy;
Временные диаграммы
Размещено на Allbest.ru
Подобные документы
Определение принципов работы с САПР Xilinx WebPACK. Особенности проектирования простейших комбинационных схем на базе ПЛИС. Описание устройства на языке VHDL, набор тестовых воздействий и временные диаграммы его работы. Размещение устройства на кристалле.
лабораторная работа [318,7 K], добавлен 28.05.2012Проектирование арифметико-логических устройств (АЛУ). Отладка описания логических схем на языке VHDL. Классификация АЛУ по способу представления чисел, характеру использования элементов и узлов. Список стандартных функций АЛУ, его описание на языке VHDL.
лабораторная работа [633,4 K], добавлен 11.03.2014Идентификаторы, объекты и операции языка VHDL. Последовательные и параллельные операторы. Описание интерфейса устройства. Синтез схем по описаниям на языке VHDL. Последовательность букв и цифр произвольной длины. Цифровое устройство и его модель.
курсовая работа [132,5 K], добавлен 28.06.2009Изучение логических операций и правил их преобразований. Моделирование цифровых схем, состоящих из логических вентилей. Способы описания работы логического устройства - таблицы истинности, временные диаграммы, аналитические функции, цифровые схемы.
лабораторная работа [2,1 M], добавлен 02.03.2011Триггер — логическое устройство, способное хранить 1 бит данных. В основе любого триггера находится кольцо из двух инверторов. Определение типа триггера по его характеристическому уравнению. Временные диаграммы наблюдаемые на экране осциллографа.
лекция [88,1 K], добавлен 05.02.2009Разработка программы, способной зашифровать и расшифровать данные из файла. Синхронные и самосинхронизирующиеся поточные шифры. Суть гаммирования. Линейный рекуррентный регистр. Регистр сдвига с линейной обратной связью. Программная реализация LFSR.
курсовая работа [172,6 K], добавлен 22.10.2014Разработка устройства управления процессора для выполнения команд сложения, вычитания и поразрядного логического "или", с использованием способов адресации операндов: регистр-регистр, регистр - непосредственно операнд, регистр - прямая адресация памяти.
курсовая работа [72,8 K], добавлен 21.11.2011Принцип работы процессора (одномагистральная структура). Временные диаграммы, описывающие выполнение микроопераций для каждой команды. Структурная схема управляющего автомата на основе памяти с одним полем адреса. Описание процессора на языке Active VHDL.
курсовая работа [621,0 K], добавлен 24.09.2010Информация и информационные процессы. Содержательный и алфавитный подходы к измерению количества информации. Определение мощности алфавита информационного сообщения. Описания компьютерной кодировки русских и латинских букв. Использование двоичной системы.
лабораторная работа [35,3 K], добавлен 04.09.2014Проектирование многофункционального регистра, выполняющего заданный набор микроопераций как основного узла синтезируемого операционного автомата. Описание элементной базы. Описание принципиальной схемы на элементах малой и средней степени интеграции.
курсовая работа [104,9 K], добавлен 24.09.2010