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

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

?? can_top.v

?? 基于FPGA的can 總線設(shè)計(jì)
?? V
字號:
// synopsys translate_off
`include "timescale.v"
// synopsys translate_on
`include "can_defines.v"

module can_top
( 
  `ifdef CAN_WISHBONE_IF
    wb_clk_i,
    wb_rst_i,
    wb_dat_i,
    wb_dat_o,
    wb_cyc_i,
    wb_stb_i,
    wb_we_i,
    wb_adr_i,
    wb_ack_o,
  `else
    rst_i,
    ale_i,
    rd_i,
    wr_i,
    port_0_io,
  `endif
  cs_can_i,
  clk_i,
  rx_i,
  tx_o,
  irq_on,
  clkout_o
);

parameter Tp = 1;

`ifdef CAN_WISHBONE_IF
  input        wb_clk_i;
  input        wb_rst_i;
  input  [7:0] wb_dat_i;
  output [7:0] wb_dat_o;
  input        wb_cyc_i;
  input        wb_stb_i;
  input        wb_we_i;
  input  [7:0] wb_adr_i;
  output       wb_ack_o;

  reg          wb_ack_o;
  reg          cs_sync1;
  reg          cs_sync2;
  reg          cs_sync3;
  
  reg          cs_ack1;
  reg          cs_ack2;
  reg          cs_ack3;
  reg          cs_sync_rst1;
  reg          cs_sync_rst2;
`else
  input        rst_i;
  input        ale_i;
  input        rd_i;
  input        wr_i;
  inout  [7:0] port_0_io;
  
  reg    [7:0] addr_latched;
  reg          wr_i_q;
  reg          rd_i_q;
`endif

input        cs_can_i;
input        clk_i;
input        rx_i;
output       tx_o;
output       irq_on;
output       clkout_o;

reg          data_out_fifo_selected;


wire         irq_o;
wire   [7:0] data_out_fifo;
wire   [7:0] data_out_regs;


/* Mode register */
wire         reset_mode;
wire         listen_only_mode;
wire         acceptance_filter_mode;
wire         self_test_mode;

/* Command register */
wire         release_buffer;
wire         tx_request;
wire         abort_tx;
wire         self_rx_request;
wire         single_shot_transmission;

/* Arbitration Lost Capture Register */
wire         read_arbitration_lost_capture_reg;

/* Error Code Capture Register */
wire         read_error_code_capture_reg;
wire   [7:0] error_capture_code;

/* Bus Timing 0 register */
wire   [5:0] baud_r_presc;
wire   [1:0] sync_jump_width;

/* Bus Timing 1 register */
wire   [3:0] time_segment1;
wire   [2:0] time_segment2;
wire         triple_sampling;

/* Error Warning Limit register */
wire   [7:0] error_warning_limit;

/* Rx Error Counter register */
wire         we_rx_err_cnt;

/* Tx Error Counter register */
wire         we_tx_err_cnt;

/* Clock Divider register */
wire         extended_mode;

/* This section is for BASIC and EXTENDED mode */
/* Acceptance code register */
wire   [7:0] acceptance_code_0;

/* Acceptance mask register */
wire   [7:0] acceptance_mask_0;
/* End: This section is for BASIC and EXTENDED mode */


/* This section is for EXTENDED mode */
/* Acceptance code register */
wire   [7:0] acceptance_code_1;
wire   [7:0] acceptance_code_2;
wire   [7:0] acceptance_code_3;

/* Acceptance mask register */
wire   [7:0] acceptance_mask_1;
wire   [7:0] acceptance_mask_2;
wire   [7:0] acceptance_mask_3;
/* End: This section is for EXTENDED mode */

/* Tx data registers. Holding identifier (basic mode), tx frame information (extended mode) and data */
wire   [7:0] tx_data_0;
wire   [7:0] tx_data_1;
wire   [7:0] tx_data_2;
wire   [7:0] tx_data_3;
wire   [7:0] tx_data_4;
wire   [7:0] tx_data_5;
wire   [7:0] tx_data_6;
wire   [7:0] tx_data_7;
wire   [7:0] tx_data_8;
wire   [7:0] tx_data_9;
wire   [7:0] tx_data_10;
wire   [7:0] tx_data_11;
wire   [7:0] tx_data_12;
/* End: Tx data registers */

wire         cs;

/* Output signals from can_btl module */
wire         clk_en;
wire         sample_point;
wire         sampled_bit;
wire         sampled_bit_q;
wire         tx_point;
wire         hard_sync;
wire         resync;


/* output from can_bsp module */
wire         rx_idle;
wire         transmitting;
wire         last_bit_of_inter;
wire         set_reset_mode;
wire         node_bus_off;
wire         error_status;
wire   [7:0] rx_err_cnt;
wire   [7:0] tx_err_cnt;
wire         rx_err_cnt_dummy;  // The MSB is not displayed. It is just used for easier calculation (no counter overflow).
wire         tx_err_cnt_dummy;  // The MSB is not displayed. It is just used for easier calculation (no counter overflow).
wire         transmit_status;
wire         receive_status;
wire         tx_successful;
wire         need_to_tx;
wire         overrun;
wire         info_empty;
wire         set_bus_error_irq;
wire         set_arbitration_lost_irq;
wire   [4:0] arbitration_lost_capture;
wire         node_error_passive;
wire         node_error_active;
wire   [6:0] rx_message_counter;
wire         tx_out;
wire         tx_oen;

wire         rst;
wire         we;
wire   [7:0] addr;
wire   [7:0] data_in;
reg    [7:0] data_out;


/* Connecting can_registers module */
can_registers i_can_registers
( 
  .clk(clk_i),
  .rst(rst),
  .cs(cs),
  .we(we),
  .addr(addr),
  .data_in(data_in),
  .data_out(data_out_regs),
  .irq(irq_o),

  .sample_point(sample_point),
  .transmitting(transmitting),
  .set_reset_mode(set_reset_mode),
  .node_bus_off(node_bus_off),
  .error_status(error_status),
  .rx_err_cnt(rx_err_cnt),
  .tx_err_cnt(tx_err_cnt),
  .transmit_status(transmit_status),
  .receive_status(receive_status),
  .tx_successful(tx_successful),
  .need_to_tx(need_to_tx),
  .overrun(overrun),
  .info_empty(info_empty),
  .set_bus_error_irq(set_bus_error_irq),
  .set_arbitration_lost_irq(set_arbitration_lost_irq),
  .arbitration_lost_capture(arbitration_lost_capture),
  .node_error_passive(node_error_passive),
  .node_error_active(node_error_active),
  .rx_message_counter(rx_message_counter),


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

  /* Command register */
  .clear_data_overrun(),
  .release_buffer(release_buffer),
  .abort_tx(abort_tx),
  .tx_request(tx_request),
  .self_rx_request(self_rx_request),
  .single_shot_transmission(single_shot_transmission),

  /* Arbitration Lost Capture Register */
  .read_arbitration_lost_capture_reg(read_arbitration_lost_capture_reg),

  /* Error Code Capture Register */
  .read_error_code_capture_reg(read_error_code_capture_reg),
  .error_capture_code(error_capture_code),

  /* Bus Timing 0 register */
  .baud_r_presc(baud_r_presc),
  .sync_jump_width(sync_jump_width),

  /* Bus Timing 1 register */
  .time_segment1(time_segment1),
  .time_segment2(time_segment2),
  .triple_sampling(triple_sampling),

  /* Error Warning Limit register */
  .error_warning_limit(error_warning_limit),

  /* Rx Error Counter register */
  .we_rx_err_cnt(we_rx_err_cnt),

  /* Tx Error Counter register */
  .we_tx_err_cnt(we_tx_err_cnt),

  /* Clock Divider register */
  .extended_mode(extended_mode),
  .clkout(clkout_o),
  
  /* 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 */

  /* Tx data registers. Holding identifier (basic mode), tx frame information (extended mode) and data */
  .tx_data_0(tx_data_0),
  .tx_data_1(tx_data_1),
  .tx_data_2(tx_data_2),
  .tx_data_3(tx_data_3),
  .tx_data_4(tx_data_4),
  .tx_data_5(tx_data_5),
  .tx_data_6(tx_data_6),
  .tx_data_7(tx_data_7),
  .tx_data_8(tx_data_8),
  .tx_data_9(tx_data_9),
  .tx_data_10(tx_data_10),
  .tx_data_11(tx_data_11),
  .tx_data_12(tx_data_12)
  /* End: Tx data registers */
);


assign irq_on = ~irq_o;


/* Connecting can_btl module */
can_btl i_can_btl
( 
  .clk(clk_i),
  .rst(rst),
  .rx(rx_i),

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

  /* Bus Timing 0 register */
  .baud_r_presc(baud_r_presc),
  .sync_jump_width(sync_jump_width),

  /* Bus Timing 1 register */
  .time_segment1(time_segment1),
  .time_segment2(time_segment2),
  .triple_sampling(triple_sampling),

  /* Output signals from this module */
  .clk_en(clk_en),
  .sample_point(sample_point),
  .sampled_bit(sampled_bit),
  .sampled_bit_q(sampled_bit_q),
  .tx_point(tx_point),
  .hard_sync(hard_sync),
  .resync(resync),

  
  /* output from can_bsp module */
  .rx_idle(rx_idle),
  .transmitting(transmitting),
  .last_bit_of_inter(last_bit_of_inter)
  


);



can_bsp i_can_bsp
(
  .clk(clk_i),
  .rst(rst),
  
  /* From btl module */
  .sample_point(sample_point),
  .sampled_bit(sampled_bit),
  .sampled_bit_q(sampled_bit_q),
  .tx_point(tx_point),
  .hard_sync(hard_sync),

  .addr(addr),
  .data_in(data_in),
  .data_out(data_out_fifo),
  .fifo_selected(data_out_fifo_selected),

  /* Mode register */
  .reset_mode(reset_mode),
  .listen_only_mode(listen_only_mode),
  .acceptance_filter_mode(acceptance_filter_mode),
  .self_test_mode(self_test_mode),
  
  /* Command register */
  .release_buffer(release_buffer),
  .tx_request(tx_request),
  .abort_tx(abort_tx),
  .self_rx_request(self_rx_request),
  .single_shot_transmission(single_shot_transmission),

  /* Arbitration Lost Capture Register */
  .read_arbitration_lost_capture_reg(read_arbitration_lost_capture_reg),

  /* Error Code Capture Register */
  .read_error_code_capture_reg(read_error_code_capture_reg),
  .error_capture_code(error_capture_code),

  /* Error Warning Limit register */
  .error_warning_limit(error_warning_limit),

  /* Rx Error Counter register */
  .we_rx_err_cnt(we_rx_err_cnt),

  /* Tx Error Counter register */
  .we_tx_err_cnt(we_tx_err_cnt),

  /* Clock Divider register */
  .extended_mode(extended_mode),

  /* output from can_bsp module */
  .rx_idle(rx_idle),
  .transmitting(transmitting),
  .last_bit_of_inter(last_bit_of_inter),
  .set_reset_mode(set_reset_mode),
  .node_bus_off(node_bus_off),
  .error_status(error_status),
  .rx_err_cnt({rx_err_cnt_dummy, rx_err_cnt[7:0]}),   // The MSB is not displayed. It is just used for easier calculation (no counter overflow).
  .tx_err_cnt({tx_err_cnt_dummy, tx_err_cnt[7:0]}),   // The MSB is not displayed. It is just used for easier calculation (no counter overflow).
  .transmit_status(transmit_status),
  .receive_status(receive_status),
  .tx_successful(tx_successful),
  .need_to_tx(need_to_tx),
  .overrun(overrun),
  .info_empty(info_empty),
  .set_bus_error_irq(set_bus_error_irq),
  .set_arbitration_lost_irq(set_arbitration_lost_irq),
  .arbitration_lost_capture(arbitration_lost_capture),
  .node_error_passive(node_error_passive),
  .node_error_active(node_error_active),
  .rx_message_counter(rx_message_counter),
  
  /* 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 */

  /* Tx data registers. Holding identifier (basic mode), tx frame information (extended mode) and data */
  .tx_data_0(tx_data_0),
  .tx_data_1(tx_data_1),
  .tx_data_2(tx_data_2),
  .tx_data_3(tx_data_3),
  .tx_data_4(tx_data_4),
  .tx_data_5(tx_data_5),
  .tx_data_6(tx_data_6),
  .tx_data_7(tx_data_7),
  .tx_data_8(tx_data_8),
  .tx_data_9(tx_data_9),
  .tx_data_10(tx_data_10),
  .tx_data_11(tx_data_11),
  .tx_data_12(tx_data_12),
  /* End: Tx data registers */
  
  /* Tx signal */
  .tx(tx_out),
  .tx_oen(tx_oen)
);

assign tx_o = tx_oen? 1'bz : tx_out;


// Multiplexing wb_dat_o from registers and rx fifo
always @ (extended_mode or addr or reset_mode)
begin
  if (extended_mode & (~reset_mode) & ((addr >= 8'd16) && (addr <= 8'd28)) | (~extended_mode) & ((addr >= 8'd20) && (addr <= 8'd29)))
    data_out_fifo_selected <= 1'b1;
  else
    data_out_fifo_selected <= 1'b0;
end


always @ (posedge clk_i)
begin
//  if (wb_cyc_i & (~wb_we_i))
  if (cs & (~we))
    begin
      if (data_out_fifo_selected)
        data_out <=#Tp data_out_fifo;
      else
        data_out <=#Tp data_out_regs;
    end
end



`ifdef CAN_WISHBONE_IF
  // Combining wb_cyc_i and wb_stb_i signals to cs signal. Than synchronizing to clk_i clock domain. 
  always @ (posedge clk_i or posedge rst)
  begin
    if (rst)
      begin
        cs_sync1     <= 1'b0;
        cs_sync2     <= 1'b0;
        cs_sync3     <= 1'b0;
        cs_sync_rst1 <= 1'b0;
        cs_sync_rst2 <= 1'b0;
      end
    else
      begin
        cs_sync1     <=#Tp wb_cyc_i & wb_stb_i & (~cs_sync_rst2) & cs_can_i;
        cs_sync2     <=#Tp cs_sync1            & (~cs_sync_rst2);
        cs_sync3     <=#Tp cs_sync2            & (~cs_sync_rst2);
        cs_sync_rst1 <=#Tp cs_ack3;
        cs_sync_rst2 <=#Tp cs_sync_rst1;
      end
  end
  
  
  assign cs = cs_sync2 & (~cs_sync3);
  
  
  always @ (posedge wb_clk_i)
  begin
    cs_ack1 <=#Tp cs_sync3;
    cs_ack2 <=#Tp cs_ack1;
    cs_ack3 <=#Tp cs_ack2;
  end
  
  
  
  // Generating acknowledge signal
  always @ (posedge wb_clk_i)
  begin
    wb_ack_o <=#Tp (cs_ack2 & (~cs_ack3));
  end


  assign rst      = wb_rst_i;
  assign we       = wb_we_i;
  assign addr     = wb_adr_i;
  assign data_in  = wb_dat_i;
  assign wb_dat_o = data_out;


`else

  // Latching address
  always @ (negedge clk_i or posedge rst)
  begin
    if (rst)
      addr_latched <= 8'h0;
    else if (ale_i)
      addr_latched <=#Tp port_0_io;
  end


  // Generating delayed wr_i and rd_i signals
  always @ (posedge clk_i or posedge rst)
  begin
    if (rst)
      begin
        wr_i_q <= 1'b0;
        rd_i_q <= 1'b0;
      end
    else
      begin
        wr_i_q <=#Tp wr_i;
        rd_i_q <=#Tp rd_i;
      end
  end


  assign cs = ((wr_i & (~wr_i_q)) | (rd_i & (~rd_i_q))) & cs_can_i;


  assign rst       = rst_i;
  assign we        = wr_i;
  assign addr      = addr_latched;
  assign data_in   = port_0_io;
  assign port_0_io = (cs_can_i & rd_i)? data_out : 8'hz;

`endif

endmodule

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
懂色一区二区三区免费观看| 亚洲色图视频网| 成人精品亚洲人成在线| 五月天欧美精品| 亚洲欧美影音先锋| 日韩一区二区三| 日本道色综合久久| 国产精品一二三区在线| 日本不卡视频一二三区| 亚洲一区二区精品久久av| 国产精品理伦片| 久久亚洲精华国产精华液 | 欧美mv日韩mv国产网站| 91美女精品福利| 成人h动漫精品一区二区| 中文字幕一区三区| 欧美福利视频导航| 95精品视频在线| 成人亚洲精品久久久久软件| 秋霞影院一区二区| 亚洲大型综合色站| 一个色妞综合视频在线观看| 中文字幕一区二区三| 欧美国产精品一区二区三区| 精品久久久久久久久久久久久久久 | 日韩欧美国产午夜精品| 欧美三级中文字| 欧美体内she精视频| 91老司机福利 在线| 91免费在线视频观看| av高清不卡在线| 成人性视频免费网站| 成人免费黄色在线| 丁香天五香天堂综合| 懂色av中文一区二区三区 | 国产资源精品在线观看| 麻豆91免费观看| 蜜桃视频第一区免费观看| 日本不卡视频在线观看| 秋霞影院一区二区| 久久99久久99| 国产精品一区在线观看乱码| 国产a久久麻豆| 高清不卡一区二区| 99久久免费精品| 91激情在线视频| 欧美蜜桃一区二区三区| 在线播放一区二区三区| 日韩午夜激情免费电影| 精品日韩99亚洲| 久久精品一级爱片| 中文字幕日韩一区| 一个色在线综合| 毛片一区二区三区| 国产原创一区二区三区| 成人综合婷婷国产精品久久蜜臀| 97久久超碰国产精品电影| 欧美亚洲图片小说| 日韩你懂的在线播放| 中文子幕无线码一区tr| 亚洲色图都市小说| 香蕉久久一区二区不卡无毒影院 | 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 91丨porny丨首页| 欧美裸体一区二区三区| 精品国产制服丝袜高跟| 国产亚洲精品7777| 一区二区三区在线视频播放 | 午夜精品久久久久久不卡8050| 首页亚洲欧美制服丝腿| 国产一区二区三区美女| 97久久精品人人爽人人爽蜜臀| 欧美日韩一区二区三区视频| 精品国产乱码久久久久久浪潮| 国产精品久久久久久久久免费樱桃 | 成人黄色777网| 欧美日韩小视频| 国产日韩成人精品| 亚洲福利视频导航| 国产成人免费xxxxxxxx| 欧美日韩激情一区二区| 久久精品日韩一区二区三区| 一区二区三区.www| 国产另类ts人妖一区二区| 在线视频一区二区三| 久久青草欧美一区二区三区| 亚洲在线免费播放| 国产精品一区二区黑丝| 色婷婷亚洲精品| 久久久久久日产精品| 亚洲精品欧美专区| 精品一区二区三区的国产在线播放| 成人av一区二区三区| 欧美成人伊人久久综合网| 亚洲精品免费电影| 国产一区美女在线| 精品视频1区2区3区| 中文字幕一区视频| 国产真实乱子伦精品视频| 欧美性感一类影片在线播放| 国产丝袜美腿一区二区三区| 蜜桃久久av一区| 欧美三级乱人伦电影| 国产精品国产三级国产aⅴ原创| 日本成人在线不卡视频| 欧美影院精品一区| 国产精品久久久久天堂| 国模无码大尺度一区二区三区| 欧美日本国产一区| 亚洲欧美日韩国产成人精品影院| 国产激情一区二区三区四区| 欧美一区二区精品在线| 亚洲午夜免费视频| 97精品久久久午夜一区二区三区| 国产三级三级三级精品8ⅰ区| 奇米888四色在线精品| 欧美日韩一区久久| 一级女性全黄久久生活片免费| aaa亚洲精品一二三区| 国产欧美日产一区| 国产高清在线观看免费不卡| 精品国产一区二区三区久久影院| 全部av―极品视觉盛宴亚洲| 欧美日韩不卡一区二区| 一区二区免费在线| 欧美性大战久久久久久久| 一区二区三区四区精品在线视频| 99国产欧美另类久久久精品 | 蜜桃精品在线观看| 欧美一级欧美一级在线播放| 午夜天堂影视香蕉久久| 欧美日韩免费电影| 亚洲一区二区av电影| 欧美日韩一区二区三区在线| 午夜精品一区二区三区三上悠亚| 欧美日韩午夜影院| 日韩高清中文字幕一区| 日韩欧美国产麻豆| 黄色成人免费在线| 日本一区二区视频在线| 成人av网站免费观看| 综合网在线视频| 91精品福利视频| 亚洲成av人片一区二区梦乃| 69久久夜色精品国产69蝌蚪网| 日韩avvvv在线播放| 日韩天堂在线观看| 国产一区二三区好的| 国产欧美一区二区三区沐欲| 成人a免费在线看| 一区二区三区欧美日韩| 欧美精品一二三区| 久久99国产精品久久99果冻传媒| 欧美tk—视频vk| www.av亚洲| 亚洲一区二区在线观看视频 | 欧洲精品在线观看| 日韩中文字幕区一区有砖一区 | 亚洲综合自拍偷拍| 久久久久一区二区三区四区| 国产一区二区三区四区五区入口 | 色综合色狠狠综合色| 亚洲v精品v日韩v欧美v专区| 日韩精品专区在线影院观看| 国产激情一区二区三区桃花岛亚洲| 中文字幕一区二区三区不卡在线| 欧美自拍丝袜亚洲| 激情综合五月天| 国产精品久久久久久一区二区三区 | 欧美日韩国产综合久久| 视频一区在线视频| 久久久久综合网| 欧洲一区在线观看| 国产在线日韩欧美| 亚洲美女屁股眼交| 日韩一级精品视频在线观看| 成人v精品蜜桃久久一区| 亚洲电影一区二区三区| 国产三区在线成人av| 欧美日韩精品一区二区三区| 韩国女主播成人在线观看| 亚洲激情网站免费观看| 久久综合久久99| 欧美中文字幕一区| 国产成人综合在线播放| 亚洲一区日韩精品中文字幕| 久久久久久久久久久久久久久99 | 国产精品99久久不卡二区| 亚洲一区二区三区四区五区黄| 欧美不卡激情三级在线观看| 色综合天天综合在线视频| 久久se精品一区二区| 亚洲综合成人在线视频| 久久青草国产手机看片福利盒子| 欧美艳星brazzers| 国产iv一区二区三区| 奇米精品一区二区三区在线观看一| 18欧美亚洲精品| 国产日韩欧美精品综合| 欧美一卡二卡在线|