亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? can_bsp.v

?? USB_I2C_MAC_FPGA_Code.rar
?? V
?? 第 1 頁 / 共 4 頁
字號:
  if (rst)
    bit_err_latched <= 1'b0;
  else if (reset_mode | error_frame_ended | go_overload_frame)
    bit_err_latched <=#Tp 1'b0;
  else if (bit_err)
    bit_err_latched <=#Tp 1'b1;
end



// Rule 5 (Fault confinement).
assign rule5 = (~node_error_passive) & bit_err &  (error_frame    & (error_cnt1    < 7) | 
                                                   overload_frame & (overload_cnt1 < 7) );

// Rule 3 exception 1 - first part (Fault confinement).
always @ (posedge clk or posedge rst)
begin
  if (rst)
    rule3_exc1_1 <= 1'b0;
  else if (reset_mode | error_flag_over | rule3_exc1_2)
    rule3_exc1_1 <=#Tp 1'b0;
  else if (transmitter & node_error_passive & ack_err)
    rule3_exc1_1 <=#Tp 1'b1;
end


// Rule 3 exception 1 - second part (Fault confinement).
always @ (posedge clk or posedge rst)
begin
  if (rst)
    rule3_exc1_2 <= 1'b0;
  else if (reset_mode | error_flag_over)
    rule3_exc1_2 <=#Tp 1'b0;
  else if (rule3_exc1_1)
    rule3_exc1_2 <=#Tp 1'b1;
  else if ((error_cnt1 < 7) & sample_point & (~sampled_bit))
    rule3_exc1_2 <=#Tp 1'b0;
end


// Rule 3 exception 2 (Fault confinement).
always @ (posedge clk or posedge rst)
begin
  if (rst)
    rule3_exc2 <= 1'b0;
  else if (reset_mode | error_flag_over)
    rule3_exc2 <=#Tp 1'b0;
  else if (transmitter & stuff_err & arbitration_field & sample_point & tx & (~sampled_bit))
    rule3_exc2 <=#Tp 1'b1;
end



always @ (posedge clk or posedge rst)
begin
  if (rst)
    stuff_err_latched <= 1'b0;
  else if (reset_mode | error_frame_ended | go_overload_frame)
    stuff_err_latched <=#Tp 1'b0;
  else if (stuff_err)
    stuff_err_latched <=#Tp 1'b1;
end



always @ (posedge clk or posedge rst)
begin
  if (rst)
    form_err_latched <= 1'b0;
  else if (reset_mode | error_frame_ended | go_overload_frame)
    form_err_latched <=#Tp 1'b0;
  else if (form_err)
    form_err_latched <=#Tp 1'b1;
end



// Instantiation of the RX CRC module
can_crc i_can_crc_rx 
(
  .clk(clk),
  .data(sampled_bit),
  .enable(crc_enable & sample_point & (~bit_de_stuff)),
  .initialize(go_crc_enable),
  .crc(calculated_crc)
);




assign no_byte0 = rtr1 | (data_len<1);
assign no_byte1 = rtr1 | (data_len<2);

can_acf i_can_acf
(
  .clk(clk),
  .rst(rst),
  
  .id(id),

  /* Mode register */
  .reset_mode(reset_mode),
  .acceptance_filter_mode(acceptance_filter_mode),

  // Clock Divider register
  .extended_mode(extended_mode),
  
  /* This section is for BASIC and EXTENDED mode */
  /* Acceptance code register */
  .acceptance_code_0(acceptance_code_0),

  /* Acceptance mask register */
  .acceptance_mask_0(acceptance_mask_0),
  /* End: This section is for BASIC and EXTENDED mode */
  
  /* This section is for EXTENDED mode */
  /* Acceptance code register */
  .acceptance_code_1(acceptance_code_1),
  .acceptance_code_2(acceptance_code_2),
  .acceptance_code_3(acceptance_code_3),

  /* Acceptance mask register */
  .acceptance_mask_1(acceptance_mask_1),
  .acceptance_mask_2(acceptance_mask_2),
  .acceptance_mask_3(acceptance_mask_3),
  /* End: This section is for EXTENDED mode */

  .go_rx_crc_lim(go_rx_crc_lim),
  .go_rx_inter(go_rx_inter),
  .go_error_frame(go_error_frame),
  
  .data0(tmp_fifo[0]),
  .data1(tmp_fifo[1]),
  .rtr1(rtr1),
  .rtr2(rtr2),
  .ide(ide),
  .no_byte0(no_byte0),
  .no_byte1(no_byte1),

  .id_ok(id_ok)

);




