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

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

?? eeprom_wr.v

?? 夏宇聞老師優秀的verilog教程課件
?? V
?? 第 1 頁 / 共 2 頁
字號:


/****************************************************************************
模塊名稱:EEPROM_WR  文件名:eeprom_wr.v
模塊功能:EEPROM讀寫器,可以根據MCU的并行數據、地址線和讀/寫的控制
          線對EEPROM (AT24C02/4/8/16)的行為模塊進行隨機的讀寫操作。
          而且本模塊為教學目的做了許多簡化,只能做隨機的讀寫操作,功能
          不完整,不能用做商業目的。
模塊說明:本模塊為可綜合模塊,可綜合為門級網表。
****************************************************************************/

`timescale 1ns/1ns 
module EEPROM_WR(SDA,SCL,ACK,RESET,CLK,WR,RD,ADDR,DATA);
output SCL;                //串行時鐘線
output ACK;               //讀寫一個周期的應答信號
input  RESET;             //復位信號
input  CLK;               //時鐘信號輸入
input  WR,RD;             //讀寫信號 
input[10:0] ADDR;           //地址線
inout SDA;                 //串行數據線
inout[7:0] DATA;            //并行數據線
reg ACK;
reg SCL;
reg WF,RF;                //讀寫操作標志
reg FF;                    //標志寄存器
reg [1:0] head_buf;        //啟動信號寄存器
reg[1:0] stop_buf;           //停止信號寄存器 
reg [7:0] sh8out_buf;         //EEPROM寫寄存器
reg [8:0] sh8out_state;        //EEPROM 寫狀態寄存器
reg [9:0] sh8in_state;         //EEPROM 讀狀態寄存器
reg [2:0] head_state;          //啟動狀態寄存器
reg [2:0] stop_state;          //停止狀態寄存器
reg [10:0] main_state;        //主狀態寄存器  
reg [7:0] data_from_rm;      //EEPROM讀寄存器
reg link_sda;               //SDA 數據輸入EEPROM開關  
reg link_read;               //EEPROM讀操作開關   
reg link_head;               //啟動信號開關
reg link_write;              //EEPROM寫操作開關
reg link_stop;               //停止信號開關 
wire sda1,sda2,sda3,sda4;   
 
//--------------串行數據在開關的控制下有次序的輸出或輸入-------------------
assign sda1  = (link_head)     ?   head_buf[1]    :  1'b0;
assign sda2  = (link_write)    ?   sh8out_buf[7]   :  1'b0;
assign sda3  = (link_stop)     ?   stop_buf[1]     :  1'b0;
assign sda4  = (sda1 | sda2 | sda3);
assign SDA  = (link_sda)       ?  sda4          :  1'bz;
assign DATA = (link_read)      ?  data_from_rm   :  8'hzz;

//--------------------------------主狀態機狀態定義------------------------------------------
parameter		
                  Idle        = 11'b00000000001,
                    Ready     = 11'b00000000010,	
               Write_start    = 11'b00000000100,    
                Ctrl_write    = 11'b00000001000,	
                  Addr_write  = 11'b00000010000, 
		         Data_write   = 11'b00000100000,	 
		        Read_start    = 11'b00001000000,	    
		        Ctrl_read     = 11'b00010000000,	     
		         Data_read    = 11'b00100000000,	     
		         Stop         = 11'b01000000000,	     
 		          Ackn        = 11'b10000000000,

//-------------------------并行數據串行輸出狀態-----------------------------
                sh8out_bit7     = 9'b000000001,
                sh8out_bit6     = 9'b000000010,
                sh8out_bit5     = 9'b000000100,
                sh8out_bit4     = 9'b000001000,		
                sh8out_bit3     = 9'b000010000,
                sh8out_bit2     = 9'b000100000,
                sh8out_bit1     = 9'b001000000,
                sh8out_bit0     = 9'b010000000,
                sh8out_end     = 9'b100000000;
//--------------------------串行數據并行輸出狀態----------------------------
 parameter      sh8in_begin    = 10'b0000000001,
                sh8in_bit7     = 10'b0000000010,
                sh8in_bit6     = 10'b0000000100,
                sh8in_bit5     = 10'b0000001000,		
                sh8in_bit4     = 10'b0000010000,
                sh8in_bit3     = 10'b0000100000,
                sh8in_bit2     = 10'b0001000000,
                sh8in_bit1     = 10'b0010000000,
                sh8in_bit0     = 10'b0100000000,
                sh8in_end      = 10'b1000000000,
//---------------------------------啟動狀態----------------------------------     
                head_begin   = 3'b001,
                head_bit     = 3'b010,
                head_end     = 3'b100,                
//---------------------------------停止狀態----------------------------------
                stop_begin   = 3'b001,
                stop_bit     = 3'b010,
                stop_end     = 3'b100;
                
 parameter       YES             = 1,
                 NO              = 0;                

//-------------產生串行時鐘scl,為輸入時鐘的二分頻-------------------
always @(negedge CLK)    
  if(RESET)
     SCL <= 0;
  else   	  
     SCL <= ~SCL; 

//-----------------------------主狀態機程序----------------------------------
always @ (posedge CLK)
  if(RESET)
    begin     
     link_read  <= NO;
     link_write <= NO;
     link_head  <= NO;
     link_stop  <= NO;
     link_sda   <= NO;
     ACK        <= 0;
     RF         <= 0;
     WF         <= 0;
     FF         <= 0;
     main_state <= Idle; 
    end
  else
   begin   
     casex(main_state)
            Idle:
                 begin
                  link_read  <= NO;
                  link_write <= NO;
                  link_head  <= NO;
                  link_stop  <= NO;
                  link_sda   <= NO;
                  if(WR)
                    begin
                    	 WF <= 1;
                    	 main_state <= Ready ;
                    	end
                  else if(RD)
                    begin
                    	 RF <= 1;
                    	 main_state <= Ready ;
                    	end
                 else
                   begin
                    WF <= 0;
                    RF <= 0; 
                    main_state <= Idle;
                   end
                 end 
         Ready:  
      	       begin
      		       link_read        <= NO; 
 	   	       link_write       <= NO;
 	              link_stop        <= NO;
 	              link_head        <= YES;
 	              link_sda         <= YES;			 
	              head_buf[1:0]    <= 2'b10;	
 	              stop_buf[1:0]    <= 2'b01;	
 	              head_state       <= head_begin;
	              FF               <= 0;	
	              ACK         	    <= 0;	 
	              main_state       <= Write_start;
	            end
  Write_start: 
     	          if(FF == 0)
	               shift_head;		 
		          else 
		            begin
		              sh8out_buf[7:0]  <= {1'b1,1'b0,1'b1,1'b0,ADDR[10:8],1'b0};
		              link_head        <= NO;
		              link_write       <= YES;
		              FF               <= 0;   
		              sh8out_state     <= sh8out_bit6;
		              main_state       <= Ctrl_write;
		            end
  Ctrl_write: 
                if(FF ==0)
	               shift8_out;
 	   	       else
 	   	         begin
 	   	              sh8out_state    <= sh8out_bit7;
		              sh8out_buf[7:0] <= ADDR[7:0];
		              FF              <= 0;
		              main_state      <= Addr_write;
		           end	      	    
  Addr_write: 
                if(FF == 0)
		            shift8_out;
		          else 
		            begin
		              FF <= 0;	
		              if(WF)
		                begin	 
		                  sh8out_state    <= sh8out_bit7;		                  
		                  sh8out_buf[7:0] <= DATA;
		                  main_state      <= Data_write;
		                end
		              if(RF)
		                begin
		                  head_buf        <= 2'b10;
		                  head_state       <= head_begin;
		                  main_state      <= Read_start; 
		                end
		            end  	  
  Data_write:  
                 if(FF == 0)
		             shift8_out;
      		     else  
		            begin	
		             stop_state       <= stop_begin;
		             main_state       <= Stop;
		             link_write       <= NO;
		             FF               <= 0;
		            end

  Read_start:  
                if(FF == 0)
	                shift_head;
	             else 
		            begin	
		              sh8out_buf       <= {1'b1,1'b0,1'b1,1'b0,ADDR[10:8],1'b1};
		              link_head        <= NO;
                            link_sda         <= YES;
		              link_write       <= YES;
		              FF               <= 0;
		              sh8out_state     <= sh8out_bit6;
		              main_state       <= Ctrl_read;
 		            end
  Ctrl_read:	
                if(FF == 0)	
	               shift8_out; 
      	       else  
		            begin	
		              link_sda         <= NO;
		              link_write       <= NO;
		              FF               <= 0;
		              sh8in_state      <= sh8in_begin;
		              main_state       <= Data_read;
	               end
  Data_read:	
               if(FF == 0) 
	              shift8in;
   	         else 
		           begin	
		              link_stop        <= YES;
		              link_sda         <= YES;
		              stop_state       <= stop_bit;
		              FF               <= 0;
		              main_state       <= Stop;
		           end  
  Stop: 
               if(FF == 0)
		           shift_stop;
  		         else 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成年人国产精品| 成人免费视频一区二区| 国产精品成人一区二区三区夜夜夜| 日韩网站在线看片你懂的| 91在线视频18| av午夜一区麻豆| 色哟哟精品一区| 在线观看亚洲精品| 欧美性猛片aaaaaaa做受| 欧美日韩国产美女| 日韩一区二区三区电影| 久久色.com| 国产精品久久久久永久免费观看| 国产精品视频在线看| 亚洲人123区| 亚洲成人av一区二区三区| 日本欧美韩国一区三区| 国产一区二区91| a级精品国产片在线观看| 在线免费观看日韩欧美| 7777精品伊人久久久大香线蕉经典版下载 | 91精品婷婷国产综合久久| 在线综合+亚洲+欧美中文字幕| 91精品国产综合久久久久久久久久| 日韩天堂在线观看| 国产欧美精品一区aⅴ影院| 成人欧美一区二区三区黑人麻豆| 一区二区三区精品| 久久电影国产免费久久电影| 成人听书哪个软件好| 欧美日韩视频一区二区| 久久综合久久综合亚洲| 国产精品伦一区二区三级视频| 亚洲视频 欧洲视频| 无吗不卡中文字幕| 国产麻豆视频精品| 在线日韩一区二区| 国产欧美日韩中文久久| 亚洲高清在线视频| 国产成人综合精品三级| 欧美群妇大交群中文字幕| 欧美激情在线看| 欧美aⅴ一区二区三区视频| 91小视频在线| 久久精品一区二区三区不卡| 亚洲人成网站在线| 高清国产一区二区三区| 欧美一级片免费看| 亚洲精品第1页| 成人性生交大合| 日韩亚洲欧美一区二区三区| 亚洲视频免费看| 国产成人精品综合在线观看 | 亚洲自拍偷拍综合| 国产a精品视频| 日韩女优视频免费观看| 夜夜操天天操亚洲| 从欧美一区二区三区| 日韩亚洲欧美中文三级| 亚洲国产精品视频| 北条麻妃一区二区三区| 久久久久国产精品麻豆| 青青青爽久久午夜综合久久午夜| 99久久精品免费看国产| 亚洲国产精品成人综合| 国产精品综合一区二区三区| 91麻豆精品久久久久蜜臀| 亚洲午夜在线视频| 色婷婷国产精品久久包臀 | 欧美羞羞免费网站| 亚洲免费观看视频| 99国产一区二区三精品乱码| 国产日产亚洲精品系列| 国产一区二区精品久久99| 久久午夜国产精品| 国产乱码精品一品二品| 日韩一区二区三| 婷婷丁香激情综合| 欧美精品日日鲁夜夜添| 日韩国产在线观看一区| 337p亚洲精品色噜噜| 免费在线成人网| 日韩欧美精品在线视频| 激情五月婷婷综合| 久久久久9999亚洲精品| 国产成人免费在线观看| 国产精品午夜电影| 日本乱码高清不卡字幕| 亚洲自拍偷拍av| 欧美一区二视频| 国产精品亚洲一区二区三区妖精 | 一区二区三区小说| 欧美午夜一区二区三区| 麻豆免费精品视频| 欧美精品一区二| 91在线精品一区二区| 一区二区在线免费| 91精品福利在线一区二区三区| 日本中文字幕一区二区有限公司| 精品国精品国产| jizz一区二区| 日本va欧美va瓶| 中文字幕高清不卡| 欧美日韩国产大片| 国产高清无密码一区二区三区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 中文字幕免费不卡在线| 成人av在线观| 午夜私人影院久久久久| 精品粉嫩超白一线天av| 色诱视频网站一区| 美国精品在线观看| 中文字幕在线视频一区| 777a∨成人精品桃花网| 国产成人在线视频网址| 亚洲夂夂婷婷色拍ww47| 精品国产免费一区二区三区四区 | 久久99在线观看| 亚洲欧洲成人精品av97| 7777女厕盗摄久久久| 成人午夜激情片| 日韩电影免费在线看| 国产精品国产自产拍高清av | 国产成人一区在线| 亚洲综合激情另类小说区| 国产片一区二区三区| 欧美丰满高潮xxxx喷水动漫| 91香蕉视频mp4| 国产夫妻精品视频| 久久精品99国产精品日本| 亚洲国产欧美日韩另类综合| 日本一区二区三区国色天香| 日韩视频免费直播| 欧美日韩精品欧美日韩精品一| 不卡电影一区二区三区| 国产一区在线看| 久久国产剧场电影| 蜜桃av一区二区| 天天影视涩香欲综合网| 亚洲一区二区视频| 亚洲视频一区二区免费在线观看| 久久日一线二线三线suv| 日韩欧美国产综合在线一区二区三区| 91豆麻精品91久久久久久| 成人性生交大合| 成人高清视频在线| 粉嫩一区二区三区在线看| 国产九色sp调教91| 粉嫩绯色av一区二区在线观看| 国产麻豆视频一区二区| 国产精品1024| 成人网页在线观看| 97精品国产露脸对白| 99re亚洲国产精品| 91麻豆国产在线观看| 一本久道中文字幕精品亚洲嫩| 9i看片成人免费高清| 一本一道波多野结衣一区二区| 不卡的电影网站| 91麻豆精品在线观看| 欧美日韩在线不卡| 欧美一卡2卡三卡4卡5免费| 欧美一区日韩一区| 日韩欧美成人午夜| 久久精品免视看| 亚洲日本在线a| 亚洲一区视频在线观看视频| 亚洲午夜精品在线| 久久成人18免费观看| 丁香六月综合激情| 91麻豆精品秘密| 欧美一三区三区四区免费在线看 | 污片在线观看一区二区| 日韩中文字幕一区二区三区| 久久精品国产久精国产爱| 国产成人在线电影| 在线看一区二区| 日韩精品一区二区三区三区免费| 国产日韩精品一区二区三区在线| 国产精品久久久久精k8| 亚洲一区二区在线免费看| 久草在线在线精品观看| 成人高清免费观看| 欧美精品久久99久久在免费线| 日韩亚洲电影在线| 国产精品卡一卡二| 日韩精品电影在线观看| 国产成人精品亚洲777人妖| 在线这里只有精品| 久久女同精品一区二区| 亚洲影院免费观看| 国产在线精品免费av| 一本色道a无线码一区v| 欧美成人精品1314www| 亚洲另类中文字| 国产麻豆精品在线| 欧美体内she精视频| 国产欧美一区二区精品性色超碰| 一区二区三区国产精华| 国产一区二区看久久|