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

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

?? i2c_master_top.v.txt

?? Verilog開發的I2c接口模塊
?? TXT
字號:
/////////////////////////////////////////////////////////////////////
////                                                             ////
////  WISHBONE revB.2 compliant I2C Master controller Top-level  ////
////                                                             ////
////                                                             ////
////  Author: Richard Herveille                                  ////
////          richard@asics.ws                                   ////
////          www.asics.ws                                       ////
////                                                             ////
////  Downloaded from: http://www.opencores.org/projects/i2c/    ////
////                                                             ////
/////////////////////////////////////////////////////////////////////
////                                                             ////
//// Copyright (C) 2001 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: i2c_master_top.v,v 1.11 2005/02/27 09:26:24 rherveille Exp $
//
//  $Date: 2005/02/27 09:26:24 $
//  $Revision: 1.11 $
//  $Author: rherveille $
//  $Locker:  $
//  $State: Exp $
//
// Change History:
//               $Log: i2c_master_top.v,v $
//               Revision 1.11  2005/02/27 09:26:24  rherveille
//               Fixed register overwrite issue.
//               Removed full_case pragma, replaced it by a default statement.
//
//               Revision 1.10  2003/09/01 10:34:38  rherveille
//               Fix a blocking vs. non-blocking error in the wb_dat output mux.
//
//               Revision 1.9  2003/01/09 16:44:45  rherveille
//               Fixed a bug in the Command Register declaration.
//
//               Revision 1.8  2002/12/26 16:05:12  rherveille
//               Small code simplifications
//
//               Revision 1.7  2002/12/26 15:02:32  rherveille
//               Core is now a Multimaster I2C controller
//
//               Revision 1.6  2002/11/30 22:24:40  rherveille
//               Cleaned up code
//
//               Revision 1.5  2001/11/10 10:52:55  rherveille
//               Changed PRER reset value from 0x0000 to 0xffff, conform specs.
//

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

