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

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

?? tst_bench_top.v

?? FPGA實現模擬I2C協(xié)議的過程
?? V
字號:
`include "timescale.v"

module tst_bench_top();

	//連線和寄存器
	reg  clk;
	reg  rstn;

	wire [31:0] adr;
	wire [ 7:0] dat_i, dat_o;
	wire we;
	wire stb;
	wire cyc;
	wire ack;
	wire inta;


	//q保存狀態(tài)寄存器內容
	reg [7:0] q, qq;

	wire scl, scl_o, scl_oen;
	wire sda, sda_o, sda_oen;

	//寄存器地址
	parameter PRER_LO = 3'b000;//分頻寄存器低位地址
	parameter PRER_HI = 3'b001;//高位地址
	parameter CTR     = 3'b010;//控制寄存器地址,(7)使能位|6中斷使能位|5-0其余保留位
	parameter RXR     = 3'b011;//接受寄存器地址,(7)接受到的最后一個字節(jié)的數據
	parameter TXR     = 3'b011;//傳輸寄存器地址,(7)傳輸地址時最后一位為讀寫位,1為讀
	parameter CR      = 3'b100;//命令寄存器地址,
	//(7)開始|6結束|5讀|4寫|3應答(作為接受方時,發(fā)送應答信號,“0”為應答,“1”為不應答)|2保留位|1保留位|0中斷應答位,這八位自動清除
	parameter SR      = 3'b100;//狀態(tài)寄存器地址,(7)接受應答位(“0”為接受到應答)|6忙位(產生開始信號后變?yōu)?,結束信號后變?yōu)?)|5仲裁位|4-2保留位|1傳輸中位(1表示正在傳輸數據,0表示傳輸結束)|中斷標志位

	parameter TXR_R   = 3'b101; // undocumented / reserved output
	parameter CR_R    = 3'b110; // undocumented / reserved output

	// 產生時鐘信號,一個時間單位為1ns,周期為10ns,頻率為100MHz。
	always #5 clk = ~clk;

	//連接master模擬模塊
	wb_master_model #(8, 32) u0 (
		.clk(clk),//時鐘
		.rst(rstn),//重起
		.adr(adr),//地址
		.din(dat_i),//輸入的數據
		.dout(dat_o),//輸出的數據
		.cyc(cyc),
		.stb(stb),
		.we(we),
		.sel(),
		.ack(ack),//應答
		.err(1'b0),
		.rty(1'b0)
	);

	//連接i2c接口
	i2c_master_top i2c_top (
	//連接到master模擬模塊部分
		.wb_clk_i(clk), //時鐘
		.wb_rst_i(1'b0), //同步重起位
		.arst_i(rstn), //異步重起
		.wb_adr_i(adr[2:0]), //地址輸入
		.wb_dat_i(dat_o), //數據輸入接口
		.wb_dat_o(dat_i), //數據從接口輸出
		.wb_we_i(we), //寫使能信號
		.wb_stb_i(stb), //片選信號,應該一直為高
		.wb_cyc_i(cyc), //?
		.wb_ack_o(ack), //應答信號輸出到master模擬模塊
		.wb_inta_o(inta),//中斷信號輸出,到master模擬模塊

		//輸出的i2c信號,連接到slave模擬模塊
		.scl_pad_i(scl), 
		.scl_pad_o(scl_o), 
		.scl_padoen_o(scl_oen), 
		.sda_pad_i(sda), 
		.sda_pad_o(sda_o), 
		.sda_padoen_o(sda_oen)
	);

	//連接到slave模擬模塊
	i2c_slave_model #(7'b1010_000)  i2c_slave (
		.scl(scl),
		.sda(sda)
	);

	//為master模擬模塊產生scl和sda的三態(tài)緩沖
	assign scl = scl_oen ? 1'bz : scl_o; // create tri-state buffer for i2c_master scl line
	assign sda = sda_oen ? 1'bz : sda_o; // create tri-state buffer for i2c_master sda line

	//上拉
	pullup p1(scl); // pullup scl line
	pullup p2(sda); // pullup sda line

	//初始化
	initial
	  begin

//	      force i2c_slave.debug = 1'b1; // enable i2c_slave debug information
//	      force i2c_slave.debug = 1'b0; // disable i2c_slave debug information

	      $display("\n狀態(tài): %t  I2C接口測試開始!\n\n", $time);


	      // 初始值
	      clk = 0;

	      //重起系統(tǒng)
	      rstn = 1'b1; // negate reset
	      #2;
	      rstn = 1'b0; // assert reset
	      repeat(20) @(posedge clk);
	      rstn = 1'b1; // negate reset

	      $display("狀態(tài): %t  完成系統(tǒng)重起!", $time);

	      @(posedge clk);

	      // 對接口編程


	      // 寫內部寄存器
	      // 分頻100M/100K*5=O'200=h'C8
	      u0.wb_write(1, PRER_LO, 8'hc7); 
	      u0.wb_write(1, PRER_HI, 8'h00); 
	      $display("狀態(tài): %t   完成分頻寄存器操作!", $time);

	      //讀分頻寄存器內容
	      u0.wb_cmp(0, PRER_LO, 8'hc8); 
	      u0.wb_cmp(0, PRER_HI, 8'h00); 
	      $display("狀態(tài): %t    完成分頻寄存器確認操作!", $time);

	      //接口使能
	      u0.wb_write(1, CTR,     8'h80); 
	      $display("狀態(tài): %t     完成接口使能!", $time);

	      // 驅動slave地址
	      // h'a0=b'1010_0000,地址+寫狀態(tài),寫入的地址為h'50
	      u0.wb_write(1, TXR,     8'ha0); 
	      //命令內容為b'1001_0000,產生開始位,并設置寫狀態(tài)
	      u0.wb_write(0, CR,      8'h90); 
	      $display("狀態(tài): %t 產生開始位, 然后寫命令a0(地址+寫),命令開始!", $time);

	      // 檢查狀態(tài)位信息
	      // 檢查傳輸是否結束
	      u0.wb_read(1, SR, q);
	      while(q[1])
	           u0.wb_read(0, SR, q); 
	      $display("狀態(tài): %t 地址驅動寫操作完成!", $time);

	      // 待寫的地址為h'01
	      u0.wb_write(1, TXR,     8'h01); 
	      // 產生寫命令b'0001_0000
	      u0.wb_write(0, CR,      8'h10); 
	      $display("狀態(tài): %t  待寫地址為01,命令開始!", $time);

	      // 檢查狀態(tài)位
	      u0.wb_read(1, SR, q);
	      while(q[1])
	           u0.wb_read(0, SR, q); 
	      $display("狀態(tài): %t 寫操作完成!", $time);

	      // 寫入內容
	      u0.wb_write(1, TXR,     8'ha5); 
	      u0.wb_write(0, CR,      8'h10); 
	      $display("狀態(tài): %t 寫入內容為a5,開始寫入過程!", $time);

	      u0.wb_read(1, SR, q);
	      while(q[1])
	           u0.wb_read(1, SR, q); 
	      $display("狀態(tài): %t 寫a5到地址h'01中完成!", $time);

	      // 寫入下一個地址5a
	      u0.wb_write(1, TXR,     8'h5a); // present data
	      // 寫入并停止
	      u0.wb_write(0, CR,      8'h50); // set command (stop, write)
	      $display("狀態(tài): %t 寫5a到下一個地址,產生停止位!", $time);


	      u0.wb_read(1, SR, q);
	      while(q[1])
	           u0.wb_read(1, SR, q); // poll it until it is zero
	      $display("狀態(tài): %t 寫第二個地址結束!", $time);

//	      #100000; // wait for 100us.
//	      $display("status: %t wait 100us", $time);


	      // 讀

	      // 驅動slave地址
	      u0.wb_write(1, TXR,     8'ha0); 
	      u0.wb_write(0, CR,      8'h90); 
	      $display("狀態(tài): %t  產生開始位,寫命令a0 (slave地址+write)", $time);


	      u0.wb_read(1, SR, q);
	      while(q[1])
	           u0.wb_read(1, SR, q); // poll it until it is zero
	      $display("狀態(tài): %t slave地址驅動完成!", $time);

	      // 發(fā)送地址
	      u0.wb_write(1, TXR,     8'h01); 
	      u0.wb_write(0, CR,      8'h10); 
	      $display("狀態(tài): %t 發(fā)送地址01!", $time);


	      u0.wb_read(1, SR, q);
	      while(q[1])
	           u0.wb_read(1, SR, q); 
	      $display("狀態(tài): %t 地址發(fā)送完成!", $time);

	      // 驅動slave地址,1010_0001,h'50+read
	      u0.wb_write(1, TXR,     8'ha1); 
	      u0.wb_write(0, CR,      8'h90); 
	      $display("狀態(tài): %t 產生重復開始位, 讀地址+開始位", $time);


	      u0.wb_read(1, SR, q);
	      while(q[1])
	           u0.wb_read(1, SR, q); 
	      $display("狀態(tài): %t 命令結束!", $time);

	      // 讀數據
	      u0.wb_write(1, CR,      8'h20); 
	      $display("狀態(tài): %t 讀+應答命令", $time);


	      u0.wb_read(1, SR, q);
	      while(q[1])
	           u0.wb_read(1, SR, q); 
	      $display("狀態(tài): %t 讀結束!", $time);

	      // 檢查讀的內容
	      u0.wb_read(1, RXR, qq);
	      if(qq !== 8'ha5)
	        $display("\n錯誤: 需要的是a5, received %x at time %t", qq, $time);

	      // 讀下一個地址內容
	      u0.wb_write(1, CR,      8'h20); 
	      $display("狀態(tài): %t 讀+ 應答", $time);


	      u0.wb_read(1, SR, q);
	      while(q[1])
	           u0.wb_read(1, SR, q); 
	      $display("狀態(tài): %t 第二個地址讀結束!", $time);


	      u0.wb_read(1, RXR, qq);
	      if(qq !== 8'h5a)
	        $display("\n錯誤: 需要的是5a, received %x at time %t", qq, $time);

	      // 讀
	      u0.wb_write(1, CR,      8'h20); 
	      $display("狀態(tài): %t 讀 + 應答", $time);


	      u0.wb_read(1, SR, q);
	      while(q[1])
	           u0.wb_read(1, SR, q); 
	      $display("狀態(tài): %t 第三個地址讀完成!", $time);


	      u0.wb_read(1, RXR, qq);
	      $display("狀態(tài): %t 第三個地址內容是 %x !", $time, qq);

	      // 讀
	      u0.wb_write(1, CR,      8'h28); 
	      $display("狀態(tài): %t 讀 + 不應答!", $time);


	      u0.wb_read(1, SR, q);
	      while(q[1])
	           u0.wb_read(1, SR, q); 
	      $display("狀態(tài): %t 第四個地址讀完成!", $time);


	      u0.wb_read(1, RXR, qq);
	      $display("狀態(tài): %t 第四個地址內容為 %x !", $time, qq);

	      // 檢查不存在的slave地址
	      // drive slave address
	      u0.wb_write(1, TXR,     8'ha0); 
	      u0.wb_write(0, CR,      8'h90); 
	      $display("狀態(tài): %t 產生開始位, 發(fā)送命令 a0 (slave地址+寫). 檢查非法地址!", $time);


	      u0.wb_read(1, SR, q);
	      while(q[1])
	           u0.wb_read(1, SR, q); // poll it until it is zero
	      $display("狀態(tài): %t 命令結束!", $time);

	      // 發(fā)送內存地址
	      u0.wb_write(1, TXR,     8'h10); 
	      u0.wb_write(0, CR,      8'h10); 
	      $display("狀態(tài): %t 發(fā)送slave內存地址10!", $time);


	      u0.wb_read(1, SR, q);
	      while(q[1])
	           u0.wb_read(1, SR, q); 
	      $display("狀態(tài): %t 地址發(fā)送完畢!", $time);

	      // slave發(fā)送不應答
	      $display("狀態(tài): %t 檢查不應答位!", $time);
	      if(!q[7])
	        $display("\n錯誤: 需要 NACK, 接受到 ACK\n");

	      // 從slave讀數據
	      u0.wb_write(1, CR,      8'h40); 
	      $display("狀態(tài): %t 產生'stop'位", $time);


	      u0.wb_read(1, SR, q);
	      while(q[1])
	      u0.wb_read(1, SR, q); // poll it until it is zero
	      $display("狀態(tài): %t 結束!", $time);

	      #25000; // wait 25us
	      $display("\n\n狀態(tài): %t 測試結束!", $time);
	      $finish;
	  end

endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
风流少妇一区二区| 日本成人在线视频网站| 91影院在线观看| 中文字幕一区二区在线播放 | 精品播放一区二区| 国产二区国产一区在线观看| 久久人人爽爽爽人久久久| 国产精品自拍三区| 中文字幕一区二区三区av| 日本韩国一区二区三区视频| 亚洲高清中文字幕| 精品国偷自产国产一区| 成人午夜看片网址| 亚洲综合999| 精品国产乱码久久久久久蜜臀| 国产成人在线免费| 一区二区欧美在线观看| 在线观看91av| 成人性生交大片免费看中文网站| 自拍偷拍欧美激情| 欧美一级理论性理论a| 国产盗摄视频一区二区三区| 洋洋av久久久久久久一区| 日韩久久精品一区| 色综合激情五月| 久久精品噜噜噜成人av农村| 中文字幕av资源一区| 欧美日韩一区中文字幕| 久久99精品久久久久久国产越南| 日韩美女精品在线| 欧美电影免费观看高清完整版| a亚洲天堂av| 日本一区中文字幕| 国产精品福利av| 日韩欧美国产午夜精品| 91免费视频网址| 国产麻豆日韩欧美久久| 午夜精品在线看| 欧美国产精品一区二区| 日韩一级片在线播放| 不卡一区二区中文字幕| 久久福利视频一区二区| 亚洲美女精品一区| 国产欧美精品一区二区色综合| 51午夜精品国产| www.日韩在线| 久久精品国产一区二区| 亚洲国产sm捆绑调教视频| 中文在线资源观看网站视频免费不卡 | 精品久久久久av影院| 欧美在线你懂的| 99久久精品国产精品久久| 激情综合网最新| 日韩电影一区二区三区| 亚洲伊人色欲综合网| 一区二区中文字幕在线| 国产偷国产偷亚洲高清人白洁| 欧美一级国产精品| 欧美日韩亚洲国产综合| 一本到高清视频免费精品| 成人一区二区三区中文字幕| 精品一区二区av| 久久99国产乱子伦精品免费| 日本欧美在线观看| 日韩av在线发布| 日韩电影网1区2区| 免费欧美在线视频| 奇米四色…亚洲| 免费成人你懂的| 裸体歌舞表演一区二区| 麻豆精品一二三| 久久99精品久久久久久国产越南 | 激情欧美日韩一区二区| 免费高清在线视频一区·| 日韩不卡免费视频| 美腿丝袜在线亚洲一区 | 亚洲精品欧美激情| 亚洲精品国产成人久久av盗摄| 亚洲精选免费视频| 亚洲精品乱码久久久久久日本蜜臀| 亚洲欧洲性图库| 中文字幕第一区| 日韩理论片中文av| 一区二区三区在线视频播放| 亚洲精品日韩一| 午夜精彩视频在线观看不卡| 香蕉久久夜色精品国产使用方法 | 亚洲国产激情av| 亚洲三级电影全部在线观看高清| 亚洲欧洲精品天堂一级| 亚洲欧美另类小说| 亚洲国产aⅴ天堂久久| 石原莉奈一区二区三区在线观看| 青草av.久久免费一区| 麻豆久久久久久久| 国产一区91精品张津瑜| 成人动漫一区二区在线| 91国在线观看| 日韩欧美国产三级电影视频| 久久免费视频色| 亚洲欧美另类久久久精品| 亚洲一区二区欧美日韩| 日本免费新一区视频| 国产成人精品一区二区三区网站观看| 99re热视频精品| 制服丝袜成人动漫| 中文字幕av在线一区二区三区| 亚洲精品久久久蜜桃| 美国毛片一区二区| 99久久婷婷国产综合精品| 精品视频免费在线| 久久久国产精华| 亚洲国产精品久久人人爱蜜臀| 久久精品国产一区二区三区免费看 | 国产香蕉久久精品综合网| 国产精品二三区| 免费国产亚洲视频| 91麻豆国产在线观看| 日韩美女视频一区二区在线观看| 亚洲欧洲精品一区二区三区不卡| 日韩va亚洲va欧美va久久| 暴力调教一区二区三区| 91精品久久久久久久久99蜜臂| 国产欧美日本一区二区三区| 午夜精品久久久久久久久久久| 国产91在线观看丝袜| 欧美精品色综合| 亚洲裸体xxx| 黑人精品欧美一区二区蜜桃| 欧美性大战久久久久久久| 久久网这里都是精品| 亚洲第一久久影院| 99国产精品国产精品久久| 久久午夜羞羞影院免费观看| 亚洲444eee在线观看| 成人av在线播放网站| 久久亚区不卡日本| 奇米四色…亚洲| 欧美久久久久久久久| 亚洲激情网站免费观看| 成人av综合一区| 久久精品人人爽人人爽| 美女诱惑一区二区| 欧美老年两性高潮| 亚洲最新在线观看| 91性感美女视频| 国产精品女同互慰在线看| 久久99精品久久久久久国产越南| 欧美男人的天堂一二区| 亚洲欧美一区二区三区极速播放 | 国产精品综合av一区二区国产馆| 欧美疯狂性受xxxxx喷水图片| 亚洲乱码国产乱码精品精98午夜| 成人午夜激情在线| 国产喂奶挤奶一区二区三区| 精品无码三级在线观看视频 | 久久婷婷久久一区二区三区| 日韩精品色哟哟| 欧美日本一区二区| 五月天欧美精品| 欧美午夜视频网站| 又紧又大又爽精品一区二区| 99精品黄色片免费大全| 国产精品国产三级国产a| av亚洲产国偷v产偷v自拍| 国产精品灌醉下药二区| av激情综合网| 亚洲黄色免费电影| 欧美色综合久久| 日韩中文字幕区一区有砖一区 | 国产成人免费网站| 国产情人综合久久777777| 国产精品自拍一区| 国产精品视频yy9299一区| fc2成人免费人成在线观看播放| 久久精品人人做人人综合| 成人免费观看男女羞羞视频| 国产精品短视频| 欧美性xxxxxxxx| 日本午夜精品视频在线观看| 欧美精品一区二区久久婷婷| 国产一区二区0| 日韩一区中文字幕| 在线国产电影不卡| 日韩精品福利网| 2023国产精华国产精品| 成人高清视频免费观看| 一区二区三区国产豹纹内裤在线| 欧美性色综合网| 九九在线精品视频| 国产精品久久一卡二卡| 欧美日韩一区二区电影| 免费日本视频一区| 欧美激情一区二区三区在线| 91美女片黄在线| 免费成人在线播放| 国产精品网曝门| 欧美精品一卡二卡| 成人综合在线观看| 婷婷综合五月天|