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

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

?? i2c.v.bak

?? FPGA EP2C5Q288C8 I2C 原碼,測試OK 打開即用.
?? BAK
?? 第 1 頁 / 共 2 頁
字號:
/*
I2C總線是一種非常常用的串行總線,它操作簡便,占用接口少。本程序介紹操作一個I2C總線接口的EEPROM AT24C08
的方法,使用戶了解I2C總線協議和讀寫方法。

實驗過程是:按一下實驗板上的KEY1鍵,計數器加1計算,并把計算結果寫入EEPROM,并同時顯示在數碼管最低位,
按KEY2把EEPROM的數據讀取出來,并顯示在數碼管上。

說明:由于按鍵存在抖動,內部計數器的值偶爾可能與寫入到EEPROM的值不相同,
      程序剛啟動時請先長按reset按鍵大約1秒左右,以進行初始化。

為了更好的理解程序,用戶應該仔細閱I2C總線時序規范以及AT24C08數據手冊
*/

module i2c(clk,rst,data_in,scl,sda,wr_input,rd_input,en,seg_data);

input clk,rst;
output scl;  //I2C時鐘線
inout  sda;  //I2C數據線
input[3:0] data_in; //撥碼開關輸入想寫入EEPROM的數據
input wr_input; //要求寫的輸入
input rd_input; //要求讀的輸入
output[1:0] en; //數碼管使能
output[7:0] seg_data; //數碼管段數據

wire wr_input;
wire rd_input;

reg[7:0] seg_data;

reg scl;
reg[1:0] en;

reg[7:0] seg_data_buf;
reg[11:0] cnt_scan;
reg sda_buf;//sda輸入輸出數據緩存
reg link;   //sda輸出標志
reg phase0,phase1,phase2,phase3;//一個scl時鐘周期的四個相位階段,將一個scl周期分為4段
//phase0對應scl的上升沿時刻,phase2對應scl的下降沿時刻,phase1對應從scl高電平的中間時刻,phase2對應從scl低電平的中間時刻,
reg[7:0] clk_div;//分頻計數器
reg[1:0] main_state;
reg[2:0] i2c_state;  //對i2c操作的狀態
reg[3:0] inner_state;//i2c每一操作階段內部狀態
reg[19:0] cnt_delay; //按鍵延時計數器
reg start_delaycnt;  //按鍵延時開始
reg[7:0] writeData_reg,readData_reg;//要寫的數據的寄存器和讀回數據的寄存器
reg[7:0] addr;       //被操作的EEPROM字節的地址

parameter div_parameter=125;// 分頻系數,AT24C02最大支持400K時鐘速率

parameter start=4'b0000,  //開始
		  first=4'b0001,  //第1位
		  second=4'b0010, //第2位
		  third=4'b0011,  //第3位
		  fourth=4'b0100, //第4位
		  fifth=4'b0101,  //第5位
		  sixth=4'b0110,  //第6位
		  seventh=4'b0111, //第7位
		  eighth=4'b1000,  //第8位
		  ack=4'b1001,     //確認位
		  stop=4'b1010;    //結束位
		
parameter ini=3'b000, //初始化EEPROM狀態
		  sendaddr=3'b001, //發送地址狀態
		  write_data=3'b010, //寫數據狀態?
		  read_data=3'b011, //讀數據狀態
		  read_ini=6'b100; //發送讀信息狀態


assign sda=(link)? sda_buf:1'bz;


