Отчеты / ЛАБ5
.1.pdfМинистерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра комплексной информационной безопасности электронно-
вычислительных систем (КИБЭВС)
ИЗУЧЕНИЕ РАБОТЫ СЧЁТЧИКОВ
Отчет по лабораторной работе №5
по дисциплине «Электроника и схемотехника 2»
Вариант №5
Выполнил:
Студент гр. 710-2
_______ _____Кузьмина А.А.
__.05.2022
Принял: преподаватель каф. КИБЭВС
_______ А.С. Семенов
__.05.2022
Томск - 2021
2
1 Введение
Цель работы: изучение двоичных счётчиков, изучение их принципов построения и работы.
Задание:
1.Составьте таблицы функционирования для схем из табл. 2 согласно варианту. Приведите расчёты для задач делителя частоты и формирования задержки.
2.Соберите схемы заданных счётчиков, делителя частоты и задержки согласно варианту.
3.Промоделируйте работу всех схем в двух режимах. Проведите анализ результатов моделирования разных режимов.
4.Сверьте результаты моделирования с составленными таблицами функционирования и расчётами.
5.Повторите п. 2-4, только для описания устройств вместо схем на холстах .bdf используйте заданный вариантом HDL.
Задание по варианту:
1.Асинхронный – D, счет, М -19;
2.Синхронный – фронт, сброс – а, счет, М- 24;
3.Делитель частоты – Т – 20 нс, D – 0,5;
4.Задержка – f – 50 МГц;
5.HDL – VHDL.
3
2 Ход работы
2.1 Асинхронный счетчик на основе D-триггера
Таблица истинности для счетчика на основе D-триггера представлена
ниже.
Таблица 1 – Таблица истинности для асинхронного счётчика
№ сигнала |
Q4 |
Q3 |
Q2 |
Q1 |
Q0 |
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
1 |
0 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
2 |
0 |
0 |
0 |
1 |
0 |
|
|
|
|
|
|
3 |
0 |
0 |
0 |
1 |
1 |
|
|
|
|
|
|
4 |
0 |
0 |
1 |
0 |
0 |
|
|
|
|
|
|
5 |
0 |
0 |
1 |
0 |
1 |
|
|
|
|
|
|
6 |
0 |
0 |
1 |
1 |
0 |
|
|
|
|
|
|
7 |
0 |
0 |
1 |
1 |
1 |
|
|
|
|
|
|
8 |
0 |
1 |
0 |
0 |
0 |
|
|
|
|
|
|
9 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
10 |
0 |
1 |
0 |
1 |
0 |
|
|
|
|
|
|
11 |
0 |
1 |
0 |
1 |
1 |
|
|
|
|
|
|
12 |
0 |
1 |
1 |
0 |
0 |
|
|
|
|
|
|
13 |
0 |
1 |
1 |
0 |
1 |
|
|
|
|
|
|
14 |
0 |
1 |
1 |
1 |
0 |
|
|
|
|
|
|
15 |
0 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
16 |
1 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
17 |
1 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
18 |
1 |
0 |
0 |
1 |
0 |
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
4
На рисунке 1 изображена схема асинхронного счетчика.
Рисунок 1 - Схема асинхронного счётчика.
После построения схемы было проведено моделирование в двух режимах timing и functional. Результаты моделирования представлены на рисунках 2 и 3.
Рисунок 2 – Результат моделирования в режиме timing.
Рисунок 3 – Результат моделирования в режиме function.
Был написан код для асинхронного счетчика на VHDL. Код представлен
ниже:
5
ibrary ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity D_countervh is
port (
C: in std_logic;
Q: out std_logic_vector (4 downto 0) );
end;
architecture synth of D_countervh is signal R: std_logic;
signal cnt: std_logic_vector (4 downto 0); begin
R <= C or not(cnt(4) and cnt(3) and cnt(2) and cnt(1) and cnt(0)); Q <= cnt;
--Q0
process (C,R) begin
if R = '0' then cnt(0) <= '0';
elsif rising_edge (C) then cnt(0) <= not cnt(0); end if;
end process; --Q1
process (cnt(0)) begin
if rising_edge (cnt(0)) then cnt(1) <= not cnt(1); end if;
6
end process; --Q2
process (cnt(1),R) begin
if R = '0' then cnt(2) <= '0';
elsif rising_edge (cnt(1)) then cnt(2) <= not cnt(2); end if;
end process; --Q3
process (cnt(2),R) begin
if R = '0' then cnt (3) <= '0';
elsif rising_edge (cnt(2)) then cnt(3) <= not cnt(3); end if;
end process; --Q4
process (cnt(3)) begin
if rising_edge (cnt(3)) then cnt(4) <= not cnt(4); end if;
end process;
end;
После компиляции кода было проведено моделирование в двух режимах timing и functional. На рисунках 4 и 5 представлено моделирование в двух режимах.
Рисунок 4 – Результат моделирования в режиме timing.
7
Рисунок 5 – Результат моделирования в режиме function.
2.2 Синхронный счетчик Таблица истинности для синхронного счетчика представлена ниже.
Таблица 2 – Таблица истинности для синхронного счетчика.
№ сигнала |
Q4 |
Q3 |
Q2 |
Q1 |
Q0 |
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
1 |
0 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
2 |
0 |
0 |
0 |
1 |
0 |
|
|
|
|
|
|
3 |
0 |
0 |
0 |
1 |
1 |
|
|
|
|
|
|
4 |
0 |
0 |
1 |
0 |
0 |
|
|
|
|
|
|
5 |
0 |
0 |
1 |
0 |
1 |
|
|
|
|
|
|
6 |
0 |
0 |
1 |
1 |
0 |
|
|
|
|
|
|
7 |
0 |
0 |
1 |
1 |
1 |
|
|
|
|
|
|
8 |
0 |
1 |
0 |
0 |
0 |
|
|
|
|
|
|
9 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
10 |
0 |
1 |
0 |
1 |
0 |
|
|
|
|
|
|
11 |
0 |
1 |
0 |
1 |
1 |
|
|
|
|
|
|
12 |
0 |
1 |
1 |
0 |
0 |
|
|
|
|
|
|
13 |
0 |
1 |
1 |
0 |
1 |
|
|
|
|
|
|
14 |
0 |
1 |
1 |
1 |
0 |
|
|
|
|
|
|
15 |
0 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
16 |
1 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
17 |
1 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
18 |
1 |
0 |
0 |
1 |
0 |
|
|
|
|
|
|
19 |
1 |
0 |
0 |
1 |
1 |
|
|
|
|
|
|
20 |
1 |
0 |
1 |
0 |
0 |
|
|
|
|
|
|
21 |
1 |
0 |
1 |
0 |
1 |
|
|
|
|
|
|
22 |
1 |
0 |
1 |
1 |
0 |
|
|
|
|
|
|
23 |
1 |
0 |
1 |
1 |
1 |
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
8
На рисунке 6 изображена схема синхронного счетчика.
Рисунок 6 – Схема синхронного счетчика.
После построения схемы было проведено моделирование в двух режимах timing и functional. Результаты моделирования представлены на рисунках 7 и 8.
Рисунок 7 – Результат моделирования в режиме timing.
Рисунок 8 – Результат моделирования в режиме function.
Был написан код для асинхронного счетчика на VHDL. Код представлен
ниже:
9
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity SyncCountvh is
port (
C, R: in std_logic;
Q: out std_logic_vector (4 downto 0) );
end;
architecture synth of SyncCountvh is signal m: std_logic;
signal S: std_logic_vector (4 downto 0); begin
m <= S(4) and not (S(3)) and S(2) and S(1) and S(0); Q <= S;
process (C,R) begin
if rising_edge (C) then
if m = '1' then S <= "00000"; else S <= S + '1';
end if; end if;
if R = '1' then S <= "00000"; end if;
end process; end;
10
После компиляции кода было проведено моделирование в двух режимах timing и functional. На рисунках 9 и 10 представлено моделирование в двух режимах.
Рисунок 9 – Результат моделирования в режиме timing.
Рисунок 10 – Результат моделирования в режиме function.