assign header_len[2:0] = extended_mode ? (ide? (3'h5) : (3'h3)) : 3'h2;
assign storing_header = header_cnt < header_len;
assign limited_data_len_minus1[3:0] = remote_rq? 4'hf : ((data_len < 8)? (data_len -1'b1) : 4'h7);   // - 1 because counter counts from 0
assign reset_wr_fifo = (data_cnt == (limited_data_len_minus1 + header_len)) | reset_mode;

assign err = form_err | stuff_err | bit_err | ack_err | form_err_latched | stuff_err_latched | bit_err_latched | ack_err_latched | crc_err;



// Write enable signal for 64-byte rx fifo
always @ (posedge clk or posedge rst)
begin
  if (rst)
    wr_fifo <= 1'b0;
  else if (reset_wr_fifo)
    wr_fifo <=#Tp 1'b0;
  else if (go_rx_inter & id_ok & (~error_frame_ended) & ((~tx_state) | self_rx_request))
    wr_fifo <=#Tp 1'b1;
end


// Header counter. Header length depends on the mode of operation and frame format.
always @ (posedge clk or posedge rst)
begin
  if (rst)
    header_cnt <= 0;
  else if (reset_wr_fifo)
    header_cnt <=#Tp 0;
  else if (wr_fifo & storing_header)
    header_cnt <=#Tp header_cnt + 1;
end


// Data counter. Length of the data is limited to 8 bytes.
always @ (posedge clk or posedge rst)
begin
  if (rst)
    data_cnt <= 0;
  else if (reset_wr_fifo)
    data_cnt <=#Tp 0;
  else if (wr_fifo)
    data_cnt <=#Tp data_cnt + 1;
end


// Multiplexing data that is stored to 64-byte fifo depends on the mode of operation and frame format
always @ (extended_mode or ide or data_cnt or header_cnt or  header_len or 
          storing_header or id or rtr1 or rtr2 or data_len or
          tmp_fifo[0] or tmp_fifo[2] or tmp_fifo[4] or tmp_fifo[6] or 
          tmp_fifo[1] or tmp_fifo[3] or tmp_fifo[5] or tmp_fifo[7])
begin
  if (storing_header)
    begin
      if (extended_mode)      // extended mode
        begin
          if (ide)              // extended format
            begin
              case (header_cnt) // synthesis parallel_case 
                3'h0  : data_for_fifo <= {1'b1, rtr2, 2'h0, data_len};
                3'h1  : data_for_fifo <= id[28:21];
                3'h2  : data_for_fifo <= id[20:13];
                3'h3  : data_for_fifo <= id[12:5];
                3'h4  : data_for_fifo <= {id[4:0], 3'h0};
                default: data_for_fifo <= 0;
              endcase
            end
          else                  // standard format
            begin
              case (header_cnt) // synthesis parallel_case 
                3'h0  : data_for_fifo <= {1'b0, rtr1, 2'h0, data_len};
                3'h1  : data_for_fifo <= id[10:3];
                3'h2  : data_for_fifo <= {id[2:0], 5'h0};
                default: data_for_fifo <= 0;
              endcase
            end
        end
      else                    // normal mode
        begin
          case (header_cnt) // synthesis parallel_case 
            3'h0  : data_for_fifo <= id[10:3];
            3'h1  : data_for_fifo <= {id[2:0], rtr1, data_len};
            default: data_for_fifo <= 0;
          endcase
        end
    end
  else
    data_for_fifo <= tmp_fifo[data_cnt-header_len];
end




// Instantiation of the RX fifo module
can_fifo i_can_fifo
( 
  .clk(clk),
  .rst(rst),

  .wr(wr_fifo),

  .data_in(data_for_fifo),
  .addr(addr),
  .data_out(data_out),
  .fifo_selected(fifo_selected),

  .reset_mode(reset_mode),
  .release_buffer(release_buffer),
  .extended_mode(extended_mode),
  .overrun(overrun),
  .info_empty(info_empty),
  .info_cnt(rx_message_counter)
);


