library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; entity Sender3 is port( clk : in STD_LOGIC; clk2 : in STD_LOGIC;-- z.B. 50MHz x : in STD_LOGIC_VECTOR(3 downto 0); --y: buffer bit_vector(559 downto 0); serout : out STD_LOGIC; load : in STD_LOGIC -- Bitvektor laden serout: out bit ); end Sender3; architecture Sender_Test3 of Sender3 is signal bitcnt : integer range 0 to 560; signal delaycnt : integer range 0 to 6249; -- 1ms/Bit signal bits :STD_LOGIC_VECTOR (559 downto 0); signal y :STD_LOGIC_VECTOR(559 downto 0); signal xv: STD_LOGIC_VECTOR(3 downto 0); begin process(clk) begin if( clk'event and clk='1')then xv<=x; end if; end process; with xv select -- 0000: 1 -- 0001: 2 -- 0000: 3 -- 0001: A -- 0000: 4 -- 0001: 5 -- 0000: 6 -- 0001: B -- 0000: 7 -- 0001: 8 -- 0000: 9 -- 0001: C -- 0000: * -- 0001: 0 -- 0000: # -- 0001: D y<= "01110000000000111000000000011000000110000000000111000000000011100000000001100000011000000000011100000000001110000001000010000001110000000000111000000000111000000100000000000111000000000011100000000001100000011000000000011100000000001110000000000110000001100000000001111000000000111000000000001100000111000000000011100000000001100000010000100000011100000000001110000000000110000001100000000001110000000000111000000000011100000110000000000011100000000011100000000000110000011100000000001110000000000110000001000011000001110000000000111000000000011100000110000000" when "0000", "01110000000001110000000001100000000011100000000011100000000011100000000011100000000011100000100011000000100001000001100000000001100000000001100000000001100000000011100000000011100000000011100000000011100000000011000000000011000000000011000001100011000001100000000001100000000011100000000011100000000011100000000011100000000011100000000011000000000011000000000011000001000011000001100010000001100000000011100000000011100000000011100000000011100000000011000000000011000000000111000000000111000000000111000001000110000001000010000011100000000011100000000011100000" when "0001", "01100000000011000100000110001000000000110000000001110000000011100000000111000000001110000000011000000000110000000001100010000010001100000000011100000000111000000001110000000011100000000111000000001100000000011000100000110001000000000111000000001110000000011100000000111000000001110000000011000000000110000000001100010000000001100000000011100000000111000000001110000000011100000000111000000001100000000011000100000110011000000000111000000001110000000011100000000111000000001110000000011000000000110001000001100010000000001110000000011100000000111000000001110000" when "0010", "01100010000000011000000001100000000110001000000001110000000111000000001100100000000011000000001100000000110011000000001100000000110000000011000100000000111000000011100000000100011000000001100000000110000000011001100000000110000000011000000001100110000000011100000001110000000010001100000001110000000011000000001000110000000011000000001100000000010011000000001110000000111000000001001110000000111000000001100000000100011000000001100000000110001000000001100000000110000000011000100000000111000000011100000000110011000000001100000000110000000011001100000000110000" when "0011", "01110000000000110000011100000000011100000010000000000011100000000001000000111000000000111000001110000000001110000011000000000011100000000000100000011000000000011100000110000000000111000001100000000001110000000000110000011100000000001100000011000000000011100000110000000000111000000000011000001110000000000110000011100000000001100000011000000000011100000000001000000111000000000111000001110000000001110000011100000000011100000000000100000011100000000011100000111000000000111000001100000000001110000000000010000011100000000001100000011000000000011100000110000000" when "0100", "01110000000011100000000011100000110000000001100000000011100000000011000001110000000001100000000011100000100011000001100000000011100000000011100000100000000001100000000011100000000011000001100000000001100000000011100000000011000001100000000011100000000011100000000011000001100000000011100000000011000001100010000001100000000011100000000011000001100000000011100000000011000000000011000001100000000011100000000011000000000011000001100000000011100000000111000001000010000011100000000011000000000111000001000010000011100000000111000000000111000001000000000011000000" when "0101", "01100000000011000000001110000000011100000000110000000001100000000111000000001100000100011000001000110000110000000001100000000011000000001110000000011000000000110000000011100000000111000000001100000000011000000000110000110001000001100010000011000000001110000000011000000000110000000011100000000111000000001100000000111000000001110000000011000001000110000010001000001100000000011000000001110000000011100000000110000000001100000000111000000001110000000011000000000110000010001000001100010000011000000001110000000011100000000110000000011100000000111000000001100000" when "0110", "01100000000110000000010001100000000110000000111000000011100000001110000000111000000011000000001100000000110011000010001100000000110000000011000000011100000001110000000111000000011000000001100010000010011000000001100000000110000000011000000001100000000110000000011000000001000100000100010000000011000000001100000000110000000011000000001100000000110000000011000000001000100000100011000000011100000001110000000111000000011000000001100000000110000000011001100001000110000000011000000011100000001110000000111000000011100000001100000000110001000011001100000000110000" when "0111", "01110000000000000000111000001100000000001110000011000000000011000001110000000000000000111000001110000000001110000011000000000000000001110000011000000000011000001110000000001100000011000000000000000001110000011000000000011000001110000000000100000011000000100000000001110000011000000000011000001110000000000000000011000001110000000001110000011000000000011000001110000000000000000011000001110000000001110000011000000000000000001110000011000000000011000001110000000000110000011100000000000000001110000011000000000011000001110000000000100000011100000100000000001110" when "1000", "01110000000011100001110000000011100000100000000001100000000001000001100000000011000001110000000011100000100000000011100000000001000001100000000011000001100000000011100001100000000011100000000000000011100000000011000001100000000011000001100000000011100000100000000011100000000011000001100000000011000001100000000011000001100000000011100000000010000011100000000011000001100000000011000001100000000011100000000010000011100000000111000011100000000011000001100000000011000000000010000011100000000111000011100000000111000001100000000011000000000010000011000000000110" when "1001", "01100000000111000000001100000100000000011000000001110000000011000011000000000110000000011000001000100000110000000011100000000110000010000000001100000000111000000001100001100000000011000000001100000000011000011000000001110000000011000001000100000110000000011100000000110000010000000001100000000110000000001100001100000000111000000001100000000010000011000000001110000000011000000000100000110000000011000000000110000110000000011100000000110000000011100001100000000111000000001100000000010000011000000001110000000111000000000100000110000000011000000001110000110000" when "1010", "01100000000110000000111000000011000000001100000001110000000110000000011000010001000001000100001100000000110000000011000000011100000001100000000110000000111000000011000000001100000000110000100010000110001000011000000001100000001100000000110000000011000000011100000001100000000110000000111000000011000000001100001000100000100000000110000000011000000001100000001110000000110000000011000000011100000001100000000110000100010000010001000011000000001100000000110000000111000000011000000001100000001110000000110000000011000000001100001000100001100010000110000000011000" when "1011", "01110000011000000000110000011100000110000000000000000111000001100000110000000000110000011000001110000000000000000110000011100000110000000001100000111000001100000000000000001110000011000001100000000001100000110000011100000000000000001100000111000001100000000001000001110000011000000000000000011100000110000011000000000011000000110000011100000000000000001100000111000001100000000001000001110000011000000000000000001100000110000011000000000011000001110000111000000000000000011000001110000011000000000010000011100000110000000000000000011000001110000111000000000000" when "1100", "01100000000000000001100000110000000011100001110000000011000001100000000000000011100001110000000011000001100000000000000011100000100000000011100001100000000011000001100000000000000011100001100000000011000001100000000011000011100000100000000011000001100000000011000011100000000000000011100001100000000011000001100000000011000011100000000000000011000001100000000011000011100000000010000011100001100000000011000001100000000111000011100000000000000011000001100000000111000011100000000010000011000001000000000111000011100000000110000011000000000000000011000001000000" when "1101", "01100000000110000011000000001100001100000000110000000001000011100000000110000110000000011000001000000000110000000011000011000000001100000110000000011000011000000001100000000010000011000000001100001100000000110000011000000001100000000010000111000000001000001100000000110000110000000011100000000000000110000000011000011100000001110000110000000011000000000000001110000000010000011000000001100001100000000111000010000000001100000000110000111000000011100001100000000110000010000000011100000000110000110000000011000001100000001110000100000000011000000000100001110000" when "1110", "01100000001110000000110000110000000110000000011000000011000011000000011100000001100000000100001100000001110000000110000100010000110000000011000000011000011000000001100000001100000000100001100000000110000000110000000011000011000000011000000011100001000100001100000001100000000110000100000000110000000111000000011000011000000011000000001100000001100001100000001110000000110000000010000110000000011000000011000010001000011000000001100000001100001100000000110000000110000000010000010000000011000000011000000001100001100000001100000001110000100010000110000000110000" when others; process begin wait until rising_edge(clk2); if (load='1') then delaycnt <= 0; -- Bitdelay zur?cksetzen bitcnt <= 560; -- 560 Bits sind zu ?bertragen bits <= y; -- Daten zur internen Verarbeitung ?bernehmen else if (delaycnt/=6249) then -- 0.125 ms vorbei? delaycnt <= delaycnt+1; -- nein: weiterz?hlen else if (bitcnt/=0) then -- sind noch Bits ?brig? delaycnt <= 0; -- ja: Bitdelay zur?cksetzen bits <= '0' & bits(559 downto 1); -- das Schieberegister eins weiterschieben bitcnt <= bitcnt-1; end if; end if; end if; end process; serout <= bits(0); end Sender_Test3;