You are on page 1of 24

1.

Objective of work
A: Core Objective
Study, Design and Testing Of Universal Asynchronous Receiver / Transmitter using language Verilog.

B: Specific Objective
UART receiver / Transmitter have 8 data bits, one stop bits with one start bit. Baud generator has its baud rate divisor . Interface circuit (FIFO). Tested in Spartan 3 starter kit board (FPGA).

2. Functional Partitioning Of project


Task I :
Design of Baud rate generator for Receiver.

Task II :
Design of UART Receiver sub system.

Task III :
Design of Baud rate generator for transmitter.

Task IV :
Design of Transmitter sub system.

Task IV :
Design of asynchronous FIFO Interface circuit.

3: Functional Task completed of Project


Task I :
Design of Baud rate generator for Receiver.

Task II :
Design of UART Receiver sub system.

Both task I and Task II completed successfully and Tested in Spartan 3 starter kit board (FPGA).

Task III :
Design of Baud rate generator for transmitter. Task completed successfully but have to test in Sparten- 3 starter kit board(FPGA).

Task IV and Task V:


Both Task in process.

4: FSM of Baud Rate generator of receiver:

5: FSM of UART Receiver:

6: Appendices

6.1: Verilog code for Top Module of receiver:

`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 10:33:31 12/07/2011 // Design Name: // Module Name: Rx_TOP_code // Project Name: // Target Devices: // Tool versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // //////////////////////////////////////////////////////////////////////////////////

module Rx_TOP_code(Rst,clk,Rx,Rx_data_out,Rx_data_out_done);

output [7:0]Rx_data_out; output Rx_data_out_done;

input clk; input Rx; input Rst;

wire a;

new_Rx_baud U1(.Rst(Rst),.clk(clk),.Rx_baud(a)); new_Rx U2(.Rst(Rst),.Rx_baud(a),.Rx_data_out(Rx_data_out),.Rx_data_out_done(Rx_data_out_done),.Rx(Rx)) ;

endmodule

6.2: Verilog code of Baud rate Generator of Receiver

`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer:

// // Create Date: 00:27:11 12/07/2011 // Design Name: // Module Name: new_Rx_baud // Project Name: // Target Devices: // Tool versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module new_Rx_baud(clk,Rst,Rx_baud);

parameter S0 = 2'b00; parameter S1 = 2'b01; parameter S2 = 2'b10; parameter S3 = 2'b11;

output Rx_baud; input Rst;

input clk;

reg Rx_baud; reg [1:0]Pr_state; reg [1:0]Nx_state; integer count;

always@(Rst or count or Pr_state) begin case(Pr_state)

S0: begin if(Rst) begin

Nx_state = S0; end else begin

Nx_state = S1; end

end

S1: begin if((count >= 0) && (count <= 81)) begin Nx_state = S1; end else begin Nx_state = S2; end end

S2: begin if((count > 81) && (count < 163)) begin Nx_state = S2; end else begin Nx_state = S0; end end

default: begin Nx_state = S0; end endcase end

always@(posedge clk or posedge Rst) begin if(Rst) begin count = 0; Pr_state = S0; end else begin Pr_state = Nx_state;

case(Nx_state)

S0: begin count = 0;

end

S1: begin Rx_baud = 1; count = count + 1; end

S2: begin Rx_baud = 0; count = count + 1;

end

default: begin count = 0; Rx_baud = 1; end

endcase end end

endmodule

6.3: Verilog code of UART Receiver:


`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 01:22:43 12/07/2011 // Design Name: // Module Name: new_Rx // Project Name: // Target Devices: // Tool versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module new_Rx(Rx_baud,Rst,Rx_data_out,Rx_data_out_done,Rx);

parameter S0 = 3'b000; parameter S1 = 3'b001; parameter S2 = 3'b010; parameter S3 = 3'b011; parameter S4 = 3'b100; parameter S5 = 3'b101; parameter S6 = 3'b110; parameter S7 = 3'b111;

output [7:0]Rx_data_out; output Rx_data_out_done;

input Rx_baud; input Rst; input Rx;

reg [2:0]Pr_state; reg [2:0]Nx_state;

reg [7:0]Rx_data_out; reg Rx_data_out_done;

reg [4:0] count2,count3; reg [3:0] count1,bit_num;

reg data_done; reg [7:0]data;

always@(Pr_state or Rst or count1 or count2 or count3 or data_done or bit_num or Rx) begin case(Pr_state)

S0: begin if(Rst) begin Nx_state = S0; end else begin Nx_state = S1; end end

S1: begin if(Rx) begin Nx_state = S1;

end else begin Nx_state = S2; end end

S2: begin if((count1 >= 0 ) && (count1 < 7)) begin Nx_state = S2; end else begin Nx_state = S3; end end

S3: begin if((count2 >=0) &&(count2 < 15)) begin Nx_state = S3; end

else begin Nx_state = S4; end end

S4: begin if((bit_num >= 0) &&(bit_num <= 7)) begin Nx_state = S3; end else begin Nx_state = S5; end end

S5: begin if((count3 >= 0) &&(count3 < 15)) begin Nx_state = S5; end else

begin Nx_state = S6; end end

S6: begin if(data_done) begin Nx_state = S0; end else begin Nx_state = S6; end end

default: begin Nx_state = S0; end endcase end

always@(posedge Rx_baud or posedge Rst)

begin if(Rst) begin count1 = 0; count2 = 0; count3 = 0; bit_num = 0; data_done = 0; Pr_state = S0; end else begin Pr_state = Nx_state; case(Nx_state)

S0: begin count1 = 0; count2 = 0; count3 = 0; bit_num = 0; data_done = 0; data_done = 0; Rx_data_out_done = 0; end

S1: begin count1 = 0; end

S2: begin count1 = count1 + 1; end

S3: begin count2 = count2 + 1; end

S4: begin data[bit_num] = Rx; bit_num = bit_num + 1; count2 = 0; end

S5: begin

count3 = count3 + 1; end

S6: begin data_done = 1; Rx_data_out = data; Rx_data_out_done = 1; end

default: begin data_done = 0; count1 = 0; count2 = 0; count3 = 0; bit_num = 0; end endcase end end endmodule

7: Result: 7:1. RTL Schematic View of receiver Top module:

7.2: RTL Schematic View of receiver Baud Rate Generator module

7.3: RTL Schematic View of receiver module

8: Simulated Behavioral Result: 8:1. Simulated Behavioral Result of Top module of Receiver:

8:2. Simulated Behavioral Result of Baud rate generator of Receiver:

8:2. Simulated Behavioral Result of UART Receiver:

You might also like