Documentation for architecture MGTR/TxEncode/a0
VHDL Contents
1 architecture a0 of TxEncode is
22
23 constant IDLE_Data : std_logic_vector(15 downto 0) := x"BC50";
25 constant IDLE_K : std_logic_vector( 1 downto 0) := "10";
26 constant CarExt_Data : std_logic_vector(15 downto 0) := x"F7F7";
28 constant CarExt_K : std_logic_vector( 1 downto 0) := "11";
29 constant ErrProp_Data : std_logic_vector(15 downto 0) := x"FEFE";
31 constant ErrProp_K : std_logic_vector( 1 downto 0) := "11";
32 constant DATA_K : std_logic_vector( 1 downto 0) := "00";
33 constant plain : std_logic := '0';
35 signal TsData : std_logic_vector(15 downto 0);
36
37 begin
38
39 pr1:
40 process (XClk, Rst_n)
41 begin
42 if (Rst_n = '0') then
43 TxData <= IDLE_Data;
44 TsData <= (others => '0');
45 TXCharIsK <= IDLE_K;
46 elsif (rising_edge(XClk)) then
47 if (CAV = '0' and DAV = '0') then
48 TxData <= IDLE_Data;
49 TXCharIsK <= IDLE_K;
50 elsif (CAV = '0' and DAV = '1') then
51 if (plain = '1') then
52 if (EAV = '0') then
58 TsData(15 downto 0) <= Data(15 downto 0);
59 TxData(15 downto 0) <= Data(31 downto 16);
60 else
61 TxData(15 downto 0) <= TsData(15 downto 0);
62 end if;
63 else
64 if (EAV = '0') then
70 TsData(15 downto 0) <= Data(31 downto 16);
71 TxData(15 downto 0) <= Data(7 downto 0) & Data(15 downto 8);
72 else
73 TxData(15 downto 0) <= TsData(7 downto 0) & TsData(15 downto 8);
74 end if;
75 end if;
76 TXCharIsK <= DATA_K;
77 elsif (CAV = '1' and DAV = '0') then
78 TxData <= CarExt_Data;
79 TXCharIsK <= CarExt_K;
80 else
81 TxData <= ErrProp_Data;
82 TXCharIsK <= ErrProp_K;
83 end if;
84 end if;
85 end process;
86
87 end architecture a0 ;