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

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

?? simple_spi_top.v

?? spi總線控制器的fpga實現 verilog源代碼及測試
?? V
字號:
/////////////////////////////////////////////////////////////////////////                                                             ////////  OpenCores                    MC68HC11E based SPI interface ////////                                                             ////////  Author: Richard Herveille                                  ////////          richard@asics.ws                                   ////////          www.asics.ws                                       ////////                                                             /////////////////////////////////////////////////////////////////////////////                                                             //////// Copyright (C) 2002 Richard Herveille                        ////////                    richard@asics.ws                         ////////                                                             //////// 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 SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     //////// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   //////// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   //////// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      //////// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         //////// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    //////// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   //////// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        //////// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  //////// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  //////// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  //////// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         //////// POSSIBILITY OF SUCH DAMAGE.                                 ////////                                                             ///////////////////////////////////////////////////////////////////////////  CVS Log////  $Id: simple_spi_top.v,v 1.5 2004/02/28 15:59:50 rherveille Exp $////  $Date: 2004/02/28 15:59:50 $//  $Revision: 1.5 $//  $Author: rherveille $//  $Locker:  $//  $State: Exp $//// Change History://               $Log: simple_spi_top.v,v $//               Revision 1.5  2004/02/28 15:59:50  rherveille//               Fixed SCK_O generation bug.//               This resulted in a major rewrite of the serial interface engine.////               Revision 1.4  2003/08/01 11:41:54  rherveille//               Fixed some timing bugs.////               Revision 1.3  2003/01/09 16:47:59  rherveille//               Updated clkcnt size and decoding due to new SPR bit assignments.////               Revision 1.2  2003/01/07 13:29:52  rherveille//               Changed SPR bits coding.////               Revision 1.1.1.1  2002/12/22 16:07:15  rherveille//               Initial release//////// Motorola MC68HC11E based SPI interface//// Currently only MASTER mode is supported//// synopsys translate_off`include "timescale.v"// synopsys translate_onmodule simple_spi_top(  // 8bit WISHBONE bus slave interface  input  wire       clk_i,         // clock  input  wire       rst_i,         // reset (asynchronous active low)  input  wire       cyc_i,         // cycle  input  wire       stb_i,         // strobe  input  wire [1:0] adr_i,         // address  input  wire       we_i,          // write enable  input  wire [7:0] dat_i,         // data input  output reg  [7:0] dat_o,         // data output  output reg        ack_o,         // normal bus termination  output reg        inta_o,        // interrupt output  // SPI port  output reg        sck_o,         // serial clock output  output wire       mosi_o,        // MasterOut SlaveIN  input  wire       miso_i         // MasterIn SlaveOut);  //  // Module body  //  reg  [7:0] spcr;       // Serial Peripheral Control Register ('HC11 naming)  wire [7:0] spsr;       // Serial Peripheral Status register ('HC11 naming)  reg  [7:0] sper;       // Serial Peripheral Extension register  reg  [7:0] treg, rreg; // Transmit/Receive register  // fifo signals  wire [7:0] rfdout;  reg        wfre, rfwe;  wire       rfre, rffull, rfempty;  wire [7:0] wfdout;  wire       wfwe, wffull, wfempty;  // misc signals  wire      tirq;     // transfer interrupt (selected number of transfers done)  wire      wfov;     // write fifo overrun (writing while fifo full)  reg [1:0] state;    // statemachine state  reg [2:0] bcnt;  //  // Wishbone interface  wire wb_acc = cyc_i & stb_i;       // WISHBONE access  wire wb_wr  = wb_acc & we_i;       // WISHBONE write access  // dat_i  always @(posedge clk_i or negedge rst_i)    if (~rst_i)      begin          spcr <= #1 8'h10;  // set master bit          sper <= #1 8'h00;      end    else if (wb_wr)      begin        if (adr_i == 2'b00)          spcr <= #1 dat_i | 8'h10; // always set master bit        if (adr_i == 2'b11)          sper <= #1 dat_i;      end  // write fifo  assign wfwe = wb_acc & (adr_i == 2'b10) & ack_o &  we_i;  assign wfov = wfwe & wffull;  // dat_o  always @(posedge clk_i)    case(adr_i) // synopsys full_case parallel_case      2'b00: dat_o <= #1 spcr;      2'b01: dat_o <= #1 spsr;      2'b10: dat_o <= #1 rfdout;      2'b11: dat_o <= #1 sper;    endcase  // read fifo  assign rfre = wb_acc & (adr_i == 2'b10) & ack_o & ~we_i;  // ack_o  always @(posedge clk_i or negedge rst_i)    if (~rst_i)      ack_o <= #1 1'b0;    else      ack_o <= #1 wb_acc & !ack_o;  // decode Serial Peripheral Control Register  wire       spie = spcr[7];   // Interrupt enable bit  wire       spe  = spcr[6];   // System Enable bit  wire       dwom = spcr[5];   // Port D Wired-OR Mode Bit  wire       mstr = spcr[4];   // Master Mode Select Bit  wire       cpol = spcr[3];   // Clock Polarity Bit  wire       cpha = spcr[2];   // Clock Phase Bit  wire [1:0] spr  = spcr[1:0]; // Clock Rate Select Bits  // decode Serial Peripheral Extension Register  wire [1:0] icnt = sper[7:6]; // interrupt on transfer count  wire [1:0] spre = sper[1:0]; // extended clock rate select  wire [3:0] espr = {spre, spr};  // generate status register  wire wr_spsr = wb_wr & (adr_i == 2'b01);  reg spif;  always @(posedge clk_i)    if (~spe)      spif <= #1 1'b0;    else      spif <= #1 (tirq | spif) & ~(wr_spsr & dat_i[7]);  reg wcol;  always @(posedge clk_i)    if (~spe)      wcol <= #1 1'b0;    else      wcol <= #1 (wfov | wcol) & ~(wr_spsr & dat_i[6]);  assign spsr[7]   = spif;  assign spsr[6]   = wcol;  assign spsr[5:4] = 2'b00;  assign spsr[3]   = wffull;  assign spsr[2]   = wfempty;  assign spsr[1]   = rffull;  assign spsr[0]   = rfempty;    // generate IRQ output (inta_o)  always @(posedge clk_i)    inta_o <= #1 spif & spie;  //  // hookup read/write buffer fifo  fifo4 #(8)  rfifo(	.clk   ( clk_i   ),	.rst   ( rst_i   ),	.clr   ( ~spe    ),	.din   ( treg    ),	.we    ( rfwe    ),	.dout  ( rfdout  ),	.re    ( rfre    ),	.full  ( rffull  ),	.empty ( rfempty )  ),  wfifo(	.clk   ( clk_i   ),	.rst   ( rst_i   ),	.clr   ( ~spe    ),	.din   ( dat_i   ),	.we    ( wfwe    ),	.dout  ( wfdout  ),	.re    ( wfre    ),	.full  ( wffull  ),	.empty ( wfempty )  );  //  // generate clk divider  reg [11:0] clkcnt;  always @(posedge clk_i)    if(spe & (|clkcnt & |state))      clkcnt <= #1 clkcnt - 11'h1;    else      case (espr) // synopsys full_case parallel_case        4'b0000: clkcnt <= #1 12'h0;   // 2   -- original M68HC11 coding        4'b0001: clkcnt <= #1 12'h1;   // 4   -- original M68HC11 coding        4'b0010: clkcnt <= #1 12'h3;   // 16  -- original M68HC11 coding        4'b0011: clkcnt <= #1 12'hf;   // 32  -- original M68HC11 coding        4'b0100: clkcnt <= #1 12'h1f;  // 8        4'b0101: clkcnt <= #1 12'h7;   // 64        4'b0110: clkcnt <= #1 12'h3f;  // 128        4'b0111: clkcnt <= #1 12'h7f;  // 256        4'b1000: clkcnt <= #1 12'hff;  // 512        4'b1001: clkcnt <= #1 12'h1ff; // 1024        4'b1010: clkcnt <= #1 12'h3ff; // 2048        4'b1011: clkcnt <= #1 12'h7ff; // 4096      endcase  // generate clock enable signal  wire ena = ~|clkcnt;  // transfer statemachine  always @(posedge clk_i)    if (~spe)      begin          state <= #1 2'b00; // idle          bcnt  <= #1 3'h0;          treg  <= #1 8'h00;          wfre  <= #1 1'b0;          rfwe  <= #1 1'b0;          sck_o <= #1 1'b0;      end    else      begin         wfre <= #1 1'b0;         rfwe <= #1 1'b0;         case (state) //synopsys full_case parallel_case           2'b00: // idle state              begin                  bcnt  <= #1 3'h7;   // set transfer counter                  treg  <= #1 wfdout; // load transfer register                  sck_o <= #1 cpol;   // set sck                  if (~wfempty) begin                    wfre  <= #1 1'b1;                    state <= #1 2'b01;                    if (cpha) sck_o <= #1 ~sck_o;                  end              end           2'b01: // clock-phase2, next data              if (ena) begin                sck_o   <= #1 ~sck_o;                state   <= #1 2'b11;              end           2'b11: // clock phase1              if (ena) begin                treg <= #1 {treg[6:0], miso_i};                bcnt <= #1 bcnt -3'h1;                if (~|bcnt) begin                  state <= #1 2'b00;                  sck_o <= #1 cpol;                  rfwe  <= #1 1'b1;                end else begin                  state <= #1 2'b01;                  sck_o <= #1 ~sck_o;                end              end           2'b10: state <= #1 2'b00;         endcase      end  assign mosi_o = treg[7];  // count number of transfers (for interrupt generation)  reg [1:0] tcnt; // transfer count  always @(posedge clk_i)    if (~spe)      tcnt <= #1 icnt;    else if (rfwe) // rfwe gets asserted when all bits have been transfered      if (|tcnt)        tcnt <= #1 tcnt - 2'h1;      else        tcnt <= #1 icnt;  assign tirq = ~|tcnt & rfwe;endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产网红主播福利一区二区| 一区二区三区.www| 亚洲婷婷在线视频| 久久99蜜桃精品| 色综合视频一区二区三区高清| 欧美一区二区不卡视频| 亚洲欧美国产三级| 国产不卡免费视频| 日韩视频一区二区在线观看| 亚洲一区二区在线免费观看视频| 国产成人综合在线播放| 欧美一区二区福利在线| 午夜视频在线观看一区二区 | 91美女精品福利| 久久精品一区二区三区不卡 | 国产成人自拍在线| 日韩欧美高清一区| 视频一区国产视频| 欧美视频在线观看一区| 亚洲免费观看高清完整版在线| 国产精品18久久久久久久久| 日韩亚洲欧美在线| 无码av中文一区二区三区桃花岛| 色综合中文字幕| 日韩精品欧美精品| 91片在线免费观看| 亚洲视频一区二区在线| 成人免费的视频| 国产精品欧美一区喷水| 国产精品 欧美精品| 久久久久97国产精华液好用吗| 美女网站视频久久| 欧美变态口味重另类| 国内不卡的二区三区中文字幕| 日韩精品自拍偷拍| 激情深爱一区二区| 精品久久免费看| 国产成人精品一区二区三区四区 | 国产99一区视频免费| 2022国产精品视频| 国产一区二区三区观看| 欧美国产精品专区| 99精品黄色片免费大全| 亚洲日本丝袜连裤袜办公室| 色94色欧美sute亚洲13| 亚洲自拍偷拍麻豆| 欧美丰满嫩嫩电影| 国产综合成人久久大片91| 国产亚洲综合av| 成人av资源站| 亚洲成人精品影院| 日韩一区二区中文字幕| 国产一区二区三区日韩| 亚洲欧美一区二区在线观看| 欧美午夜精品一区| 九色porny丨国产精品| 国产精品水嫩水嫩| 精品视频在线视频| 久久精品国产亚洲高清剧情介绍| 国产日韩v精品一区二区| 91麻豆精东视频| 日本三级韩国三级欧美三级| 久久久精品国产免大香伊| 91麻豆自制传媒国产之光| 日韩在线播放一区二区| 国产午夜亚洲精品羞羞网站| 一本一本大道香蕉久在线精品| 日韩中文字幕一区二区三区| 日本一区二区三区电影| 欧美日韩一本到| 国产精品夜夜爽| 午夜一区二区三区在线观看| 久久久精品综合| 欧美日韩在线三区| 床上的激情91.| 五月婷婷另类国产| 日韩美女啊v在线免费观看| 777午夜精品免费视频| 成人免费va视频| 久久精品国产亚洲5555| 亚洲综合清纯丝袜自拍| 日本一区二区三区视频视频| 制服丝袜亚洲播放| 色哟哟国产精品| 国产成人鲁色资源国产91色综 | 成人av在线资源| 美女免费视频一区| 亚洲一区二区三区四区不卡| 国产欧美一区二区精品忘忧草| 欧美丰满少妇xxxxx高潮对白| 99久久久久免费精品国产| 国产美女久久久久| 丝袜美腿亚洲综合| 亚洲一区二区三区在线看| 国产精品久久久久影院| 精品国产免费人成在线观看| 欧美日韩一二区| 欧美亚洲愉拍一区二区| 99re热这里只有精品免费视频| 国产精品99久| 国产一区二区在线免费观看| 蜜桃av一区二区在线观看| 亚洲mv在线观看| 亚洲成人免费看| 亚洲成a人v欧美综合天堂下载| 一区二区三区色| 一区二区在线观看免费| 最新高清无码专区| 自拍偷在线精品自拍偷无码专区| 国产免费成人在线视频| 久久久久97国产精华液好用吗| 日韩欧美一区二区视频| 日韩视频一区二区在线观看| 777a∨成人精品桃花网| 欧美一区二区精品| 日韩精品最新网址| 欧美精品一区二区蜜臀亚洲| 欧美成人三级电影在线| 久久亚洲综合色一区二区三区 | 91精品免费在线| 5566中文字幕一区二区电影| 欧美精品aⅴ在线视频| 欧美日韩精品是欧美日韩精品| 欧美日韩国产综合一区二区三区| 欧美日韩一区精品| 日韩一区二区三区免费看| 欧美电视剧免费全集观看| 欧美大肚乱孕交hd孕妇| 久久九九国产精品| 亚洲欧美一区二区三区国产精品| 一区二区三区中文字幕| 男女性色大片免费观看一区二区 | 蜜臀va亚洲va欧美va天堂 | 午夜精品福利一区二区蜜股av| 亚洲不卡av一区二区三区| 日本欧美加勒比视频| 国产精品一区二区男女羞羞无遮挡| 成人性视频免费网站| 一本久久精品一区二区| 欧美日韩精品综合在线| 久久亚洲综合色一区二区三区| 国产精品免费aⅴ片在线观看| 亚洲一线二线三线久久久| 日韩av电影天堂| 风流少妇一区二区| 欧美性受xxxx| 久久蜜桃一区二区| 亚洲一区二区三区四区的| 麻豆91小视频| 91免费观看视频在线| 在线成人高清不卡| 国产精品美女一区二区三区| 亚洲成a人片在线不卡一二三区| 国产一区二区女| 欧美麻豆精品久久久久久| 国产午夜亚洲精品午夜鲁丝片| 亚洲一二三区不卡| 国产精品一区二区久激情瑜伽 | 免费一级片91| av毛片久久久久**hd| 91精品国产高清一区二区三区蜜臀 | www国产成人| 亚洲国产精品久久不卡毛片| 高清不卡一区二区| 日韩欧美久久久| 一区二区三区91| 国产91露脸合集magnet| 欧美一级xxx| 亚洲线精品一区二区三区| 成人激情免费网站| 精品美女在线播放| 亚洲成av人片www| 不卡的av电影| 久久精品亚洲一区二区三区浴池| 亚洲成人av福利| 色综合中文综合网| 欧美日韩精品欧美日韩精品一 | 国产精品成人免费在线| 另类中文字幕网| 在线观看91精品国产麻豆| 一区二区三区丝袜| 91免费视频网| 国产亲近乱来精品视频| 狠狠色狠狠色合久久伊人| 欧美剧在线免费观看网站| 一区二区在线观看免费| kk眼镜猥琐国模调教系列一区二区| 精品久久人人做人人爰| 蜜桃av噜噜一区| 欧美一区二区久久| 免费成人小视频| 欧美一级二级三级乱码| 日韩国产精品久久| 911精品国产一区二区在线| 亚洲成人综合网站| 欧美视频在线不卡| 午夜日韩在线电影| 欧美肥妇毛茸茸| 久久国产麻豆精品| 精品免费视频一区二区|