SlideShare a Scribd company logo
1 of 42
Nabil CHOUBA UART – RS-232  http:// nabil.chouba.googlepages.com
UART-  RS-232 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TTL 0/5 to RS-232 -12/12
Asynchronous vs. Synchronous ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
RS-232 Pin  Assignment
Baud Rate ,[object Object]
Transmission Re quirement ,[object Object],[object Object],[object Object],[object Object],[object Object]
RS-232 Frame Start D0 D1 D2 D3 D4 D5 D6 D7 Stop 1 1 1 1  0  1  0  0  0  0  1  1  0   0   1   1 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],P T tx  = n .T clk   T clk  = 1/25 Mhz  ,T tx  = 1/9.6 Khz n = T tx  /T clk   , n = 25000/9.6
RTL View shift register b7 b6 b5 b4 b3 b2 b1 b0 run_shift load_shift Data_input shiftBit (start) ‘0’ (stop)  ‘1’ parity xor xor xor xor xor xor xor parity Flip Flop tx State  Machine seltx start Counter Bautrate bautrate run_brcount soft_rst_brcount 00 01 10 11
Transmitter Tx idle   b_start b_0 b_6 b_1 b_5 b_4 b_3 b_2 b_parity b_stop start   seltx <= '01'; run_brcount <= ‘1’; Load_shift <= ‘1’ run_brcount <= ‘1’; seltx <= ’11’; seltx <= '10';  soft_count_rst <= ‘1’ seltx <='10'; run_brcount <= ‘1’; rst bautrate run_brcount <= ‘1’; seltx <= ‘00’ run_brcount <= ‘1’; seltx <=‘00’; run_brcount <= ‘1’; seltx <=‘00’; run_brcount <= ‘1’; seltx <=‘00’; bautrate bautrate bautrate b_7 run_brcount <= ‘1’; seltx <=‘00’; run_brcount <= ‘1’; seltx <=‘00’; run_brcount <= ‘1’; seltx <=‘00’; run_brcount <= ‘1’; seltx <=‘00’; Bautrate /  run_shift <= '1'   Bautrate /  run_shift <= '1'   Bautrate /  run_shift <= '1'   Bautrate /  run_shift <= '1'   Bautrate /  run_shift <= '1'   Bautrate /  run_shift <= '1'   Bautrate /  run_shift <= '1'
VHDL CODE cloked_process : process( clk, rst ) begin if( rst='1' ) then state_reg <=  idle ; counter_bautrate_reg  <= (others =>'0') ; data_shift_reg <= (others =>'0') ; elsif( clk'event and clk='1' ) then state_reg<= state_next ; counter_bautrate_reg <= counter_bautrate_next; data_shift_reg <= data_shift_next; end if; end process ; bautrate <= '1' when counter_bautrate_reg = 5200  else '0'; BR_COUNTER : process( counter_bautrate_reg, run_brcount, soft_rst_brcount,bautrate ) begin counter_bautrate_next  <= counter_bautrate_reg; if  soft_rst_brcount = '1' or bautrate = '1' then counter_bautrate_next <= (others=>'0'); elsif( run_brcount  = '1'  ) then counter_bautrate_next <= counter_bautrate_reg + 1 ;  end if ; end process ; comb_shift:process (load_shift,data_shift_reg,run_shift,data,bautrate) begin data_shift_next<= data_shift_reg; if load_shift ='1' then data_shift_next <=data; elsif run_shift ='1' and bautrate = '1' then data_shift_next <= data_shift_reg(0) & data_shift_reg(7 downto 1); end if; end process; shiftBit <= data_shift_reg(0); parity<=data_shift_reg(0)xor data_shift_reg(1)xor data_shift_reg(2)xor data_shift_reg(3)xor data_shift_reg(4)xor data_shift_reg(5)xor data_shift_reg(6)xor data_shift_reg(7); tx <=  shiftBit when seltx =&quot;00&quot; else -- Data  bit '0'  when seltx =&quot;01&quot; else -- Start bit '1'  when seltx =&quot;01&quot; else -- Stop  bit parity ;
VHDL CODE --next state processing combinatory_FSM_next : process(state_reg,start,bautrate) begin state_next<= state_reg;   case state_reg is when idle => if start = '1' then state_next <= b_start;  end if; when b_start => if bautrate = '1' then state_next <= b_0; end if; when b_0 => if bautrate = '1' then state_next <= b_1; end if; when b_6 => if bautrate = '1' then state_next <= b_7; end if; when b_7 => if bautrate = '1' then state_next <= b_parity; end if; when b_parity => if bautrate = '1' then state_next <= b_stop; end if; when b_stop => if bautrate = '1' then state_next <= idle; end if; when others => end case; end process; when b_1 => if bautrate = '1' then state_next <= b_2; end if; when b_2 => if bautrate = '1' then state_next <= b_3; end if; when b_3 => if bautrate = '1' then state_next <= b_4; end if; when b_4 => if bautrate = '1' then state_next <= b_5; end if; when b_5 => if bautrate = '1' then state_next <= b_6; end if;
VHDL CODE --controls output processing combinatory_output : process(state_reg ) begin run_brcount <= '0'; seltx <= &quot;10&quot;; --stop bit; soft_rst_brcount <= '0'; Load_shift  <= '0'; run_shift <= '0';   case state_reg is when idle => seltx <= &quot;10&quot;; --stop bit; soft_rst_brcount <= '0'; when b_start => seltx <= &quot;01&quot;; run_brcount <= '1'; Load_shift  <= '1'; when b_0 | b_1 b_2 | b_3 |b_4 | b_5 |b_6 | b_7 => run_brcount <= '1'; run_shift <= '1'; seltx <= &quot;00&quot;; when b_parity => run_brcount <= '1'; seltx <= &quot;11&quot;; when b_stop => seltx <=&quot;10&quot;; run_brcount <= '1'; when others => end case; end process;
Simulation  Result (Mentor vsim) ,[object Object]
Synthesis   Result  (designvision / synopsys) Inferred memory devices in process in routine transmiter line 61 in file '/home/chouban/tp_vhdl/rs232/transmiter.vhd'. =================================================================== |  Register Name  |  Type  | Width | Bus | MB | AR | AS | SR | SS | ST | =================================================================== |  data_shift_reg_reg  | Flip-flop |  8  |  Y  | N  | Y  | N  | N  | N  | N  | |  state_reg_reg  | Flip-flop |  4  |  Y  | N  | Y  | N  | N  | N  | N  | | counter_bautrate_reg_reg  | Flip-flop |  16  |  Y  | N  | Y  | N  | N  | N  | N  | ===================================================================
Synthesis   Result  (designvision / synopsys/ GTEC  Library   ) State register  bautrate generation Shift register Next State FSM output Mux seltx
Mux –  seltx   (designvision / synopsys)
Shift register   (designvision / synopsys)
bautrate generation   (designvision / synopsys)
FSM output   (designvision / synopsys)
state : register & next  (designvision / synopsys)
Receiver  sampling  signal Start bit bit 0 bit 1 bit 2 8 16 16 16 ,[object Object],[object Object],[object Object]
RTL View shift register b7 b6 b5 b4 b3 b2 b1 b0 run_shift save_data Data_output State  Machine Counter Bautrate run_brcount soft_rst_brcount b7 b6 b5 b4 b3 b2 b1 b0 bautrate8 rx Detect Start Bit detect_start Data_ready
Receiver  Rx b_start b_0 b_6 b_1 b_5 b_4 b_3 b_2 b_7 b_stop soft_rst_brcount <=‘1’  Bautrate8 idle detect_start parity run_brcount <= ‘1’ run_brcount  <= ‘1’ Bautrate8  /   run_shift <='1'; run_brcount <= ‘1’ run_brcount <= ‘1’ run_brcount <= ‘1’ run_brcount <= ‘1’ run_brcount <= ‘1’ run_brcount <= ‘1’ run_brcount <= ‘1’ run_brcount <= ‘1’ Bautrate8  /   run_shift <='1'; Bautrate8  /   run_shift <='1'; Bautrate8  /   run_shift <='1'; Bautrate8 Bautrate8   /  run_shift <='1'; Bautrate8  /   run_shift <='1'; Bautrate8  /   run_shift <='1'; Bautrate8 Bautrate8  /   save_data <='1'; data_ready <= '1';
VHDL CODE cloked_process : process( clk, rst ) begin if( rst='1' ) then state_reg <=  idle ; counter_bautrate_reg  <= (others =>'0') ; data_shift_reg <= (others =>'0') ; data_save_reg <= (others =>'0') ; rx_reg <= '0'; elsif( clk'event and clk='1' ) then state_reg<= state_next ; counter_bautrate_reg <= counter_bautrate_next; data_shift_reg <= data_shift_next;  data_save_reg <= data_save_next ; rx_reg <= rx_next; end if; end process ; bautrate16 <= '1' when counter_bautrate_reg = 5200  else '0'; bautrate8  <= '1' when counter_bautrate_reg = 2600  else '0'; BR_COUNTER_GEN : process( counter_bautrate_reg, run_brcount, soft_rst_brcount, bautrate16 ) begin counter_bautrate_next  <= counter_bautrate_reg; if  soft_rst_brcount = '1' or bautrate16 = '1' then counter_bautrate_next <= (others=>'0'); elsif( run_brcount  = '1'  ) then counter_bautrate_next <= counter_bautrate_reg + 1 ;  end if ;  end process ;
VHDL CODE comb_shift:process(data_shift_reg,run_shift,rx) begin data_shift_next<= data_shift_reg; if run_shift ='1'  then data_shift_next <= rx & data_shift_reg(7 downto 1); end if; end process; rx_next <= rx; detect_start <= '1' when  rx_next = '0' and rx_reg = '1' else '0'; data_save_next <= data_shift_reg when save_data = '1' else data_save_reg; data <= data_save_reg;
VHDL CODE --next state processing combinatory_FSM_next : process(state_reg, detect_start, bautrate8, bautrate16) begin state_next<= state_reg; case state_reg is when idle => if detect_start = '1' then state_next <= b_start;  end if; when b_start => if bautrate8 = '1' then state_next <= b_0; end if; when b_0 => if bautrate8  = '1' then state_next <= b_1; end if; when b_1 => if bautrate8  = '1' then state_next <= b_2;  end if; when b_2 => if bautrate8  = '1' then state_next <= b_3; end if; when b_3 => if bautrate8  = '1' then state_next <= b_4; end if; when b_4 => if bautrate8  = '1' then state_next <= b_5; end if; when b_5 => if bautrate8  = '1' then state_next <= b_6; end if; when b_6 => if bautrate8  = '1' then state_next <= b_7; end if; when b_7 => if bautrate8  = '1' then state_next <= b_parity; end if; when b_parity => if bautrate8 = '1' then state_next <= b_stop; end if; when b_stop => if bautrate8 = '1' then state_next <= idle; end if; when others => end case; end process;
VHDL CODE --output processing combinatory_output : process(state_reg, detect_start, bautrate8, bautrate16) begin run_brcount <='0'; data_ready <= '0'; save_data <= '0'; soft_rst_brcount<='0'; run_shift <='0'; case state_reg is when idle => soft_rst_brcount<=‘1'; when b_start => run_brcount <='1'; when b_0 => run_brcount <='1'; if bautrate8  = '1' then run_shift <='1'; end if; when b_1 => run_brcount <='1'; if bautrate8  = '1' then run_shift <='1'; end if; when b_2 => run_brcount <='1'; if bautrate8  = '1' then run_shift <='1'; end if; when b_3 => run_brcount <='1'; if bautrate8  = '1' then run_shift <='1'; end if; when b_4 => run_brcount <='1'; if bautrate8  = '1' then run_shift <='1'; end if; when b_5 => run_brcount <='1'; if bautrate8  = '1' then run_shift <='1'; end if; when b_6 => run_brcount <='1'; if bautrate8  = '1' then run_shift <='1'; end if; when b_7 => run_brcount <='1'; if bautrate8  = '1' then run_shift <='1'; end if; when b_parity => run_brcount <='1'; when b_stop => run_brcount <='1'; if bautrate8 = '1' then  save_data <= '1'; end if; when others => end case; end process;
Testbench clk <= not clk after 50 ns; rst <= '0' after 150 ns; tb : PROCESS BEGIN -- idle bit rx <= '1'; -- wiat  wait for 100 * 5200 ns; --stat bit rx <= '0'; wait for 100 * 5200 ns; for i in 0 to 7 loop rx <= send_data(i); wait for 100 * 5200 ns; end loop; -- party bit not implemented rx <= '-'; wait for 100 * 5200 ns; -- stop bit rx <= '1'; wait for 100 * 5200 ns; -- do nothing wait for 100 * 5200 ns; -- test if rw data = to sended data assert (data = send_data) report &quot; data /= send_data&quot;  severity Error; -- end of simulation wait for 1000ns; assert (2=1) report &quot;end simulation&quot; severity note; wait; -- will wait forever end process;
Simulation  Result (Mentor vsim) Data resived : 10101010
Synthesis   Result  (design_vision / synopsys/cmos65 Library   ) Inferred memory devices in process in routine resiver line 60 in file '/home/chouban/tp_vhdl/rs232/resiver.vhd'. ===================================================================== |  Register Name  |  Type  | Width | Bus | MB | AR | AS | SR | SS | ST | ===================================================================== |  rx_reg_reg  | Flip-flop |  1  |  N  | N  | Y  | N  | N  | N  | N  | |  state_reg_reg  | Flip-flop |  4  |  Y  | N  | Y  | N  | N  | N  | N  | | counter_bautrate_reg_reg | Flip-flop |  16  |  Y  | N  | Y  | N  | N  | N  | N  | |  data_shift_reg_reg  | Flip-flop |  8  |  Y  | N  | Y  | N  | N  | N  | N  | |  data_save_reg_reg  | Flip-flop |  8  |  Y  | N  | Y  | N  | N  | N  | N  | =====================================================================
Synthesis   Result  (design_vision / synopsys/ cmos65 ) save register shift  register Counter Bautrate State Machin
Save data register & logic  /cmos65
shift data register & logic  /cmos65
State Machin  /cmos65
Counter Bautrate  /cmos65
Report : area (cmos65) **************************************** Report : area Design : resiver Version: Z-2007.03-SP5-1 Date  : Wed May  6 12:20:00 2009 **************************************** Library(s) Used:  CORE65 Number of ports:  12 Number of nets:  148 Number of cells:  130 Number of references:  23 Combinational area:  364.519990 Noncombinational area:  384.799986 Net Interconnect area:  undefined  (Wire load has zero net area) Total cell area:  749.319946 ***** End Of Report *****
Report : Power (cmos65)  **************************************** Report : power -analysis_effort low Design : resiver Version: Z-2007.03-SP5-1 Date  : Wed May  6 12:21:43 2009 **************************************** Global Operating Voltage = 1.1  Power-specific unit information : Voltage Units = 1V Capacitance Units = 1.000000pf Time Units = 1ns Dynamic Power Units = 1mW  (derived from V,C,T units) Leakage Power Units = 1pW Cell Internal Power  =  1.2396 uW  (77%) Net Switching Power  = 367.3567 nW  (23%) --------- Total Dynamic Power  =  1.6070 uW  (100%) Cell Leakage Power  =  13.1999 uW
Report : reference eference  Library  Unit Area  Count  Total Area  Attributes ----------------------------------------------------------------------------- HS65_LS_AND2X4  CORE65xxxx  2.600000  1  2.600000  HS65_LS_AO12X9  CORE65xxxx  3.640000  1  3.640000  HS65_LS_AO22X9  CORE65xxxx  4.160000  32  133.119995  HS65_LS_AOI22X6  CORE65xxxx  3.640000  1  3.640000  HS65_LS_AOI32X5  CORE65xxxx  4.160000  2  8.320000  HS65_LS_BFX9  CORE65xxxx  2.080000  3  6.240000  HS65_LS_CBI4I1X5  CORE65xxxx  3.640000  1  3.640000  HS65_LS_DFPRQNX9  CORE65xx  10.400000  12  124.799995  n HS65_LS_DFPRQX9  CORE65xxx  10.400000  25  259.999990  n HS65_LS_IVX9  CORE65xxxx  1.560000  20  31.199999  HS65_LS_NAND2AX7  CORE65xx  3.120000  1  3.120000  HS65_LS_NAND2X7  CORE65xxx  2.080000  2  4.160000  HS65_LS_NAND3X5  CORE65xxx  2.600000  3  7.800000  HS65_LS_NAND4ABX3  CORE65x  3.640000  2  7.280000  HS65_LS_NOR2X6  CORE65xxxx  2.080000  5  10.400000  HS65_LS_NOR3AX4  CORE65xxx  3.640000  1  3.640000  HS65_LS_NOR3X4  CORE65xxxx  2.600000  5  13.000000  HS65_LS_NOR4ABX2  CORE65xx  3.640000  6  21.840001  HS65_LS_OAI13X5  CORE65xxx  3.640000  1  3.640000  HS65_LS_OAI21X3  CORE65xxx  2.600000  2  5.200000  HS65_LS_OAI212X5  CORE65xxx  4.160000  2  8.320000  HS65_LS_OAI222X2  CORE65xxx  5.200000  1  5.200000  resiver_DW01_inc_0  78.519997  1  78.519997  h ----------------------------------------------------------------------------- Total 23 references  749.319976
UART : Enhancement  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exemple of UART on µc ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],* TI / MSP430
FPGA over-all Test  ,[object Object],[object Object],[object Object],receiver   transmitter   start debounce  data=[a]= 0x61 tx rx Data_ready data PC PC

More Related Content

What's hot

PIC16F877A interfacing with LCD
PIC16F877A interfacing with LCDPIC16F877A interfacing with LCD
PIC16F877A interfacing with LCDsunil polo
 
MIPI DevCon 2016: A Developer's Guide to MIPI I3C Implementation
MIPI DevCon 2016: A Developer's Guide to MIPI I3C ImplementationMIPI DevCon 2016: A Developer's Guide to MIPI I3C Implementation
MIPI DevCon 2016: A Developer's Guide to MIPI I3C ImplementationMIPI Alliance
 
An Introductory course on Verilog HDL-Verilog hdl ppr
An Introductory course on Verilog HDL-Verilog hdl pprAn Introductory course on Verilog HDL-Verilog hdl ppr
An Introductory course on Verilog HDL-Verilog hdl pprPrabhavathi P
 
SPI introduction(Serial Peripheral Interface)
SPI introduction(Serial Peripheral Interface)SPI introduction(Serial Peripheral Interface)
SPI introduction(Serial Peripheral Interface)SUNODH GARLAPATI
 
System verilog coverage
System verilog coverageSystem verilog coverage
System verilog coveragePushpa Yakkala
 
Serial Peripheral Interface(SPI)
Serial Peripheral Interface(SPI)Serial Peripheral Interface(SPI)
Serial Peripheral Interface(SPI)Dhaval Kaneria
 
Get it right the first time lpddr4 validation and compliance test
Get it right the first time lpddr4 validation and compliance testGet it right the first time lpddr4 validation and compliance test
Get it right the first time lpddr4 validation and compliance testBarbara Aichinger
 
Library Characterization Flow
Library Characterization FlowLibrary Characterization Flow
Library Characterization FlowSatish Grandhi
 
I2C Bus (Inter-Integrated Circuit)
I2C Bus (Inter-Integrated Circuit)I2C Bus (Inter-Integrated Circuit)
I2C Bus (Inter-Integrated Circuit)Varun Mahajan
 
Serial peripheral Interface - Embedded System Protocol
Serial peripheral Interface - Embedded System ProtocolSerial peripheral Interface - Embedded System Protocol
Serial peripheral Interface - Embedded System ProtocolAditya Porwal
 
CPLD (COMPLEX PROGRAMMABLE LOGIC DEVICES)
CPLD (COMPLEX PROGRAMMABLE LOGIC DEVICES)CPLD (COMPLEX PROGRAMMABLE LOGIC DEVICES)
CPLD (COMPLEX PROGRAMMABLE LOGIC DEVICES)Gowri Kishore
 

What's hot (20)

DDR
DDRDDR
DDR
 
I2C
I2CI2C
I2C
 
PIC16F877A interfacing with LCD
PIC16F877A interfacing with LCDPIC16F877A interfacing with LCD
PIC16F877A interfacing with LCD
 
MIPI DevCon 2016: A Developer's Guide to MIPI I3C Implementation
MIPI DevCon 2016: A Developer's Guide to MIPI I3C ImplementationMIPI DevCon 2016: A Developer's Guide to MIPI I3C Implementation
MIPI DevCon 2016: A Developer's Guide to MIPI I3C Implementation
 
Uart
UartUart
Uart
 
An Introductory course on Verilog HDL-Verilog hdl ppr
An Introductory course on Verilog HDL-Verilog hdl pprAn Introductory course on Verilog HDL-Verilog hdl ppr
An Introductory course on Verilog HDL-Verilog hdl ppr
 
I2C
I2CI2C
I2C
 
SPI introduction(Serial Peripheral Interface)
SPI introduction(Serial Peripheral Interface)SPI introduction(Serial Peripheral Interface)
SPI introduction(Serial Peripheral Interface)
 
System verilog coverage
System verilog coverageSystem verilog coverage
System verilog coverage
 
Serial Peripheral Interface(SPI)
Serial Peripheral Interface(SPI)Serial Peripheral Interface(SPI)
Serial Peripheral Interface(SPI)
 
Vlsi
VlsiVlsi
Vlsi
 
Get it right the first time lpddr4 validation and compliance test
Get it right the first time lpddr4 validation and compliance testGet it right the first time lpddr4 validation and compliance test
Get it right the first time lpddr4 validation and compliance test
 
dual-port RAM (DPRAM)
dual-port RAM (DPRAM)dual-port RAM (DPRAM)
dual-port RAM (DPRAM)
 
Uart
UartUart
Uart
 
Library Characterization Flow
Library Characterization FlowLibrary Characterization Flow
Library Characterization Flow
 
I2C Bus (Inter-Integrated Circuit)
I2C Bus (Inter-Integrated Circuit)I2C Bus (Inter-Integrated Circuit)
I2C Bus (Inter-Integrated Circuit)
 
SRAM Design
SRAM DesignSRAM Design
SRAM Design
 
Serial peripheral Interface - Embedded System Protocol
Serial peripheral Interface - Embedded System ProtocolSerial peripheral Interface - Embedded System Protocol
Serial peripheral Interface - Embedded System Protocol
 
SPI Protocol
SPI ProtocolSPI Protocol
SPI Protocol
 
CPLD (COMPLEX PROGRAMMABLE LOGIC DEVICES)
CPLD (COMPLEX PROGRAMMABLE LOGIC DEVICES)CPLD (COMPLEX PROGRAMMABLE LOGIC DEVICES)
CPLD (COMPLEX PROGRAMMABLE LOGIC DEVICES)
 

Viewers also liked

FPGA IMPLIMENTATION OF UART CONTTROLLER
FPGA IMPLIMENTATION OF UART CONTTROLLERFPGA IMPLIMENTATION OF UART CONTTROLLER
FPGA IMPLIMENTATION OF UART CONTTROLLERVarun Kambrath
 
FPGA implementation of synchronous and asynchronous counter and simulation of...
FPGA implementation of synchronous and asynchronous counter and simulation of...FPGA implementation of synchronous and asynchronous counter and simulation of...
FPGA implementation of synchronous and asynchronous counter and simulation of...ASHIMA GUPTA
 
Synthesis & FPGA Implementation of UART IP Soft Core
Synthesis & FPGA Implementation of UART IP Soft CoreSynthesis & FPGA Implementation of UART IP Soft Core
Synthesis & FPGA Implementation of UART IP Soft Coreijsrd.com
 
Hybrid Communication Protocol- UART & SPI
Hybrid Communication Protocol- UART & SPIHybrid Communication Protocol- UART & SPI
Hybrid Communication Protocol- UART & SPIHardik Manocha
 
UART project report by Tarun Khaneja ( 09034406598 )
UART project report by Tarun Khaneja ( 09034406598 )UART project report by Tarun Khaneja ( 09034406598 )
UART project report by Tarun Khaneja ( 09034406598 )Tarun Khaneja
 
Asynchronous vs synchonous interraction kossivi spptx
Asynchronous vs synchonous interraction kossivi spptxAsynchronous vs synchonous interraction kossivi spptx
Asynchronous vs synchonous interraction kossivi spptxSKossivi
 
Fun and Easy UART - How the UART Protocol Works
Fun and Easy UART - How the UART Protocol WorksFun and Easy UART - How the UART Protocol Works
Fun and Easy UART - How the UART Protocol WorksRitesh Kanjee
 
Ece speech-recognition-report
Ece speech-recognition-reportEce speech-recognition-report
Ece speech-recognition-reportAnakali Mahesh
 
Synchronous and asynchronous reset
Synchronous and asynchronous resetSynchronous and asynchronous reset
Synchronous and asynchronous resetNallapati Anindra
 
Synchronous and asynchronous clock
Synchronous and asynchronous clockSynchronous and asynchronous clock
Synchronous and asynchronous clockNallapati Anindra
 
ACCIDENT AVOIDANCE WITH DYNAMIC SPEED GOVERNOR
ACCIDENT AVOIDANCE WITH DYNAMIC SPEED GOVERNORACCIDENT AVOIDANCE WITH DYNAMIC SPEED GOVERNOR
ACCIDENT AVOIDANCE WITH DYNAMIC SPEED GOVERNORakbarsaleemtakkasila
 
Raspberry Pi - Lecture 3 Embedded Communication Protocols
Raspberry Pi - Lecture 3 Embedded Communication ProtocolsRaspberry Pi - Lecture 3 Embedded Communication Protocols
Raspberry Pi - Lecture 3 Embedded Communication ProtocolsMohamed Abdallah
 
Serial Communication
Serial CommunicationSerial Communication
Serial CommunicationRashmi
 
Communication protocol presentation
Communication protocol presentationCommunication protocol presentation
Communication protocol presentationGopi A
 
Asynchronous vs Synchronous Learning
Asynchronous vs Synchronous LearningAsynchronous vs Synchronous Learning
Asynchronous vs Synchronous LearningHafidzah Aziz
 

Viewers also liked (20)

FPGA IMPLIMENTATION OF UART CONTTROLLER
FPGA IMPLIMENTATION OF UART CONTTROLLERFPGA IMPLIMENTATION OF UART CONTTROLLER
FPGA IMPLIMENTATION OF UART CONTTROLLER
 
UART
UARTUART
UART
 
FPGA implementation of synchronous and asynchronous counter and simulation of...
FPGA implementation of synchronous and asynchronous counter and simulation of...FPGA implementation of synchronous and asynchronous counter and simulation of...
FPGA implementation of synchronous and asynchronous counter and simulation of...
 
Synthesis & FPGA Implementation of UART IP Soft Core
Synthesis & FPGA Implementation of UART IP Soft CoreSynthesis & FPGA Implementation of UART IP Soft Core
Synthesis & FPGA Implementation of UART IP Soft Core
 
final_report
final_reportfinal_report
final_report
 
Hybrid Communication Protocol- UART & SPI
Hybrid Communication Protocol- UART & SPIHybrid Communication Protocol- UART & SPI
Hybrid Communication Protocol- UART & SPI
 
UART project report by Tarun Khaneja ( 09034406598 )
UART project report by Tarun Khaneja ( 09034406598 )UART project report by Tarun Khaneja ( 09034406598 )
UART project report by Tarun Khaneja ( 09034406598 )
 
Asynchronous vs synchonous interraction kossivi spptx
Asynchronous vs synchonous interraction kossivi spptxAsynchronous vs synchonous interraction kossivi spptx
Asynchronous vs synchonous interraction kossivi spptx
 
Fun and Easy UART - How the UART Protocol Works
Fun and Easy UART - How the UART Protocol WorksFun and Easy UART - How the UART Protocol Works
Fun and Easy UART - How the UART Protocol Works
 
Ece speech-recognition-report
Ece speech-recognition-reportEce speech-recognition-report
Ece speech-recognition-report
 
Synchronous and asynchronous reset
Synchronous and asynchronous resetSynchronous and asynchronous reset
Synchronous and asynchronous reset
 
Synchronous and asynchronous clock
Synchronous and asynchronous clockSynchronous and asynchronous clock
Synchronous and asynchronous clock
 
Synchronous and asynchronous (1)
Synchronous and asynchronous (1)Synchronous and asynchronous (1)
Synchronous and asynchronous (1)
 
final project ppt
final project pptfinal project ppt
final project ppt
 
Communication protocols
Communication protocolsCommunication protocols
Communication protocols
 
ACCIDENT AVOIDANCE WITH DYNAMIC SPEED GOVERNOR
ACCIDENT AVOIDANCE WITH DYNAMIC SPEED GOVERNORACCIDENT AVOIDANCE WITH DYNAMIC SPEED GOVERNOR
ACCIDENT AVOIDANCE WITH DYNAMIC SPEED GOVERNOR
 
Raspberry Pi - Lecture 3 Embedded Communication Protocols
Raspberry Pi - Lecture 3 Embedded Communication ProtocolsRaspberry Pi - Lecture 3 Embedded Communication Protocols
Raspberry Pi - Lecture 3 Embedded Communication Protocols
 
Serial Communication
Serial CommunicationSerial Communication
Serial Communication
 
Communication protocol presentation
Communication protocol presentationCommunication protocol presentation
Communication protocol presentation
 
Asynchronous vs Synchronous Learning
Asynchronous vs Synchronous LearningAsynchronous vs Synchronous Learning
Asynchronous vs Synchronous Learning
 

Similar to Uart VHDL RTL design tutorial

Loopback.vhd
Loopback.vhdLoopback.vhd
Loopback.vhdsachindb9
 
Digital Voltmeter displaying voltage level on a seven segment display and com...
Digital Voltmeter displaying voltage level on a seven segment display and com...Digital Voltmeter displaying voltage level on a seven segment display and com...
Digital Voltmeter displaying voltage level on a seven segment display and com...Karthik Rathinavel
 
Writing more complex models
Writing more complex modelsWriting more complex models
Writing more complex modelsMohamed Samy
 
Handling Asynchronous Events in MCUs
Handling Asynchronous Events in MCUsHandling Asynchronous Events in MCUs
Handling Asynchronous Events in MCUsCorrado Santoro
 
Verilog Lecture2 thhts
Verilog Lecture2 thhtsVerilog Lecture2 thhts
Verilog Lecture2 thhtsBéo Tú
 
VGA VHDL RTL design tutorial
VGA  VHDL   RTL design tutorialVGA  VHDL   RTL design tutorial
VGA VHDL RTL design tutorialNabil Chouba
 
Blood pressure set programming
Blood pressure set programmingBlood pressure set programming
Blood pressure set programmingNoorshahida Kassim
 
Blackfin Loop Asm
Blackfin Loop AsmBlackfin Loop Asm
Blackfin Loop AsmAdithya Rao
 
The_ERICSSON_commands_listed_below_are_f (1) (1).pdf
The_ERICSSON_commands_listed_below_are_f (1) (1).pdfThe_ERICSSON_commands_listed_below_are_f (1) (1).pdf
The_ERICSSON_commands_listed_below_are_f (1) (1).pdfssuser340a0c
 
Radix 2 code
Radix 2 codeRadix 2 code
Radix 2 codepradipakv
 
Twin wheeler modified for arduino simplified serial protocol to sabertooth v22
Twin wheeler modified for arduino simplified serial protocol to sabertooth v22Twin wheeler modified for arduino simplified serial protocol to sabertooth v22
Twin wheeler modified for arduino simplified serial protocol to sabertooth v22josnihmurni2907
 
Formal Verification of Web Service Interaction Contracts
Formal Verification of Web Service Interaction ContractsFormal Verification of Web Service Interaction Contracts
Formal Verification of Web Service Interaction ContractsGera Shegalov
 
Accumulo Summit 2014: Accismus -- Percolating with Accumulo
Accumulo Summit 2014: Accismus -- Percolating with AccumuloAccumulo Summit 2014: Accismus -- Percolating with Accumulo
Accumulo Summit 2014: Accismus -- Percolating with AccumuloAccumulo Summit
 
Maude20100719
Maude20100719Maude20100719
Maude20100719tmiya
 
Realization of an 8 bit pipelined microprocessor in verilog hdl
Realization of an 8 bit pipelined microprocessor in verilog hdlRealization of an 8 bit pipelined microprocessor in verilog hdl
Realization of an 8 bit pipelined microprocessor in verilog hdlAlexander Decker
 

Similar to Uart VHDL RTL design tutorial (20)

Loopback.vhd
Loopback.vhdLoopback.vhd
Loopback.vhd
 
Digital Voltmeter displaying voltage level on a seven segment display and com...
Digital Voltmeter displaying voltage level on a seven segment display and com...Digital Voltmeter displaying voltage level on a seven segment display and com...
Digital Voltmeter displaying voltage level on a seven segment display and com...
 
Writing more complex models
Writing more complex modelsWriting more complex models
Writing more complex models
 
Handling Asynchronous Events in MCUs
Handling Asynchronous Events in MCUsHandling Asynchronous Events in MCUs
Handling Asynchronous Events in MCUs
 
C++ programming
C++ programmingC++ programming
C++ programming
 
Verilog Lecture2 thhts
Verilog Lecture2 thhtsVerilog Lecture2 thhts
Verilog Lecture2 thhts
 
VGA VHDL RTL design tutorial
VGA  VHDL   RTL design tutorialVGA  VHDL   RTL design tutorial
VGA VHDL RTL design tutorial
 
Blood pressure set programming
Blood pressure set programmingBlood pressure set programming
Blood pressure set programming
 
Blackfin Loop Asm
Blackfin Loop AsmBlackfin Loop Asm
Blackfin Loop Asm
 
The_ERICSSON_commands_listed_below_are_f (1) (1).pdf
The_ERICSSON_commands_listed_below_are_f (1) (1).pdfThe_ERICSSON_commands_listed_below_are_f (1) (1).pdf
The_ERICSSON_commands_listed_below_are_f (1) (1).pdf
 
Radix 2 code
Radix 2 codeRadix 2 code
Radix 2 code
 
Lampiran 1.programdocx
Lampiran 1.programdocxLampiran 1.programdocx
Lampiran 1.programdocx
 
Twin wheeler modified for arduino simplified serial protocol to sabertooth v22
Twin wheeler modified for arduino simplified serial protocol to sabertooth v22Twin wheeler modified for arduino simplified serial protocol to sabertooth v22
Twin wheeler modified for arduino simplified serial protocol to sabertooth v22
 
Comande oss
Comande ossComande oss
Comande oss
 
Formal Verification of Web Service Interaction Contracts
Formal Verification of Web Service Interaction ContractsFormal Verification of Web Service Interaction Contracts
Formal Verification of Web Service Interaction Contracts
 
020419.pdf
020419.pdf020419.pdf
020419.pdf
 
Accumulo Summit 2014: Accismus -- Percolating with Accumulo
Accumulo Summit 2014: Accismus -- Percolating with AccumuloAccumulo Summit 2014: Accismus -- Percolating with Accumulo
Accumulo Summit 2014: Accismus -- Percolating with Accumulo
 
Maude20100719
Maude20100719Maude20100719
Maude20100719
 
Dsp Datapath
Dsp DatapathDsp Datapath
Dsp Datapath
 
Realization of an 8 bit pipelined microprocessor in verilog hdl
Realization of an 8 bit pipelined microprocessor in verilog hdlRealization of an 8 bit pipelined microprocessor in verilog hdl
Realization of an 8 bit pipelined microprocessor in verilog hdl
 

More from Nabil Chouba

Global Positioning System 8051 GSM Traker
Global Positioning System 8051 GSM Traker Global Positioning System 8051 GSM Traker
Global Positioning System 8051 GSM Traker Nabil Chouba
 
Multilayer Neuronal network hardware implementation
Multilayer Neuronal network hardware implementation Multilayer Neuronal network hardware implementation
Multilayer Neuronal network hardware implementation Nabil Chouba
 
Semiconductor overview
Semiconductor overviewSemiconductor overview
Semiconductor overviewNabil Chouba
 
Count display VHDL tutorial
Count display VHDL tutorialCount display VHDL tutorial
Count display VHDL tutorialNabil Chouba
 
Elementary µprocessor tutorial
Elementary µprocessor tutorial Elementary µprocessor tutorial
Elementary µprocessor tutorial Nabil Chouba
 
A BIST Architecture for Sigma Delta ADC Testing Based on Embedded NOEB Self-T...
A BIST Architecture for Sigma Delta ADC Testing Based on Embedded NOEB Self-T...A BIST Architecture for Sigma Delta ADC Testing Based on Embedded NOEB Self-T...
A BIST Architecture for Sigma Delta ADC Testing Based on Embedded NOEB Self-T...Nabil Chouba
 

More from Nabil Chouba (6)

Global Positioning System 8051 GSM Traker
Global Positioning System 8051 GSM Traker Global Positioning System 8051 GSM Traker
Global Positioning System 8051 GSM Traker
 
Multilayer Neuronal network hardware implementation
Multilayer Neuronal network hardware implementation Multilayer Neuronal network hardware implementation
Multilayer Neuronal network hardware implementation
 
Semiconductor overview
Semiconductor overviewSemiconductor overview
Semiconductor overview
 
Count display VHDL tutorial
Count display VHDL tutorialCount display VHDL tutorial
Count display VHDL tutorial
 
Elementary µprocessor tutorial
Elementary µprocessor tutorial Elementary µprocessor tutorial
Elementary µprocessor tutorial
 
A BIST Architecture for Sigma Delta ADC Testing Based on Embedded NOEB Self-T...
A BIST Architecture for Sigma Delta ADC Testing Based on Embedded NOEB Self-T...A BIST Architecture for Sigma Delta ADC Testing Based on Embedded NOEB Self-T...
A BIST Architecture for Sigma Delta ADC Testing Based on Embedded NOEB Self-T...
 

Recently uploaded

The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13Steve Thomason
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...christianmathematics
 
General AI for Medical Educators April 2024
General AI for Medical Educators April 2024General AI for Medical Educators April 2024
General AI for Medical Educators April 2024Janet Corral
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...PsychoTech Services
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdfQucHHunhnh
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...Sapna Thakur
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Sapana Sha
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfagholdier
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactPECB
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
Disha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfDisha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfchloefrazer622
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphThiyagu K
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdfSoniaTolstoy
 

Recently uploaded (20)

The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13The Most Excellent Way | 1 Corinthians 13
The Most Excellent Way | 1 Corinthians 13
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
General AI for Medical Educators April 2024
General AI for Medical Educators April 2024General AI for Medical Educators April 2024
General AI for Medical Educators April 2024
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
IGNOU MSCCFT and PGDCFT Exam Question Pattern: MCFT003 Counselling and Family...
 
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
Disha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfDisha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdf
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
 
Advance Mobile Application Development class 07
Advance Mobile Application Development class 07Advance Mobile Application Development class 07
Advance Mobile Application Development class 07
 

Uart VHDL RTL design tutorial

  • 1. Nabil CHOUBA UART – RS-232 http:// nabil.chouba.googlepages.com
  • 2.
  • 3. TTL 0/5 to RS-232 -12/12
  • 4.
  • 5. RS-232 Pin Assignment
  • 6.
  • 7.
  • 8.
  • 9. RTL View shift register b7 b6 b5 b4 b3 b2 b1 b0 run_shift load_shift Data_input shiftBit (start) ‘0’ (stop) ‘1’ parity xor xor xor xor xor xor xor parity Flip Flop tx State Machine seltx start Counter Bautrate bautrate run_brcount soft_rst_brcount 00 01 10 11
  • 10. Transmitter Tx idle b_start b_0 b_6 b_1 b_5 b_4 b_3 b_2 b_parity b_stop start seltx <= '01'; run_brcount <= ‘1’; Load_shift <= ‘1’ run_brcount <= ‘1’; seltx <= ’11’; seltx <= '10'; soft_count_rst <= ‘1’ seltx <='10'; run_brcount <= ‘1’; rst bautrate run_brcount <= ‘1’; seltx <= ‘00’ run_brcount <= ‘1’; seltx <=‘00’; run_brcount <= ‘1’; seltx <=‘00’; run_brcount <= ‘1’; seltx <=‘00’; bautrate bautrate bautrate b_7 run_brcount <= ‘1’; seltx <=‘00’; run_brcount <= ‘1’; seltx <=‘00’; run_brcount <= ‘1’; seltx <=‘00’; run_brcount <= ‘1’; seltx <=‘00’; Bautrate / run_shift <= '1' Bautrate / run_shift <= '1' Bautrate / run_shift <= '1' Bautrate / run_shift <= '1' Bautrate / run_shift <= '1' Bautrate / run_shift <= '1' Bautrate / run_shift <= '1'
  • 11. VHDL CODE cloked_process : process( clk, rst ) begin if( rst='1' ) then state_reg <= idle ; counter_bautrate_reg <= (others =>'0') ; data_shift_reg <= (others =>'0') ; elsif( clk'event and clk='1' ) then state_reg<= state_next ; counter_bautrate_reg <= counter_bautrate_next; data_shift_reg <= data_shift_next; end if; end process ; bautrate <= '1' when counter_bautrate_reg = 5200 else '0'; BR_COUNTER : process( counter_bautrate_reg, run_brcount, soft_rst_brcount,bautrate ) begin counter_bautrate_next <= counter_bautrate_reg; if soft_rst_brcount = '1' or bautrate = '1' then counter_bautrate_next <= (others=>'0'); elsif( run_brcount = '1' ) then counter_bautrate_next <= counter_bautrate_reg + 1 ; end if ; end process ; comb_shift:process (load_shift,data_shift_reg,run_shift,data,bautrate) begin data_shift_next<= data_shift_reg; if load_shift ='1' then data_shift_next <=data; elsif run_shift ='1' and bautrate = '1' then data_shift_next <= data_shift_reg(0) & data_shift_reg(7 downto 1); end if; end process; shiftBit <= data_shift_reg(0); parity<=data_shift_reg(0)xor data_shift_reg(1)xor data_shift_reg(2)xor data_shift_reg(3)xor data_shift_reg(4)xor data_shift_reg(5)xor data_shift_reg(6)xor data_shift_reg(7); tx <= shiftBit when seltx =&quot;00&quot; else -- Data bit '0' when seltx =&quot;01&quot; else -- Start bit '1' when seltx =&quot;01&quot; else -- Stop bit parity ;
  • 12. VHDL CODE --next state processing combinatory_FSM_next : process(state_reg,start,bautrate) begin state_next<= state_reg; case state_reg is when idle => if start = '1' then state_next <= b_start; end if; when b_start => if bautrate = '1' then state_next <= b_0; end if; when b_0 => if bautrate = '1' then state_next <= b_1; end if; when b_6 => if bautrate = '1' then state_next <= b_7; end if; when b_7 => if bautrate = '1' then state_next <= b_parity; end if; when b_parity => if bautrate = '1' then state_next <= b_stop; end if; when b_stop => if bautrate = '1' then state_next <= idle; end if; when others => end case; end process; when b_1 => if bautrate = '1' then state_next <= b_2; end if; when b_2 => if bautrate = '1' then state_next <= b_3; end if; when b_3 => if bautrate = '1' then state_next <= b_4; end if; when b_4 => if bautrate = '1' then state_next <= b_5; end if; when b_5 => if bautrate = '1' then state_next <= b_6; end if;
  • 13. VHDL CODE --controls output processing combinatory_output : process(state_reg ) begin run_brcount <= '0'; seltx <= &quot;10&quot;; --stop bit; soft_rst_brcount <= '0'; Load_shift <= '0'; run_shift <= '0'; case state_reg is when idle => seltx <= &quot;10&quot;; --stop bit; soft_rst_brcount <= '0'; when b_start => seltx <= &quot;01&quot;; run_brcount <= '1'; Load_shift <= '1'; when b_0 | b_1 b_2 | b_3 |b_4 | b_5 |b_6 | b_7 => run_brcount <= '1'; run_shift <= '1'; seltx <= &quot;00&quot;; when b_parity => run_brcount <= '1'; seltx <= &quot;11&quot;; when b_stop => seltx <=&quot;10&quot;; run_brcount <= '1'; when others => end case; end process;
  • 14.
  • 15. Synthesis Result (designvision / synopsys) Inferred memory devices in process in routine transmiter line 61 in file '/home/chouban/tp_vhdl/rs232/transmiter.vhd'. =================================================================== | Register Name | Type | Width | Bus | MB | AR | AS | SR | SS | ST | =================================================================== | data_shift_reg_reg | Flip-flop | 8 | Y | N | Y | N | N | N | N | | state_reg_reg | Flip-flop | 4 | Y | N | Y | N | N | N | N | | counter_bautrate_reg_reg | Flip-flop | 16 | Y | N | Y | N | N | N | N | ===================================================================
  • 16. Synthesis Result (designvision / synopsys/ GTEC Library ) State register bautrate generation Shift register Next State FSM output Mux seltx
  • 17. Mux – seltx (designvision / synopsys)
  • 18. Shift register (designvision / synopsys)
  • 19. bautrate generation (designvision / synopsys)
  • 20. FSM output (designvision / synopsys)
  • 21. state : register & next (designvision / synopsys)
  • 22.
  • 23. RTL View shift register b7 b6 b5 b4 b3 b2 b1 b0 run_shift save_data Data_output State Machine Counter Bautrate run_brcount soft_rst_brcount b7 b6 b5 b4 b3 b2 b1 b0 bautrate8 rx Detect Start Bit detect_start Data_ready
  • 24. Receiver Rx b_start b_0 b_6 b_1 b_5 b_4 b_3 b_2 b_7 b_stop soft_rst_brcount <=‘1’ Bautrate8 idle detect_start parity run_brcount <= ‘1’ run_brcount <= ‘1’ Bautrate8 / run_shift <='1'; run_brcount <= ‘1’ run_brcount <= ‘1’ run_brcount <= ‘1’ run_brcount <= ‘1’ run_brcount <= ‘1’ run_brcount <= ‘1’ run_brcount <= ‘1’ run_brcount <= ‘1’ Bautrate8 / run_shift <='1'; Bautrate8 / run_shift <='1'; Bautrate8 / run_shift <='1'; Bautrate8 Bautrate8 / run_shift <='1'; Bautrate8 / run_shift <='1'; Bautrate8 / run_shift <='1'; Bautrate8 Bautrate8 / save_data <='1'; data_ready <= '1';
  • 25. VHDL CODE cloked_process : process( clk, rst ) begin if( rst='1' ) then state_reg <= idle ; counter_bautrate_reg <= (others =>'0') ; data_shift_reg <= (others =>'0') ; data_save_reg <= (others =>'0') ; rx_reg <= '0'; elsif( clk'event and clk='1' ) then state_reg<= state_next ; counter_bautrate_reg <= counter_bautrate_next; data_shift_reg <= data_shift_next; data_save_reg <= data_save_next ; rx_reg <= rx_next; end if; end process ; bautrate16 <= '1' when counter_bautrate_reg = 5200 else '0'; bautrate8 <= '1' when counter_bautrate_reg = 2600 else '0'; BR_COUNTER_GEN : process( counter_bautrate_reg, run_brcount, soft_rst_brcount, bautrate16 ) begin counter_bautrate_next <= counter_bautrate_reg; if soft_rst_brcount = '1' or bautrate16 = '1' then counter_bautrate_next <= (others=>'0'); elsif( run_brcount = '1' ) then counter_bautrate_next <= counter_bautrate_reg + 1 ; end if ; end process ;
  • 26. VHDL CODE comb_shift:process(data_shift_reg,run_shift,rx) begin data_shift_next<= data_shift_reg; if run_shift ='1' then data_shift_next <= rx & data_shift_reg(7 downto 1); end if; end process; rx_next <= rx; detect_start <= '1' when rx_next = '0' and rx_reg = '1' else '0'; data_save_next <= data_shift_reg when save_data = '1' else data_save_reg; data <= data_save_reg;
  • 27. VHDL CODE --next state processing combinatory_FSM_next : process(state_reg, detect_start, bautrate8, bautrate16) begin state_next<= state_reg; case state_reg is when idle => if detect_start = '1' then state_next <= b_start; end if; when b_start => if bautrate8 = '1' then state_next <= b_0; end if; when b_0 => if bautrate8 = '1' then state_next <= b_1; end if; when b_1 => if bautrate8 = '1' then state_next <= b_2; end if; when b_2 => if bautrate8 = '1' then state_next <= b_3; end if; when b_3 => if bautrate8 = '1' then state_next <= b_4; end if; when b_4 => if bautrate8 = '1' then state_next <= b_5; end if; when b_5 => if bautrate8 = '1' then state_next <= b_6; end if; when b_6 => if bautrate8 = '1' then state_next <= b_7; end if; when b_7 => if bautrate8 = '1' then state_next <= b_parity; end if; when b_parity => if bautrate8 = '1' then state_next <= b_stop; end if; when b_stop => if bautrate8 = '1' then state_next <= idle; end if; when others => end case; end process;
  • 28. VHDL CODE --output processing combinatory_output : process(state_reg, detect_start, bautrate8, bautrate16) begin run_brcount <='0'; data_ready <= '0'; save_data <= '0'; soft_rst_brcount<='0'; run_shift <='0'; case state_reg is when idle => soft_rst_brcount<=‘1'; when b_start => run_brcount <='1'; when b_0 => run_brcount <='1'; if bautrate8 = '1' then run_shift <='1'; end if; when b_1 => run_brcount <='1'; if bautrate8 = '1' then run_shift <='1'; end if; when b_2 => run_brcount <='1'; if bautrate8 = '1' then run_shift <='1'; end if; when b_3 => run_brcount <='1'; if bautrate8 = '1' then run_shift <='1'; end if; when b_4 => run_brcount <='1'; if bautrate8 = '1' then run_shift <='1'; end if; when b_5 => run_brcount <='1'; if bautrate8 = '1' then run_shift <='1'; end if; when b_6 => run_brcount <='1'; if bautrate8 = '1' then run_shift <='1'; end if; when b_7 => run_brcount <='1'; if bautrate8 = '1' then run_shift <='1'; end if; when b_parity => run_brcount <='1'; when b_stop => run_brcount <='1'; if bautrate8 = '1' then save_data <= '1'; end if; when others => end case; end process;
  • 29. Testbench clk <= not clk after 50 ns; rst <= '0' after 150 ns; tb : PROCESS BEGIN -- idle bit rx <= '1'; -- wiat wait for 100 * 5200 ns; --stat bit rx <= '0'; wait for 100 * 5200 ns; for i in 0 to 7 loop rx <= send_data(i); wait for 100 * 5200 ns; end loop; -- party bit not implemented rx <= '-'; wait for 100 * 5200 ns; -- stop bit rx <= '1'; wait for 100 * 5200 ns; -- do nothing wait for 100 * 5200 ns; -- test if rw data = to sended data assert (data = send_data) report &quot; data /= send_data&quot; severity Error; -- end of simulation wait for 1000ns; assert (2=1) report &quot;end simulation&quot; severity note; wait; -- will wait forever end process;
  • 30. Simulation Result (Mentor vsim) Data resived : 10101010
  • 31. Synthesis Result (design_vision / synopsys/cmos65 Library ) Inferred memory devices in process in routine resiver line 60 in file '/home/chouban/tp_vhdl/rs232/resiver.vhd'. ===================================================================== | Register Name | Type | Width | Bus | MB | AR | AS | SR | SS | ST | ===================================================================== | rx_reg_reg | Flip-flop | 1 | N | N | Y | N | N | N | N | | state_reg_reg | Flip-flop | 4 | Y | N | Y | N | N | N | N | | counter_bautrate_reg_reg | Flip-flop | 16 | Y | N | Y | N | N | N | N | | data_shift_reg_reg | Flip-flop | 8 | Y | N | Y | N | N | N | N | | data_save_reg_reg | Flip-flop | 8 | Y | N | Y | N | N | N | N | =====================================================================
  • 32. Synthesis Result (design_vision / synopsys/ cmos65 ) save register shift register Counter Bautrate State Machin
  • 33. Save data register & logic /cmos65
  • 34. shift data register & logic /cmos65
  • 35. State Machin /cmos65
  • 36. Counter Bautrate /cmos65
  • 37. Report : area (cmos65) **************************************** Report : area Design : resiver Version: Z-2007.03-SP5-1 Date : Wed May 6 12:20:00 2009 **************************************** Library(s) Used: CORE65 Number of ports: 12 Number of nets: 148 Number of cells: 130 Number of references: 23 Combinational area: 364.519990 Noncombinational area: 384.799986 Net Interconnect area: undefined (Wire load has zero net area) Total cell area: 749.319946 ***** End Of Report *****
  • 38. Report : Power (cmos65) **************************************** Report : power -analysis_effort low Design : resiver Version: Z-2007.03-SP5-1 Date : Wed May 6 12:21:43 2009 **************************************** Global Operating Voltage = 1.1 Power-specific unit information : Voltage Units = 1V Capacitance Units = 1.000000pf Time Units = 1ns Dynamic Power Units = 1mW (derived from V,C,T units) Leakage Power Units = 1pW Cell Internal Power = 1.2396 uW (77%) Net Switching Power = 367.3567 nW (23%) --------- Total Dynamic Power = 1.6070 uW (100%) Cell Leakage Power = 13.1999 uW
  • 39. Report : reference eference Library Unit Area Count Total Area Attributes ----------------------------------------------------------------------------- HS65_LS_AND2X4 CORE65xxxx 2.600000 1 2.600000 HS65_LS_AO12X9 CORE65xxxx 3.640000 1 3.640000 HS65_LS_AO22X9 CORE65xxxx 4.160000 32 133.119995 HS65_LS_AOI22X6 CORE65xxxx 3.640000 1 3.640000 HS65_LS_AOI32X5 CORE65xxxx 4.160000 2 8.320000 HS65_LS_BFX9 CORE65xxxx 2.080000 3 6.240000 HS65_LS_CBI4I1X5 CORE65xxxx 3.640000 1 3.640000 HS65_LS_DFPRQNX9 CORE65xx 10.400000 12 124.799995 n HS65_LS_DFPRQX9 CORE65xxx 10.400000 25 259.999990 n HS65_LS_IVX9 CORE65xxxx 1.560000 20 31.199999 HS65_LS_NAND2AX7 CORE65xx 3.120000 1 3.120000 HS65_LS_NAND2X7 CORE65xxx 2.080000 2 4.160000 HS65_LS_NAND3X5 CORE65xxx 2.600000 3 7.800000 HS65_LS_NAND4ABX3 CORE65x 3.640000 2 7.280000 HS65_LS_NOR2X6 CORE65xxxx 2.080000 5 10.400000 HS65_LS_NOR3AX4 CORE65xxx 3.640000 1 3.640000 HS65_LS_NOR3X4 CORE65xxxx 2.600000 5 13.000000 HS65_LS_NOR4ABX2 CORE65xx 3.640000 6 21.840001 HS65_LS_OAI13X5 CORE65xxx 3.640000 1 3.640000 HS65_LS_OAI21X3 CORE65xxx 2.600000 2 5.200000 HS65_LS_OAI212X5 CORE65xxx 4.160000 2 8.320000 HS65_LS_OAI222X2 CORE65xxx 5.200000 1 5.200000 resiver_DW01_inc_0 78.519997 1 78.519997 h ----------------------------------------------------------------------------- Total 23 references 749.319976
  • 40.
  • 41.
  • 42.