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

Subversion Repositories ps2

[/] [ps2/] [tags/] [rel_6/] [bench/] [verilog/] [ps2_keyboard_model.v] - Diff between revs 2 and 10

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

Rev 2 Rev 10
Line 41... Line 41...
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//
//
// CVS Revision History
// CVS Revision History
//
//
// $Log: not supported by cvs2svn $
// $Log: not supported by cvs2svn $
 
// Revision 1.1.1.1  2002/02/18 16:16:55  mihad
 
// Initial project import - working
 
//
//
//
 
 
`include "timescale.v"
`include "timescale.v"
 
 
module ps2_keyboard_model
module ps2_keyboard_model
Line 163... Line 166...
 
 
task kbd_receive_char;
task kbd_receive_char;
    output [7:0] char ;
    output [7:0] char ;
    reg          parity ;
    reg          parity ;
    integer i ;
    integer i ;
    reg          stop_bit_received ;
    reg          stop_clocking ;
begin:main
begin:main
    i = 0 ;
    i = 0 ;
    stop_bit_received = 1 ;
 
    receiving = 1 ;
    receiving = 1 ;
 
    stop_clocking = 1'b0 ;
 
 
    #(kbd_clk_period/2) ;
    #(kbd_clk_period/2) ;
 
 
    while ( i < 11 )
    while ( !stop_clocking )
    begin
    begin
 
 
        if ( !kbd_clk_io )
        if ( !kbd_clk_io )
        begin
        begin
            receiving = 0 ;
            receiving = 0 ;
Line 195... Line 199...
            begin
            begin
                parity = kbd_data_io ;
                parity = kbd_data_io ;
                if ( parity !== ( !(^char) ) )
                if ( parity !== ( !(^char) ) )
                    $display("Invalid parity bit received") ;
                    $display("Invalid parity bit received") ;
            end
            end
            else
 
            begin
 
                if ( kbd_data_io !== 1'b1 )
 
                begin
 
                    i = i - 1 ;
 
                    stop_bit_received = 0 ;
 
                end
 
                else
 
                begin
 
                    kbd_data = 1'b0 ;
 
                end
 
            end
 
        end
        end
 
 
        i = i + 1 ;
        i = i + 1 ;
        #(kbd_clk_period/2) ;
        #(kbd_clk_period/4) ;
 
        if ( i > 9 )
 
        begin
 
            if ( kbd_data_io === 1'b1 )
 
            begin
 
                kbd_data <= 1'b0 ;
 
                stop_clocking = 1'b1 ;
 
            end
    end
    end
 
 
    if ( !kbd_clk_io )
        #(kbd_clk_period/4) ;
    begin
 
        receiving = 0 ;
 
        disable main ;
 
    end
    end
 
 
    kbd_clk  = 1'b0 ;
    kbd_clk  = 1'b0 ;
 
 
    #(kbd_clk_period/2) ;
    #(kbd_clk_period/2) ;
    kbd_clk  <= 1'b1 ;
    kbd_clk  <= 1'b1 ;
    kbd_data <= 1'b1 ;
    kbd_data <= 1'b1 ;
 
 
    if ( stop_bit_received )
    receiving = 0 ;
 
 
 
    if ( i === 10 )
    begin
    begin
        char_valid_o = !char_valid_o ;
        char_valid_o = !char_valid_o ;
    end
    end
 
 
    receiving = 0 ;
 
end
end
endtask // kbd_receive_char
endtask // kbd_receive_char
 
 
endmodule // ps2_keyboard_model
endmodule // ps2_keyboard_model
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

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