OpenCores
URL https://opencores.org/ocsvn/uart6551/uart6551/trunk

Subversion Repositories uart6551

[/] [uart6551/] [trunk/] [trunk/] [rtl/] [uart6551Rx.sv] - Diff between revs 2 and 3

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 2 Rev 3
Line 65... Line 65...
reg overrun;
reg overrun;
reg [9:0] cnt;                  // sample bit rate counter / timeout counter
reg [9:0] cnt;                  // sample bit rate counter / timeout counter
reg [10:0] rx_data;             // working receive data register
reg [10:0] rx_data;             // working receive data register
reg [9:0] t2;                   // data minus stop bit(s)
reg [9:0] t2;                   // data minus stop bit(s)
reg [7:0] t3,t4;                // data minus parity bit and start bit
reg [7:0] t3,t4;                // data minus parity bit and start bit
 
reg [7:0] t5;
reg p1;
reg p1;
reg gerr;                               // global error status
reg gerr;                               // global error status
reg perr;                               // parity error
reg perr;                               // parity error
reg ferr = 1'b0;                                // framing error
reg ferr = 1'b0;                                // framing error
wire bz;                                // break detected
wire bz;                                // break detected
reg state;                              // state machine
reg state;                              // state machine
reg wf;                                 // fifo write
reg wf;                                 // fifo write
wire empty;
wire empty;
reg didRd;
reg didRd;
 
wire [7:0] dout1;
 
reg full1;
 
wire fifoFull, fifoEmpty;
 
 
assign ack = cyc & cs;
assign ack = cyc & cs;
wire pe_rd;
wire pe_rd;
edge_det ued1 (.rst(rst), .clk(clk), .ce(1'b1), .i(ack & ~wr), .pe(pe_rd), .ne(), .ee());
edge_det ued1 (.rst(rst), .clk(clk), .ce(1'b1), .i(ack & ~wr), .pe(pe_rd), .ne(), .ee());
 
 
Line 90... Line 94...
        .clk(clk),
        .clk(clk),
        .rst(rst|clear|fifoClear),
        .rst(rst|clear|fifoClear),
        .wr(wf),
        .wr(wf),
        .rd(rdf),
        .rd(rdf),
        .din({bz,perr,ferr,t4}),
        .din({bz,perr,ferr,t4}),
        .dout({break_o,parityErr,frameErr,dout}),
        .dout({break_o,parityErr,frameErr,dout1}),
        .ctr(qcnt),
        .ctr(qcnt),
        .full(full),
        .full(fifoFull),
        .empty(empty)
        .empty(fifoEmpty)
);
);
 
 
 
assign dout = fifoEnable ? dout1 : t5;
 
assign empty = fifoEnable ? fifoEmpty : ~full1;
 
assign full = fifoEnable ? fifoFull : full1;
 
 
// compute 1/2 the length of the last bit
// compute 1/2 the length of the last bit
// needed for framing error detection
// needed for framing error detection
reg [7:0] halfLastBit;
reg [7:0] halfLastBit;
always @(stop_bits)
always @(stop_bits)
if (stop_bits==3'd3)    // 1.5 stop bits ?
if (stop_bits==3'd3)    // 1.5 stop bits ?
Line 126... Line 134...
else
else
        t2 <= {rx_data[8:0],1'b0};
        t2 <= {rx_data[8:0],1'b0};
 
 
// grab the parity bit
// grab the parity bit
always @(t2)
always @(t2)
        p1 <= t2[33];
        p1 <= t2[9];
 
 
// strip off parity and start bit
// strip off parity and start bit
always @(parityCtrl or t2)
always @(parityCtrl or t2)
if (parityCtrl[0])
if (parityCtrl[0])
        t3 <= t2[8:1];
        t3 <= t2[8:1];
Line 255... Line 263...
        end
        end
end
end
 
 
always @(posedge clk)
always @(posedge clk)
if (rst)
if (rst)
 
        t5 <= 1'b0;
 
else begin
 
        if (wf)
 
                t5 <= t4;
 
end
 
 
 
always @(posedge clk)
 
if (rst)
 
        full1 <= 1'b0;
 
else begin
 
        if (wf)
 
                full1 <= 1'b1;
 
        else if (pe_rd)
 
                full1 <= 1'b0;
 
end
 
 
 
always @(posedge clk)
 
if (rst)
        didRd <= 1'b0;
        didRd <= 1'b0;
else begin
else begin
        // set a read flag for later reference
        // set a read flag for later reference
        if (pe_rd)
        if (pe_rd)
                didRd <= 1'b1;
                didRd <= 1'b1;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.