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

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

?? i2c_ss_blk.vhd

?? IIC的IP.這是經過驗證的源代碼
?? VHD
字號:
------------------------------------------------------------------------------
-- 
--  Name:  I2C_SS_Blk.vhd  
-- 
--  Description: Start and Stop control block generates and detects the start
--              and stop events on the I2C bus
-- 
--  $Revision: 1.0 $          
--  
--  Copyright 2004 Lattice Semiconductor Corporation.  All rights reserved.
--
------------------------------------------------------------------------------
-- Permission:
--
--   Lattice Semiconductor grants permission to use this code for use
--   in synthesis for any Lattice programmable logic product.  Other
--   use of this code, including the selling or duplication of any
--   portion is strictly prohibited.
--
-- Disclaimer:
--
--   This VHDL or Verilog source code is intended as a design reference
--   which illustrates how these types of functions can be implemented.
--   It is the user's responsibility to verify their design for
--   consistency and functionality through the use of formal
--   verification methods.  Lattice Semiconductor provides no warranty
--   regarding the use or functionality of this code.
------------------------------------------------------------------------------
--
--    Lattice Semiconductor Corporation
--    5555 NE Moore Court
--    Hillsboro, OR 97124
--    U.S.A
--
--    TEL: 1-800-Lattice (USA and Canada)
--    408-826-6000 (other locations)
--
--    web: http://www.latticesemi.com/
--    email: techsupport@latticesemi.com
-- 
------------------------------------------------------------------------------


library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;

entity Start_Generator is
  port(MPU_CLK       : in std_logic;                    -- MPU Clock
       Rst_L         : in std_logic;                    -- Main Reset
       Start_Enable  : in std_logic;                    -- Start Enable, activates start gen process
       SCL           : in bit;                          -- I2C Clock for f/s mode 
       SDA           : in bit;                          -- I2C data bus for f/s mode        
       SDA_EN2       : out std_logic);                  -- sda enable

end Start_Generator;

architecture Start_Behave of Start_Generator is
-- State Signals for Start Generation State Machine
signal Current_Start_Gen_State    : std_logic_vector(1 downto 0);
signal Next_Start_Gen_State       : std_logic_vector(1 downto 0);
constant Idle_Start_Gen_State     : std_logic_vector(1 downto 0)  := "00";
constant Start_Gen_State_1        : std_logic_vector(1 downto 0)  := "01";
constant Start_Gen_State_2        : std_logic_vector(1 downto 0)  := "10";
constant Start_Gen_State_3        : std_logic_vector(1 downto 0)  := "11";

begin


 I2C_Start_Gen_States: process(MPU_CLK, Rst_L)
 begin
  if(Rst_L= '0')then
   Current_Start_Gen_State <= Idle_Start_Gen_State;
  elsif(rising_edge(MPU_CLK)) then
   Current_Start_Gen_State <= Next_Start_Gen_State;
  end if;
 end process;

 Start_Gen_State_Machine: process(Current_Start_Gen_State, Start_Enable,SDA,SCL)
 begin
  case Current_Start_Gen_State is
   when Idle_Start_Gen_State =>
     SDA_EN2  <= '0';
     if(Start_Enable = '1') then
       Next_Start_Gen_State <= Start_Gen_State_1;
     else
       Next_Start_Gen_State <= Idle_Start_Gen_State;        
     end if;
     
   when Start_Gen_State_1 =>
     SDA_EN2 <= '0';
     if(SDA = '1' and SCL = '1')then
       Next_Start_Gen_State <= Start_Gen_State_2;
     elsif(SDA = '1' and SCL = '0') then
       Next_Start_Gen_State <= Start_Gen_State_1;           -- waiting for the scl(h) clock to go high
     else
       Next_Start_Gen_State <= Idle_Start_Gen_State;
     end if;
      
   when Start_Gen_State_2 =>  
     SDA_EN2  <= '1';
     Next_Start_Gen_State <= Start_Gen_State_3;

   when Start_Gen_State_3 =>  
     if(SCL = '0' ) then
       SDA_EN2  <= '0';
       Next_Start_Gen_State <= Idle_Start_Gen_State;
     else
       SDA_EN2  <= '1';
       Next_Start_Gen_State <= Start_Gen_State_3;      
     end if;
    
   when others =>
       SDA_EN2  <= '0';
       Next_Start_Gen_State <= Idle_Start_Gen_State;
      
  end case;

 end process;      

