Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчеты / ЛАБ5

.1.pdf
Скачиваний:
9
Добавлен:
05.06.2022
Размер:
1.35 Mб
Скачать

11

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 нс.

Соседние файлы в папке Отчеты