Отчеты / ЛАБ5
.1.pdf11
2.3 Делитель частоты
Модуль для счетчика с выходной частотой 1666667 Гц.
вх = 20 нс вых= 1666667 Гц;
Твых = |
1 |
|
= |
|
1 |
|
= 600 нс; |
|||
|
|
|
|
|
|
|||||
|
1666667 Гц |
|||||||||
|
|
вых |
|
|
|
|
|
|
||
M = |
Твых |
= |
|
600 нс |
= 30. |
|
|
|||
|
|
20 нс |
|
|
||||||
|
Т |
|
|
|
|
|
|
|
||
|
вх |
|
|
|
|
|
|
На рисунке 11 показана схема делителя частоты.
Рисунок 11 – Схема делителя частоты.
После построения схемы было проведено моделирование в двух режимах timing и functional. Результаты моделирования представлены на рисунках 12 - 17.
Рисунок 12 – Результат моделирования в режиме timing. Переход с 1 в 0.
12
Рисунок 13 – Результат моделирования в режиме timing. Переход с 0 в 1.
Рисунок 14 – Результат моделирования в режиме timing. Переход с 1 в 0.
Проверка:
0 = 908, 826 нс − 606, 225 нс = 302, 601 нс;
1 = 1206,22 нс − 908, 826нс = 297,394 нс;
Твых = 302,601 нс + 297,394 нс = 599,995 нс.
Рисунок 15 – Результат моделирования в режиме function. Переход с 0 в 1.
Рисунок 16 – Результат моделирования в режиме function. Переход с 1 в 0.
13
Рисунок 17 – Результат моделирования в режиме function. Переход с 0 в 1.
Проверка:
0 = 600 нс − 300 нс = 300 нс;
1 = 900 нс − 600нс = 300нс;
Твых = 300 нс + 300 нс = 600 нс.
Был написан код для делителя частот на VHDL. Код представлен ниже: library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity HZ_DEL is
port (
C: in std_logic; F: out std_logic );
end;
architecture synth of HZ_DEL is signal cout, nC, m, F1, nR: std_logic;
signal Q,nQ: std_logic_vector (4 downto 0); begin
F <= F1;
nC <= not C;
14
nQ <= not Q;
nR <= not(nC and Q(3) and Q(2) and Q(1) and Q(0)); m <= Q(4) and Q(3) and Q(2) and Q(1) and nQ(0); process (nC) begin
if rising_edge (nC) then if m= '1' then
Q <= "00000"; cout <='0'; else
Q<= Q +'1';
if ( Q(4) and Q(3) and Q(2) and nQ(1) and Q(0)) = '1' then cout <= '1'; end if;
end if; end if;
end process;
process (C, nR) begin
if nR= '0' then F1 <= '1'; elsif rising_edge (C) then
if cout = '1' then F1 <= not F1; end if;
end if;
end process; end;
После компиляции кода было проведено моделирование в двух режимах timing и functional. На рисунках 18 - 20 представлено моделирование в режиме timing.
15
Рисунок 18 – Результат моделирования в режиме timing. Переход с 1 в 0.
Рисунок 19 – Результат моделирования в режиме timing. Переход с 0 в 1.
Рисунок 20 – Результат моделирования в режиме timing. Переход с 1 в 0.
Проверка:
0 = 931, 724 нс − 618, 767 нс = 294, 957 нс;
1 = 1238,76 нс − 931, 724 нс = 307,036 нс;
Твых = 294, 957 нс + 307,036 нс = 601,993 нс.
16
2.4 Задержка
Расчеты для выполнения задания:
вх = 50 МГц ; |
|
|||||||||||||
Твх = |
1 |
|
= |
|
1 |
|
|
|
= 20 нс; |
|||||
|
|
50 МГц |
||||||||||||
|
|
|
|
вх |
|
|||||||||
3 = 460 нс, Твх = 20 нс; |
||||||||||||||
Твых = 20; |
|
|
|
|
|
|
||||||||
М |
= |
|
3 |
= |
460 нс |
= 23; |
||||||||
|
|
|
|
|||||||||||
0 |
|
|
вх |
20 нс |
|
|||||||||
|
|
|
|
|||||||||||
М |
= |
вых |
= |
20 нс |
= 1; |
|||||||||
|
|
|||||||||||||
1 |
|
|
вх |
|
20 нс |
|
||||||||
|
|
|
|
|
М = М0 + М1 = 24.
На рисунке 21 показана схема для создания задержки.
Рисунок 21 – Схема для создания задержки.
После построения схемы было проведено моделирование в двух режимах timing и functional. Результаты моделирования представлены на рисунках 22 - 27.
17
Рисунок 22 – Результат моделирования в режиме timing. Начало выходного сигнала.
Рисунок 23 – Результат моделирования в режиме timing. Конец выходного сигнала.
Рисунок 24 – Результат моделирования в режиме timing. Начало нового выходного сигнала.
Проверка:
Твых = 486, 26 нс − 466, 26 = 20 нс;
3 = 946, 26 − 486, 26 = 460 нс.
Рисунок 25 – Результат моделирования в режиме function. Начало выходного сигнала.
18
Рисунок 26 – Результат моделирования в режиме function. Конец выходного сигнала.
Рисунок 27 – Результат моделирования в режиме function. Начало нового выходного сигнала.
Проверка:
Твых = 480 нс − 460 нс = 20 нс;
3 = 940 нс − 480 нс = 460 нс.
Был написан код для создания задержки на VHDL. Код представлен
ниже:
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity Delayvh is
port (
C: in std_logic; F: out std_logic );
end;
architecture synth of Delayvh is
19
signal cout, nC, m, F1: std_logic;
signal Q: std_logic_vector (4 downto 0); begin
F <= F1;
nC <= not C;
m <= Q(4) and not Q(3) and Q(2) and Q(1) and Q(0); cout <= m;
process (nC) begin
if rising_edge (nC) then if m = '1' then
Q <= "00000";
else
Q <= Q + '1'; end if;
end if; end process;
process (C) begin
if rising_edge (C) then F1 <= cout; end if;
end process;
end;
После компиляции кода было проведено моделирование в двух режимах timing и functional. На рисунках 28 - 30 представлено моделирование в режиме timing.
20
Рисунок 28 – Результат моделирования в режиме timing. Начало выходного сигнала.
Рисунок 29 – Результат моделирования в режиме timing. Конец выходного сигнала.
Рисунок 30 – Результат моделирования в режиме timing. Начало нового выходного сигнала.
Проверка:
Твых = 498,295 нс − 478, 295 = 20 нс;
3 = 958,295 − 498,295 = 460 нс.