end Start_Behave;

--==========================================================================
--I2C Start Detection Block
--==========================================================================

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;


entity Start_Detect is
  port(MPU_CLK       : in std_logic;                    -- MPU Clock
       Rst_L         : in std_logic;                    -- Main Reset
       SCL           : in bit;                          -- I2C Clock for f/s mode 
       SDA           : in bit;                          -- I2C data bus for f/s mode        
       Start_Det     : out std_logic);                  -- start detection bit

end Start_Detect;

architecture Start_Det_Behave of Start_Detect is
-- State Signals for Start Detection State Machine
signal Current_Start_Det_State    : std_logic_vector(1 downto 0);
signal Next_Start_Det_State       : std_logic_vector(1 downto 0);
constant Idle_Start_Det_State     : std_logic_vector(1 downto 0)  := "00";
constant Start_Det_State_1        : std_logic_vector(1 downto 0)  := "01";

begin

 I2C_Start_Det_States: process(MPU_CLK,Rst_L)
 begin
   if(Rst_L= '0')then
     Current_Start_Det_State <= Idle_Start_Det_State;
   elsif(rising_edge(MPU_CLK)) then
     Current_Start_Det_State <= Next_Start_Det_State;
   end if;
 end process;

 Start_Det_Reg : process(MPU_Clk, Rst_L, Current_Start_Det_State, SCL, SDA)
 begin
   if(Rst_L= '0')then
     Start_Det <= '0';
   elsif(rising_edge(MPU_CLK)) then
     if(Current_Start_Det_State = Idle_Start_Det_State) then
       Start_Det <= '0';
     elsif(Current_Start_Det_State = Start_Det_State_1) then
       if(SDA = '0' and SCL = '1') then
         Start_Det <= '1';
       else
         Start_Det <= '0';
       end if;   
     end if;  
   end if; 
 end process;
 
 Start_Det_State_Machine: process(Current_Start_Det_State, SCL, SDA)
 begin
   case Current_Start_Det_State is
     when Idle_Start_Det_State =>
       if(SCL = '1' and SDA = '1') then
         Next_Start_Det_State <= Start_Det_State_1;        
       else
         Next_Start_Det_State <= Idle_Start_Det_State;       
       end if;    
     when Start_Det_State_1 =>
       if(SDA = '0' and SCL = '1') then
         Next_Start_Det_State <= Idle_Start_Det_State;       
       elsif(SDA = '1' and SCL = '1') then
         Next_Start_Det_State <= Start_Det_State_1;        
       else
         Next_Start_Det_State <= Idle_Start_Det_State;       
       end if;
     when others =>
       Next_Start_Det_State <= Idle_Start_Det_State;         
   end case;
 end process;

end Start_Det_Behave;

--==========================================================================
--I2C Stop Signal Generation Block
--==========================================================================
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;

entity Stop_Generator is
  port(MPU_CLK       : in std_logic;                    -- MPU Clock
       Rst_L         : in std_logic;                    -- Main Reset
       Stop_Enable   : in std_logic;                    -- Stop Enable, activates stop gen process
       SCL           : in bit;                          -- I2C Clock for f/s mode 
       SDA           : in bit;                          -- I2C data bus for f/s mode        
       SDA_EN3       : out std_logic);                  -- sda enable

end Stop_Generator;