always@(posedge clk)
begin
	if(!rst)
		cnt_delay<=0;
	else begin
		if(start_delaycnt) begin
			if(cnt_delay!=20'd800000)
				cnt_delay<=cnt_delay+1;
			else
				cnt_delay<=0;
		 end
	 end
end

always@(posedge clk)
begin
	if(!rst) begin
		clk_div<=0;
		phase0<=0;
		phase1<=0;
		phase2<=0;
		phase3<=0;
	 end
	else begin
		if(clk_div!=div_parameter-1)
			clk_div<=clk_div+1;
		else
			clk_div<=0;
			
		if(phase0)
			phase0<=0;	
		else if(clk_div==99) 
			phase0<=1;
		if(phase1)
			phase1<=0;
		else if(clk_div==24)
			phase1<=1;
		if(phase2)
			phase2<=0;
		else if(clk_div==49)
			phase2<=1;
		if(phase3)
			phase3<=0;
		else if(clk_div==74)
			phase3<=1;
	 end
end


///////////////////////////EEPROM操作部分/////////////
always@(posedge clk)
begin
	if(!rst) begin
		start_delaycnt<=0;
		main_state<=2'b00;
		i2c_state<=ini;
		inner_state<=start;
		scl<=1;
		sda_buf<=1;
		link<=0;
		writeData_reg<=5;
		readData_reg<=0;
		addr<=10;
	 end
	else begin
		case(main_state)
			2'b00: begin  //等待讀寫要求
				writeData_reg<=data_in;
				scl<=1;
				sda_buf<=1;
				link<=0;
				inner_state<=start;
				i2c_state<=ini;
				if((cnt_delay==0)&&(!wr_input||!rd_input))
						start_delaycnt<=1;
				else if(cnt_delay==20'd800000) begin
						start_delaycnt<=0;
						if(!wr_input)
							main_state<=2'b01;
						else if(!rd_input)
							main_state<=2'b10;
				 end
			 end
			2'b01: begin  //向EEPROM寫入數據
				if(phase0)
					scl<=1;
				else if(phase2)
					scl<=0;
			
				case(i2c_state)
					ini: begin   //初始化EEPROM
						case(inner_state)
							start: begin
								if(phase1) begin
									link<=1;
									sda_buf<=0;
								 end
								if(phase3&&link) begin
									inner_state<=first;
									sda_buf<=1;
									link<=1;
								 end
							 end
							first: 
								if(phase3) begin
									sda_buf<=0;
									link<=1;
									inner_state<=second;
								 end
							second:
								if(phase3) begin
									sda_buf<=1;
									link<=1;
									inner_state<=third;
								 end
							third:
								if(phase3) begin
									sda_buf<=0;
									link<=1;
									inner_state<=fourth;
								 end
							fourth:
								if(phase3) begin
									sda_buf<=0;
									link<=1;
									inner_state<=fifth;
								 end
							fifth:
								if(phase3) begin
									sda_buf<=0;
									link<=1;
									inner_state<=sixth;
								 end
							sixth:
								if(phase3) begin
									sda_buf<=0;
									link<=1;
									inner_state<=seventh;
								 end
							seventh:
								if(phase3) begin
									sda_buf<=0;
									link<=1;
									inner_state<=eighth;
								 end
							eighth:
								if(phase3) begin
									link<=0;
									inner_state<=ack;
								 end
							ack: begin
								if(phase0) 
									sda_buf<=sda;
								if(phase1) begin
									if(sda_buf==1) 
										main_state<=3'b000;
								 end
								if(phase3) begin
									link<=1;
									sda_buf<=addr[7];
									inner_state<=first;
									i2c_state<=sendaddr;
								 end
							 end
						 endcase
					 end
					sendaddr: begin  //送相應字節的地址
						case(inner_state)
							first: 
								if(phase3) begin
									link<=1;
									sda_buf<=addr[6];
									inner_state<=second;
								 end
							second:
								if(phase3) begin
									link<=1;
									sda_buf<=addr[5];
									inner_state<=third;
								 end
							third:
								if(phase3) begin
									link<=1;
									sda_buf<=addr[4];
									inner_state<=fourth;
								 end
							fourth:
								if(phase3) begin
									link<=1;
									sda_buf<=addr[3];
									inner_state<=fifth;
								 end
							fifth:
								if(phase3) begin
									link<=1;
									sda_buf<=addr[2];
									inner_state<=sixth;
								 end
							sixth:
								if(phase3) begin
									link<=1;
									sda_buf<=addr[1];
									inner_state<=seventh;
								 end
							seventh:
								if(phase3) begin
									link<=1;
									sda_buf<=addr[0];
									inner_state<=eighth;
								 end
							eighth:
								if(phase3) begin
									link<=0;
									inner_state<=ack;
								 end
							ack: begin
								if(phase0) 
									sda_buf<=sda;
								if(phase1) begin
									if(sda_buf==1) 
										main_state<=3'b000;
								 end
								if(phase3) begin
									link<=1;
									sda_buf<=writeData_reg[7];
									inner_state<=first;
									i2c_state<=write_data;
								 end
							 end
						 endcase
					 end
					write_data: begin //寫入數據
						case(inner_state)
							first: 
								if(phase3) begin
									link<=1;
									sda_buf<=writeData_reg[6];
									inner_state<=second;
								 end
							second:
								if(phase3) begin
									link<=1;
									sda_buf<=writeData_reg[5];
									inner_state<=third;
								 end
							third:
								if(phase3) begin
									link<=1;
									sda_buf<=writeData_reg[4];
									inner_state<=fourth;
								 end
							fourth:
								if(phase3) begin
									link<=1;
									sda_buf<=writeData_reg[3];
									inner_state<=fifth;
								 end
							fifth:
								if(phase3) begin
									link<=1;
									sda_buf<=writeData_reg[2];
									inner_state<=sixth;
								 end
							sixth:
								if(phase3) begin
									link<=1;
									sda_buf<=writeData_reg[1];
									inner_state<=seventh;
								 end
							seventh:
								if(phase3) begin
									link<=1;
									sda_buf<=writeData_reg[0];
									inner_state<=eighth;
								 end
							eighth:
								if(phase3) begin
									link<=0;
									inner_state<=ack;
								 end
							ack: begin
								if(phase0) 
									sda_buf<=sda;
								if(phase1) begin
									if(sda_buf==1) 
										main_state<=2'b00;
								 end
								else if(phase3) begin
									link<=1;
									sda_buf<=0;
									inner_state<=stop;
								 end
							 end
							stop: begin
								if(phase1)
									sda_buf<=1;
								if(phase3) 
									main_state<=2'b00;
							 end
						 endcase
					 end
					default:
						main_state<=2'b00;
				 endcase
			 end
			2'b10: begin  //讀EEPROM
				if(phase0)
					scl<=1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本乱大交xxxxx| 亚洲视频在线一区观看| 色偷偷成人一区二区三区91| 激情六月婷婷综合| 欧美aaaaa成人免费观看视频| 亚洲成人在线观看视频| 亚洲va国产天堂va久久en| 亚洲综合图片区| 午夜视频一区在线观看| 日韩黄色片在线观看| 偷拍一区二区三区| 美女一区二区三区| 精品一区二区三区免费| 国产在线播放一区三区四| 国产乱理伦片在线观看夜一区| 精品一区二区三区久久| 国产一二三精品| 成人精品视频.| 91成人免费在线视频| 7777精品伊人久久久大香线蕉经典版下载 | bt7086福利一区国产| 91蝌蚪国产九色| 欧洲在线/亚洲| 欧美日韩一区二区在线观看| 欧美一区二区美女| 欧美国产乱子伦| 亚洲午夜精品一区二区三区他趣| 日韩影院精彩在线| 国产精品综合二区| 色悠悠久久综合| 日韩一级免费一区| 中文字幕一区二区日韩精品绯色| 亚洲人成网站色在线观看| 日本不卡一区二区三区| 成人性色生活片免费看爆迷你毛片| 95精品视频在线| 日韩精品中文字幕一区二区三区| 国产亚洲精品精华液| 亚洲国产综合在线| 粉嫩av一区二区三区在线播放| 91成人网在线| 久久精品视频免费观看| 亚洲18色成人| 成人免费毛片app| 91精品国产手机| 中文字幕一区二区三| 久久国产精品99精品国产 | 91捆绑美女网站| 26uuu色噜噜精品一区| 亚洲精品免费视频| 国内外成人在线| 欧美乱妇一区二区三区不卡视频 | 激情偷乱视频一区二区三区| 99久久免费视频.com| 亚洲精品一区二区三区精华液| 一区二区三区日韩精品| 成人教育av在线| 精品欧美一区二区三区精品久久| 亚洲精品日韩综合观看成人91| 国产成人精品免费一区二区| 日韩精品一区二区三区四区 | 欧美一级欧美三级| 一区二区三区.www| aaa国产一区| 国产三级久久久| 久久成人18免费观看| 欧美日韩电影在线| 亚洲人成人一区二区在线观看 | 粉嫩在线一区二区三区视频| 日韩女优av电影在线观看| 亚洲一区二区三区四区在线观看 | 亚洲精品国久久99热| 成人在线综合网| 久久九九全国免费| 国产精品996| 日本一区二区三区久久久久久久久不 | 久久草av在线| 日韩免费看网站| 卡一卡二国产精品| 精品久久久久久久一区二区蜜臀| 日韩av一级片| 精品日韩欧美在线| 国产一区亚洲一区| 久久精品视频免费| 波多野结衣一区二区三区| 国产精品福利一区| 91丨porny丨蝌蚪视频| 国产精品的网站| 色播五月激情综合网| 亚洲已满18点击进入久久| 欧美性一二三区| 免费久久99精品国产| 日韩精品一区二区三区在线观看 | 亚洲精品视频免费看| 欧美亚洲禁片免费| 日韩在线一区二区三区| 欧美r级电影在线观看| 国模套图日韩精品一区二区| 久久精品人人爽人人爽| 99国产精品国产精品久久| 一片黄亚洲嫩模| 日韩欧美一二区| 成人激情小说网站| 香蕉av福利精品导航| 欧美videofree性高清杂交| 国产99精品国产| 亚洲午夜三级在线| 精品国产成人系列| 94色蜜桃网一区二区三区| 丝瓜av网站精品一区二区| 精品国产精品网麻豆系列| 99精品久久只有精品| 视频在线观看91| 欧美国产日产图区| 91精品国产综合久久国产大片| 国产麻豆欧美日韩一区| 亚洲精品国产第一综合99久久 | 色综合中文字幕国产 | 国产美女在线观看一区| 国产蜜臀av在线一区二区三区| 99久久久久免费精品国产 | 精品国产亚洲一区二区三区在线观看 | 日韩av二区在线播放| 国产欧美一二三区| 欧美福利一区二区| 大胆亚洲人体视频| 蜜桃视频在线观看一区二区| 亚洲欧美激情插| 99久久精品国产一区二区三区| 激情欧美一区二区三区在线观看| 欧美高清视频一二三区| 国产精品一级片在线观看| 亚洲综合色噜噜狠狠| 国产精品你懂的| 久久伊人蜜桃av一区二区| 欧美日韩的一区二区| 91久久奴性调教| 91在线观看一区二区| 国产不卡在线播放| 精品一区二区三区免费视频| 天天综合天天做天天综合| 一区二区在线免费观看| 国产精品欧美一区二区三区| 久久日韩精品一区二区五区| 欧美精品自拍偷拍| 欧美日韩精品一区二区在线播放| aaa欧美日韩| 99久久久精品| 99精品视频在线观看| 成人国产亚洲欧美成人综合网 | 国产精品免费视频网站| 精品成人a区在线观看| 日韩欧美激情在线| 日韩视频免费观看高清完整版 | 久久久久久久网| 久久久精品综合| 欧美国产一区二区| 国产精品久久夜| 综合久久久久久久| 一区二区三区中文字幕精品精品| 中文字幕永久在线不卡| 国产精品白丝在线| 亚洲视频网在线直播| 一区二区三区在线看| 一区二区三区日韩欧美精品 | 正在播放一区二区| 欧美成人a在线| 26uuu精品一区二区三区四区在线| 欧美大片一区二区三区| 精品国产一区二区三区四区四| 欧美一级免费大片| 久久久久久久久久久久久夜| 国产嫩草影院久久久久| 亚洲日本中文字幕区| 亚洲综合视频在线| 美女在线视频一区| 国产成人午夜精品5599| 91女人视频在线观看| 欧美日韩综合色| 欧美成人艳星乳罩| 国产精品久久久久久久久免费相片| 国产精品久久久久久户外露出| 亚洲综合一二三区| 美女视频网站久久| 成人精品国产福利| 欧美日韩亚洲综合一区二区三区 | 精品噜噜噜噜久久久久久久久试看 | 91日韩在线专区| 欧美一区国产二区| 国产欧美日韩三级| 伊人性伊人情综合网| 久久99精品久久久久久| 91影院在线免费观看| 精品日韩在线一区| 日韩伦理av电影| 久久激五月天综合精品| 欧美影院一区二区| 欧美国产精品一区二区| 三级亚洲高清视频| 99re6这里只有精品视频在线观看|