probleem in de UART-ontvanger code ............

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

 
heb je gesimuleerd met behulp van uw code ModelSim of ActiveHDL?

Zo niet, dan kunt u simuleren en debuggen je code ...Toegevoegd na 1 minuten:Misschien een tip:
wat bit wordt eerst verzonden?Wat bit (MSB en LSB) wordt verwacht?

 
De fout in uw code is dat twee processen rijden "data_out" signaal.U moet verplaatsen reset logica voor "data_out" van het eerste proces op de tweede, zodat "data_out" zal slechts een bestuurder hebben.

 
Misschien een tip:
wat bit wordt eerst verzonden?Wat bit (MSB en LSB) wordt verwacht?

 
Dank u Ringo, nu im getting juiste uitgang

reagrds
kanimozhi.M

 

Welcome to EDABoard.com

Sponsor

Back
Top