OpenCores
URL https://opencores.org/ocsvn/dqpskmap/dqpskmap/trunk

Subversion Repositories dqpskmap

[/] [dqpskmap/] [trunk/] [rtl/] [TETRA_phy.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 entactogen
 
2
-- Copyright (c) 2013 Antonio de la Piedra
3
 
4
-- This program is free software: you can redistribute it and/or modify
5
-- it under the terms of the GNU General Public License as published by
6
-- the Free Software Foundation, either version 3 of the License, or
7
-- (at your option) any later version.
8
 
9
-- This program is distributed in the hope that it will be useful,
10
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
11
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
-- GNU General Public License for more details.
13
 
14
-- You should have received a copy of the GNU General Public License
15
-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
library IEEE;
18
use IEEE.STD_LOGIC_1164.ALL;
19
use IEEE.STD_LOGIC_ARITH.ALL;
20
use IEEE.STD_LOGIC_UNSIGNED.ALL;
21
 
22
entity TETRA_phy is
23
 
24
        port(tetra_clk_36_KHz : in std_logic;
25
                  tetra_clk_18_KHz : in std_logic;
26
                  tetra_rst : in std_logic;
27
                  tetra_bit_stream_input : in  STD_LOGIC;
28
        tetra_valid_input : in  STD_LOGIC;
29
                  tetra_debug_dbit_output : out std_logic_vector(1 downto 0);
30
                  tetra_diffPhaseEncoder_output_0 : out std_logic_vector(7 downto 0);
31
                  tetra_diffPhaseEncoder_output_1 : out std_logic_vector(7 downto 0)
32
   );
33
 
34
end TETRA_phy;
35
 
36
architecture Behavioral of TETRA_phy is
37
 
38
        component dataConverter is
39
                Port (clk_36_KHz : in  STD_LOGIC;
40
                                rst : in std_logic;
41
                                bit_stream_input : in  STD_LOGIC;
42
                                valid_input : in  STD_LOGIC;
43
                                dbit_output : out std_logic_vector(1 downto 0));
44
        end component;
45
 
46
        component biPolarEncoder is
47
                Port (bit_input : in  std_logic;
48
                                valid_input : in  STD_LOGIC;
49
                                bi_polar_output : out std_logic_vector(1 downto 0));
50
        end component;
51
 
52
        component diffPhaseEncoder is
53
        port(clk_18_KHz: in std_logic;
54
                  rst: in std_logic;
55
                  en: in std_logic;
56
                  a_k : in std_logic;
57
                  b_k : in std_logic;
58
                  i_k : out std_logic_vector(7 downto 0);
59
                  q_k : out std_logic_vector(7 downto 0));
60
        end component;
61
 
62
        signal dc_dbit_output_tmp : std_logic_vector(1 downto 0);
63
        signal valid_input_diffPhaseEncoder_1_s : std_logic;
64
        signal valid_input_diffPhaseEncoder_2_s : std_logic;
65
        signal tetra_diffPhaseEncoder_output_0_tmp : std_logic_vector(7 downto 0);
66
        signal tetra_diffPhaseEncoder_output_1_tmp : std_logic_vector(7 downto 0);
67
 
68
begin
69
 
70
        DCONV: dataConverter port map (tetra_clk_36_KHz,
71
                                                                                         tetra_rst,
72
                                                                                         tetra_bit_stream_input,
73
                                                                                         tetra_valid_input,
74
                                                                                         dc_dbit_output_tmp);
75
 
76
 
77
 
78
        PHENC: diffPhaseEncoder port map (tetra_clk_18_KHz,
79
                                                                                                 tetra_rst,
80
                                                                                                 valid_input_diffPhaseEncoder_2_s, --valid_input_diffPhaseEncoder_s,
81
                                                                                                 dc_dbit_output_tmp(1),
82
                                                                                                 dc_dbit_output_tmp(0),
83
                                                                                                 tetra_diffPhaseEncoder_output_0_tmp,
84
                                                                                                 tetra_diffPhaseEncoder_output_1_tmp);
85
 
86
        tetra_debug_dbit_output <= dc_dbit_output_tmp;
87
        tetra_diffPhaseEncoder_output_0 <= tetra_diffPhaseEncoder_output_0_tmp;
88
        tetra_diffPhaseEncoder_output_1 <= tetra_diffPhaseEncoder_output_1_tmp;
89
 
90
        delay_biPolarEncoder_1: process(tetra_clk_18_KHz, tetra_valid_input)
91
                variable valid_input_diffPhaseEncoder_v : std_logic := '0';
92
        begin
93
                if falling_edge(tetra_clk_36_KHz) then
94
                        valid_input_diffPhaseEncoder_v := tetra_valid_input;
95
                end if;
96
 
97
                valid_input_diffPhaseEncoder_1_s <= valid_input_diffPhaseEncoder_v;
98
        end process;
99
 
100
        delay_biPolarEncoder_2: process(tetra_clk_18_KHz, tetra_valid_input, valid_input_diffPhaseEncoder_1_s)
101
                variable valid_input_diffPhaseEncoder_v : std_logic := '0';
102
        begin
103
                if falling_edge(tetra_clk_36_KHz) then
104
                        valid_input_diffPhaseEncoder_v := valid_input_diffPhaseEncoder_1_s;
105
                end if;
106
 
107
                valid_input_diffPhaseEncoder_2_s <= valid_input_diffPhaseEncoder_v;
108
        end process;
109
 
110
end Behavioral;
111
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.