M
mkanimozhivlsi
Guest
Hoi,
Dit is mijn UART ontvanger codelibrary IEEE;
gebruik ieee.std_logic_1164.all;Entiteit uart_rx is
Port (
BCLK, RST: in std_logic;
RXD: in std_logic;
data_rdy: out std_logic;
data_out: out std_logic_vector (7 Downto 0));
Einde entiteit;
Architectuur arch_uart_rx van uart_rx is
type staat is (Idel, start_bit, bit0, bit1, BIT2, bit3, bit4, bit5, Bit6, Bit7, stop_bit);
signaal ps, ns: staat;
signaal data_buff: std_logic_vector (9 Downto 0);
beginnen
proces (BCLK, RST)
beginnen
if (rst = '0 ') then
ps <= Idel;
data_out <= (others => '0 ');
elsif (BCLK = '1 'en bclk'event) dan
ps <= ns;
end if;
einde procesproces (ps, RXD)
beginnen
case (PS) is
wanneer Idel =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
if (RXD = '1 ') then
ns <= start_bit;
anders
ns <= Idel;
end if;
wanneer start_bit =>
data_out <= (others => '0 ');
data_buff (0) <= RXD;
data_rdy <= '0 ';
if (RXD = '0 ') then
ns <= bit0;
anders
ns <= Idel;
end if;
wanneer bit0 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (1) <= RXD;
ns <= bit1;
wanneer bit1 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (2) <= RXD;
ns <= BIT2;
wanneer BIT2 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (3) <= RXD;
ns <= bit3;
wanneer bit3 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (4) <= RXD;
ns <= bit4;
wanneer bit4 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (5) <= RXD;
ns <= bit5;
wanneer bit5 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (6) <= RXD;
ns <= Bit6;
wanneer Bit6 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (7) <= RXD;
ns <= Bit7;
wanneer Bit7 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Koel" border="0" />
<= RXD;
ns <= stop_bit;
wanneer stop_bit =>
data_buff (9) <= RXD;
if (RXD = '1 ') then
data_out <= data_buff (8 Downto 1);
data_rdy <= '1 ';
ns <= Idel;
anders
data_out <= (others => '0 ');
end if;
einde geval;
einde proces
einde architectuur;Ik weet niet wat er mis is in deze code, is het goed werkt, maar het zal niet goed wat de uitgang van de ontvangen bijdragen, toont het "X" dor waarden ontvangen als logische 1, voor logische 0 is het goed wordt weergegeven, i don't y, neem dan iemand mij helpen om dit probleem op te lossen
groeten
kanimozhi.m
Dit is mijn UART ontvanger codelibrary IEEE;
gebruik ieee.std_logic_1164.all;Entiteit uart_rx is
Port (
BCLK, RST: in std_logic;
RXD: in std_logic;
data_rdy: out std_logic;
data_out: out std_logic_vector (7 Downto 0));
Einde entiteit;
Architectuur arch_uart_rx van uart_rx is
type staat is (Idel, start_bit, bit0, bit1, BIT2, bit3, bit4, bit5, Bit6, Bit7, stop_bit);
signaal ps, ns: staat;
signaal data_buff: std_logic_vector (9 Downto 0);
beginnen
proces (BCLK, RST)
beginnen
if (rst = '0 ') then
ps <= Idel;
data_out <= (others => '0 ');
elsif (BCLK = '1 'en bclk'event) dan
ps <= ns;
end if;
einde procesproces (ps, RXD)
beginnen
case (PS) is
wanneer Idel =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
if (RXD = '1 ') then
ns <= start_bit;
anders
ns <= Idel;
end if;
wanneer start_bit =>
data_out <= (others => '0 ');
data_buff (0) <= RXD;
data_rdy <= '0 ';
if (RXD = '0 ') then
ns <= bit0;
anders
ns <= Idel;
end if;
wanneer bit0 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (1) <= RXD;
ns <= bit1;
wanneer bit1 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (2) <= RXD;
ns <= BIT2;
wanneer BIT2 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (3) <= RXD;
ns <= bit3;
wanneer bit3 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (4) <= RXD;
ns <= bit4;
wanneer bit4 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (5) <= RXD;
ns <= bit5;
wanneer bit5 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (6) <= RXD;
ns <= Bit6;
wanneer Bit6 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (7) <= RXD;
ns <= Bit7;
wanneer Bit7 =>
data_out <= (others => '0 ');
data_rdy <= '0 ';
data_buff (
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Koel" border="0" />
<= RXD;
ns <= stop_bit;
wanneer stop_bit =>
data_buff (9) <= RXD;
if (RXD = '1 ') then
data_out <= data_buff (8 Downto 1);
data_rdy <= '1 ';
ns <= Idel;
anders
data_out <= (others => '0 ');
end if;
einde geval;
einde proces
einde architectuur;Ik weet niet wat er mis is in deze code, is het goed werkt, maar het zal niet goed wat de uitgang van de ontvangen bijdragen, toont het "X" dor waarden ontvangen als logische 1, voor logische 0 is het goed wordt weergegeven, i don't y, neem dan iemand mij helpen om dit probleem op te lossen
groeten
kanimozhi.m