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

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

?? i2c_master_byte_ctrl.vhd

?? 來自opencore網站的I2C總線模塊
?? VHD
字號:
-------------------------------------------------------------------------                                                             --------  WISHBONE revB2 compl. I2C Master Core; byte-controller     --------                                                             --------                                                             --------  Author: Richard Herveille                                  --------          richard@asics.ws                                   --------          www.asics.ws                                       --------                                                             --------  Downloaded from: http://www.opencores.org/projects/i2c/    --------                                                             -----------------------------------------------------------------------------                                                             -------- Copyright (C) 2000 Richard Herveille                        --------                    richard@asics.ws                         --------                                                             -------- This source file may be used and distributed without        -------- restriction provided that this copyright statement is not   -------- removed from the file and that any derivative work contains -------- the original copyright notice and the associated disclaimer.--------                                                             --------     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     -------- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   -------- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   -------- FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      -------- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         -------- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    -------- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   -------- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        -------- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  -------- LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  -------- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  -------- OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         -------- POSSIBILITY OF SUCH DAMAGE.                                 --------                                                             ---------------------------------------------------------------------------  CVS Log----  $Id: i2c_master_byte_ctrl.vhd,v 1.5 2004/02/18 11:41:48 rherveille Exp $----  $Date: 2004/02/18 11:41:48 $--  $Revision: 1.5 $--  $Author: rherveille $--  $Locker:  $--  $State: Exp $---- Change History:--               $Log: i2c_master_byte_ctrl.vhd,v $--               Revision 1.5  2004/02/18 11:41:48  rherveille--               Fixed a potential bug in the statemachine. During a 'stop' 2 cmd_ack signals were generated. Possibly canceling a new start command.----               Revision 1.4  2003/08/09 07:01:13  rherveille--               Fixed a bug in the Arbitration Lost generation caused by delay on the (external) sda line.--               Fixed a potential bug in the byte controller's host-acknowledge generation.----               Revision 1.3  2002/12/26 16:05:47  rherveille--               Core is now a Multimaster I2C controller.----               Revision 1.2  2002/11/30 22:24:37  rherveille--               Cleaned up code----               Revision 1.1  2001/11/05 12:02:33  rherveille--               Split i2c_master_core.vhd into separate files for each entity; same layout as verilog version.--               Code updated, is now up-to-date to doc. rev.0.4.--               Added headers.------------------------------------------------ Byte controller section--------------------------------------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity i2c_master_byte_ctrl is	port (		clk    : in std_logic;		rst    : in std_logic; -- synchronous active high reset (WISHBONE compatible)		nReset : in std_logic;	-- asynchornous active low reset (FPGA compatible)		ena    : in std_logic; -- core enable signal		clk_cnt : in unsigned(15 downto 0);	-- 4x SCL		-- input signals		start,		stop,		read,		write,		ack_in : std_logic;		din    : in std_logic_vector(7 downto 0);		-- output signals		cmd_ack  : out std_logic; -- command done		ack_out  : out std_logic;		i2c_busy : out std_logic; -- arbitration lost		i2c_al   : out std_logic; -- i2c bus busy		dout     : out std_logic_vector(7 downto 0);		-- i2c lines		scl_i   : in std_logic;  -- i2c clock line input		scl_o   : out std_logic; -- i2c clock line output		scl_oen : out std_logic; -- i2c clock line output enable, active low		sda_i   : in std_logic;  -- i2c data line input		sda_o   : out std_logic; -- i2c data line output		sda_oen : out std_logic  -- i2c data line output enable, active low	);end entity i2c_master_byte_ctrl;architecture structural of i2c_master_byte_ctrl is	component i2c_master_bit_ctrl is	port (		clk    : in std_logic;		rst    : in std_logic;		nReset : in std_logic;		ena    : in std_logic;				-- core enable signal		clk_cnt : in unsigned(15 downto 0);		-- clock prescale value		cmd     : in std_logic_vector(3 downto 0);		cmd_ack : out std_logic; -- command done		busy    : out std_logic; -- i2c bus busy		al      : out std_logic; -- arbitration lost		din  : in std_logic;		dout : out std_logic;		-- i2c lines		scl_i   : in std_logic;  -- i2c clock line input		scl_o   : out std_logic; -- i2c clock line output		scl_oen : out std_logic; -- i2c clock line output enable, active low		sda_i   : in std_logic;  -- i2c data line input		sda_o   : out std_logic; -- i2c data line output		sda_oen : out std_logic  -- i2c data line output enable, active low	);	end component i2c_master_bit_ctrl;	-- commands for bit_controller block	constant I2C_CMD_NOP  	: std_logic_vector(3 downto 0) := "0000";	constant I2C_CMD_START	: std_logic_vector(3 downto 0) := "0001";	constant I2C_CMD_STOP	 : std_logic_vector(3 downto 0) := "0010";	constant I2C_CMD_READ	 : std_logic_vector(3 downto 0) := "0100";	constant I2C_CMD_WRITE	: std_logic_vector(3 downto 0) := "1000";	-- signals for bit_controller	signal core_cmd : std_logic_vector(3 downto 0);	signal core_ack, core_txd, core_rxd : std_logic;	signal al : std_logic;	-- signals for shift register	signal sr : std_logic_vector(7 downto 0); -- 8bit shift register	signal shift, ld : std_logic;	-- signals for state machine	signal go, host_ack : std_logic;	signal dcnt : unsigned(2 downto 0); -- data counter	signal cnt_done : std_logic;begin	-- hookup bit_controller	bit_ctrl: i2c_master_bit_ctrl port map(		clk     => clk,		rst     => rst,		nReset  => nReset,		ena     => ena,		clk_cnt => clk_cnt,		cmd     => core_cmd,		cmd_ack => core_ack,		busy    => i2c_busy,		al      => al,		din     => core_txd,		dout    => core_rxd,		scl_i   => scl_i,		scl_o   => scl_o,		scl_oen => scl_oen,		sda_i   => sda_i,		sda_o   => sda_o,		sda_oen => sda_oen	);	i2c_al <= al;	-- generate host-command-acknowledge	cmd_ack <= host_ack;	-- generate go-signal	go <= (read or write or stop) and not host_ack;	-- assign Dout output to shift-register	dout <= sr;	-- generate shift register	shift_register: process(clk, nReset)	begin	    if (nReset = '0') then	      sr <= (others => '0');	    elsif (clk'event and clk = '1') then	      if (rst = '1') then	        sr <= (others => '0');	      elsif (ld = '1') then	        sr <= din;	      elsif (shift = '1') then	        sr <= (sr(6 downto 0) & core_rxd);	      end if;	    end if;	end process shift_register;	-- generate data-counter	data_cnt: process(clk, nReset)	begin	    if (nReset = '0') then	      dcnt <= (others => '0');	    elsif (clk'event and clk = '1') then	      if (rst = '1') then	        dcnt <= (others => '0');	      elsif (ld = '1') then	        dcnt <= (others => '1');  -- load counter with 7	      elsif (shift = '1') then	        dcnt <= dcnt -1;	      end if;	    end if;	end process data_cnt;	cnt_done <= '1' when (dcnt = 0) else '0';	--	-- state machine	--	statemachine : block	    type states is (st_idle, st_start, st_read, st_write, st_ack, st_stop);	    signal c_state : states;	begin	    --	    -- command interpreter, translate complex commands into simpler I2C commands	    --	    nxt_state_decoder: process(clk, nReset)	    begin	        if (nReset = '0') then	          core_cmd <= I2C_CMD_NOP;	          core_txd <= '0';	          shift    <= '0';	          ld       <= '0';	          host_ack <= '0';	          c_state  <= st_idle;	          ack_out  <= '0';	        elsif (clk'event and clk = '1') then	          if (rst = '1' or al = '1') then	            core_cmd <= I2C_CMD_NOP;	            core_txd <= '0';	            shift    <= '0';	            ld       <= '0';	            host_ack <= '0';	            c_state  <= st_idle;	            ack_out  <= '0';	          else	            -- initialy reset all signal	            core_txd <= sr(7);	            shift    <= '0';	            ld       <= '0';	            host_ack <= '0';	            case c_state is	              when st_idle =>	                 if (go = '1') then	                   if (start = '1') then	                     c_state  <= st_start;	                     core_cmd <= I2C_CMD_START;	                   elsif (read = '1') then	                     c_state  <= st_read;	                     core_cmd <= I2C_CMD_READ;	                   elsif (write = '1') then	                     c_state  <= st_write;	                     core_cmd <= I2C_CMD_WRITE;	                   else -- stop	                     c_state  <= st_stop;	                     core_cmd <= I2C_CMD_STOP;	                   end if;	                   ld <= '1';	                 end if;	              when st_start =>	                 if (core_ack = '1') then	                   if (read = '1') then	                     c_state  <= st_read;	                     core_cmd <= I2C_CMD_READ;	                   else	                     c_state  <= st_write;	                     core_cmd <= I2C_CMD_WRITE;	                   end if;	                   ld <= '1';	                 end if;	              when st_write =>	                 if (core_ack = '1') then	                   if (cnt_done = '1') then	                     c_state  <= st_ack;	                     core_cmd <= I2C_CMD_READ;	                   else	                     c_state  <= st_write;       -- stay in same state	                     core_cmd <= I2C_CMD_WRITE;  -- write next bit	                     shift    <= '1';	                   end if;	                 end if;	              when st_read =>	                 if (core_ack = '1') then	                   if (cnt_done = '1') then	                     c_state  <= st_ack;	                     core_cmd <= I2C_CMD_WRITE;	                   else	                     c_state  <= st_read;      -- stay in same state	                     core_cmd <= I2C_CMD_READ; -- read next bit	                   end if;	                   shift    <= '1';	                   core_txd <= ack_in;	                 end if;	              when st_ack =>	                 if (core_ack = '1') then	                   -- check for stop; Should a STOP command be generated ?	                   if (stop = '1') then	                     c_state  <= st_stop;	                     core_cmd <= I2C_CMD_STOP;	                   else	                     c_state  <= st_idle;	                     core_cmd <= I2C_CMD_NOP;	                     -- generate command acknowledge signal	                     host_ack <= '1';	                   end if;	                   -- assign ack_out output to core_rxd (contains last received bit)	                   ack_out  <= core_rxd;	                   core_txd <= '1';	                 else	                   core_txd <= ack_in;	                 end if;	              when st_stop =>	                 if (core_ack = '1') then	                   c_state  <= st_idle;	                   core_cmd <= I2C_CMD_NOP;	                   -- generate command acknowledge signal	                   host_ack <= '1';	                 end if;	              when others => -- illegal states	                 c_state  <= st_idle;	                 core_cmd <= I2C_CMD_NOP;	                 report ("Byte controller entered illegal state.");	            end case;	          end if;	        end if;	    end process nxt_state_decoder;	end block statemachine;end architecture structural;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久久久久牛牛| 国产日韩欧美精品综合| 国产日韩av一区二区| 亚洲风情在线资源站| 国产成人综合网站| 欧美电影影音先锋| 一区二区三区四区av| 成人开心网精品视频| 欧美成人免费网站| 亚洲电影你懂得| 色婷婷精品久久二区二区蜜臂av | 图片区小说区区亚洲影院| 99久久综合99久久综合网站| 一区二区三区丝袜| 99国产麻豆精品| 国产精品久久久久久久久久免费看| 久草精品在线观看| 日韩欧美自拍偷拍| 美女一区二区三区| 欧美一三区三区四区免费在线看 | 久久亚洲一区二区三区四区| 日韩中文字幕亚洲一区二区va在线 | 一区二区三区免费网站| 成人精品一区二区三区四区| 国产亚洲精品超碰| 国产精品亚洲视频| 国产欧美日本一区视频| 国产精品一二三区| 国产欧美日韩麻豆91| 国产成人自拍高清视频在线免费播放| 337p粉嫩大胆色噜噜噜噜亚洲| 老司机一区二区| 欧美videos大乳护士334| 免费在线观看精品| 精品国产1区2区3区| 国产真实乱子伦精品视频| 精品1区2区在线观看| 精品亚洲porn| 亚洲国产精品二十页| 国产91丝袜在线播放0| 国产精品久久三区| 一本到不卡精品视频在线观看| 自拍偷拍亚洲激情| 欧美午夜精品一区| 老司机免费视频一区二区三区| 精品不卡在线视频| 成人久久久精品乱码一区二区三区| 一区二区中文视频| 欧美性色黄大片| 成人午夜激情影院| 日韩理论片中文av| 欧美日本在线视频| 国内精品第一页| 亚洲天堂福利av| 6080yy午夜一二三区久久| 国产精品一品二品| 一区二区三区日韩欧美精品 | 亚洲成人动漫精品| 精品久久久久久无| 99久久久免费精品国产一区二区| 亚洲综合激情小说| 日韩欧美亚洲国产另类| 成人精品小蝌蚪| 午夜精品福利久久久| 久久美女艺术照精彩视频福利播放| 成人午夜视频在线观看| 亚洲超丰满肉感bbw| 精品不卡在线视频| 日本丶国产丶欧美色综合| 奇米色一区二区| 国产精品久久久一本精品| 欧美伦理影视网| 成人精品免费视频| 天堂在线亚洲视频| 成人免费在线视频| 欧美videossexotv100| 欧洲日韩一区二区三区| 国产一区二区三区视频在线播放| 一区二区三区蜜桃网| 久久久久久久综合日本| 欧美日韩五月天| 91色九色蝌蚪| 国产在线精品免费av| 偷拍与自拍一区| 亚洲精品视频一区二区| 久久久99精品久久| 这里只有精品电影| 91热门视频在线观看| 国产一区二区三区久久久| 视频一区在线播放| 亚洲黄色尤物视频| 国产精品成人在线观看| 久久色.com| 欧美mv日韩mv国产网站app| 欧洲色大大久久| 99这里都是精品| 成人免费视频视频| 国产经典欧美精品| 国产精品自在在线| 精品一区二区三区的国产在线播放| 亚洲成人资源网| 亚洲一区中文日韩| 亚洲一区在线免费观看| 一区二区久久久久| 一区二区三区四区精品在线视频 | 国产欧美日韩精品a在线观看| 欧美一区二区三区免费在线看| 欧美三日本三级三级在线播放| 色av成人天堂桃色av| 99精品黄色片免费大全| 99国内精品久久| 一本大道综合伊人精品热热| 色婷婷精品大在线视频| 色视频一区二区| 欧美性受极品xxxx喷水| 欧美性受xxxx| 制服丝袜av成人在线看| 日韩一区二区电影在线| 精品国产91久久久久久久妲己| 久久免费精品国产久精品久久久久 | 亚洲男人的天堂网| 亚洲精品一二三区| 亚洲成人www| 老司机一区二区| 国产剧情一区在线| 99久久精品国产毛片| 色婷婷综合久久久久中文| 在线看日本不卡| 欧美二区三区的天堂| 欧美白人最猛性xxxxx69交| 国产亚洲一区二区三区四区| 中文字幕乱码一区二区免费| 亚洲精品中文在线影院| 亚洲成人激情自拍| 国产在线精品一区二区| 波波电影院一区二区三区| 在线观看网站黄不卡| 欧美精品123区| 国产亚洲一本大道中文在线| 亚洲天堂av一区| 日韩不卡免费视频| 国产成人亚洲综合a∨婷婷图片| av成人动漫在线观看| 欧美精品在欧美一区二区少妇| 欧美精品一区二区三区在线播放| 国产精品久久久久久久久图文区 | 最新国产成人在线观看| 日韩电影在线观看电影| 国产91丝袜在线播放0| 欧美日本一区二区在线观看| 久久亚洲一区二区三区四区| 亚洲精品乱码久久久久久久久 | 日韩一区二区免费高清| 国产精品萝li| 免费成人av在线播放| av欧美精品.com| 91精品国产乱| 自拍视频在线观看一区二区| 久久电影网站中文字幕| 色哟哟亚洲精品| 国产午夜一区二区三区| 天天色综合成人网| aa级大片欧美| 久久亚洲精品小早川怜子| 亚洲综合丁香婷婷六月香| 国产成人99久久亚洲综合精品| 欧美日韩国产精品成人| 国产精品国产自产拍高清av王其 | 日韩一级片在线观看| 亚洲欧美日韩人成在线播放| 国产一区二区三区综合| 在线不卡一区二区| 一区二区三区精品在线观看| 国产xxx精品视频大全| 日韩三级精品电影久久久 | 在线播放国产精品二区一二区四区| 国产精品美女一区二区| 国产一区二区三区观看| 91精品国产欧美日韩| 午夜精品福利久久久| 91久久精品一区二区三| 亚洲天堂成人网| gogo大胆日本视频一区| 国产午夜精品一区二区| 久久激情五月婷婷| 91精品欧美一区二区三区综合在| 一区二区三区日韩精品| 91麻豆精东视频| 中文在线一区二区| 国产99久久久国产精品免费看| 精品对白一区国产伦| 麻豆国产精品视频| 日韩一二三区不卡| 男人的天堂久久精品| 欧美一区三区二区| 青娱乐精品在线视频| 欧美一区二区视频免费观看| 视频一区中文字幕国产| 91精品国产综合久久久久久久久久 | 一区二区三区精品在线|