architecture Stop_Behave of Stop_Generator is
-- State Signals for Stop Generation State Machine
signal Current_Stop_Gen_State    : std_logic_vector(1 downto 0);
signal Next_Stop_Gen_State       : std_logic_vector(1 downto 0);
constant Idle_Stop_Gen_State     : std_logic_vector(1 downto 0)  := "00";
constant Stop_Gen_State_1        : std_logic_vector(1 downto 0)  := "01";
constant Stop_Gen_State_2        : std_logic_vector(1 downto 0)  := "10";
constant Stop_Gen_State_3        : std_logic_vector(1 downto 0)  := "11";

begin

 I2C_Stop_Gen_States: process(MPU_CLK,Rst_L)
 begin
  if(Rst_L= '0')then
   Current_Stop_Gen_State <= Idle_Stop_Gen_State;
  elsif(rising_edge(MPU_CLK)) then
   Current_Stop_Gen_State <= Next_Stop_Gen_State;
  end if;
 end process;

 Stop_Gen_State_Machine: process(Current_Stop_Gen_State, Stop_Enable, SCL, SDA)
 begin
 
  case Current_Stop_Gen_State is
   when Idle_Stop_Gen_State =>
     if(Stop_Enable = '1') then
       SDA_EN3  <= '1';
       Next_Stop_Gen_State <= Stop_Gen_State_1;
     else
       SDA_EN3  <= '0';
       Next_Stop_Gen_State <= Idle_Stop_Gen_State;        
     end if;
    
   when Stop_Gen_State_1 =>
     SDA_EN3 <= '1';                               
     if(SCL = '1') then                
       Next_Stop_Gen_State <= Stop_Gen_State_2;      
     else            
       Next_Stop_Gen_State <= Stop_Gen_State_1;      
     end if;                                         
      
   when Stop_Gen_State_2 =>  
     SDA_EN3  <= '0';
     Next_Stop_Gen_State <= Stop_Gen_State_3; 

  when Stop_Gen_State_3 =>
     if(SCL = '0') then
      SDA_EN3  <= '0';
      Next_Stop_Gen_State <= Idle_Stop_Gen_State;
     else
      SDA_EN3  <= '0';
      Next_Stop_Gen_State <= Stop_Gen_State_3;     
     end if;  
 
   when others =>
       SDA_EN3  <= '0';
       Next_Stop_Gen_State <= Idle_Stop_Gen_State;
      
  end case;

 end process;      

end Stop_Behave;

--===========================================================================
--I2C Stop Detection Block
--===========================================================================

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;


entity Stop_Detect is
  port(MPU_CLK       : in std_logic;                    -- MPU Clock
       Rst_L         : in std_logic;                    -- Main Reset
       SCL           : in bit;                          -- I2C Clock for f/s mode 
       SDA           : in bit;                          -- I2C data bus for f/s mode        
       Stop_Det      : out std_logic);                  -- stop detection bit

end Stop_Detect;

architecture Stop_Det_Behave of Stop_Detect is
-- State Signals for Start Detection State Machine
signal Current_Stop_Det_State    : std_logic_vector(1 downto 0);
signal Next_Stop_Det_State       : std_logic_vector(1 downto 0);
constant Idle_Stop_Det_State     : std_logic_vector(1 downto 0)  := "00";
constant Stop_Det_State_1        : std_logic_vector(1 downto 0)  := "01";

