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

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

?? con_pcf8563.vhd

?? 是一些很好的FPGA設計實例
?? VHD
字號:
--文件名:con_pcf8563.vhd

--功  能:讀出pcf8563中的時鐘信號

--說  明:PCF8563芯片是PHILIPS公司推出的一款工業級內含I2C總線接口功能的具有極低功耗的多功能時鐘/日歷芯片。

--該程序實現的功能是把PCF8563芯片中的時鐘讀出來顯示,而且編寫該程序的主要目的是教會大家如何對該時鐘芯片進行編程控制,

--因此我們只是把芯片中時鐘的秒位、分位讀出,并用數碼管顯示。PCF8563芯片的功能十分的強大,我們可以應用它設計出很多有用的

--產品,目前,我們教會大家應用這種芯片的方法。用戶可以根據自身的需要對芯片不同的地址和數據進行操作實現自己功能。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;  --調試成功

entity con_pcf8563 is
    Port ( sysclk,reset : in std_logic;
           sda,scl : inout std_logic;
		 cs: out std_logic; 
		 shift_led : out std_logic_vector(3 downto 0);
		 led:out std_logic_vector(8 downto 1));
end con_pcf8563;

architecture Behavioral of con_pcf8563 is

type state is (prepare,start,transmit_slave_address,check_ack1,transmit_sub_address,check_ack2,
transmit_data,check_ack3,transmit_data1,transmit_data2,check_ack4,check_ack44,start1,start2,transmit_slave_address1,
transmit_slave_address2,
transmit_sub_address1,check_ack5,check_ack6,check_ack7,read_data,stop);     --定義狀態機的各子狀態;

signal current_state:state;                         --定義信號;
signal clock,shift_clk:std_logic;
signal code_led : std_logic_vector(3 downto 0);
signal reg_led : std_logic_vector(8 downto 1);

begin
pulse:process(sysclk,reset)                    --進程1,分頻得到f為400khz的時鐘信號
variable count:integer range 0 to 125000;
begin
   if reset='0' then count:=0;
	  elsif rising_edge(sysclk) then
	    count:=count+1;
       if count=65000 then clock<='1';
		   elsif count=125000 then clock<='0';count:=0;    --frequency:400kHz 
		   end if;
	  end if;
end process pulse;

statemachine:process(clock,reset)               --進程2,狀態機的轉換
variable slave_address1,sub_address1,data1,slave_address2,sub_address2:std_logic_vector(8 downto 1);
variable cnt:std_logic_vector(6 downto 0);
variable cnt1:integer range 0 to 8;
variable count1:integer range 0 to 40;

