Line 48... |
Line 48... |
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
//
|
//
|
// CVS Revision History
|
// CVS Revision History
|
//
|
//
|
// $Log: not supported by cvs2svn $
|
// $Log: not supported by cvs2svn $
|
|
// Revision 1.21 2003/02/11 00:56:06 mohor
|
|
// Wishbone interface added.
|
|
//
|
// Revision 1.20 2003/02/10 16:02:11 mohor
|
// Revision 1.20 2003/02/10 16:02:11 mohor
|
// CAN is working according to the specification. WB interface and more
|
// CAN is working according to the specification. WB interface and more
|
// registers (status, IRQ, ...) needs to be added.
|
// registers (status, IRQ, ...) needs to be added.
|
//
|
//
|
// Revision 1.19 2003/02/09 18:40:29 mohor
|
// Revision 1.19 2003/02/09 18:40:29 mohor
|
Line 147... |
Line 150... |
acceptance_filter_mode,
|
acceptance_filter_mode,
|
|
|
/* Command register */
|
/* Command register */
|
release_buffer,
|
release_buffer,
|
tx_request,
|
tx_request,
|
|
abort_tx,
|
|
|
/* Clock Divider register */
|
/* Clock Divider register */
|
extended_mode,
|
extended_mode,
|
|
|
rx_idle,
|
rx_idle,
|
Line 217... |
Line 221... |
input extended_mode;
|
input extended_mode;
|
|
|
/* Command register */
|
/* Command register */
|
input release_buffer;
|
input release_buffer;
|
input tx_request;
|
input tx_request;
|
|
input abort_tx;
|
|
|
output rx_idle;
|
output rx_idle;
|
output transmitting;
|
output transmitting;
|
output last_bit_of_inter;
|
output last_bit_of_inter;
|
|
|
Line 486... |
Line 491... |
|
|
|
|
assign go_crc_enable = hard_sync | go_tx;
|
assign go_crc_enable = hard_sync | go_tx;
|
assign rst_crc_enable = go_rx_crc;
|
assign rst_crc_enable = go_rx_crc;
|
|
|
assign bit_de_stuff_set = go_rx_id1;
|
assign bit_de_stuff_set = go_rx_id1 & (~go_error_frame);
|
assign bit_de_stuff_reset = go_rx_crc_lim | reset_mode | go_error_frame | go_overload_frame;
|
assign bit_de_stuff_reset = go_rx_crc_lim | reset_mode | go_error_frame | go_overload_frame;
|
|
|
assign remote_rq = ((~ide) & rtr1) | (ide & rtr2);
|
assign remote_rq = ((~ide) & rtr1) | (ide & rtr2);
|
assign limited_data_len = (data_len < 8)? data_len : 4'h8;
|
assign limited_data_len = (data_len < 8)? data_len : 4'h8;
|
|
|
Line 1110... |
Line 1115... |
begin
|
begin
|
if (rst)
|
if (rst)
|
wr_fifo <= 1'b0;
|
wr_fifo <= 1'b0;
|
else if (reset_wr_fifo)
|
else if (reset_wr_fifo)
|
wr_fifo <=#Tp 1'b0;
|
wr_fifo <=#Tp 1'b0;
|
// else if (go_rx_inter & id_ok & (~error_frame_ended)) // FIX ME !!! Look following line
|
else if (go_rx_inter & id_ok & (~error_frame_ended)) // FIX ME !!! Look following line
|
else if (go_rx_inter & id_ok & (~error_frame_ended) & (~tx_state)) // FIX ME !!! This line is the correct one. The above line is for easier debugging only.
|
// else if (go_rx_inter & id_ok & (~error_frame_ended) & (~tx_state)) // FIX ME !!! This line is the correct one. The above line is for easier debugging only.
|
wr_fifo <=#Tp 1'b1;
|
wr_fifo <=#Tp 1'b1;
|
end
|
end
|
|
|
|
|
// Header counter. Header length depends on the mode of operation and frame format.
|
// Header counter. Header length depends on the mode of operation and frame format.
|
Line 1511... |
Line 1516... |
|
|
always @ (posedge clk or posedge rst)
|
always @ (posedge clk or posedge rst)
|
begin
|
begin
|
if (rst)
|
if (rst)
|
need_to_tx <= 1'b0;
|
need_to_tx <= 1'b0;
|
else if (tx_successful | node_bus_off)
|
else if (tx_successful | node_bus_off | (abort_tx & (~transmitting)))
|
need_to_tx <=#Tp 1'h0;
|
need_to_tx <=#Tp 1'h0;
|
else if (tx_request)
|
else if (tx_request & sample_point)
|
need_to_tx <=#Tp 1'b1;
|
need_to_tx <=#Tp 1'b1;
|
end
|
end
|
|
|
|
|
|
|