I am using the RS232 IP core to send info from a DE2 board to a computer running Ubuntu. When run on Windows, the controller works fine, but when run on Ubuntu the something interesting happens and I cannot find any help with this issue. Here is what I have.

A sample project (not the actual project I'm using, but something I made to debug the issue, the same thing happens in each):
module serial(
input CLOCK_50,
output UART_TXD,
input [3:0] KEY

 reg [7:0] data;
 reg valid;
 wire reset;
    assign reset = ~KEY[0];

     uart u0 (
        .to_uart_data    (data),    //  avalon_data_transmit_sink.data
        .to_uart_valid   (valid),   //                           .valid
        .clk             (CLOCK_50),             //                        clk.clk
        .UART_TXD        (UART_TXD),        //                           .TXD
        .reset           (reset)            //                      reset.reset

    reg preKEY1;
    always @(posedge CLOCK_50) begin
        if(reset) begin
            data <= 8'd5;
            valid <= 1'b0;
            preKEY1 <= KEY[1];
        else if(KEY[1] != preKEY1)begin
            data <= data + 8'd1;
            preKEY1 <= KEY[1];
            valid <= 1'b1;
        else begin
            data <= data;
            valid <= 1'b0;
            preKEY1 <= KEY[1];

Essentially the code is meant to let me output characters by pressing the buttons on the board. When I load this onto the board and press the reset button, I enter into the Ubuntu terminal:

sudo cat /dev/ttyUSB0

to retrieve the output from the serial port (I am connecting through a USB converter, which think may be part of the problem, but I believe I have set that up properly)

When I press the button the board, characters appear in the terminal as expected, but the characters are all � (the ascii replacement character). No matter what I've tried I cannot get the computer to output anything else. Any suggestions are welcome.