|
|
-- LF_FRAME_PLACER.vhd
|
|
|
library IEEE;
|
|
|
use IEEE.std_logic_1164.all;
|
|
|
use IEEE.numeric_std.all;
|
|
|
|
|
|
|
|
|
|
|
|
entity LF_FRAME_PLACER is
|
|
|
generic(WordSize :integer := 8;WordCnt : integer := 144;MinFCount : integer := 64);
|
|
|
port(
|
|
|
clk : in std_logic;
|
|
|
Wcount : in integer range 0 to WordCnt-1;
|
|
|
Flag : out std_logic;
|
|
|
LF1 : in std_logic_vector(15 downto 0);
|
|
|
LF2 : in std_logic_vector(15 downto 0);
|
|
|
LF3 : in std_logic_vector(15 downto 0);
|
|
|
WordOut : out std_logic_vector(WordSize-1 downto 0)
|
|
|
|
|
|
);
|
|
|
end entity;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
architecture ar_LF_FRAME_PLACER of LF_FRAME_PLACER is
|
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
process(clk)
|
|
|
begin
|
|
|
if clk'event and clk ='1' then
|
|
|
case Wcount is
|
|
|
when 5 =>
|
|
|
WordOut <= LF1(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 6 =>
|
|
|
WordOut <= LF1(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
when 7 =>
|
|
|
WordOut <= LF2(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 8 =>
|
|
|
WordOut <= LF2(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
when 9 =>
|
|
|
WordOut <= LF3(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 10 =>
|
|
|
WordOut <= LF3(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
|
|
|
when 29 =>
|
|
|
WordOut <= LF1(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 30 =>
|
|
|
WordOut <= LF1(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
when 31 =>
|
|
|
WordOut <= LF2(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 32 =>
|
|
|
WordOut <= LF2(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
when 33 =>
|
|
|
WordOut <= LF3(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 34 =>
|
|
|
WordOut <= LF3(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
|
|
|
when 53 =>
|
|
|
WordOut <= LF1(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 54 =>
|
|
|
WordOut <= LF1(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
when 55 =>
|
|
|
WordOut <= LF2(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 56 =>
|
|
|
WordOut <= LF2(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
when 57 =>
|
|
|
WordOut <= LF3(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 58 =>
|
|
|
WordOut <= LF3(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
|
|
|
when 77 =>
|
|
|
WordOut <= LF1(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 78 =>
|
|
|
WordOut <= LF1(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
when 79 =>
|
|
|
WordOut <= LF2(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 80 =>
|
|
|
WordOut <= LF2(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
when 81 =>
|
|
|
WordOut <= LF3(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 82 =>
|
|
|
WordOut <= LF3(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
|
|
|
when 101 =>
|
|
|
WordOut <= LF1(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 102 =>
|
|
|
WordOut <= LF1(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
when 103 =>
|
|
|
WordOut <= LF2(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 104 =>
|
|
|
WordOut <= LF2(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
when 105 =>
|
|
|
WordOut <= LF3(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 106 =>
|
|
|
WordOut <= LF3(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
|
|
|
when 125 =>
|
|
|
WordOut <= LF1(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 126 =>
|
|
|
WordOut <= LF1(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
when 127 =>
|
|
|
WordOut <= LF2(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 128 =>
|
|
|
WordOut <= LF2(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
when 129 =>
|
|
|
WordOut <= LF3(15 downto 8);
|
|
|
Flag <= '1';
|
|
|
when 130 =>
|
|
|
WordOut <= LF3(7 downto 0);
|
|
|
Flag <= '1';
|
|
|
|
|
|
|
|
|
when others =>
|
|
|
WordOut <= X"A5";
|
|
|
Flag <= '0';
|
|
|
end case;
|
|
|
end if;
|
|
|
end process;
|
|
|
|
|
|
|
|
|
|
|
|
end ar_LF_FRAME_PLACER;
|