// Transmitting error frame.
always @ (posedge clk or posedge rst)
begin
  if (rst)
    error_frame <= 1'b0;
  else if (reset_mode | error_frame_ended | go_overload_frame)
    error_frame <=#Tp 1'b0;
  else if (go_error_frame)
    error_frame <=#Tp 1'b1;
end


always @ (posedge clk)
begin
  if (sample_point)
    error_frame_q <=#Tp error_frame;
end


always @ (posedge clk or posedge rst)
begin
  if (rst)
    error_cnt1 <= 1'b0;
  else if (reset_mode | error_frame_ended | go_error_frame | go_overload_frame)
    error_cnt1 <=#Tp 1'b0;
  else if (error_frame & tx_point & (error_cnt1 < 7))
    error_cnt1 <=#Tp error_cnt1 + 1'b1;
end



assign error_flag_over = ((~node_error_passive) & sample_point & (error_cnt1 == 7) | node_error_passive  & sample_point & (passive_cnt == 5)) & (~enable_error_cnt2);


always @ (posedge clk or posedge rst)
begin
  if (rst)
    error_flag_over_blocked <= 1'b0;
  else if (reset_mode | error_frame_ended | go_error_frame | go_overload_frame)
    error_flag_over_blocked <=#Tp 1'b0;
  else if (error_flag_over)
    error_flag_over_blocked <=#Tp 1'b1;
end



always @ (posedge clk or posedge rst)
begin
  if (rst)
    enable_error_cnt2 <= 1'b0;
  else if (reset_mode | error_frame_ended | go_error_frame | go_overload_frame)
    enable_error_cnt2 <=#Tp 1'b0;
  else if (error_frame & (error_flag_over & sampled_bit))
    enable_error_cnt2 <=#Tp 1'b1;
end


always @ (posedge clk or posedge rst)
begin
  if (rst)
    error_cnt2 <= 0;
  else if (reset_mode | error_frame_ended | go_error_frame | go_overload_frame)
    error_cnt2 <=#Tp 0;
  else if (enable_error_cnt2 & tx_point)
    error_cnt2 <=#Tp error_cnt2 + 1'b1;
end


always @ (posedge clk or posedge rst)
begin
  if (rst)
    delayed_dominant_cnt <= 0;
  else if (reset_mode | enable_error_cnt2 | go_error_frame | enable_overload_cnt2 | go_overload_frame)
    delayed_dominant_cnt <=#Tp 0;
  else if (sample_point & (~sampled_bit) & ((error_cnt1 == 7) | (overload_cnt1 == 7)))
    delayed_dominant_cnt <=#Tp delayed_dominant_cnt + 1'b1;
end


// passive_cnt
always @ (posedge clk or posedge rst)
begin
  if (rst)
    passive_cnt <= 0;
  else if (reset_mode | error_frame_ended | go_error_frame | go_overload_frame)
    passive_cnt <=#Tp 0;
  else if (sample_point & (passive_cnt < 5))
    begin
      if (error_frame_q & (~enable_error_cnt2) & (sampled_bit == sampled_bit_q))
        passive_cnt <=#Tp passive_cnt + 1'b1;
      else
        passive_cnt <=#Tp 0;
    end
end



// Transmitting overload frame.
always @ (posedge clk or posedge rst)
begin
  if (rst)
    overload_frame <= 1'b0;
  else if (reset_mode | overload_frame_ended | go_error_frame)
    overload_frame <=#Tp 1'b0;
  else if (go_overload_frame)
    overload_frame <=#Tp 1'b1;
end


always @ (posedge clk or posedge rst)
begin
  if (rst)
    overload_cnt1 <= 1'b0;
  else if (reset_mode | overload_frame_ended | go_error_frame | go_overload_frame)
    overload_cnt1 <=#Tp 1'b0;
  else if (overload_frame & tx_point & (overload_cnt1 < 7))
    overload_cnt1 <=#Tp overload_cnt1 + 1'b1;
end


assign overload_flag_over = sample_point & (overload_cnt1 == 7) & (~enable_overload_cnt2);


always @ (posedge clk or posedge rst)
begin
  if (rst)
    enable_overload_cnt2 <= 1'b0;
  else if (reset_mode | overload_frame_ended | go_error_frame | go_overload_frame)
    enable_overload_cnt2 <=#Tp 1'b0;
  else if (overload_frame & (overload_flag_over & sampled_bit))
    enable_overload_cnt2 <=#Tp 1'b1;
end