begin
if  reset='0'  then  count1:=0;cnt:="0000000";cnt1:=8;cs<='1';
sda<='1';scl<='1';slave_address1:="10100010";slave_address2:="10100011";
sub_address1:="00000000"; sub_address2:="00000010";
current_state<=prepare;data1:="00000000";	 
reg_led<="11111111";
   	elsif rising_edge(clock) then  
	 case current_state is
	 when prepare=>cnt:=cnt+1;--    --準備狀態,等各個器件復位
	      if cnt="0000010" then cnt:="0000000";current_state<=start;
	   	 else current_state<=prepare;
		 end if;
	 when start=>count1:=count1+1;        --起始信號產生狀態
	                    case count1 is
				    when 1=>sda<='1';
				    when 2=>scl<='1';
				    when 3=>sda<='0';
				    when 4=>scl<='0';
				    when 5=>count1:=0;current_state<=transmit_slave_address;
				    when others=>null;
				    end case;
	 when transmit_slave_address=>count1:=count1+1;  --發送器件從地址
	                     case count1 is
				    when 1=>sda<=slave_address1(cnt1);
				    when 2=>scl<='1';
				    when 3=>scl<='0';
				    when 4=>cnt1:=cnt1-1;count1:=0;
					  if cnt1=0 then cnt1:=8;
					  current_state<=check_ack1;
					  else current_state<=transmit_slave_address;
					  end if;
				    when others=>null;
				    end case;
	 when check_ack1=>count1:=count1+1;         --查詢應答信號
	                     case count1 is
				    when 1=>sda<='0';
				    when 2=>scl<='1';
				   
				    when 3=>scl<='0';
				    				    				    
				    when 4=>
				          current_state<=transmit_sub_address;
						  
						  count1:=0;
				    when others=>null;
				    end case;
       when transmit_sub_address=>count1:=count1+1; reg_led<="11111110"; --發送器件子地址
	                     case count1 is				   
				    when 1=>sda<=sub_address1(cnt1);
				    when 2=>scl<='1';
				    when 3=>scl<='0';
				    when 4=>cnt1:=cnt1-1;count1:=0;
					  if cnt1=0 then cnt1:=8;
					  current_state<=check_ack2;
					  else current_state<=transmit_sub_address;
					  end if;
				    when others=>null;
				    end case;
	 when check_ack2=>count1:=count1+1;         --查詢應答信號
	                     case count1 is
				    when 1=>sda<='0';
				    when 2=>scl<='1';				    
				    when 3=>scl<='0';				   				    				    
				    when 4=>current_state<=transmit_data;
			                 count1:=0;
				    when others=>null;
				    end case;
	 when transmit_data=>count1:=count1+1; reg_led<="11111101"; --發送數據
	                     case count1 is				    
				    when 1=>sda<=data1(cnt1);
				    when 2=>scl<='1';
				    when 3=>scl<='0';
				    when 4=>cnt1:=cnt1-1;count1:=0;
					  if cnt1=0 then cnt1:=8;
					  current_state<=check_ack3;
					  else current_state<=transmit_data;
					  end if;
				    when others=>null;
				    end case;
	 when check_ack3=>count1:=count1+1;        --查詢應答信號
	                     case count1 is
					when 1=>sda<='0';
				    when 2=>scl<='1';
				    
				    when 3=>scl<='0';
				    			    				    
				    when 4=>
				          current_state<=transmit_data1;
						 
						  count1:=0;
				    when others=>null;
				    end case;
     when transmit_data1=>count1:=count1+1;  --發送數據
	                     case count1 is				    
				    when 1=>sda<=data1(cnt1);
				    when 2=>scl<='1';
				    when 3=>scl<='0';
				    when 4=>cnt1:=cnt1-1;count1:=0;
					  if cnt1=0 then cnt1:=8;
					  current_state<=check_ack4;
					  else current_state<=transmit_data1;
					  end if;
				    when others=>null;
				    end case;
	  when check_ack4=>count1:=count1+1;        --查詢應答信號
	                     case count1 is
					when 1=>sda<='0';
				    when 2=>scl<='1';
				    
				    when 3=>scl<='0';
				    			    				    
				    when 4=>
				          current_state<=transmit_data2;
						 
						  count1:=0;
				    when others=>null;
				    end case;
	  when transmit_data2=>count1:=count1+1; reg_led<="11111011"; --發送數據
	                     case count1 is				    
				    when 1=>sda<=data1(cnt1);
				    when 2=>scl<='1';
				    when 3=>scl<='0';
				    when 4=>cnt1:=cnt1-1;count1:=0;
					  if cnt1=0 then cnt1:=8;
					  current_state<=check_ack44;
					  else current_state<=transmit_data2;
					  end if;
				    when others=>null;
				    end case;
	  when check_ack44=>count1:=count1+1;        --查詢應答信號
	                     case count1 is
					when 1=>sda<='0';
				    when 2=>scl<='1';
				    
				    when 3=>scl<='0';
				    			    				    
				    when 4=>
				          current_state<=start1;
						 
						  count1:=0;
				    when others=>null;
				    end case;
