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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? can_testbench.v

?? USB_I2C_MAC_FPGA_Code.rar
?? V
?? 第 1 頁 / 共 4 頁
字號:

// synopsys translate_off
`include "timescale.v"
// synopsys translate_on
`include "can_defines.v"
`include "can_testbench_defines.v"

module can_testbench();



parameter Tp = 1;
parameter BRP = 2*(`CAN_TIMING0_BRP + 1);


`ifdef CAN_WISHBONE_IF
  reg         wb_clk_i;
  reg         wb_rst_i;
  reg   [7:0] wb_dat_i;
  wire  [7:0] wb_dat_o;
  reg         wb_cyc_i;
  reg         wb_stb_i;
  reg         wb_we_i;
  reg   [7:0] wb_adr_i;
  wire        wb_ack_o;
  reg         wb_free;
`else
  reg         rst_i;
  reg         ale_i;
  reg         rd_i;
  reg         wr_i;
  wire  [7:0] port_0;
  wire  [7:0] port_0_i;
  reg   [7:0] port_0_o;
  reg         port_0_en;
  reg         port_free;
`endif


reg         cs_can;
reg         clk;
reg         rx;
wire        tx;
wire        irq;
wire        clkout;

wire        rx_and_tx;

integer     start_tb;
reg   [7:0] tmp_data;
reg         delayed_tx;
reg         tx_bypassed;
reg         extended_mode;



// Instantiate can_top module
can_top i_can_top
( 
`ifdef CAN_WISHBONE_IF
  .wb_clk_i(wb_clk_i),
  .wb_rst_i(wb_rst_i),
  .wb_dat_i(wb_dat_i),
  .wb_dat_o(wb_dat_o),
  .wb_cyc_i(wb_cyc_i),
  .wb_stb_i(wb_stb_i),
  .wb_we_i(wb_we_i),
  .wb_adr_i(wb_adr_i),
  .wb_ack_o(wb_ack_o),
`else
  .rst_i(rst_i),
  .ale_i(ale_i),
  .rd_i(rd_i),
  .wr_i(wr_i),
  .port_0_io(port_0),
`endif
  .cs_can_i(cs_can),
  .clk_i(clk),
  .rx_i(rx_and_tx),
  .tx_o(tx),
  .irq_on(irq),
  .clkout_o(clkout)
);


`ifdef CAN_WISHBONE_IF
  // Generate wishbone clock signal 10 MHz
  initial
  begin
    wb_clk_i=0;
    forever #50 wb_clk_i = ~wb_clk_i;
  end
`endif


`ifdef CAN_WISHBONE_IF
`else
  assign port_0_i = port_0;
  assign port_0 = port_0_en? port_0_o : 8'hz;
`endif


// Generate clock signal 24 MHz
initial
begin
  clk=0;
  forever #21 clk = ~clk;
end


initial
begin
  start_tb = 0;
  cs_can = 0;
  rx = 1;
  extended_mode = 0;
  tx_bypassed = 0;

  `ifdef CAN_WISHBONE_IF
    wb_dat_i = 'hz;
    wb_cyc_i = 0;
    wb_stb_i = 0;
    wb_we_i = 'hz;
    wb_adr_i = 'hz;
    wb_free = 1;
    wb_rst_i = 1;
    #200 wb_rst_i = 0;
    #200 start_tb = 1;
  `else
    rst_i = 1'b0;
    ale_i = 1'b0;
    rd_i  = 1'b0;
    wr_i  = 1'b0;
    port_0_o = 8'h0;
    port_0_en = 0;
    port_free = 1;
    rst_i = 1;
    #200 rst_i = 0;
    #200 start_tb = 1;
  `endif
end




// Generating delayed tx signal (CAN transciever delay)
always
begin
  wait (tx);
  repeat (4*BRP) @ (posedge clk);   // 4 time quants delay
  #1 delayed_tx = tx;
  wait (~tx);
  repeat (4*BRP) @ (posedge clk);   // 4 time quants delay
  #1 delayed_tx = tx;
end

//assign rx_and_tx = rx & delayed_tx;   FIX ME !!!
assign rx_and_tx = rx & (delayed_tx | tx_bypassed);   // When this signal is on, tx is not looped back to the rx.


// Main testbench
initial
begin
  wait(start_tb);

  // Set bus timing register 0
  write_register(8'd6, {`CAN_TIMING0_SJW, `CAN_TIMING0_BRP});

  // Set bus timing register 1
  write_register(8'd7, {`CAN_TIMING1_SAM, `CAN_TIMING1_TSEG2, `CAN_TIMING1_TSEG1});


  // Set Clock Divider register
  extended_mode = 1'b0;
  write_register(8'd31, {extended_mode, 3'h0, 1'b0, 3'h0});   // Setting the normal mode (not extended)


  // Set Acceptance Code and Acceptance Mask registers (their address differs for basic and extended mode
/*
  // Set Acceptance Code and Acceptance Mask registers
  write_register(8'd16, 8'ha6); // acceptance code 0
  write_register(8'd17, 8'hb0); // acceptance code 1
  write_register(8'd18, 8'h12); // acceptance code 2
  write_register(8'd19, 8'h30); // acceptance code 3
  write_register(8'd20, 8'h0); // acceptance mask 0
  write_register(8'd21, 8'h0); // acceptance mask 1
  write_register(8'd22, 8'h00); // acceptance mask 2
  write_register(8'd23, 8'h00); // acceptance mask 3
*/

  // Set Acceptance Code and Acceptance Mask registers
  write_register(8'd4, 8'he8); // acceptance code
  write_register(8'd5, 8'h0f); // acceptance mask
  
  #10;
  repeat (1000) @ (posedge clk);
  
  // Switch-off reset mode
  write_register(8'd0, {7'h0, ~(`CAN_MODE_RESET)});

  repeat (BRP) @ (posedge clk);   // At least BRP clocks needed before bus goes to dominant level. Otherwise 1 quant difference is possible
                                  // This difference is resynchronized later.

  // After exiting the reset mode sending bus free
  repeat (11) send_bit(1);

//  test_synchronization;       // test currently switched off
//  test_empty_fifo_ext;        // test currently switched off
//  test_full_fifo_ext;         // test currently switched off
//  send_frame_ext;             // test currently switched off
//  test_empty_fifo;            // test currently switched off
  test_full_fifo;             // test currently switched on
//  send_frame;                 // test currently switched off
//  bus_off_test;               // test currently switched off
//  forced_bus_off;             // test currently switched off
//  send_frame_basic;           // test currently switched off
//  send_frame_extended;        // test currently switched off
//  self_reception_request;       // test currently switched off
//  manual_frame_basic;         // test currently switched off
//  manual_frame_ext;           // test currently switched off

  $display("CAN Testbench finished !");
  $stop;
end


task forced_bus_off;    // Forcing bus-off by writinf to tx_err_cnt register
  begin

    // Switch-on reset mode
    write_register(8'd0, {7'h0, `CAN_MODE_RESET});

    // Set Clock Divider register
    write_register(8'd31, {1'b1, 7'h0});    // Setting the extended mode (not normal)

    // Write 255 to tx_err_cnt register - Forcing bus-off
    write_register(8'd15, 255);

    // Switch-off reset mode
    write_register(8'd0, {7'h0, ~(`CAN_MODE_RESET)});

//    #1000000;
    #2500000;


    // Switch-on reset mode
    write_register(8'd0, {7'h0, `CAN_MODE_RESET});

    // Write 245 to tx_err_cnt register
    write_register(8'd15, 245);

    // Switch-off reset mode
    write_register(8'd0, {7'h0, ~(`CAN_MODE_RESET)});

    #1000000;


  end
endtask   // forced_bus_off


task manual_frame_basic;    // Testbench sends a basic format frame
  begin


    // Switch-on reset mode
    write_register(8'd0, {7'h0, (`CAN_MODE_RESET)});
  
    // Set Acceptance Code and Acceptance Mask registers
    write_register(8'd4, 8'h28); // acceptance code
    write_register(8'd5, 8'hff); // acceptance mask
    
    repeat (100) @ (posedge clk);
    
    // Switch-off reset mode
    write_register(8'd0, {7'h0, ~(`CAN_MODE_RESET)});

    // After exiting the reset mode sending bus free
    repeat (11) send_bit(1);


    write_register(8'd10, 8'h55); // Writing ID[10:3] = 0x55
    write_register(8'd11, 8'h57); // Writing ID[2:0] = 0x2, rtr = 1, length = 7
    write_register(8'd12, 8'h00); // data byte 1
    write_register(8'd13, 8'h00); // data byte 2
    write_register(8'd14, 8'h00); // data byte 3
    write_register(8'd15, 8'h00); // data byte 4
    write_register(8'd16, 8'h00); // data byte 5
    write_register(8'd17, 8'h00); // data byte 6
    write_register(8'd18, 8'h00); // data byte 7
    write_register(8'd19, 8'h00); // data byte 8

    tx_bypassed = 1;    // When this signal is on, tx is not looped back to the rx.
    
    fork
      begin
//        tx_request_command;
        self_reception_request_command;
      end

      begin
        #2200;


        repeat (1)
        begin
          send_bit(0);  // SOF
          send_bit(0);  // ID
          send_bit(1);  // ID
          send_bit(0);  // ID
          send_bit(1);  // ID
          send_bit(0);  // ID
          send_bit(1);  // ID
          send_bit(0);  // ID
          send_bit(1);  // ID
          send_bit(0);  // ID
          send_bit(1);  // ID
          send_bit(0);  // ID
          send_bit(1);  // RTR
          send_bit(0);  // IDE
          send_bit(0);  // r0
          send_bit(0);  // DLC
          send_bit(1);  // DLC
          send_bit(1);  // DLC
          send_bit(1);  // DLC
          send_bit(1);  // CRC
          send_bit(1);  // CRC
          send_bit(0);  // CRC stuff
          send_bit(0);  // CRC 6
          send_bit(0);  // CRC
          send_bit(0);  // CRC
          send_bit(0);  // CRC
          send_bit(1);  // CRC  stuff
          send_bit(0);  // CRC 0
          send_bit(0);  // CRC
          send_bit(1);  // CRC
          send_bit(0);  // CRC
          send_bit(1);  // CRC 5
          send_bit(1);  // CRC
          send_bit(0);  // CRC
          send_bit(1);  // CRC
          send_bit(1);  // CRC b
          send_bit(1);  // CRC DELIM
          send_bit(0);  // ACK
          send_bit(1);  // ACK DELIM
          send_bit(1);  // EOF
          send_bit(1);  // EOF
          send_bit(1);  // EOF
          send_bit(1);  // EOF
          send_bit(1);  // EOF
          send_bit(1);  // EOF
          send_bit(1);  // EOF
          send_bit(1);  // INTER
          send_bit(1);  // INTER
          send_bit(1);  // INTER
        end // repeat



      end
    
    
    join



    read_receive_buffer;
    release_rx_buffer_command;

    read_receive_buffer;
    release_rx_buffer_command;
    read_receive_buffer;

    #4000000;

  end
endtask   //  manual_frame_basic



task manual_frame_ext;    // Testbench sends an extended format frame
  begin


    // Switch-on reset mode
    write_register(8'd0, {7'h0, (`CAN_MODE_RESET)});

    // Set Clock Divider register
    extended_mode = 1'b1;
    write_register(8'd31, {extended_mode, 7'h0});    // Setting the extended mode
  
    // Set Acceptance Code and Acceptance Mask registers
    write_register(8'd16, 8'ha6); // acceptance code 0
    write_register(8'd17, 8'h00); // acceptance code 1
    write_register(8'd18, 8'h5a); // acceptance code 2
    write_register(8'd19, 8'hac); // acceptance code 3
    write_register(8'd20, 8'h00); // acceptance mask 0
    write_register(8'd21, 8'h00); // acceptance mask 1
    write_register(8'd22, 8'h00); // acceptance mask 2
    write_register(8'd23, 8'h00); // acceptance mask 3
    
    repeat (100) @ (posedge clk);
    
    // Switch-off reset mode
    write_register(8'd0, {7'h0, ~(`CAN_MODE_RESET)});

    // After exiting the reset mode sending bus free
    repeat (11) send_bit(1);


    // Extended frame format
    // Writing TX frame information + identifier + data
    write_register(8'd16, 8'hc5);   // Frame format = 1, Remote transmision request = 1, DLC = 5
    write_register(8'd17, 8'ha6);   // ID[28:21] = a6
    write_register(8'd18, 8'h00);   // ID[20:13] = 00
    write_register(8'd19, 8'h5a);   // ID[12:5]  = 5a
    write_register(8'd20, 8'ha8);   // ID[4:0]   = 15
    // write_register(8'd21, 8'h78); RTR does not send any data
    // write_register(8'd22, 8'h9a);
    // write_register(8'd23, 8'hbc);
    // write_register(8'd24, 8'hde);
    // write_register(8'd25, 8'hf0);
    // write_register(8'd26, 8'h0f);
    // write_register(8'd27, 8'hed);
    // write_register(8'd28, 8'hcb);


    // Enabling IRQ's (extended mode)
    write_register(8'd4, 8'hff);

    // tx_bypassed = 1;    // When this signal is on, tx is not looped back to the rx.
    
    fork
      begin
        tx_request_command;
//        self_reception_request_command;
      end

      begin
        #2400;

        repeat (1)
        begin
          send_bit(0);  // SOF
          send_bit(1);  // ID
          send_bit(0);  // ID
          send_bit(1);  // ID
          send_bit(0);  // ID a
          send_bit(0);  // ID
          send_bit(1);  // ID
          send_bit(1);  // ID
          send_bit(0);  // ID 6
          send_bit(0);  // ID
          send_bit(0);  // ID
          send_bit(0);  // ID 
          send_bit(1);  // RTR
          send_bit(1);  // IDE
          send_bit(0);  // ID 0
          send_bit(0);  // ID 
          send_bit(0);  // ID 
          send_bit(0);  // ID 
          send_bit(0);  // ID 0
          send_bit(1);  // ID stuff
          send_bit(0);  // ID 
          send_bit(1);  // ID 
          send_bit(0);  // ID 
          send_bit(1);  // ID 6
          send_bit(1);  // ID 
          send_bit(0);  // ID 
          send_bit(1);  // ID 
          send_bit(0);  // ID a
          send_bit(1);  // ID 1

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人美女在线视频| 热久久一区二区| 国产欧美日韩三区| 久久综合给合久久狠狠狠97色69| 欧美日韩久久久一区| 在线观看91视频| 69堂国产成人免费视频| 日韩亚洲欧美成人一区| 欧美tickling挠脚心丨vk| 日韩一级成人av| 久久久99久久精品欧美| 国产精品视频免费| 一区二区三区丝袜| 天天色综合成人网| 精品一区二区三区在线播放| 国产成人免费xxxxxxxx| 一道本成人在线| 91精品黄色片免费大全| 国产亚洲精品资源在线26u| 国产精品国产三级国产aⅴ中文 | 在线一区二区三区做爰视频网站| 91小宝寻花一区二区三区| 欧美视频一区在线观看| 3atv一区二区三区| 久久网这里都是精品| 亚洲黄色尤物视频| 久久精品国内一区二区三区| 成人午夜视频在线观看| 欧美日韩激情一区二区| 久久精品视频网| 亚洲成人午夜电影| 国产成人亚洲综合a∨婷婷| 在线一区二区观看| 国产婷婷精品av在线| 亚洲成av人在线观看| 国产美女一区二区三区| 欧美日韩免费一区二区三区视频| 久久综合久久综合久久综合| 亚洲精品国产精华液| 国产成人久久精品77777最新版本| 在线看国产一区二区| 久久久综合视频| 亚洲成av人片一区二区三区| 国产成人精品免费在线| 日韩欧美的一区二区| 亚洲精品美国一| 国产精品18久久久久久vr| 欧美三级蜜桃2在线观看| 欧美激情中文不卡| 精品综合免费视频观看| 欧美在线啊v一区| 国产精品乱人伦一区二区| 强制捆绑调教一区二区| 在线观看欧美黄色| 亚洲欧美在线视频观看| 韩国中文字幕2020精品| 精品视频在线视频| 亚洲蜜臀av乱码久久精品蜜桃| 国产在线精品一区在线观看麻豆| 欧美日韩一级二级三级| 一级做a爱片久久| 91丝袜高跟美女视频| 国产女人18水真多18精品一级做| 久久国产精品第一页| 欧美一级艳片视频免费观看| 亚洲一区二区黄色| 欧美天堂亚洲电影院在线播放| 亚洲免费毛片网站| 色综合一个色综合亚洲| 亚洲免费看黄网站| 在线精品视频一区二区三四| 亚洲精选视频免费看| 91蝌蚪国产九色| 亚洲精品五月天| 日本精品视频一区二区三区| 亚洲欧美日韩久久精品| 91福利国产精品| 亚洲第一电影网| 欧美一级欧美一级在线播放| 美女视频一区在线观看| 精品久久久影院| 国产福利一区在线| 国产精品久久国产精麻豆99网站| 不卡的电影网站| 亚洲精品一二三| 91麻豆精品国产| 韩日精品视频一区| 中文字幕中文字幕一区| 99精品久久免费看蜜臀剧情介绍| 亚洲欧洲精品成人久久奇米网| 99re这里只有精品首页| 亚洲成年人网站在线观看| 欧美一区二区三区免费大片 | 26uuu亚洲婷婷狠狠天堂| 国产在线乱码一区二区三区| 国产精品女同互慰在线看| 91在线播放网址| 日韩二区在线观看| 久久精品人人做人人综合| 色综合视频一区二区三区高清| 亚洲午夜激情av| 精品91自产拍在线观看一区| eeuss鲁片一区二区三区在线观看| 国产精品乱码人人做人人爱 | 色悠悠久久综合| 日韩成人午夜精品| 日本一区免费视频| 欧美亚洲精品一区| 国产精品一品二品| 亚洲国产视频一区| 国产片一区二区| 欧美卡1卡2卡| 99在线精品一区二区三区| 日韩av中文字幕一区二区| 亚洲国产高清在线观看视频| 欧美高清一级片在线| av午夜一区麻豆| 麻豆精品在线观看| 亚洲一区免费在线观看| 国产亚洲一本大道中文在线| 欧美日韩久久不卡| hitomi一区二区三区精品| 欧美a级一区二区| 亚洲免费看黄网站| 欧美激情资源网| 2020国产精品| 欧美日韩电影一区| 91女神在线视频| 国产高清在线精品| 免费看欧美美女黄的网站| 亚洲男人的天堂网| 国产精品你懂的在线| 日韩视频123| 欧美日本在线播放| 一本久久a久久免费精品不卡| 国产精品一卡二卡在线观看| 青青草国产精品亚洲专区无| 亚洲精品国产一区二区精华液 | 91丝袜国产在线播放| 国产成人免费在线观看不卡| 理论片日本一区| 日本vs亚洲vs韩国一区三区 | 欧美一级欧美三级| 精品视频全国免费看| 色综合久久六月婷婷中文字幕| 高清国产一区二区| 国产一区二区三区蝌蚪| 精品影视av免费| 精品制服美女久久| 精品一区二区日韩| 极品少妇xxxx精品少妇偷拍| 免费xxxx性欧美18vr| 久久成人综合网| 久久精品国产99国产| 久久精品国产999大香线蕉| 久久精品国产久精国产| 激情综合一区二区三区| 国产精品综合久久| 丁香一区二区三区| 9l国产精品久久久久麻豆| 一本一道久久a久久精品| 91精品福利视频| 69堂国产成人免费视频| 精品日韩欧美在线| 国产日韩精品视频一区| 国产精品每日更新| 一区二区三区在线免费视频 | 国产精品三级电影| 中文字幕一区二区三区在线播放 | av在线综合网| 91精品1区2区| 欧美一级久久久| 欧美精品一区二区久久久| 国产精品视频免费看| 亚洲午夜日本在线观看| 麻豆精品视频在线观看免费| 国产成人亚洲精品狼色在线| 在线亚洲欧美专区二区| 欧美一区国产二区| 中文久久乱码一区二区| 一区二区三区电影在线播| 久久精品国产网站| 色综合久久九月婷婷色综合| 欧美一三区三区四区免费在线看 | 欧美日韩精品免费观看视频| 日韩欧美一级片| 亚洲欧美一区二区三区孕妇| 日韩av在线免费观看不卡| av在线播放成人| 日韩你懂的在线观看| 亚洲精品亚洲人成人网| 国产一区二区在线看| 在线免费观看成人短视频| 久久美女高清视频| 五月婷婷激情综合| 91丝袜美腿高跟国产极品老师| 日韩欧美黄色影院| 亚洲综合成人网| 成人午夜视频在线| 精品福利在线导航|