Автор работы: Пользователь скрыл имя, 18 Января 2013 в 05:18, курсовая работа
Исходные данные к проекту: Спроектировать 12-и разрядный сдвиговый регистр с возможностью или последовательной загрузки или параллельной загрузки через 4х контактный разъем за 12 и 3 такта соответственно. Организовать возможность поразрядного сдвига уже загруженной информации вправо. Организовать 4 режима индикации: Загрузка, сдвиг, ошибка, индикация состояния регистра.
Алгоритм работы устройства 3
Введение 4
Анализ задачи 7
Перечень выбранных электронных компонентов 8
Синтез
Синтез логических функций для ПЗУ 15
Синтез КС 19
Моделирование
Структурное моделирование устройства 21
Поведенческое моделирование 21
Временные диаграммы
Временные диаграммы структурного описания 31
Временные диаграммы поведенческого описания 35
Анализ Временных задержек 40
Заключение 41
Библиографический список 42
R : in STD_LOGIC_VECTOR(1 downto 0);
Q : out STD_LOGIC_VECTOR(3 downto 0) );
end SN7492;
architecture Behavioral of SN7492 is
signal Qn : STD_LOGIC_VECTOR(3 downto 0);
signal S0 : STD_LOGIC_VECTOR(11 downto 0) := "010101010101";
signal S1 : STD_LOGIC_VECTOR(11 downto 0) := "001100001100";
signal S2 : STD_LOGIC_VECTOR(11 downto 0) := "000011000011";
signal S3 : STD_LOGIC_VECTOR(11 downto 0) := "000000111111";
signal i : INTEGER := 10;
signal j : INTEGER := 10;
begin Изм.
Лист
№ докум.
Подпись
Дата
Лист
26
Анисимов А. В. КП. ВМ-91.090700505
process (C,R)
begin
if (R = "11") then
Qn <= "0000";
elsif (C(1)'event and C(1) = '0') then
Qn(0) <= S0(i);
i <= i - 1;
if (i = 0) then i <= 11; end if;
end if;
if (R = "11") then
Qn <= "0000";
elsif (C(0)'event and C(0) = '0') then
Qn(1) <= S1(j);
Qn(2) <= S2(j);
Qn(3) <= S3(j);
j <= j - 1;
if (j = 0) then j <= 11; end if;
end if;
end process;
Q <= Qn;
end Behavioral;
Листинг итоговой схемы CW.vhd
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity RG12 is
Port ( SI : in STD_LOGIC;
PE : in STD_LOGIC;
Изм.
Лист
№ докум.
Подпись
Дата
Лист
27
Анисимов А. В. КП. ВМ-91.090700505
SE : in STD_LOGIC;
PB : in STD_LOGIC;
C : in STD_LOGIC_VECTOR(1 downto 0);
D : in STD_LOGIC_VECTOR(3 downto 0);
Q : out STD_LOGIC_VECTOR(20 downto 0) );
end RG12;
architecture Behavioral of RG12 is
component SN7495 is
Port ( SI : in STD_LOGIC;
PE : in STD_LOGIC;
C : in STD_LOGIC_VECTOR(1 downto 0);
D : in STD_LOGIC_VECTOR(3 downto 0);
Q : out STD_LOGIC_VECTOR(3 downto 0) );
end component SN7495;
component S8223 is
Port ( X: in STD_LOGIC_VECTOR (4 downto 0);
PB: in STD_LOGIC;
LED: out STD_LOGIC_VECTOR (7 downto 0) );
end component S8223;
component SN7492 is
Port ( C : in STD_LOGIC_VECTOR(1 downto 0);
R : in STD_LOGIC_VECTOR(1 downto 0);
Q : out STD_LOGIC_VECTOR(3 downto 0) );
end component SN7492;
component SN74153 is
Port ( A : in STD_LOGIC_VECTOR(1 downto 0);
D_1 : in STD_LOGIC_VECTOR(3 downto 0);
D_0 : in STD_LOGIC_VECTOR(3 downto 0);
Изм.
Лист
№ докум.
Подпись
Дата
Лист
28
Анисимов А. В. КП. ВМ-91.090700505
TE : in STD_LOGIC;
Q_1 : out STD_LOGIC;
Q_0 : out STD_LOGIC );
end component SN74153;
signal r_2 : STD_LOGIC_VECTOR(3 downto 0) := "0000";
signal r_1 : STD_LOGIC_VECTOR(3 downto 0) := "0000";
signal r_0 : STD_LOGIC_VECTOR(3 downto 0) := "0000";
signal m_2 : STD_LOGIC_VECTOR(4 downto 0);
signal m_1 : STD_LOGIC_VECTOR(4 downto 0);
signal m_0 : STD_LOGIC_VECTOR(4 downto 0);
signal d_2 : STD_LOGIC_VECTOR(4 downto 0);
signal d_1 : STD_LOGIC_VECTOR(4 downto 0);
signal d_0 : STD_LOGIC_VECTOR(4 downto 0);
signal l_2 : STD_LOGIC_VECTOR(7 downto 0);
signal l_1 : STD_LOGIC_VECTOR(7 downto 0);
signal l_0 : STD_LOGIC_VECTOR(7 downto 0);
signal CI : STD_LOGIC_VECTOR(1 downto 0); -- загрузка/сдвиг
signal C_ct : STD_LOGIC_VECTOR(1 downto 0);
signal R_ct : STD_LOGIC_VECTOR(1 downto 0);
signal Q_ct : STD_LOGIC_VECTOR(3 downto 0);
signal A : STD_LOGIC_VECTOR(1 downto 0); --управление мультиплексора
signal ZS : STD_LOGIC;
signal mi_14 : STD_LOGIC_VECTOR(3 downto 0); --входы в мультиплексоры
signal mi_13 : STD_LOGIC_VECTOR(3 downto 0);
signal mi_12 : STD_LOGIC_VECTOR(3 downto 0);
signal mi_11 : STD_LOGIC_VECTOR(3 downto 0);
signal mi_10 : STD_LOGIC_VECTOR(3 downto 0);
signal mi_9 : STD_LOGIC_VECTOR(3 downto 0);
signal mi_8 : STD_LOGIC_VECTOR(3 downto 0);
signal mi_7 : STD_LOGIC_VECTOR(3 downto 0);
signal mi_6 : STD_LOGIC_VECTOR(3 downto 0);
signal mi_5 : STD_LOGIC_VECTOR(3 downto 0);
signal mi_4 : STD_LOGIC_VECTOR(3 downto 0);
Изм.
Лист
№ докум.
Подпись
Дата
Лист
29
Анисимов А. В. КП. ВМ-91.090700505
signal mi_3 : STD_LOGIC_VECTOR(3 downto 0);
signal mi_2 : STD_LOGIC_VECTOR(3 downto 0);
signal mi_1 : STD_LOGIC_VECTOR(3 downto 0);
signal mi_0 : STD_LOGIC_VECTOR(3 downto 0);
begin
CI(1) <= PE and not SE;
CI(0) <= SI and not SE;
rg_2 : SN7495 port map(CI(0),CI(1),C,D,r_0);
rg_1 : SN7495 port map(r_0(3),CI(1),C,r_0,r_1);
rg_0 : SN7495 port map(r_1(3),CI(1),C,r_1,r_2);
R_ct(1) <= not SE;
R_ct(0) <= R_ct(1);
C_ct(1) <= C(1);
C_ct(0) <= Q_ct(0);
cnt_12 : SN7492 port map(C_ct,R_ct,Q_ct);
mi_14(3) <= '0'; mi_14(2) <= '0'; mi_14(1) <= '0'; mi_14(0) <= '1';
mi_13(3) <= '1'; mi_13(2) <= r_2(3); mi_13(1) <= '0'; mi_13(0) <= '0';
mi_12(3) <= '1'; mi_12(2) <= r_2(2); mi_12(1) <= '1'; mi_12(0) <= '0';
mi_11(3) <= '1'; mi_11(2) <= r_2(1); mi_11(1) <= '0'; mi_11(0) <= '0';
mi_10(3) <= '0'; mi_10(2) <= r_2(0); mi_10(1) <= '1'; mi_10(0) <= '0';
mi_9(3) <= '1'; mi_9(2) <= '0'; mi_9(1) <= '1'; mi_9(0) <= '0';
mi_8(3) <= '0'; mi_8(2) <= r_1(3); mi_8(1) <= '0'; mi_8(0) <= '0';
mi_7(3) <= '0'; mi_7(2) <= r_1(2); mi_7(1) <= '0'; mi_7(0) <= '0';
mi_6(3) <= '1'; mi_6(2) <= r_1(1); mi_6(1) <= '0'; mi_6(0) <= '0';
mi_5(3) <= '0'; mi_5(2) <= r_2(0); mi_5(1) <= '1'; mi_5(0) <= '0';
mi_4(3) <= '1'; mi_4(2) <= '0'; mi_4(1) <= '0'; mi_4(0) <=Изм.
Лист
№ докум.
Подпись
Дата
Лист
30
Анисимов А. В. КП. ВМ-91.090700505
'0';
mi_3(3) <= '0'; mi_3(2) <= r_0(3); mi_3(1) <= '1'; mi_3(0) <= '1';
mi_2(3) <= '0'; mi_2(2) <= r_0(2); mi_2(1) <= '1'; mi_2(0) <= '0';
mi_1(3) <= '1'; mi_1(2) <= r_0(1); mi_1(1) <= '1'; mi_1(0) <= '1';
mi_0(3) <= '0'; mi_0(2) <= r_0(0); mi_0(1) <= '1'; mi_0(0) <= '0';
ZS <= not (r_2(3) or r_2(2) or r_2(1) or r_2(0) or r_1(3) or r_1(2) or r_1(1) or r_1(0) or r_0(3) or r_0(2) or r_0(1) or r_0(0));
A(1) <= (PB and not SE) or (Q_ct(3) and not C(1) and SE) or (ZS and SE);
A(0) <= SE;
mux_7 : SN74153 port map(A,mi_14,mi_13,'0',m_2(4),
mux_6 : SN74153 port map(A,mi_12,mi_11,'0',m_2(2),
mux_5 : SN74153 port map(A,mi_10,mi_9,'0',m_2(0),m_
mux_4 : SN74153 port map(A,mi_8,mi_7,'0',m_1(3),m_
mux_3 : SN74153 port map(A,mi_6,mi_5,'0',m_1(1),m_
mux_2 : SN74153 port map(A,mi_4,mi_3,'0',m_0(4),m_
mux_1 : SN74153 port map(A,mi_2,mi_1,'0',m_0(2),m_
mux_0 : SN74153 port map(A,mi_0,"0000",'0',m_0(0),
DCseg_2 : S8223 port map(m_2,PB,l_2);
DCseg_1 : S8223 port map(m_1,PB,l_1);
DCseg_0 : S8223 port map(m_0,PB,l_0);
Q(20) <= l_2(6);
Q(19) <= l_2(5);
Q(18) <= l_2(4);
Q(17) <= l_2(3);
Q(16) <= l_2(2);
Q(15) <= l_2(1);
Q(14) <= l_2(0);
Q(13) <= l_1(6);
Q(12) <= l_1(5);
Q(11) <= l_1(4);
Q(10) <= l_1(3);
Q(9) <= l_1(2);
Q(8) <= l_1(1);
Q(7) <= l_1(0);
Q(6) <= l_0(6);
Q(5) <= l_0(5);
Q(4) <= l_0(4);
Q(3) <= l_0(3);
Q(2) <= l_0(2);
Q(1) <= l_0(1);
Q(0) <= l_0(0);
end Behavioral;
Изм.
Лист
№ докум.
Подпись
Дата
Лист
31
Анисимов А. В. КП. ВМ-91.090700505
Временные диаграммы структурного описания:
На представленных диаграммах:
SI – последовательный вход регистра
SE – вход разрешения сдвига
PE – выбор режима работы последовательный/параллельный
PB – разрешение индикации
D3-D0 – параллельные входы регистра
C1-C0 – синхроимпульсы
Q14-Q0 – выходы регистра
Изм.
Лист
№ докум.
Подпись
Дата
Лист
32
Анисимов А. В. КП. ВМ-91.090700505
Рис. 14. Последовательная загрузка, параллельная загрузка, сдвиг, ошибка
Изм.
Лист
№ докум.
Подпись
Дата
Лист
33
Волошин М. А. КП. ВМ-81.080700020.ПЗ
Рис. 15. Последовательная неполная загрузка, сдвиг, ошибка
Спроектированное устройство работает по спаду синхроимпульса. На рисунке 14 предствлена первая временная диаграмма работы регистра. На ней видно что изначально регистр в состоянии отображения загруженной информации (PB=1), в начальный момент времени это все нули. Далее идет последовательная загрузка со входа SI=1. По окончании последовательно загрузки идет два такта (два спада синхроимпульса) параллельной, со входов D3-D0 в регистр записываются нули. Во время записи второй части снимается сигнал «Разрешение индикации» Далее, на дисплее начинает отображаться сообщение «Сдвиг». После загрузки в регистре будет находится число 111100000000. Через 12 тактов сдвига вправо старший разряд счетчика выставится в 1, что вызовет переход в состояние отображения произошедшей ошибки. По снятии сигнала SE регистр будет находится в режиме загрузки с соответствующей индикацией.Изм.
Лист
№ докум.
Подпись
Дата
Лист
34
Анисимов А. В. КП. ВМ-91.090700505
На рисунке 15 представлена вторая временная диаграмма на которой видна неполная последовательная загрузка единиц в восемь младших разрядов регистра. По завершении загрузки включается режим сдвига длинной в 8 тактов. Результатом сдвига числа 000011111111 будут все нули, что вызовет ошибку и срабатывание индикации Err с сохранением состояния регистра, пока не будет снят сигнал SE «Разрешение сдвига». После снятия сигнала SE на дисплее будет отображаться буквенный код LOA соответствующий режиму загрузки
Временные диаграммы поведенческого описания:
На представленных диаграммах(рисунки 16 и 17):
SI – последовательный вход регистра
SE – вход разрешения сдвига
PE – выбор режима работы последовательный/параллельный
PB – разрешение индикацииИзм.
Лист
№ докум.
Подпись
Дата
Лист
35
Анисимов А. В. КП. ВМ-91.090700505
D3-D0 – параллельные входы регистра
C1-C0 – синхроимпульсы
Q14-Q0 – выходы регистра
На представленных диаграммах(рисунки 18 и 19):
SI – последовательный вход регистра
SE – вход разрешения сдвига
PE – выбор режима работы последовательный/параллельный
PB – разрешение индикацииИзм.
Лист
№ докум.
Подпись
Дата
Лист
35
D3-D0 – параллельные входы регистра
C1-C0 – синхроимпульсы
Q20-Q0 – выходы дешифратора семисегментного дисплея(К155РЕ3)
Изм.
Лист
№ докум.
Подпись
Дата
Лист
36
Анисимов А. В. КП. ВМ-91.090700505
Рис. 16. Последовательная загрузка, параллельная загрузка, сдвиг, ошибка
Изм.
Лист
№ докум.
Подпись