`include "i2c_master_defines.v"

module i2c_master_top(
	wb_clk_i, wb_rst_i, arst_i, wb_adr_i, wb_dat_i, wb_dat_o,
	wb_we_i, wb_stb_i, wb_cyc_i, wb_ack_o, wb_inta_o,
	scl_pad_i, scl_pad_o, scl_padoen_o, sda_pad_i, sda_pad_o, sda_padoen_o );

	// parameters
	parameter ARST_LVL = 1'b0; // asynchronous reset level

	//
	// inputs & outputs
	//

	// wishbone signals
	input        wb_clk_i;     // master clock input
	input        wb_rst_i;     // synchronous active high reset
	input        arst_i;       // asynchronous reset
	input  [2:0] wb_adr_i;     // lower address bits
	input  [7:0] wb_dat_i;     // databus input
	output [7:0] wb_dat_o;     // databus output
	input        wb_we_i;      // write enable input
	input        wb_stb_i;     // stobe/core select signal
	input        wb_cyc_i;     // valid bus cycle input
	output       wb_ack_o;     // bus cycle acknowledge output
	output       wb_inta_o;    // interrupt request signal output

	reg [7:0] wb_dat_o;
	reg wb_ack_o;
	reg wb_inta_o;

	// I2C signals
	// i2c clock line
	input  scl_pad_i;       // SCL-line input
	output scl_pad_o;       // SCL-line output (always 1'b0)
	output scl_padoen_o;    // SCL-line output enable (active low)

	// i2c data line
	input  sda_pad_i;       // SDA-line input
	output sda_pad_o;       // SDA-line output (always 1'b0)
	output sda_padoen_o;    // SDA-line output enable (active low)


	//
	// variable declarations
	//

	// registers
	reg  [15:0] prer; // clock prescale register
	reg  [ 7:0] ctr;  // control register
	reg  [ 7:0] txr;  // transmit register
	wire [ 7:0] rxr;  // receive register
	reg  [ 7:0] cr;   // command register
	wire [ 7:0] sr;   // status register

	// done signal: command completed, clear command register
	wire done;

	// core enable signal
	wire core_en;
	wire ien;

	// status register signals
	wire irxack;
	reg  rxack;       // received aknowledge from slave
	reg  tip;         // transfer in progress
	reg  irq_flag;    // interrupt pending flag
	wire i2c_busy;    // bus busy (start signal detected)
	wire i2c_al;      // i2c bus arbitration lost
	reg  al;          // status register arbitration lost bit

	//
	// module body
	//

	// generate internal reset
	wire rst_i = arst_i ^ ARST_LVL;

	// generate wishbone signals
	wire wb_wacc = wb_cyc_i & wb_stb_i & wb_we_i;

	// generate acknowledge output signal
	always @(posedge wb_clk_i)
	  wb_ack_o <= #1 wb_cyc_i & wb_stb_i & ~wb_ack_o; // because timing is always honored

	// assign DAT_O
	always @(posedge wb_clk_i)
	begin
	  case (wb_adr_i) // synopsis parallel_case
	    3'b000: wb_dat_o <= #1 prer[ 7:0];
	    3'b001: wb_dat_o <= #1 prer[15:8];
	    3'b010: wb_dat_o <= #1 ctr;
	    3'b011: wb_dat_o <= #1 rxr; // write is transmit register (txr)
	    3'b100: wb_dat_o <= #1 sr;  // write is command register (cr)
	    3'b101: wb_dat_o <= #1 txr;
	    3'b110: wb_dat_o <= #1 cr;
	    3'b111: wb_dat_o <= #1 0;   // reserved
	  endcase
	end

	// generate registers
	always @(posedge wb_clk_i or negedge rst_i)
	  if (!rst_i)
	    begin
	        prer <= #1 16'hffff;
	        ctr  <= #1  8'h0;
	        txr  <= #1  8'h0;
	    end
	  else if (wb_rst_i)
	    begin
	        prer <= #1 16'hffff;
	        ctr  <= #1  8'h0;
	        txr  <= #1  8'h0;
	    end
	  else
	    if (wb_wacc)
	      case (wb_adr_i) // synopsis parallel_case
	         3'b000 : prer [ 7:0] <= #1 wb_dat_i;
	         3'b001 : prer [15:8] <= #1 wb_dat_i;
	         3'b010 : ctr         <= #1 wb_dat_i;
	         3'b011 : txr         <= #1 wb_dat_i;
	         default: ;
	      endcase

	// generate command register (special case)
	always @(posedge wb_clk_i or negedge rst_i)
	  if (~rst_i)
	    cr <= #1 8'h0;
	  else if (wb_rst_i)
	    cr <= #1 8'h0;
	  else if (wb_wacc)
	    begin
	        if (core_en & (wb_adr_i == 3'b100) )
	          cr <= #1 wb_dat_i;
	    end
	  else
	    begin
	        if (done | i2c_al)
	          cr[7:4] <= #1 4'h0;           // clear command bits when done
	                                        // or when aribitration lost
	        cr[2:1] <= #1 2'b0;             // reserved bits
	        cr[0]   <= #1 2'b0;             // clear IRQ_ACK bit
	    end


	// decode command register
	wire sta  = cr[7];
	wire sto  = cr[6];
	wire rd   = cr[5];
	wire wr   = cr[4];
	wire ack  = cr[3];
	wire iack = cr[0];

	// decode control register
	assign core_en = ctr[7];
	assign ien = ctr[6];

	// hookup byte controller block
	i2c_master_byte_ctrl byte_controller (
		.clk      ( wb_clk_i     ),
		.rst      ( wb_rst_i     ),
		.nReset   ( rst_i        ),
		.ena      ( core_en      ),
		.clk_cnt  ( prer         ),
		.start    ( sta          ),
		.stop     ( sto          ),
		.read     ( rd           ),
		.write    ( wr           ),
		.ack_in   ( ack          ),
		.din      ( txr          ),
		.cmd_ack  ( done         ),
		.ack_out  ( irxack       ),
		.dout     ( rxr          ),
		.i2c_busy ( i2c_busy     ),
		.i2c_al   ( i2c_al       ),
		.scl_i    ( scl_pad_i    ),
		.scl_o    ( scl_pad_o    ),
		.scl_oen  ( scl_padoen_o ),
		.sda_i    ( sda_pad_i    ),
		.sda_o    ( sda_pad_o    ),
		.sda_oen  ( sda_padoen_o )
	);

	// status register block + interrupt request signal
	always @(posedge wb_clk_i or negedge rst_i)
	  if (!rst_i)
	    begin
	        al       <= #1 1'b0;
	        rxack    <= #1 1'b0;
	        tip      <= #1 1'b0;
	        irq_flag <= #1 1'b0;
	    end
	  else if (wb_rst_i)
	    begin
	        al       <= #1 1'b0;
	        rxack    <= #1 1'b0;
	        tip      <= #1 1'b0;
	        irq_flag <= #1 1'b0;
	    end
	  else
	    begin
	        al       <= #1 i2c_al | (al & ~sta);
	        rxack    <= #1 irxack;
	        tip      <= #1 (rd | wr);
	        irq_flag <= #1 (done | i2c_al | irq_flag) & ~iack; // interrupt request flag is always generated
	    end

	// generate interrupt request signals
	always @(posedge wb_clk_i or negedge rst_i)
	  if (!rst_i)
	    wb_inta_o <= #1 1'b0;
	  else if (wb_rst_i)
	    wb_inta_o <= #1 1'b0;
	  else
	    wb_inta_o <= #1 irq_flag && ien; // interrupt signal is only generated when IEN (interrupt enable bit is set)

	// assign status register bits
	assign sr[7]   = rxack;
	assign sr[6]   = i2c_busy;
	assign sr[5]   = al;
	assign sr[4:2] = 3'h0; // reserved
	assign sr[1]   = tip;
	assign sr[0]   = irq_flag;

endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区黑丝| 天天色综合天天| 99国内精品久久| 中文字幕日本不卡| 日本福利一区二区| 亚洲成人av资源| 337p日本欧洲亚洲大胆精品| 国产一区二区三区不卡在线观看| 中文字幕av一区二区三区高| 99精品国产视频| 亚洲不卡av一区二区三区| 日韩你懂的在线播放| 国产69精品久久99不卡| 亚洲欧美日韩国产手机在线| 欧美日韩国产小视频在线观看| 青青草97国产精品免费观看无弹窗版| 精品不卡在线视频| 成人av电影免费观看| 天堂午夜影视日韩欧美一区二区| 精品成人一区二区| 日本精品视频一区二区三区| 美女在线视频一区| 成人欧美一区二区三区| 91精品一区二区三区在线观看| 国产成人精品免费看| 亚洲福利一区二区三区| 久久精品亚洲精品国产欧美| 在线中文字幕一区| 国产一区二区三区在线观看免费视频 | 亚洲欧美日韩在线播放| 91精品国产91久久久久久最新毛片| 国产福利一区二区| 午夜精品福利一区二区三区av | 欧美日韩性生活| 国产伦精品一区二区三区视频青涩| 亚洲天堂久久久久久久| 日韩视频一区二区三区 | 亚洲免费观看高清完整版在线观看熊 | 成人国产精品视频| 日韩电影免费在线观看网站| 国产精品美女久久久久久久网站| 9191成人精品久久| 91免费观看视频在线| 国产激情一区二区三区四区| 亚洲第一福利一区| 亚洲欧洲精品一区二区精品久久久 | 国产精品久99| 亚洲精品一区在线观看| 欧美日免费三级在线| 99久久国产综合精品色伊| 激情欧美一区二区| 婷婷久久综合九色国产成人| 亚洲乱码中文字幕| 国产日韩欧美一区二区三区综合| 67194成人在线观看| 一道本成人在线| 99re在线视频这里只有精品| 国产成人亚洲综合a∨婷婷| 青草国产精品久久久久久| 亚洲综合在线五月| 亚洲乱码中文字幕| 亚洲欧美一区二区久久| 国产精品美女久久久久久久| 久久理论电影网| 2023国产精品视频| 337p日本欧洲亚洲大胆色噜噜| 日韩欧美一区二区免费| 欧美肥胖老妇做爰| 欧美日韩精品系列| 欧美日韩在线播放一区| 欧美日韩黄视频| 欧美日本国产视频| 91麻豆精品国产综合久久久久久| 欧美色电影在线| 欧美日韩日日摸| 欧美美女激情18p| 制服丝袜成人动漫| 欧美日韩激情一区| 日韩欧美123| 久久人人超碰精品| 国产日韩欧美亚洲| 日韩美女视频一区| 亚洲一区在线视频| 亚洲aaa精品| 麻豆精品视频在线观看免费| 精品在线免费视频| 国产精品91一区二区| 成人在线视频首页| 97se亚洲国产综合在线| 欧美视频一区在线观看| 日韩一区二区影院| 日本一区二区成人在线| 亚洲欧美韩国综合色| 五月综合激情日本mⅴ| 美女脱光内衣内裤视频久久网站| 极品销魂美女一区二区三区| 风间由美中文字幕在线看视频国产欧美| 国产**成人网毛片九色| 91看片淫黄大片一级| 欧美午夜视频网站| 日韩美一区二区三区| 国产精品每日更新在线播放网址 | 久久免费的精品国产v∧| 国产精品你懂的在线欣赏| 亚洲最新视频在线播放| 久久国产综合精品| 97久久精品人人做人人爽| 欧美日本视频在线| 国产欧美日韩视频一区二区| 亚洲黄一区二区三区| 美腿丝袜一区二区三区| 成人精品视频.| 3atv一区二区三区| 中文字幕免费不卡| 天堂影院一区二区| 99热这里都是精品| 欧美电视剧在线观看完整版| 中文字幕在线不卡视频| 日本美女视频一区二区| av不卡在线观看| 精品乱码亚洲一区二区不卡| 亚洲女与黑人做爰| 韩国在线一区二区| 欧美日韩一区在线| 国产精品素人一区二区| 免费人成黄页网站在线一区二区| av不卡免费在线观看| 欧美不卡一区二区| 亚洲在线观看免费| 粉嫩av一区二区三区粉嫩| 欧美精品v日韩精品v韩国精品v| 中文字幕免费不卡| 久久成人久久鬼色| 欧美日韩色一区| 亚洲激情六月丁香| 成人激情校园春色| 久久综合九色综合97婷婷女人| 亚洲韩国精品一区| 91麻豆高清视频| 欧美韩日一区二区三区四区| 狂野欧美性猛交blacked| 欧美三级日韩在线| 亚洲欧美色图小说| 国产丶欧美丶日本不卡视频| 精品久久一区二区三区| 污片在线观看一区二区| 色综合久久99| 亚洲免费在线观看| 成人夜色视频网站在线观看| 久久影院视频免费| 麻豆精品新av中文字幕| 51久久夜色精品国产麻豆| 亚洲国产cao| 在线观看区一区二| 亚洲精品v日韩精品| 色偷偷成人一区二区三区91| 国产精品久久久久一区二区三区共 | 亚洲一二三四在线观看| aaa亚洲精品| 亚洲日本va午夜在线影院| 成人永久aaa| 国产精品久99| 99re热视频精品| 亚洲三级电影全部在线观看高清| 成人国产精品视频| 亚洲色图19p| 欧美在线免费观看视频| 一区二区三区日韩欧美精品| 色国产综合视频| 亚洲一二三级电影| 欧美日韩国产小视频在线观看| 午夜精品久久久久久久久久久 | 精品国产免费久久 | 成人ar影院免费观看视频| 欧美国产国产综合| 91丨porny丨首页| 亚洲黄色免费网站| 欧美日韩精品免费观看视频| 丝袜亚洲另类欧美| 91精品国产综合久久精品麻豆| 日韩电影在线观看一区| 欧美电影免费观看高清完整版| 韩国精品主播一区二区在线观看| 精品福利一二区| 成人精品在线视频观看| 亚洲精选视频免费看| 欧美日韩精品福利| 精品一区二区三区久久| 国产欧美日韩卡一| 91亚洲精品一区二区乱码| 亚洲成人黄色影院| 精品国产免费一区二区三区香蕉| 成人网男人的天堂| 亚洲一区免费观看| 欧美一区二区三区小说| 国产成人亚洲综合a∨婷婷| 亚洲免费观看高清完整版在线观看| 欧美少妇性性性| 国产一区二区三区四| 亚洲男人天堂一区|