always @ (posedge clk or posedge rst)
begin
  if (rst)
    overload_cnt2 <= 0;
  else if (reset_mode | overload_frame_ended | go_error_frame | go_overload_frame)
    overload_cnt2 <=#Tp 0;
  else if (enable_overload_cnt2 & tx_point)
    overload_cnt2 <=#Tp overload_cnt2 + 1'b1;
end


always @ (posedge clk or posedge rst)
begin
  if (rst)
    overload_frame_blocked <= 0;
  else if (reset_mode | go_error_frame | go_rx_id1)
    overload_frame_blocked <=#Tp 0;
  else if (go_overload_frame & overload_frame)            // This is a second sequential overload
    overload_frame_blocked <=#Tp 1'b1;
end


assign send_ack = (~tx_state) & rx_ack & (~err) & (~listen_only_mode);


always @ (posedge clk or posedge rst)
begin
  if (rst)
    tx <= 1'b1;
  else if (reset_mode)                                                          // Reset
    tx <=#Tp 1'b1;
  else if (tx_point)
    begin
      if (tx_state)                                                             // Transmitting message
        tx <=#Tp ((~bit_de_stuff_tx) & tx_bit) | (bit_de_stuff_tx & (~tx_q));
      else if (send_ack)                                                        // Acknowledge
        tx <=#Tp 1'b0;
      else if (overload_frame)                                                  // Transmitting overload frame
        begin
          if (overload_cnt1 < 6)
            tx <=#Tp 1'b0;
          else
            tx <=#Tp 1'b1;
        end
      else if (error_frame)                                                     // Transmitting error frame
        begin
          if (error_cnt1 < 6)
            begin
              if (node_error_passive)
                tx <=#Tp 1'b1;
              else
                tx <=#Tp 1'b0;
            end
          else
            tx <=#Tp 1'b1;
        end
      else
        tx <=#Tp 1'b1;
    end
end



always @ (posedge clk)
begin
  if (tx_point)
    tx_q <=#Tp tx & (~go_early_tx_latched);
end


