100% found this document useful (1 vote)
318 views

Serial Data Receiver

This document describes a VHDL project to design a serial data receiver. The receiver uses a 10-bit frame with a start bit, 8 data bits, a parity bit, and a stop bit. It receives serial data and checks for errors. The design was implemented in VHDL using two different methods and tested through simulation.

Uploaded by

Mohamed Said
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
318 views

Serial Data Receiver

This document describes a VHDL project to design a serial data receiver. The receiver uses a 10-bit frame with a start bit, 8 data bits, a parity bit, and a stop bit. It receives serial data and checks for errors. The design was implemented in VHDL using two different methods and tested through simulation.

Uploaded by

Mohamed Said
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

Alexandria University

Faculty of Engineering
Electrical department
2nd year - 2014
VHDL Report

VHDL Project
Serial Data Receiver
Prepared By:
Mohamed Khaled Aly
Mohamed Said
Mohamed Salah Bassuny
Mahmoud Gaber
Marwan Salem

April, 2014

203
207
209
220
225

VHDL Project

Serial Data Receiver

Steps of Design:
Our aim is to receive a serial data input from the transmitter and
put it in a frame of 10 timeslots .
the first time slot is the start bit , the data input will be transmitted
to the receiver when start = '1' , otherwise it will stop receiving
bits.
the ninth bit is the parity checking bit , which = '1' when number of
ones in the data out is odd , if the parity checked from the receiver
don't match the parity supposed from the transmitter it will cause
an error called parity_err .
the tenth bit is the stop bit , when stop = '0' , error = '1'.
if there is no error , then data_valid = '1

1|Page

VHDL Project

Serial Data Receiver

VHDL Code (Method 1)


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity sdr is
Port ( din,start,stop,clk: in STD_LOGIC;
data_valid: out STD_LOGIC);
end sdr ;
architecture Behavioral of sdr is
signal p : std_logic_vector (5 downto 0) ;
signal dout: std_logic_vector (6 downto 0) := "0000000" ;

--Initializing

signal parity,err,parity_err : std_logic ;


signal parity_supposed : std_logic := '0' ;
begin
process (clk)
begin
if (start='1')then
if (clk'event and clk='1')then
dout(5 downto 0) <= dout(6 downto 1);

--Data shifting

dout(6)<= din ;

--New bit Assigning

end if ;
end if;
end process;

2|Page

VHDL Project

Serial Data Receiver

parity_err <= parity xor parity_supposed ;

--Error checking

err <= '0' when (stop = '1' and (parity_err = '0') )


else '1' ;
data_valid <= not err ;

p(5) <= dout(5) xor dout(6) ;

--Parity checking

generatePARITY: for i in 4 downto 0 generate


p(i) <= p (i+1) xor dout(i);
end generate;
parity <= p(0);

end Behavioral;

3|Page

VHDL Project

Serial Data Receiver

Schematics

Top-level Block

4|Page

VHDL Project

Serial Data Receiver

Simulation

5|Page

VHDL Project

Serial Data Receiver

VHDL Code (Method 2)


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_arith.all;
use IEEE.STD_LOGIC_unsigned.all;

entity basic is
Port ( data_in : in STD_LOGIC;
data_out : out STD_LOGIC_VECTOR (6 downto 0);
err : out STD_LOGIC;
clk : in STD_LOGIC;
data_valid : out STD_LOGIC);
end basic;

architecture Behavioral of basic is

signal counter : integer := 0 ;


signal temp : STD_LOGIC_vector(9 downto 0);

6|Page

VHDL Project

Serial Data Receiver

begin
process(clk)
begin
if(clk='1' and clk'event) then
if ( counter=0 and data_in = '1') then
counter <= counter+1;

elsif (counter<11 ) then


temp(counter-1) <= data_in;
counter <=counter+1;

elsif(temp(8)=(temp(7) xor temp(6) xor temp(5) xor temp(4) xor temp(3) xor
temp(2) xor temp(1)) and temp(9)='1') then
data_out <= temp ( 7 downto 1 );
counter <=0 ;
data_valid <='1';
err <='0';

else
counter <=0;
data_valid <='0';
err <='1';
end if;
end if;
end process;
end Behavioral;
7|Page

VHDL Project

Serial Data Receiver

Schematic

8|Page

VHDL Project

Serial Data Receiver

Simulation

9|Page

You might also like