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

Subversion Repositories ccsds_rxtxsoc

[/] [ccsds_rxtxsoc/] [trunk/] [ccsds_tx_physical_layer.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 zguig52
-------------------------------
2
---- Project: EurySPACE CCSDS RX/TX with wishbone interface
3
---- Design Name: ccsds_tx_physical_layer
4
---- Version: 1.0.0
5
---- Description:
6
---- Implementation of standard CCSDS 401.0-B
7
-------------------------------
8
---- Author(s):
9
---- Guillaume REMBERT
10
-------------------------------
11
---- Licence:
12
---- MIT
13
-------------------------------
14
---- Changes list:
15
---- 2015/11/17: initial release
16
-------------------------------
17
--TODO: Gray coder
18
 
19
-- libraries used
20
library ieee;
21
use ieee.std_logic_1164.all;
22
 
23
-- unitary tx physical layer
24
entity ccsds_tx_physical_layer is
25
  generic (
26
    constant CCSDS_TX_PHYSICAL_BITS_PER_SYMBOL: integer;
27
    constant CCSDS_TX_PHYSICAL_MODULATION_TYPE: integer;
28
    constant CCSDS_TX_PHYSICAL_DATA_BUS_SIZE: integer;
29
    constant CCSDS_TX_PHYSICAL_OVERSAMPLING_RATIO: integer;
30
    constant CCSDS_TX_PHYSICAL_SIG_QUANT_DEPTH : integer
31
  );
32
  port(
33
    -- inputs
34
    clk_sam_i: in std_logic;
35
    clk_sym_i: in std_logic;
36
    dat_i: in std_logic_vector(CCSDS_TX_PHYSICAL_DATA_BUS_SIZE-1 downto 0);
37
    dat_val_i: in std_logic;
38
    rst_i: in std_logic;
39
    -- outputs
40
    sam_i_o: out std_logic_vector(CCSDS_TX_PHYSICAL_SIG_QUANT_DEPTH-1 downto 0);
41
    sam_q_o: out std_logic_vector(CCSDS_TX_PHYSICAL_SIG_QUANT_DEPTH-1 downto 0)
42
  );
43
end ccsds_tx_physical_layer;
44
 
45
-- internal processing
46
architecture structure of ccsds_tx_physical_layer is
47
  component ccsds_tx_mapper_bits_symbols is
48
    generic(
49
      CCSDS_TX_MAPPER_DATA_BUS_SIZE: integer;
50
      CCSDS_TX_MAPPER_MODULATION_TYPE: integer;
51
      CCSDS_TX_MAPPER_BITS_PER_SYMBOL: integer
52
    );
53
    port(
54
      clk_i: in std_logic;
55
      dat_i: in std_logic_vector(CCSDS_TX_MAPPER_DATA_BUS_SIZE-1 downto 0);
56
      dat_val_i: in std_logic;
57
      rst_i: in std_logic;
58
      sym_val_o: out std_logic;
59
      sym_i_o: out std_logic_vector(CCSDS_TX_MAPPER_BITS_PER_SYMBOL-1 downto 0);
60
      sym_q_o: out std_logic_vector(CCSDS_TX_MAPPER_BITS_PER_SYMBOL-1 downto 0)
61
    );
62
  end component;
63
  component ccsds_tx_filter is
64
    generic(
65
      CCSDS_TX_FILTER_OVERSAMPLING_RATIO: integer;
66
      CCSDS_TX_FILTER_SIG_QUANT_DEPTH: integer;
67
      CCSDS_TX_FILTER_MODULATION_TYPE: integer;
68
      CCSDS_TX_FILTER_BITS_PER_SYMBOL: integer
69
    );
70
    port(
71
      clk_i: in std_logic;
72
      sym_val_i: in std_logic;
73
      sym_i_i: in std_logic_vector(CCSDS_TX_FILTER_BITS_PER_SYMBOL-1 downto 0);
74
      sym_q_i: in std_logic_vector(CCSDS_TX_FILTER_BITS_PER_SYMBOL-1 downto 0);
75
      rst_i: in std_logic;
76
      sam_i_o: out std_logic_vector(CCSDS_TX_FILTER_SIG_QUANT_DEPTH-1 downto 0);
77
      sam_q_o: out std_logic_vector(CCSDS_TX_FILTER_SIG_QUANT_DEPTH-1 downto 0);
78
      sam_val_o: out std_logic
79
    );
80
  end component;
81
 
82
  signal wire_sym_i: std_logic_vector(CCSDS_TX_PHYSICAL_BITS_PER_SYMBOL-1 downto 0);
83
  signal wire_sym_q: std_logic_vector(CCSDS_TX_PHYSICAL_BITS_PER_SYMBOL-1 downto 0);
84
  signal wire_sym_val: std_logic;
85
 
86
  begin
87
  tx_mapper_bits_symbols_0: ccsds_tx_mapper_bits_symbols
88
    generic map(
89
      CCSDS_TX_MAPPER_BITS_PER_SYMBOL => CCSDS_TX_PHYSICAL_BITS_PER_SYMBOL,
90
      CCSDS_TX_MAPPER_MODULATION_TYPE => CCSDS_TX_PHYSICAL_MODULATION_TYPE,
91
      CCSDS_TX_MAPPER_DATA_BUS_SIZE => CCSDS_TX_PHYSICAL_DATA_BUS_SIZE
92
    )
93
    port map(
94
      clk_i => clk_sym_i,
95
      dat_i => dat_i,
96
      dat_val_i => dat_val_i,
97
      rst_i => rst_i,
98
      sym_i_o => wire_sym_i,
99
      sym_q_o => wire_sym_q,
100
      sym_val_o => wire_sym_val
101
    );
102
  tx_filter_0: ccsds_tx_filter
103
    generic map(
104
      CCSDS_TX_FILTER_OVERSAMPLING_RATIO => CCSDS_TX_PHYSICAL_OVERSAMPLING_RATIO,
105
      CCSDS_TX_FILTER_MODULATION_TYPE => CCSDS_TX_PHYSICAL_MODULATION_TYPE,
106
      CCSDS_TX_FILTER_SIG_QUANT_DEPTH => CCSDS_TX_PHYSICAL_SIG_QUANT_DEPTH,
107
      CCSDS_TX_FILTER_BITS_PER_SYMBOL => CCSDS_TX_PHYSICAL_BITS_PER_SYMBOL
108
    )
109
    port map(
110
      clk_i => clk_sam_i,
111
      sym_i_i => wire_sym_i,
112
      sym_q_i => wire_sym_q,
113
      sym_val_i => wire_sym_val,
114
      rst_i => rst_i,
115
--      sam_val_o => ,
116
      sam_i_o => sam_i_o,
117
      sam_q_o => sam_q_o
118
    );
119
end structure;

powered by: WebSVN 2.1.0

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