begin

 I2C_Stop_Det_States: process(MPU_CLK,Rst_L)
 begin
   if(Rst_L= '0')then
     Current_Stop_Det_State <= Idle_Stop_Det_State;
   elsif(rising_edge(MPU_CLK)) then
     Current_Stop_Det_State <= Next_Stop_Det_State;
   end if;
 end process;

 Stop_Det_Reg : process(MPU_Clk, Rst_L, Current_Stop_Det_State,SCL, SDA)
 begin
   if(Rst_L= '0')then
     Stop_Det <= '0';
   elsif(rising_edge(MPU_CLK)) then
     if(Current_Stop_Det_State = Idle_Stop_Det_State) then
       Stop_Det <= '0';
     elsif(Current_Stop_Det_State = Stop_Det_State_1) then
       if(SDA = '1' and SCL = '1') then
         Stop_Det <= '1';
       else
         Stop_Det <= '0';
       end if;   
     end if;  
   end if; 
 end process;
 
 Stop_Det_State_Machine: process(Current_Stop_Det_State, SCL, SDA)
 begin
   case Current_Stop_Det_State is
     when Idle_Stop_Det_State =>
       if(SCL = '1' and SDA = '0')then
         Next_Stop_Det_State <= Stop_Det_State_1;        
       else
         Next_Stop_Det_State <= Idle_Stop_Det_State;       
       end if;    
     when Stop_Det_State_1 =>
       if(SDA = '1' and SCL = '1') then
         Next_Stop_Det_State <= Idle_Stop_Det_State;       
       elsif(SDA = '0' and SCL = '1') then
         Next_Stop_Det_State <= Stop_Det_State_1;        
       else
         Next_Stop_Det_State <= Idle_Stop_Det_State;       
       end if;
     when others =>
       Next_Stop_Det_State <= Idle_Stop_Det_State;         
   end case;
 end process;

end Stop_Det_Behave;