/* Delayed tx point */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人a级片| 一区二区三区产品免费精品久久75| 亚洲成av人影院| 欧美视频在线观看一区| 亚洲综合一二区| 欧美久久久久久久久| 婷婷久久综合九色综合绿巨人| 欧美日韩黄色一区二区| 日韩1区2区日韩1区2区| 337p日本欧洲亚洲大胆精品| 国产成人免费xxxxxxxx| 亚洲桃色在线一区| 欧美日韩中文一区| 激情综合一区二区三区| 国产精品乱子久久久久| 色综合久久中文字幕| 图片区小说区区亚洲影院| 日韩欧美国产成人一区二区| 盗摄精品av一区二区三区| 亚洲乱码中文字幕| 日韩一区二区麻豆国产| 处破女av一区二区| 亚洲午夜av在线| 亚洲精品一线二线三线无人区| 成人激情动漫在线观看| 三级精品在线观看| 亚洲国产成人在线| 欧美丝袜丝交足nylons图片| 国精产品一区一区三区mba桃花| 欧美国产日韩亚洲一区| 欧美三级日韩在线| 欧美在线看片a免费观看| 亚洲成人免费av| 欧美国产亚洲另类动漫| 欧美精品高清视频| 成人av在线电影| 日本不卡视频在线观看| 亚洲桃色在线一区| 欧美大肚乱孕交hd孕妇| 在线观看日韩高清av| 国产毛片一区二区| 亚洲国产精品久久一线不卡| 欧美国产成人在线| 日韩欧美一区二区视频| 91精彩视频在线| 成人性生交大片免费看中文网站| 石原莉奈在线亚洲二区| 亚洲精品免费视频| 国产欧美日韩精品在线| 日韩视频一区二区在线观看| 欧美在线色视频| 99久久国产综合精品麻豆| 精品一区二区三区免费播放| 亚洲一区精品在线| 亚洲欧洲三级电影| 国产亲近乱来精品视频 | 亚洲国产裸拍裸体视频在线观看乱了| 久久综合色综合88| 欧美军同video69gay| 在线一区二区观看| www.日本不卡| 成人免费毛片片v| 韩日av一区二区| 麻豆91精品91久久久的内涵| 五月婷婷久久丁香| 伊人色综合久久天天人手人婷| 国产精品美女久久久久久2018 | 精品黑人一区二区三区久久| 欧美色精品在线视频| 一本色道亚洲精品aⅴ| 成a人片亚洲日本久久| 国产成人亚洲综合a∨婷婷 | 午夜欧美在线一二页| 亚洲精品免费一二三区| 亚洲视频小说图片| 亚洲婷婷国产精品电影人久久| 中日韩免费视频中文字幕| 日本一区二区免费在线| 欧美极品美女视频| 中文字幕不卡一区| 亚洲少妇30p| 亚洲免费伊人电影| 国内不卡的二区三区中文字幕| 日本欧美在线看| 日本大胆欧美人术艺术动态| 日韩**一区毛片| 国产中文字幕一区| 国产成人精品影院| 成人福利视频网站| 91美女在线视频| 色综合久久99| 欧美老女人第四色| 日韩欧美亚洲国产另类| 久久免费看少妇高潮| 国产精品免费av| 一区二区三区四区不卡在线 | 欧美日韩国产bt| 91精品国产一区二区| 欧美不卡一区二区三区| 久久精品一区蜜桃臀影院| 欧美国产精品中文字幕| 亚洲欧美aⅴ...| 三级欧美在线一区| 国产电影精品久久禁18| jizzjizzjizz欧美| 欧美日韩国产一级片| 精品成人佐山爱一区二区| 国产精品传媒入口麻豆| 亚洲国产成人porn| 狠狠色狠狠色综合| 91视频免费播放| 欧美一区二区不卡视频| 国产日本亚洲高清| 亚洲国产婷婷综合在线精品| 毛片一区二区三区| 成人免费视频视频在线观看免费| 91福利视频久久久久| 精品成人免费观看| 亚洲色欲色欲www| 老司机免费视频一区二区| jvid福利写真一区二区三区| 欧美男人的天堂一二区| 欧美国产禁国产网站cc| 日韩在线播放一区二区| 成人精品国产福利| 欧美一级精品在线| 日韩一区在线免费观看| 老司机精品视频导航| 色先锋aa成人| 久久久国产一区二区三区四区小说 | 麻豆精品一区二区综合av| 99re成人在线| 日韩免费视频一区| 亚洲一区二区综合| 国产成人啪午夜精品网站男同| 欧美日韩在线综合| 中文字幕一区二| 狠狠色丁香久久婷婷综| 欧美色图激情小说| 1区2区3区欧美| 精品亚洲成a人在线观看| 国产亚洲精品资源在线26u| 亚洲午夜精品网| 成人深夜视频在线观看| 精品黑人一区二区三区久久 | 69av一区二区三区| 亚洲欧美视频在线观看视频| 国产成人在线视频网址| 日韩网站在线看片你懂的| 亚洲永久免费av| 91丝袜美腿高跟国产极品老师| 国产网站一区二区三区| 激情文学综合丁香| 日韩情涩欧美日韩视频| 日韩在线一区二区| 欧美日本在线观看| 亚洲福利一区二区三区| 在线亚洲+欧美+日本专区| 国产精品久久久久一区| 成人黄色av网站在线| 国产亚洲欧洲一区高清在线观看| 久久99精品国产.久久久久久| 欧美一区二区三区视频在线观看 | 麻豆91精品视频| 日韩片之四级片| 美国欧美日韩国产在线播放| 欧美一区二区三区系列电影| 日韩精品电影在线| 正在播放亚洲一区| 日本中文字幕一区二区有限公司| 欧美精品免费视频| 免费在线欧美视频| 欧美成人综合网站| 狠狠色丁香久久婷婷综| 久久久久久久久久久久久久久99 | 首页亚洲欧美制服丝腿| 91精品国产综合久久蜜臀| 日本欧洲一区二区| 精品国产成人在线影院| 国产一区999| 欧美激情中文不卡| 91女厕偷拍女厕偷拍高清| 亚洲精品乱码久久久久久久久 | 国产成人在线色| 成人欧美一区二区三区视频网页| 91视频一区二区| 亚洲一区成人在线| 日韩一区二区精品在线观看| 国产一区二区女| 一区二区中文字幕在线| 在线亚洲欧美专区二区| 免费成人你懂的| 国产亚洲污的网站| 色哟哟一区二区| 日本欧美大码aⅴ在线播放| 久久精品亚洲国产奇米99| 91丨porny丨国产| 日韩二区三区四区| 久久在线免费观看| 一本色道久久综合精品竹菊|