Forum Discussion
Altera_Forum
Honored Contributor
11 years agohere is a functioning receiver.
greeting ----------------------------------------------- module rs232_rx ( input clock, input rxd, output reg [7:0] led_g ); parameter idle = 2'b01; parameter ready = 2'b10; parameter busy = 2'b11; reg [1:0] state=idle; reg [3:0] rxd_sr=4'b1111; reg [7:0] rxsr=8'b00000000; reg [3:0] rxbitcnt; reg [11:0] rxcnt; reg [7:0] rx_data; reg rx_en = 0; parameter rcv_bit_per = 2604; //19200 Baud always @(posedge clock ) begin if(rx_en==1) led_g =rx_data; end always @(posedge clock ) begin rxd_sr = {rxd_sr[2:0], rxd}; rx_en = 0; case (state) idle: begin if(rxd_sr[3:2] == 2'b10) begin rxcnt =1302; rxbitcnt =0; state =busy; end end busy: begin if(rxbitcnt<9) begin if(rxcnt < rcv_bit_per) rxcnt =rxcnt+1; else begin rxcnt =0; rxbitcnt <=rxbitcnt+1; rxsr ={rxd_sr[2], rxsr[7:1]}; end end else state=ready; end ready: begin rx_data =rxsr; state =idle; rx_en =1; end endcase end endmodule ------------------------------------------------------------------