1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity top is
Port ( XTALOUT1 : out STD_LOGIC;
XTALOUT2 : out STD_LOGIC;
XTALIN : in STD_LOGIC;
MORSE_HF : out STD_LOGIC);
end top;
architecture Behavioral of top is
constant v : unsigned ( 15 downto 0 ) := "1010101110000000";
signal hfclk : STD_LOGIC := '0'; -- 3.55 МГц
signal lfclk : STD_LOGIC := '0'; -- 16 Гц
signal divider : unsigned (17 downto 0) := "000000000000000000";
signal COUNT : unsigned (3 downto 0) := "0000";
begin
-- Кварцевый генератор:
hfclk <= not XTALIN;
XTALOUT1 <= hfclk;
XTALOUT2 <= not hfclk;
-- Делитель частоты на 110937*2 (3.55 МГц -> 16 Гц):
process (hfclk) begin
if hfclk'event and hfclk='1' then
if divider=110937 then
divider <= "000000000000000000";
lfclk <= not lfclk;
else
divider <= divider + 1;
end if;
end if;
end process;
-- Счетчик, по которому должны выбираться биты из константы v:
process (lfclk) begin
if lfclk'event and lfclk='1' then
COUNT <= COUNT - 1;
end if;
end process;
-- Генерация ВЧ сигнала для подачи на усилитель мощности
-- передатчика:
MORSE_HF <= v(to_integer(COUNT)) and hfclk;
end Behavioral;
|
Строки 1..3: подключение стандартных библиотек. Это традиционное начало любого VHDL-кода.
Строки 5..10: определение портов логической схемы top (входы и выходы).
Строки 12..17: начало определения архитектуры схемы top. Здесь определяются глобальные константы и переменные модуля. Константа v хранит данные точек и тире буквы "Ж" как знака Морзе. Бит hfclk это сигнал 3.55 МГц, который подается на вход счетчика/делителя на 221874. Бит lfclk это выход счетчика, частота 16 Гц. Длительность импульсов этой частоты дает длительность точки. Регистр divider это разряды счетчика/делителя. Регистр COUNT это дополнительный счетчик, на вход которого подается частота lfclk. Счетчик COUNT используется для подачи на вход дешифратора в строке 46 для выдачи последовательности сигнала буквы "Ж".
Строки 21..23: формирование инверторов кварцевого генератора.
Строки 26..35: счетчик/делитель на 221874.
Строки 38..42: счетчик для формирования входных данных для дешифратора буквы "Ж".
Строка 46: здесь сформирован дешифратор, на выходе которого появляются импульсы точек и тире буквы "Ж", а также логический элемент И, который смешивает эти импульсы и сигнал частоты 3.55 МГц. Тем самым формируется сигнал амплитудной манипуляции, который поступает на вход усилителя на транзисторе T1.