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

Subversion Repositories can

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 125 to Rev 126
    Reverse comparison

Rev 125 → Rev 126

/trunk/rtl/verilog/can_btl.v
50,6 → 50,9
// CVS Revision History
//
// $Log: not supported by cvs2svn $
// Revision 1.26 2003/09/25 18:55:49 mohor
// Synchronization changed, error counters fixed.
//
// Revision 1.25 2003/07/16 13:40:35 mohor
// Fixed according to the linter.
//
164,7 → 167,7
/* Output from can_bsp module */
rx_idle,
not_first_bit_of_inter,
rx_inter,
transmitting,
transmitter,
go_rx_inter,
196,7 → 199,7
 
/* Output from can_bsp module */
input rx_idle;
input not_first_bit_of_inter;
input rx_inter;
input transmitting;
input transmitter;
input go_rx_inter;
245,8 → 248,8
 
 
assign preset_cnt = (baud_r_presc + 1'b1)<<1; // (BRP+1)*2
assign hard_sync = (rx_idle | not_first_bit_of_inter) & (~rx) & sampled_bit & (~hard_sync_blocked); // Hard synchronization
assign resync = (~rx_idle) & (~not_first_bit_of_inter) & (~rx) & sampled_bit & (~sync_blocked); // Re-synchronization
assign hard_sync = (rx_idle | rx_inter) & (~rx) & sampled_bit & (~hard_sync_blocked); // Hard synchronization
assign resync = (~rx_idle) & (~rx_inter) & (~rx) & sampled_bit & (~sync_blocked); // Re-synchronization
 
 
/* Generating general enable signal that defines baud rate. */
452,10 → 455,11
begin
if (rst)
hard_sync_blocked <=#Tp 1'b0;
else if (hard_sync & clk_en_q | transmitting & transmitter & tx_point)
// else if (hard_sync & clk_en_q | transmitting & transmitter & tx_point)
else if (hard_sync & clk_en_q | transmitting & transmitter & tx_point & (~tx_next))
hard_sync_blocked <=#Tp 1'b1;
// else if (go_rx_inter)
else if (go_rx_inter | (rx_idle | not_first_bit_of_inter) & sample_point & sampled_bit) // When a glitch performed synchronization
else if (go_rx_inter | (rx_idle | rx_inter) & sample_point & sampled_bit) // When a glitch performed synchronization
hard_sync_blocked <=#Tp 1'b0;
end
 
/trunk/rtl/verilog/can_top.v
50,6 → 50,9
// CVS Revision History
//
// $Log: not supported by cvs2svn $
// Revision 1.44 2003/09/25 18:55:49 mohor
// Synchronization changed, error counters fixed.
//
// Revision 1.43 2003/08/20 09:57:39 mohor
// Tristate signal tx_o is separated to tx_o and tx_oen_o. Both signals need
// to be joined together on higher level.
581,7 → 584,7
/* output from can_bsp module */
.rx_idle(rx_idle),
.not_first_bit_of_inter(not_first_bit_of_inter),
.rx_inter(rx_inter),
.transmitting(transmitting),
.transmitter(transmitter),
.go_rx_inter(go_rx_inter),
658,6 → 661,7
.transmitter(transmitter),
.go_rx_inter(go_rx_inter),
.not_first_bit_of_inter(not_first_bit_of_inter),
.rx_inter(rx_inter),
.set_reset_mode(set_reset_mode),
.node_bus_off(node_bus_off),
.error_status(error_status),
/trunk/rtl/verilog/can_bsp.v
50,6 → 50,9
// CVS Revision History
//
// $Log: not supported by cvs2svn $
// Revision 1.43 2003/09/25 18:55:49 mohor
// Synchronization changed, error counters fixed.
//
// Revision 1.42 2003/08/29 07:01:14 mohor
// When detecting bus-free, signal bus_free_cnt_en was cleared to zero
// although the last sampled bit was zero instead of one.
259,6 → 262,7
transmitter,
go_rx_inter,
not_first_bit_of_inter,
rx_inter,
set_reset_mode,
node_bus_off,
error_status,
391,6 → 395,7
output transmitter;
output go_rx_inter;
output not_first_bit_of_inter;
output rx_inter;
output set_reset_mode;
output node_bus_off;
output error_status;
690,7 → 695,8
assign error_frame_ended = (error_cnt2 == 3'd7) & tx_point;
assign overload_frame_ended = (overload_cnt2 == 3'd7) & tx_point;
 
assign go_overload_frame = ( ((sample_point & rx_eof & (eof_cnt == 3'd6)) | error_frame_ended | overload_frame_ended) & overload_request |
//assign go_overload_frame = ( ((sample_point & rx_eof & (eof_cnt == 3'd6)) | error_frame_ended | overload_frame_ended) & overload_request |
assign go_overload_frame = ( ((sample_point & rx_eof & (eof_cnt == 3'd6)) | error_frame_ended | overload_frame_ended) & (overload_request | (~sampled_bit)) |
sample_point & (~sampled_bit) & rx_inter & (bit_cnt[1:0] < 2'd2) |
sample_point & (~sampled_bit) & ((error_cnt2 == 3'd7) | (overload_cnt2 == 3'd7))
)
1158,8 → 1164,7
 
 
// Conditions for form error
assign form_err = sample_point & ( ((~bit_de_stuff) & rx_ide & sampled_bit & (~rtr1) ) |
((~bit_de_stuff) & rx_crc_lim & (~sampled_bit) ) |
assign form_err = sample_point & ( ((~bit_de_stuff) & rx_crc_lim & (~sampled_bit) ) |
( rx_ack_lim & (~sampled_bit) ) |
((eof_cnt < 3'd6)& rx_eof & (~sampled_bit) & (~tx_state) ) |
( & rx_eof & (~sampled_bit) & tx_state )
1212,12 → 1217,11
begin
if (rst)
rule3_exc1_2 <= 1'b0;
else if (reset_mode | error_flag_over)
// else if (reset_mode | error_flag_over)
else if (reset_mode | go_error_frame | rule3_exc1_2)
rule3_exc1_2 <=#Tp 1'b0;
else if (rule3_exc1_1)
else if (rule3_exc1_1 & (error_cnt1 < 3'd7) & sample_point & (~sampled_bit))
rule3_exc1_2 <=#Tp 1'b1;
else if ((error_cnt1 < 3'd7) & sample_point & (~sampled_bit))
rule3_exc1_2 <=#Tp 1'b0;
end
 
 
1600,26 → 1604,16
 
reg tx_next;
always @ (reset_mode or tx_state or bit_de_stuff_tx or tx_bit or tx_q or
send_ack or overload_frame or overload_cnt1 or error_frame or error_cnt1 or
node_error_passive)
//always @ (reset_mode or go_tx or tx_state or bit_de_stuff_tx or tx_bit or tx_q or
send_ack or go_overload_frame or overload_frame or overload_cnt1 or
go_error_frame or error_frame or error_cnt1 or node_error_passive)
begin
if (reset_mode) // Reset
tx_next = 1'b1;
else
begin
if (tx_state) // Transmitting message
tx_next = ((~bit_de_stuff_tx) & tx_bit) | (bit_de_stuff_tx & (~tx_q));
else if (send_ack) // Acknowledge
tx_next = 1'b0;
else if (overload_frame) // Transmitting overload frame
if (go_error_frame | error_frame) // Transmitting error frame
begin
if (overload_cnt1 < 3'd6)
tx_next = 1'b0;
else
tx_next = 1'b1;
end
else if (error_frame) // Transmitting error frame
begin
if (error_cnt1 < 3'd6)
begin
if (node_error_passive)
1630,6 → 1624,18
else
tx_next = 1'b1;
end
else if (go_overload_frame | overload_frame) // Transmitting overload frame
begin
if (overload_cnt1 < 3'd6)
tx_next = 1'b0;
else
tx_next = 1'b1;
end
else if (tx_state) // Transmitting message
// else if (go_tx | tx_state) // Transmitting message
tx_next = ((~bit_de_stuff_tx) & tx_bit) | (bit_de_stuff_tx & (~tx_q));
else if (send_ack) // Acknowledge
tx_next = 1'b0;
else
tx_next = 1'b1;
end
1778,7 → 1784,8
begin
if (rst)
go_early_tx_latched <= 1'b0;
else if (tx_point_q)
// else if (tx_point_q)
else if (tx_point)
go_early_tx_latched <=#Tp 1'b0;
else if (go_early_tx)
go_early_tx_latched <=#Tp 1'b1;
1842,7 → 1849,7
else if (reset_mode | (sample_point & (susp_cnt == 3'h7)))
suspend <=#Tp 1'b0;
// else if (go_rx_inter & transmitter & node_error_passive)
else if (rx_inter & transmitter & node_error_passive)
else if (not_first_bit_of_inter & transmitter & node_error_passive)
suspend <=#Tp 1'b1;
end
 
1950,9 → 1957,9
rx_err_cnt <=#Tp 9'h0;
else
begin
if (~listen_only_mode)
if ((~listen_only_mode) & (~transmitter | arbitration_lost))
begin
if (((~transmitter) | arbitration_lost) & go_rx_ack_lim & (~go_error_frame) & (rx_err_cnt > 9'h0))
if (go_rx_ack_lim & (~go_error_frame) & (~crc_err) & (rx_err_cnt > 9'h0))
begin
if (rx_err_cnt > 9'd127)
rx_err_cnt <=#Tp 9'd127;
1959,14 → 1966,14
else
rx_err_cnt <=#Tp rx_err_cnt - 1'b1;
end
else if ((rx_err_cnt < 9'd248) & (~transmitter)) // 248 + 8 = 256
else if (rx_err_cnt < 9'd248) // 248 + 8 = 256
begin
if (go_error_frame & (~rule5)) // 1 (rule 5 is just the opposite then rule 1 exception
rx_err_cnt <=#Tp rx_err_cnt + 1'b1;
// else if ( (error_frame & sample_point & (~sampled_bit) & (error_cnt1 == 3'd7) & (~rx_err_cnt_blocked) ) | // 2
else if ( (error_flag_over_latched & sample_point & (~sampled_bit) & (error_cnt1 == 3'd7) & (~rx_err_cnt_blocked) ) | // 2
else if ( (error_flag_over & (~error_flag_over_latched) & sample_point & (~sampled_bit) & (error_cnt1 == 3'd7) & (~rx_err_cnt_blocked) ) | // 2
(go_error_frame & rule5 ) | // 5
(error_frame & sample_point & (~sampled_bit) & (delayed_dominant_cnt == 3'h7) ) // 6
// (error_frame & sample_point & (~sampled_bit) & (delayed_dominant_cnt == 3'h7) ) // 6
(sample_point & (~sampled_bit) & (delayed_dominant_cnt == 3'h7) ) // 6
)
rx_err_cnt <=#Tp rx_err_cnt + 4'h8;
end
1987,12 → 1994,14
tx_err_cnt <=#Tp 9'd127;
else if ((tx_err_cnt > 9'd0) & (tx_successful | bus_free))
tx_err_cnt <=#Tp tx_err_cnt - 1'h1;
else if (transmitter)
else if (transmitter & (~arbitration_lost))
begin
if ( (sample_point & (~sampled_bit) & (delayed_dominant_cnt == 3'h7) ) | // 6
(go_error_frame & rule5 ) | // 4 (rule 5 is the same as rule 4)
// (error_flag_over & (~error_flag_over_latched) & (~rule3_exc1_2) & (~rule3_exc2) ) // 3
(go_error_frame & (~(transmitter & node_error_passive & ack_err)) ) // 3 ?
// (go_error_frame & (~(transmitter & node_error_passive & ack_err)) ) // 3 ?
(go_error_frame & (~(transmitter & node_error_passive & ack_err)) ) | // 3
(error_frame & rule3_exc1_2) // 3
)
tx_err_cnt <=#Tp tx_err_cnt + 4'h8;
end
2016,7 → 2025,8
begin
if (rst)
node_error_passive <= 1'b0;
else if ((rx_err_cnt < 128) & (tx_err_cnt < 9'd128) & error_frame_ended)
// else if ((rx_err_cnt < 128) & (tx_err_cnt < 9'd128) & error_frame_ended)
else if ((rx_err_cnt < 128) & (tx_err_cnt < 9'd128))
node_error_passive <=#Tp 1'b0;
else if (((rx_err_cnt >= 128) | (tx_err_cnt >= 9'd128)) & (error_frame_ended | go_error_frame | (~reset_mode) & reset_mode_q) & (~node_bus_off))
node_error_passive <=#Tp 1'b1;

powered by: WebSVN 2.1.0

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