Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LIBRARY ieee;
- USE ieee.std_logic_1164.all;
- use ieee.numeric_std.ALL;
- entity TX is
- port (
- clk_in: in STD_LOGIC;
- start: in STD_LOGIC;
- data: in STD_LOGIC_VECTOR(7 downto 0);
- tx: out STD_LOGIC;
- txIdle: out STD_LOGIC
- );
- end entity;
- architecture Test of TX is
- signal idle: STD_LOGIC;
- begin
- process (clk_in)
- variable bitIndex : integer range 0 to 9;
- variable clkDividerCounter : integer range 0 to 260;
- variable dataFrame : STD_LOGIC_VECTOR(9 downto 0);
- variable dataFrameCurrentIndex : integer range 0 to 9;
- begin
- if (rising_edge(clk_in)) then
- if (start = '1' and idle = '1') then
- dataFrame(0) := '0';
- dataFrame(8 downto 1) := data;
- dataFrame(9) := '1';
- dataFrameCurrentIndex := 0;
- idle <= '0';
- end if;
- if (idle = '0') then
- if (clkDividerCounter < 260) then
- clkDividerCounter := clkDividerCounter + 1;
- else
- if (dataFrameCurrentIndex <= 9) then
- tx <= dataFrame(dataFrameCurrentIndex);
- dataFrameCurrentIndex := dataFrameCurrentIndex + 1;
- else
- idle <= '1';
- end if;
- clkDividerCounter := 0;
- end if;
- end if;
- txIdle <= idle;
- end if;
- end process;
- end Test;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement