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

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

?? tb_spi_top.v

?? 就是通信中的SPI接口
?? V
字號:
//////////////////////////////////////////////////////////////////////////                                                              ////////  tb_spi_top.v                                                ////////                                                              ////////  This file is part of the SPI IP core project                ////////  http://www.opencores.org/projects/spi/                      ////////                                                              ////////  Author(s):                                                  ////////      - Simon Srot (simons@opencores.org)                     ////////                                                              ////////  Based on:                                                   ////////      - i2c/bench/verilog/tst_bench_top.v                     ////////        Copyright (C) 2001 Richard Herveille                  ////////                                                              ////////  All additional information is avaliable in the Readme.txt   ////////  file.                                                       ////////                                                              //////////////////////////////////////////////////////////////////////////////                                                              //////// Copyright (C) 2002 Authors                                   ////////                                                              //////// This source file may be used and distributed without         //////// restriction provided that this copyright statement is not    //////// removed from the file and that any derivative work contains  //////// the original copyright notice and the associated disclaimer. ////////                                                              //////// This source file is free software; you can redistribute it   //////// and/or modify it under the terms of the GNU Lesser General   //////// Public License as published by the Free Software Foundation; //////// either version 2.1 of the License, or (at your option) any   //////// later version.                                               ////////                                                              //////// This source is distributed in the hope that it will be       //////// useful, but WITHOUT ANY WARRANTY; without even the implied   //////// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //////// PURPOSE.  See the GNU Lesser General Public License for more //////// details.                                                     ////////                                                              //////// You should have received a copy of the GNU Lesser General    //////// Public License along with this source; if not, download it   //////// from http://www.opencores.org/lgpl.shtml                     ////////                                                              //////////////////////////////////////////////////////////////////////////`include "timescale.v"module tb_spi_top();  reg         clk;  reg         rst;  wire [31:0] adr;  wire [31:0] dat_i, dat_o;  wire        we;  wire  [3:0] sel;  wire        stb;  wire        cyc;  wire        ack;  wire        err;  wire        int;  wire  [7:0] ss;  wire        sclk;  wire        mosi;  wire        miso;  reg  [31:0] q;  reg  [31:0] q1;  reg  [31:0] q2;  reg  [31:0] q3;  reg  [31:0] result;  parameter SPI_RX_0   = 5'h0;  parameter SPI_RX_1   = 5'h4;  parameter SPI_RX_2   = 5'h8;  parameter SPI_RX_3   = 5'hc;  parameter SPI_TX_0   = 5'h0;  parameter SPI_TX_1   = 5'h4;  parameter SPI_TX_2   = 5'h8;  parameter SPI_TX_3   = 5'hc;  parameter SPI_CTRL   = 5'h10;  parameter SPI_DIVIDE = 5'h14;  parameter SPI_SS     = 5'h18;  // Generate clock  always #5 clk = ~clk;  // Wishbone master model  wb_master_model #(32, 32) i_wb_master (    .clk(clk), .rst(rst),    .adr(adr), .din(dat_i), .dout(dat_o),    .cyc(cyc), .stb(stb), .we(we), .sel(sel), .ack(ack), .err(err), .rty(1'b0)  );  // SPI master core  spi_top i_spi_top (    .wb_clk_i(clk), .wb_rst_i(rst),     .wb_adr_i(adr[4:0]), .wb_dat_i(dat_o), .wb_dat_o(dat_i),     .wb_sel_i(sel), .wb_we_i(we), .wb_stb_i(stb),     .wb_cyc_i(cyc), .wb_ack_o(ack), .wb_err_o(err), .wb_int_o(int),    .ss_pad_o(ss), .sclk_pad_o(sclk), .mosi_pad_o(mosi), .miso_pad_i(miso)   );  // SPI slave model  spi_slave_model i_spi_slave (    .rst(rst), .ss(ss[0]), .sclk(sclk), .mosi(mosi), .miso(miso)  );  initial    begin      $display("\nstatus: %t Testbench started\n\n", $time);      $dumpfile("bench.vcd");      $dumpvars(1, tb_spi_top);      $dumpvars(1, tb_spi_top.i_spi_slave);      // Initial values      clk = 0;      i_spi_slave.rx_negedge = 1'b0;      i_spi_slave.tx_negedge = 1'b0;      result = 32'h0;      // Reset system      rst = 1'b0; // negate reset      #2;      rst = 1'b1; // assert reset      repeat(20) @(posedge clk);      rst = 1'b0; // negate reset      $display("status: %t done reset", $time);            @(posedge clk);      // Program core      i_wb_master.wb_write(0, SPI_DIVIDE, 32'h00); // set devider register      i_wb_master.wb_write(0, SPI_TX_0, 32'h5a);   // set tx register to 0x5a      i_wb_master.wb_write(0, SPI_CTRL, 32'h208);   // set 8 bit transfer      i_wb_master.wb_write(0, SPI_SS, 32'h01);     // set ss 0      $display("status: %t programmed registers", $time);      i_wb_master.wb_cmp(0, SPI_DIVIDE, 32'h00);   // verify devider register      i_wb_master.wb_cmp(0, SPI_TX_0, 32'h5a);     // verify tx register      i_wb_master.wb_cmp(0, SPI_CTRL, 32'h208);     // verify tx register      i_wb_master.wb_cmp(0, SPI_SS, 32'h01);       // verify ss register      $display("status: %t verified registers", $time);      i_spi_slave.rx_negedge = 1'b1;      i_spi_slave.tx_negedge = 1'b0;      i_spi_slave.data[31:0] = 32'ha5967e5a;      i_wb_master.wb_write(0, SPI_CTRL, 32'h308);   // set 8 bit transfer, start transfer      $display("status: %t generate transfer:  8 bit, msb first, tx posedge, rx negedge", $time);      // Check bsy bit      i_wb_master.wb_read(0, SPI_CTRL, q);      while (q[8])        i_wb_master.wb_read(1, SPI_CTRL, q);      i_wb_master.wb_read(1, SPI_RX_0, q);      result = result + q;      if (i_spi_slave.data[7:0] == 8'h5a && q == 32'h000000a5)        $display("status: %t transfer completed: ok", $time);      else        $display("status: %t transfer completed: nok", $time);      i_spi_slave.rx_negedge = 1'b0;      i_spi_slave.tx_negedge = 1'b1;      i_wb_master.wb_write(0, SPI_TX_0, 32'ha5);      i_wb_master.wb_write(0, SPI_CTRL, 32'h408);   // set 8 bit transfer, tx negedge      i_wb_master.wb_write(0, SPI_CTRL, 32'h508);   // set 8 bit transfer, tx negedge, start transfer      $display("status: %t generate transfer:  8 bit, msb first, tx negedge, rx posedge", $time);      // Check bsy bit      i_wb_master.wb_read(0, SPI_CTRL, q);      while (q[8])        i_wb_master.wb_read(1, SPI_CTRL, q);      i_wb_master.wb_read(1, SPI_RX_0, q);      result = result + q;      if (i_spi_slave.data[7:0] == 8'ha5 && q == 32'h00000096)        $display("status: %t transfer completed: ok", $time);      else        $display("status: %t transfer completed: nok", $time);      i_spi_slave.rx_negedge = 1'b0;      i_spi_slave.tx_negedge = 1'b1;      i_wb_master.wb_write(0, SPI_TX_0, 32'h5aa5);      i_wb_master.wb_write(0, SPI_CTRL, 32'hc10);   // set 16 bit transfer, tx negedge, lsb      i_wb_master.wb_write(0, SPI_CTRL, 32'hd10);   // set 16 bit transfer, tx negedge, start transfer      $display("status: %t generate transfer: 16 bit, lsb first, tx negedge, rx posedge", $time);      // Check bsy bit      i_wb_master.wb_read(0, SPI_CTRL, q);      while (q[8])        i_wb_master.wb_read(1, SPI_CTRL, q);      i_wb_master.wb_read(1, SPI_RX_0, q);      result = result + q;      if (i_spi_slave.data[15:0] == 16'ha55a && q == 32'h00005a7e)        $display("status: %t transfer completed: ok", $time);      else        $display("status: %t transfer completed: nok", $time);      i_spi_slave.rx_negedge = 1'b1;      i_spi_slave.tx_negedge = 1'b0;      i_wb_master.wb_write(0, SPI_TX_0, 32'h76543210);      i_wb_master.wb_write(0, SPI_TX_1, 32'hfedcba98);      i_wb_master.wb_write(0, SPI_CTRL, 32'h1a40);   // set 64 bit transfer, rx negedge, lsb      i_wb_master.wb_write(0, SPI_CTRL, 32'h1b40);   // set 64 bit transfer, rx negedge, start transfer      $display("status: %t generate transfer: 64 bit, lsb first, tx posedge, rx negedge", $time);      // Check bsy bit      i_wb_master.wb_read(0, SPI_CTRL, q);      while (q[8])        i_wb_master.wb_read(1, SPI_CTRL, q);      i_wb_master.wb_read(1, SPI_RX_0, q);      result = result + q;      i_wb_master.wb_read(1, SPI_RX_1, q1);      result = result + q1;      if (i_spi_slave.data == 32'h195d3b7f && q == 32'h5aa5a55a && q1 == 32'h76543210)        $display("status: %t transfer completed: ok", $time);      else        $display("status: %t transfer completed: nok", $time);      i_spi_slave.rx_negedge = 1'b0;      i_spi_slave.tx_negedge = 1'b1;      i_wb_master.wb_write(0, SPI_TX_0, 32'hccddeeff);      i_wb_master.wb_write(0, SPI_TX_1, 32'h8899aabb);      i_wb_master.wb_write(0, SPI_TX_2, 32'h44556677);      i_wb_master.wb_write(0, SPI_TX_3, 32'h00112233);      i_wb_master.wb_write(0, SPI_CTRL, 32'h400);      i_wb_master.wb_write(0, SPI_CTRL, 32'h500);      $display("status: %t generate transfer: 128 bit, msb first, tx posedge, rx negedge", $time);      // Check bsy bit      i_wb_master.wb_read(0, SPI_CTRL, q);      while (q[8])        i_wb_master.wb_read(1, SPI_CTRL, q);      i_wb_master.wb_read(1, SPI_RX_0, q);      result = result + q;      i_wb_master.wb_read(1, SPI_RX_1, q1);      result = result + q1;      i_wb_master.wb_read(1, SPI_RX_2, q2);      result = result + q2;      i_wb_master.wb_read(1, SPI_RX_3, q3);      result = result + q3;      if (i_spi_slave.data == 32'hccddeeff && q == 32'h8899aabb && q1 == 32'h44556677 && q2 == 32'h00112233 && q3 == 32'h195d3b7f)        $display("status: %t transfer completed: ok", $time);      else        $display("status: %t transfer completed: nok", $time);      i_spi_slave.rx_negedge = 1'b0;      i_spi_slave.tx_negedge = 1'b1;      i_wb_master.wb_write(0, SPI_TX_0, 32'haa55a5a5);      i_wb_master.wb_write(0, SPI_CTRL, 32'h1420);      i_wb_master.wb_write(0, SPI_CTRL, 32'h1520);      $display("status: %t generate transfer: 32 bit, msb first, tx negedge, rx posedge, ie", $time);      // Check interrupt signal      while (!int)        @(posedge clk);      i_wb_master.wb_read(1, SPI_RX_0, q);      result = result + q;          @(posedge clk);      if (!int && i_spi_slave.data == 32'haa55a5a5 && q == 32'hccddeeff)        $display("status: %t transfer completed: ok", $time);      else        $display("status: %t transfer completed: nok", $time);      i_spi_slave.rx_negedge = 1'b1;      i_spi_slave.tx_negedge = 1'b0;      i_wb_master.wb_write(0, SPI_TX_0, 32'h01248421);      i_wb_master.wb_write(0, SPI_CTRL, 32'h3220);      i_wb_master.wb_write(0, SPI_CTRL, 32'h3320);      $display("status: %t generate transfer: 32 bit, msb first, tx posedge, rx negedge, ie, ass", $time);      while (!int)        @(posedge clk);      i_wb_master.wb_read(1, SPI_RX_0, q);      result = result + q;      @(posedge clk);      if (!int && i_spi_slave.data == 32'h01248421 && q == 32'haa55a5a5)        $display("status: %t transfer completed: ok", $time);      else        $display("status: %t transfer completed: nok", $time);      i_spi_slave.rx_negedge = 1'b1;      i_spi_slave.tx_negedge = 1'b0;      i_wb_master.wb_write(0, SPI_TX_0, 32'h1);      i_wb_master.wb_write(0, SPI_CTRL, 32'h3201);      i_wb_master.wb_write(0, SPI_CTRL, 32'h3301);      $display("status: %t generate transfer: 1 bit, msb first, tx posedge, rx negedge, ie, ass", $time);      while (!int)        @(posedge clk);      i_wb_master.wb_read(1, SPI_RX_0, q);      result = result + q;      @(posedge clk);      if (!int && i_spi_slave.data == 32'h02490843 && q == 32'h0)        $display("status: %t transfer completed: ok", $time);      else        $display("status: %t transfer completed: nok", $time);      $display("\n\nstatus: %t Testbench done", $time);      #25000; // wait 25us      $display("report (%h)", (result ^ 32'h2e8b36ab) + 32'hdeaddead);      $display("exit (%h)", result ^ 32'h2e8b36ab);      $stop;    endendmodule

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久精k8| 成人午夜电影久久影院| 国产成人一级电影| 91黄视频在线| 国产精品美女久久久久高潮| 青娱乐精品在线视频| 欧美亚洲日本国产| 国产精品视频看| 国产一区二区三区在线观看免费| 欧美三级在线播放| 亚洲欧美色一区| 高清国产一区二区| 国产亚洲自拍一区| 久久综合综合久久综合| 欧美日韩不卡在线| 亚洲精品网站在线观看| www.亚洲在线| 国产精品久久网站| 成人激情午夜影院| 国产欧美日韩三区| 国产精品自拍在线| 久久影音资源网| 久久99久久99精品免视看婷婷| 欧美日韩国产高清一区二区| 樱桃视频在线观看一区| 91麻豆国产福利在线观看| 国产精品三级av在线播放| 国产91在线|亚洲| 久久久久国产精品人| 国产一区啦啦啦在线观看| 日韩欧美成人激情| 国内精品写真在线观看| 精品国产污网站| 国产又黄又大久久| 国产日韩欧美不卡| a在线播放不卡| 亚洲欧美激情小说另类| 在线免费观看一区| 亚洲电影欧美电影有声小说| 欧美视频在线不卡| 久久精品免费看| 国产亚洲成av人在线观看导航| 国产aⅴ综合色| 最新国产成人在线观看| 在线精品视频免费观看| 午夜国产精品一区| 欧美精品一区二| 成人精品亚洲人成在线| 一区2区3区在线看| 欧美精品一二三| 久久狠狠亚洲综合| 国产精品午夜在线观看| 91老师片黄在线观看| 亚洲电影一区二区三区| 欧美一级生活片| 国产精品白丝jk白祙喷水网站| 中文字幕日韩一区| 成人精品国产福利| 日韩欧美国产高清| 中文一区二区在线观看| 色屁屁一区二区| 国产成人免费在线观看不卡| 日韩va欧美va亚洲va久久| 亚洲欧美偷拍卡通变态| 中文字幕日韩欧美一区二区三区| 欧美精品一区二区三区在线播放| 欧美老肥妇做.爰bbww视频| 一本色道久久综合精品竹菊| www.一区二区| eeuss鲁片一区二区三区| 成人午夜私人影院| 丁香婷婷综合网| 国产成人精品综合在线观看| 激情综合网av| 国产一区二区影院| 激情综合色综合久久| 国产一区二区0| 国产黄色91视频| 成人一级黄色片| 成人h动漫精品一区二区| 国产一区999| 国产成人精品免费网站| 国产91清纯白嫩初高中在线观看| 国产乱理伦片在线观看夜一区| 国产一区二区久久| 国产999精品久久久久久| 成人午夜激情在线| 色综合亚洲欧洲| 在线观看三级视频欧美| 欧美疯狂性受xxxxx喷水图片| 欧美日高清视频| 精品欧美一区二区在线观看| 精品卡一卡二卡三卡四在线| 国产欧美一区二区精品秋霞影院| 国产精品网站在线观看| 亚洲精选视频免费看| 亚洲高清久久久| 久久 天天综合| 成人晚上爱看视频| 日本高清成人免费播放| 欧美顶级少妇做爰| 精品福利在线导航| 国产精品久久久久久妇女6080| 亚洲女子a中天字幕| 日韩激情在线观看| 国产精品一区二区三区网站| 99视频国产精品| 欧美乱熟臀69xxxxxx| 精品国产伦理网| 亚洲欧洲日本在线| 日韩电影在线一区| 丰满岳乱妇一区二区三区| 色哟哟亚洲精品| 精品日产卡一卡二卡麻豆| 国产精品色婷婷久久58| 性做久久久久久免费观看欧美| 激情综合色综合久久综合| 91网站在线播放| 91精品国产欧美一区二区成人| 国产性天天综合网| 亚洲一二三四久久| 国产99久久久国产精品潘金| 欧美日韩亚洲高清一区二区| 国产午夜一区二区三区| 亚洲午夜一区二区| 国产.欧美.日韩| 4438亚洲最大| 国产精品国产三级国产三级人妇| 午夜视频久久久久久| av中文一区二区三区| 精品国产不卡一区二区三区| 亚洲已满18点击进入久久| 粉嫩一区二区三区在线看| 91精品啪在线观看国产60岁| 日韩毛片精品高清免费| 国产在线麻豆精品观看| 欧美亚一区二区| 亚洲日本中文字幕区| 国产精品99久久不卡二区| 制服丝袜av成人在线看| 亚洲猫色日本管| 懂色av一区二区三区免费观看| 日韩写真欧美这视频| 亚洲 欧美综合在线网络| 91麻豆自制传媒国产之光| 国产精品三级久久久久三级| 国产一区在线观看视频| 日韩一级在线观看| 偷拍日韩校园综合在线| 色素色在线综合| 成人欧美一区二区三区在线播放| 国产一本一道久久香蕉| 欧美岛国在线观看| 青草国产精品久久久久久| 欧美视频在线一区二区三区| 亚洲免费成人av| 色婷婷综合久久| 亚洲精品第一国产综合野| 91网站最新地址| 亚洲精品久久久蜜桃| 色综合天天综合网国产成人综合天| 国产视频亚洲色图| 国产精品18久久久久久久久| 精品国产一区二区在线观看| 麻豆国产欧美日韩综合精品二区| 欧美日韩免费一区二区三区视频| 亚洲男人的天堂一区二区| 99久久久国产精品| 亚洲精品少妇30p| 色噜噜狠狠色综合中国| 一区二区三区影院| 在线免费观看不卡av| 亚洲精品亚洲人成人网| 在线观看国产一区二区| 亚洲一区二区欧美| 91精品国产综合久久婷婷香蕉| 免费在线观看精品| 久久久美女毛片| 成人免费视频国产在线观看| 国产精品久久久久7777按摩| 99久久99久久久精品齐齐| 一区二区三区中文在线| 欧美群妇大交群中文字幕| 久久精品国产亚洲一区二区三区| 日韩三级在线免费观看| 国产一区福利在线| 亚洲色图另类专区| 欧美日韩亚洲综合一区| 九九久久精品视频| 日本一区二区三区dvd视频在线| 99精品黄色片免费大全| 亚洲综合一二区| 精品少妇一区二区| 99久久99久久久精品齐齐| 天堂va蜜桃一区二区三区 | 国产精品 日产精品 欧美精品| 国产午夜亚洲精品午夜鲁丝片| 一本大道av伊人久久综合| 日韩成人午夜电影| 国产无人区一区二区三区|