Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра комплексной информационной безопасности электронновычислительных систем (КИБЭВС)
ПРИМЕНЕНИЕ РЕГИСТРОВ И СЧЕТЧИКОВ
Отчет по лабораторной работе №7 по дисциплине «Электроника и схемотехника 2»
Вариант №19
Студент гр.
Руководитель
Томск 2022
Введение
Цель работы – научиться совместно применять регистры и счетчики.
Постановка задачи:
1.Составить таблицы истинности для 4-х функций из 1 лабораторной работы согласно варианту.
2.Собрать схему, которая выполняет 4 параллельные операции и организовать прием и выдачу данных согласно варианту.
3.Собрать схемы, которые с помощью регистров обеспечивают
«чистый» выходной сигнал для асинхронного и синхронного счетчиков.
4. Описать устройства с помощью HDL.
5. Промоделировать работу схем и проверить с таблицами истинностями.
Задание по варианту:
–прием данных по убывающему фронту параллельно и синхронно
–выдача данных по возрастающему фронту последовательным кодом старшими разрядами вперед, активный уровень сигнала «read» – 1;
–варианты, по которым необходимо собрать функции – 17, 18, 19, 20.
2
1 ВЫЧИСЛИТЕЛЬЙ ФУНКЦИЙ
1.1 ТАБЛИЦА ИСТИННОСТИ
Согласно варианту, необходимо реализовать выполнение следующий функций:
|
|
|
17 |
|
|
̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅ |
|
|
|
||||
|
|
|
= |
|
|
|
|||||||
|
|
|
18 |
|
|
̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅ |
|
|
|
||||
|
|
|
= |
|
|
|
|||||||
|
|
|
19 |
|
|
̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅ |
|
|
|
||||
|
|
|
|
= |
|
|
|
||||||
|
|
|
20 |
|
̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅ |
|
|
|
|
|
|||
|
|
|
= |
|
|
|
|
|
|||||
Ниже приведена таблица истинности 1.1 для вышеперечисленных |
|||||||||||||
функций. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 1.1 – Таблица истинности функций |
|
|
|
|||||||||
|
Входы |
|
|
|
|
|
Выход |
|
|
|
|||
|
D3(x) |
D2(y) |
D1(z) |
|
D0(w) |
F20 |
|
F19 |
|
F18 |
F17 |
|
|
|
0 |
0 |
0 |
|
|
0 |
1 |
|
1 |
|
1 |
1 |
|
|
0 |
0 |
0 |
|
|
1 |
1 |
|
0 |
|
0 |
0 |
|
|
0 |
0 |
1 |
|
|
0 |
1 |
|
1 |
|
0 |
0 |
|
|
0 |
0 |
1 |
|
|
1 |
0 |
|
0 |
|
1 |
1 |
|
|
0 |
1 |
0 |
|
|
0 |
1 |
|
1 |
|
1 |
0 |
|
|
0 |
1 |
0 |
|
|
1 |
1 |
|
0 |
|
0 |
1 |
|
|
0 |
1 |
1 |
|
|
0 |
1 |
|
0 |
|
0 |
0 |
|
|
0 |
1 |
1 |
|
|
1 |
0 |
|
0 |
|
1 |
1 |
|
|
1 |
0 |
0 |
|
|
0 |
1 |
|
0 |
|
1 |
0 |
|
|
1 |
0 |
0 |
|
|
1 |
1 |
|
0 |
|
0 |
1 |
|
|
1 |
0 |
1 |
|
|
0 |
1 |
|
0 |
|
0 |
0 |
|
|
1 |
0 |
1 |
|
|
1 |
0 |
|
0 |
|
1 |
1 |
|
|
1 |
1 |
0 |
|
|
0 |
0 |
|
0 |
|
0 |
1 |
|
|
1 |
1 |
0 |
|
|
1 |
0 |
|
0 |
|
1 |
0 |
|
|
1 |
1 |
1 |
|
|
0 |
0 |
|
1 |
|
1 |
0 |
|
|
1 |
1 |
1 |
|
|
1 |
0 |
|
0 |
|
0 |
1 |
|
1.2 ФУНКЦИОНАЛЬНАЯ СХЕМА
На рисунке 1.1 представлена функциональная схема вычислителя функций.
3
Рисунок 1.1 – Функциональная схема вычислителя функций
1.3 МОДЕЛИРОВАНИЕ
Было выполнено моделирование составленной функциональной схемы из пункта 1.2. На рисунке 1.2 изображен результат моделирования в режиме
Timing.
Рисунок 1.2 – Моделирование вычислителя функций в режиме Timing
На рисунке 1.3 представлен результат моделирования в режиме
Functional.
Рисунок 1.3 – Моделирование вычислителя функций в режиме Functional
4
По результатам моделирования можно сделать вывод, что схема
выполнена в соответствии с таблицей истинности функций 1.1 и выполняет
параллельный вход и последовательный выход сигналов.
1.4 ОПИСАНИЕ С ПОМОЩЬЮ HDL
Ниже представлен код на VHDL:
library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.all;
use IEEE.NUMERIC_STD.ALL; entity AM is
port (Cint, Cext, RD, RST: in STD_LOGIC; D: in STD_LOGIC_VECTOR (3 downto 0); Out1, clkOut: out STD_LOGIC;
F1: out STD_LOGIC_VECTOR (3 downto 0) );
end;
architecture synth of AM is
type statetype is (S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10); signal state: statetype;
signal CLR: STD_LOGIC;
signal F, Addr: STD_LOGIC_VECTOR (3 downto 0); begin
F(0) <= not(((Addr(3) xor Addr(2)) or Addr(1)) xor Addr(0));
F(1) <= not(((Addr(3) and Addr(2)) xor Addr(1)) xor Addr(0));
F(2) <= not((Addr(3) xor (Addr(2) and Addr(1))) or Addr(0));
F(3) <= not((Addr(3) and Addr(2)) or (Addr(1) and Addr(0))); process (Cext, CLR) begin
if CLR = '1' then CLR <= '0'; elsif falling_edge (Cext) then
CLR <= RST; Addr <= D;
end if; end process;
process (Cint, CLR) begin
if CLR = '1' then state <= S0; elsif rising_edge (Cint) then
case (state) is when S0 =>
clkout <= '0';
if RD = '1' then state <= S1; end if;
5
when S1 =>
Out1 <= F(3); clkOut <= '1'; state <= S2;
when S2 =>
clkOut <= '0'; state <= S3;
when S3 =>
Out1 <= F(2); clkOut <= '1'; state <= S4;
when S4 =>
clkOut <= '0'; state <= S5;
when S5 =>
Out1 <= F(1); clkOut <= '1'; state <= S6;
when S6 =>
clkOut <= '0'; state <= S7;
when S7 =>
Out1 <= F(0); clkOut <= '1'; state <= S0;
when others => state <= S0; end case;
end if; end process; end;
На рисунке 1.4 представлено моделирование вычислителя функций в
режиме Timing.
Рисунок 1.4 – Моделирование вычислителя функций в режиме Timing
На рисунке 1.5 представлено моделирование вычислителя функций в
режиме Functional.
6
Рисунок 1.5 – Моделирование вычислителя функций в режиме Functional
На рисунке 1.6 представлено изображение схемы с помощью RTL
Viewer.
Рисунок 1.6 – RTL Viewer представление
7
2 АСИНХРОННЫЙ СЧЕТЧИК С ВЫХОДНЫМ БУФЕРОМ
2.1 ТАБЛИЦА ИСТИННОСТИ
Для этого задания был использован вычитающий асинхронный счетчик из лабораторной работы с модулем счета 30.
Ниже приведена таблица истинности 2.1 для асинхронного счетчика с выходным буфером.
Таблица 2.1 – Таблица истинности асинхронного счетчика с буфером
№ сигнала |
Выходы |
|
|
|
|
|
D4 |
D3 |
D2 |
D1 |
D0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
2 |
1 |
1 |
1 |
0 |
0 |
3 |
1 |
1 |
0 |
1 |
1 |
4 |
1 |
1 |
0 |
1 |
0 |
5 |
1 |
1 |
0 |
0 |
1 |
6 |
1 |
1 |
0 |
0 |
0 |
7 |
1 |
0 |
1 |
1 |
1 |
8 |
1 |
0 |
1 |
1 |
0 |
9 |
1 |
0 |
1 |
0 |
1 |
10 |
1 |
0 |
1 |
0 |
0 |
11 |
1 |
0 |
0 |
1 |
1 |
12 |
1 |
0 |
0 |
1 |
0 |
13 |
1 |
0 |
0 |
0 |
1 |
14 |
1 |
0 |
0 |
0 |
0 |
15 |
0 |
1 |
1 |
1 |
1 |
16 |
0 |
1 |
1 |
1 |
0 |
17 |
0 |
1 |
1 |
0 |
1 |
18 |
0 |
1 |
1 |
0 |
0 |
19 |
0 |
1 |
0 |
1 |
1 |
20 |
0 |
1 |
0 |
1 |
0 |
21 |
0 |
1 |
0 |
0 |
1 |
22 |
0 |
1 |
0 |
0 |
0 |
23 |
0 |
0 |
1 |
1 |
1 |
24 |
0 |
0 |
1 |
1 |
0 |
25 |
0 |
0 |
1 |
0 |
1 |
26 |
0 |
0 |
1 |
0 |
0 |
27 |
0 |
0 |
0 |
1 |
1 |
28 |
0 |
0 |
0 |
1 |
0 |
29 |
0 |
0 |
0 |
0 |
1 |
30 |
0 |
0 |
0 |
0 |
0 |
8
2.2 ФУНКЦИОНАЛЬНАЯ СХЕМА
На рисунке 2.1 представлена функциональная схема заданного асинхронного счетчика с выходным буфером.
Рисунок 2.1 – Функциональная схема асинхронного счетчика с буфером
2.3 МОДЕЛИРОВАНИЕ
Было выполнено моделирование составленной функциональной схемы из пункта 2.2. На рисунке 2.2 изображен результат моделирования в режиме
Timing.
Рисунок 2.2 – Моделирование счетчика с буфером в режиме Timing
На рисунке 2.3 представлен результат моделирования в режиме
Functional.
Рисунок 2.3 – Моделирование счетчика с буфером в режиме Functional
По результатам моделирования можно сделать вывод, что схема выполнена в соответствии с таблицей истинности асинхронного счетчика с буфером 2.1.
2.4 ОПИСАНИЕ С ПОМОЩЬЮ HDL
Ниже представлен код на VHDL:
9
library ieee;
use ieee.std_logic_1164.all; entity lab7_ASCVHD is port (clk: in STD_LOGIC;
pipoOut: out STD_LOGIC_VECTOR(4 DOWNTO 0)); end;
architecture sync of lab7_ASCVHD is
component asc
port (C: in STD_LOGIC;
Q: out STD_LOGIC_VECTOR(4 downto 0)); end component;
signal tempOut: STD_LOGIC_VECTOR(4 DOWNTO 0);
begin ASCF: asc
port map(clk, tempOut); process(clk) begin
if rising_edge(clk) then pipoOut <= tempOut;
end if; end process; end;
На рисунке 2.4 представлено моделирование асинхронного счетчика с
буфером в режиме Timing.
Рисунок 2.4 – Моделирование счетчика с буфером в режиме Timing
На рисунке 2.5 представлено моделирование асинхронного счетчика с
буфером в режиме Functional.
Рисунок 2.5 – Моделирование счетчика с буфером в режиме Functional
На рисунке 2.6 представлено изображение схемы с помощью RTL
Viewer.
10