when start1=>count1:=count1+1;       --起始信號產生狀態
	                    case count1 is
				    when 1=>sda<='1';
				    when 3=>scl<='1';
				    when 5=>sda<='0';
				    when 7=>scl<='0';
				    when 9=>count1:=0;current_state<=transmit_slave_address1;
				    when others=>null;
				    end case;
	 when transmit_slave_address1=>count1:=count1+1;  --發送器件從地址
	                     case count1 is
				    when 1=>sda<=slave_address1(cnt1);
				    when 3=>scl<='1';
				    when 6=>scl<='0';
				    when 8=>cnt1:=cnt1-1;count1:=0;
					  if cnt1=0 then cnt1:=8;
					  current_state<=check_ack5;
					  else current_state<=transmit_slave_address1;
					  end if;
				    when others=>null;
				    end case;
	 when check_ack5=>count1:=count1+1;        --查詢應答信號
	                     case count1 is
				    when 3=>sda<='0';
				    when 6=>scl<='1';
				    
				    when 8=>scl<='0';
				    				    				    
				    when 10=>
				           current_state<=transmit_sub_address1;
						  
						  count1:=0;
				    when others=>null;
				    end case;
       when transmit_sub_address1=>count1:=count1+1; --發送器件子地址
	                     case count1 is				   
				    when 1=>sda<=sub_address2(cnt1);
				    when 3=>scl<='1';
				    when 6=>scl<='0';
				    when 9=>cnt1:=cnt1-1;count1:=0;
					  if cnt1=0 then cnt1:=8;
					  current_state<=check_ack6;
					  else current_state<=transmit_sub_address1;
					  end if;
				    when others=>null;
				    end case;
	 when check_ack6=>count1:=count1+1;      --查詢應答信號
	                     case count1 is
				    when 3=>sda<='0';
				    when 6=>scl<='1';
				    
				    when 8=>scl<='0';
				   
				    when 10=>
				            current_state<=start2;
						  
						  count1:=0;
				    when others=>null;
				    end case;
	
	 when start2=>count1:=count1+1;       --重新起始信號產生狀態
	                    case count1 is
				    when 1=>sda<='1';
				    when 3=>scl<='1';
				    when 6=>sda<='0';
				    when 8=>scl<='0';
				    when 10=>count1:=0;current_state<=transmit_slave_address2;
				    
				    when others=>null;
				    end case;
	 when transmit_slave_address2=>count1:=count1+1; --發送器件從地址
	                     case count1 is
				    when 1=>sda<=slave_address2(cnt1);
				    when 3=>scl<='1';
				    when 6=>scl<='0';
				    when 8=>cnt1:=cnt1-1;count1:=0;
					  if cnt1=0 then cnt1:=8;
					  current_state<=check_ack7;
					  else current_state<=transmit_slave_address2;
					  end if;
				    when others=>null;
				    end case;
	 
	 when check_ack7=>count1:=count1+1;         --查詢應答信號
	                     case count1 is
				    when 3=>sda<='0';
				    when 6=>scl<='1';
				    
				    when 8=>scl<='0';
				    
				    				    
				    when 10=>
				           current_state<=read_data;
						  
						  count1:=0;
				    when others=>null;
				    end case;
      
	 when read_data=>count1:=count1+1;  --讀操作
	                     case count1 is
				    when 1=>sda<='Z';
				    
				    when 4=>scl<='1';
				    when 8=>reg_led(cnt1)<=sda;
				    
				    when 10=>scl<='0';
				    
				    when 12=>cnt1:=cnt1-1;count1:=0;
					  if cnt1=0 then cnt1:=8;
					  current_state<=stop;
					  else current_state<=read_data;
					  end if;
				    when others=>null;
				    end case;



	when stop=>count1:=count1+1;   --產生停止信號
	                           case count1 is
				          when 1=>sda<='0';
				          when 3=>scl<='1';
				          when 10=>sda<='1';
   			              when 15=>count1:=0;current_state<=start1;
				          when others=>null;
				          end case;
								 
     when others=>null;
    end case;
  end if;
 end process;

