URL
https://opencores.org/ocsvn/ps2/ps2/trunk
[/] [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
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.