--------------------------------- E O F --------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩午夜三级在线| 国产在线一区二区| 欧美影片第一页| 亚洲成人黄色影院| 日韩一区二区三区在线观看| 亚洲一级电影视频| 制服丝袜成人动漫| 精东粉嫩av免费一区二区三区| xfplay精品久久| 高清av一区二区| 亚洲午夜久久久久久久久电影院 | 国产精品77777竹菊影视小说| 国产精品天干天干在观线| 91在线精品秘密一区二区| 亚洲在线一区二区三区| 91精品视频网| 成人黄色一级视频| 亚洲国产精品一区二区www在线| 91精品视频网| 成人黄页在线观看| 亚洲第一福利一区| 国产欧美一区二区精品婷婷| 色拍拍在线精品视频8848| 美女尤物国产一区| 亚洲欧洲日韩一区二区三区| 56国语精品自产拍在线观看| 国产成人在线电影| 亚洲www啪成人一区二区麻豆| 久久久久久9999| 欧美日韩一区不卡| 国产成人午夜精品5599| 亚洲成人午夜影院| 欧美国产成人精品| 欧美日韩激情在线| 成人18视频日本| 久久99精品国产91久久来源| 一区二区三区免费| 日本一区二区三区免费乱视频 | 91亚洲精品一区二区乱码| 香蕉久久夜色精品国产使用方法 | 日韩美女久久久| 日韩丝袜美女视频| 欧美天天综合网| 粉嫩嫩av羞羞动漫久久久| 午夜久久久影院| 中文字幕字幕中文在线中不卡视频| 精品捆绑美女sm三区| 在线亚洲精品福利网址导航| 国产高清精品久久久久| 日韩国产精品久久| 伊人性伊人情综合网| 亚洲一区二区三区三| 国产精品天美传媒沈樵| 精品国产一区二区三区忘忧草| 欧美怡红院视频| 91老师片黄在线观看| 粉嫩嫩av羞羞动漫久久久| 激情六月婷婷久久| 免费成人av在线| 日日夜夜一区二区| 亚洲综合色网站| 亚洲欧美日韩小说| 最新日韩在线视频| 国产欧美一区二区三区网站| 精品久久久久av影院| 欧美一区二区三区免费观看视频 | 不卡av在线网| 成人免费视频视频| 国产毛片精品视频| 激情综合色丁香一区二区| 蜜臀久久久久久久| 日韩av一级片| 蜜臀久久久99精品久久久久久| 日韩精品色哟哟| 青青草97国产精品免费观看| 天堂影院一区二区| 日本免费新一区视频| 日本在线不卡一区| 久草精品在线观看| 国产又黄又大久久| 国产一区二区免费看| 国产精品一卡二| 国产**成人网毛片九色| 99热这里都是精品| 欧美亚洲尤物久久| 56国语精品自产拍在线观看| 日韩三级高清在线| 国产色产综合色产在线视频| 中文成人av在线| 日韩一区欧美小说| 亚洲国产欧美一区二区三区丁香婷| 一区二区三区欧美视频| 日本视频一区二区| 国产在线不卡视频| 波多野结衣的一区二区三区| 色婷婷久久久综合中文字幕| 欧美男男青年gay1069videost| 欧美一卡2卡三卡4卡5免费| 日韩精品最新网址| 亚洲国产成人自拍| 亚洲一区在线电影| 极品少妇一区二区| 91美女精品福利| 欧美蜜桃一区二区三区| 久久久综合精品| 亚洲日本电影在线| 美女精品一区二区| 99免费精品视频| 欧美精品丝袜中出| 久久久久久一二三区| 亚洲精品免费在线| 精品一区二区三区视频在线观看 | 国产精品1区2区3区在线观看| 成人福利视频在线| 91.com在线观看| 国产日韩欧美a| 亚洲一区二区高清| 精品无人码麻豆乱码1区2区 | 国产麻豆精品在线观看| 99视频国产精品| 欧美一区欧美二区| 国产精品成人午夜| 蜜桃av一区二区| 色综合色综合色综合| 日韩免费视频一区| 亚洲日本免费电影| 国产在线精品不卡| 欧美日韩国产首页| 国产精品久久久久久户外露出| 日韩在线卡一卡二| 99久久综合精品| 26uuu亚洲婷婷狠狠天堂| 一区二区三区在线播| 国产成人精品三级麻豆| 777xxx欧美| 亚洲精品水蜜桃| 成人av在线网站| 久久精品一区二区三区四区| 婷婷国产v国产偷v亚洲高清| 91亚洲国产成人精品一区二三 | 国产精品久久久久久久久免费相片 | 欧美精品一区二区三区在线播放 | 国产欧美在线观看一区| 麻豆freexxxx性91精品| 欧美色成人综合| 亚洲摸摸操操av| 成人国产在线观看| 国产欧美日韩不卡| 国模大尺度一区二区三区| 欧美日韩aaa| 亚洲第一激情av| 欧美伊人久久久久久久久影院| 中文字幕一区二区三区在线播放| 国产麻豆视频一区二区| 精品福利av导航| 美女精品一区二区| 日韩视频在线你懂得| 日韩和欧美的一区| 在线观看91av| 天天影视网天天综合色在线播放| 色婷婷久久综合| 亚洲一区二区三区自拍| 色婷婷综合久久| 亚洲精品国产无天堂网2021| 99久久夜色精品国产网站| 中文字幕av一区二区三区免费看 | 精品国产污网站| 国产真实乱偷精品视频免| 精品伦理精品一区| 国产一区二区毛片| 国产无人区一区二区三区| 国产99久久久国产精品潘金| 久久精品一区二区三区四区| 国产乱国产乱300精品| 国产亚洲精品福利| jiyouzz国产精品久久| ㊣最新国产の精品bt伙计久久| 99国产一区二区三精品乱码| 亚洲免费资源在线播放| 欧美日韩在线观看一区二区| 亚洲国产中文字幕在线视频综合 | 91国产福利在线| 日韩黄色片在线观看| 精品国产乱码久久久久久图片| 国产精品一区二区在线观看网站 | 美腿丝袜亚洲色图| 欧美α欧美αv大片| 国产乱色国产精品免费视频| 国产精品萝li| 91浏览器在线视频| 免费观看一级欧美片| 国产亚洲欧美中文| 99精品国产99久久久久久白柏| 香蕉久久一区二区不卡无毒影院| 日韩欧美卡一卡二| 福利视频网站一区二区三区| 亚洲精选免费视频| 日韩一区二区三| 成人精品高清在线| 婷婷丁香久久五月婷婷|