process(sysclk)						--動態掃描模塊
variable cnt : integer range 0 to 50000;
begin
   if rising_edge(sysclk) then cnt:=cnt+1;
      if cnt<25000 then shift_clk<='1';
	 elsif cnt<50000 then shift_clk<='0';
	 else cnt:=0;
	 end if;
   end if;
end process;

process(shift_clk)
variable cnt : integer range 0 to 1;
begin
   if rising_edge(shift_clk) then	 
         cnt:=cnt+1;
      if cnt=0 then shift_led<="1101";code_led<=reg_led(4 downto 1);
      else shift_led<="1011";code_led<='0'&reg_led(7 downto 5);
      end if;
   end if;
end process;


   with code_led select				--數碼管譯碼
   led <="10000001" when "0000",
         "11001111" when "0001",
         "10010010" when "0010",
	    "10000110" when "0011",
	    "11001100"	when "0100",
	    "10100100" when "0101",
	    "10100000"	when "0110",
	    "10001111" when "0111",
	    "10000000" when "1000",
	    "10000100" when "1001",
	    "11111111" when others;

end Behavioral;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91小视频在线免费看| 色哟哟一区二区在线观看| 91丝袜美腿高跟国产极品老师 | 国产精品自拍av| 91免费在线播放| 国产亚洲欧洲997久久综合 | 国产精品看片你懂得| 婷婷综合另类小说色区| 成人亚洲精品久久久久软件| 欧美福利视频一区| 亚洲美女视频在线观看| 成人午夜激情影院| 欧美v亚洲v综合ⅴ国产v| 亚洲一区二区三区四区的| 成人免费电影视频| 国产欧美日韩在线观看| 国产综合久久久久久鬼色| 91精品国产综合久久香蕉的特点 | av电影天堂一区二区在线观看| 日韩一级黄色片| 亚洲成国产人片在线观看| 不卡电影免费在线播放一区| 91麻豆精品国产91久久久久久| 亚洲婷婷综合久久一本伊一区| 另类中文字幕网| 欧美性感一区二区三区| 国产精品久久久久久户外露出 | 国产精品美女视频| 日本视频免费一区| 欧洲一区在线观看| 中文字幕一区二| 日韩精品午夜视频| 4438亚洲最大| 亚洲成人动漫在线免费观看| 99精品视频在线观看| 国产婷婷一区二区| 青青草国产精品亚洲专区无| 欧美日韩免费视频| 亚洲一区二区三区小说| 91天堂素人约啪| 亚洲欧洲性图库| av色综合久久天堂av综合| 国产片一区二区三区| 韩日欧美一区二区三区| 亚洲精品在线观| 久久国产尿小便嘘嘘尿| 欧美mv和日韩mv的网站| 麻豆精品视频在线| 欧美电视剧在线看免费| 久久99日本精品| 欧美大片在线观看一区| 五月综合激情网| 欧美久久一二三四区| 国产精品成人免费在线| 久久99精品国产麻豆婷婷洗澡| 日韩午夜电影在线观看| 久久精品国产网站| 在线电影院国产精品| 蜜芽一区二区三区| 日韩欧美一区在线观看| 精品一区二区三区av| 精品国产乱码久久久久久图片| 精品一区二区三区蜜桃| 久久精品人人做人人综合 | 男女激情视频一区| 欧美sm极限捆绑bd| 成人综合婷婷国产精品久久蜜臀| 中文字幕成人av| 91九色02白丝porn| 一区二区激情小说| 欧美一区二区免费| 国产91精品精华液一区二区三区 | 欧美日韩小视频| 成人欧美一区二区三区1314| 91网站最新网址| 久久精工是国产品牌吗| 国产精品久久久久久久久久免费看 | 欧美男同性恋视频网站| 日精品一区二区| 久久蜜臀中文字幕| 97aⅴ精品视频一二三区| 日韩不卡一区二区| 国产欧美精品在线观看| 欧洲一区二区三区在线| 免费在线观看一区二区三区| 国产精品少妇自拍| 欧美高清视频在线高清观看mv色露露十八 | 成人国产电影网| 亚洲第一电影网| 久久精品日产第一区二区三区高清版| 91麻豆福利精品推荐| 美日韩一级片在线观看| 亚洲视频一二三| 精品成a人在线观看| 色婷婷亚洲精品| 国产成人综合在线| 日韩av中文字幕一区二区三区 | 亚洲成年人影院| 亚洲国产精品传媒在线观看| 欧美精品久久99| 91丨porny丨蝌蚪视频| 欧美肥胖老妇做爰| 欧美日韩国产影片| 99久久婷婷国产综合精品电影| 石原莉奈在线亚洲二区| 亚洲毛片av在线| 精品国产一区二区三区不卡| 在线观看成人小视频| 99视频在线精品| 国产成人亚洲综合a∨婷婷图片| 日韩av一区二区三区| 亚洲男人的天堂在线观看| 欧美激情综合网| 26uuu色噜噜精品一区二区| 欧美电影一区二区| 91小视频在线免费看| 国产精品自拍在线| 精品一区二区影视| 奇米在线7777在线精品| 午夜欧美在线一二页| 亚洲一区二区三区中文字幕在线| 综合久久久久综合| www成人在线观看| 欧美理论在线播放| 欧美一区二区三区日韩| 91精品福利视频| 色菇凉天天综合网| 欧美综合一区二区| 欧美影院一区二区| 欧美午夜精品免费| 欧美日韩二区三区| 欧美日韩一区高清| 制服丝袜国产精品| 538prom精品视频线放| 欧美一区二区三区播放老司机| 欧美日韩国产小视频| 欧美三级中文字幕| 欧美精品18+| 日韩免费一区二区三区在线播放| 欧美一级在线视频| 日韩免费观看2025年上映的电影| 日韩欧美在线影院| 精品国产伦一区二区三区观看体验 | 日韩午夜av一区| 日韩精品一区二区三区在线播放 | 欧美一区二区在线观看| 欧美成人a∨高清免费观看| 26uuu久久综合| 国产精品全国免费观看高清| 亚洲欧洲国产日韩| 一二三四区精品视频| 日本伊人精品一区二区三区观看方式| 免费成人在线观看视频| 国产一区二区电影| aaa欧美色吧激情视频| 99re热这里只有精品视频| 91视视频在线直接观看在线看网页在线看| 日本丶国产丶欧美色综合| 欧美精品三级日韩久久| 久久综合色天天久久综合图片| 日本一区二区三区电影| 亚洲日韩欧美一区二区在线| 亚洲动漫第一页| 韩国女主播成人在线| k8久久久一区二区三区| 91精品在线麻豆| 国产人久久人人人人爽| 亚洲va中文字幕| 国产福利一区二区| 欧美色网一区二区| 久久亚洲捆绑美女| 亚洲精品免费一二三区| 图片区小说区区亚洲影院| 国产成人一区在线| 欧美熟乱第一页| 国产午夜精品一区二区| 亚洲国产精品一区二区久久| 国产精品中文欧美| 欧美午夜精品一区二区三区| 国产亚洲一二三区| 视频一区视频二区中文字幕| 波多野结衣中文一区| 日韩一区二区视频在线观看| 亚洲人精品午夜| 激情五月婷婷综合| 欧美无人高清视频在线观看| 久久精品亚洲一区二区三区浴池 | 欧美性大战久久| 久久精品男人的天堂| 亚洲丶国产丶欧美一区二区三区| 国产精品538一区二区在线| 91亚洲国产成人精品一区二区三| 欧美夫妻性生活| 国产精品嫩草影院com| 久久97超碰国产精品超碰| 欧美日韩综合在线| 久久精品视频免费| 狠狠色丁香久久婷婷综合_中| 欧美最猛黑人xxxxx猛交| 中文字幕色av一区二区三区|