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

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

?? tap.vhd

?? Xilinx_usb_jtag 下載器原理圖及程序
?? VHD
字號:
--
--   Copyright (C) 2003 by J. Kearney, Bolton, Massachusetts
--
--   This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.
--
--   This program is distributed in the hope that it will be useful, but
-- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-- for more details.
--
--   You should have received a copy of the GNU General Public License along
-- with this program; if not, write to the Free Software Foundation, Inc.,
-- 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
--

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.numeric_std.ALL;

library unisim;
use unisim.vcomponents.all;

entity TAP is
    port
	 	(reset : in std_logic;
		 clk96 : in std_logic;
		 clk64 : in std_logic;
		 clk_select : in unsigned(3 downto 0);
		 busy : out std_logic;

		 tristate : in boolean;
		 TCK_term : in std_logic_vector(1 downto 0);
		 TDO_term : in std_logic;

		 run_start : in std_logic;
		 run_ack : buffer std_logic;
		 run_freerun : in std_logic;
		 run_bits : in unsigned(11 downto 0);
		 run_TMS : in unsigned(11 downto 0);
		 run_TDI : in boolean;
		 run_TDO : in boolean;
		 run_pingTMS : in boolean;

		 wr_clk : out std_logic;
		 wr_addr : buffer unsigned(11 downto 0);
		 wr_store : out std_logic;
		 wr_data : out std_logic;

		 rd_clk : out std_logic;
		 rd_addr : buffer unsigned(11 downto 0);
		 rd_data : in std_logic;

		 TCK : out std_logic_vector(1 downto 0);
		 TCK_fb : in std_logic;
		 TDI : out std_logic_vector(1 downto 0);
		 TMS : out std_logic;
		 TDO : in std_logic);
end TAP;

architecture RTL of TAP is

	component ClkMux is
	    Port ( RESET : in std_logic;
	           A : in std_logic;
	           B : in std_logic;
	           sel : in std_logic;
	           O : out std_logic);
	end component;

	component Sync is
	    Port ( RESET : in std_logic;
		 		  REQ : in std_logic;
	           ACK : in std_logic;
	           STATUS : buffer std_logic);
	end component;

	signal clk_base : std_logic;
	signal clk_divider: unsigned(7 downto 0);
	signal jtag_clk : std_logic;

	type States is
		(Idle, Handshake, Starting, Run, Stopping, Freerun);

	signal state : States;

	signal max : unsigned(run_bits'range);
	signal tms_i : unsigned(run_TMS'length downto 0);
	signal tdo_1, tdo_2, tdo_3 : std_logic;
	signal running, tck_i, ack : std_logic;
	signal clocking, writing, reading, pingTMS : boolean;

begin

	--========================================================================
	-- Synthesize the JTAG clock
	-- first, select 96 or 64 MHz base

	mux: ClkMux port map (RESET => reset, A => clk96, B => clk64, sel => clk_select(0), O => clk_base);

	-- then divide it by 2, 4, .. 256

	process (reset, clk_base)
	begin
		if reset = '1' then
			clk_divider <= (others => '0');
		elsif rising_edge(clk_base) then
			clk_divider <= clk_divider + 1;
		end if;
	end process;

	-- and select a tap from that

	jtag_clk <= clk_divider(to_integer(clk_select(3 downto 1)));

	--========================================================================
	-- The actual TAP controller

	busy <= '1' when state /= Idle else '0';

	wr_clk <= TCK_fb;
	wr_store <= '1' when clocking and writing else '0';
	wr_data <= TDO;
	

	rd_clk <= jtag_clk when reading else '0';

	tdo_3 <= tdo_2 when clocking else '0';

	TDI(1) <= 'Z' when tristate or (TDO_term = '0') else '0';
	TDI(0) <= 'Z' when tristate else tdo_3;

	tck_i <= '1' when (jtag_clk = '0') and clocking else '0';

	TCK(0) <= 'Z' when tristate or (TCK_term(0) = '0') else tck_i;
	TCK(1) <= 'Z' when tristate or (TCK_term(1) = '0') else tck_i;

	TMS <= 'Z' when tristate else tms_i(0);	-- tms comes from shift register

	-- tdo is pipelined 2 cycles
	process (reset, jtag_clk)
	begin
		if reset = '1' then
			tdo_1 <= '0';
			tdo_2 <= '0';
		elsif rising_edge(jtag_clk) then	-- falling edge of tck
			tdo_2 <= tdo_1;
			tdo_1	<= rd_data;				-- latch tdo data
		end if;
	end process;

	-- maintain read and write address:
	--  init when not being used
	--	 increment on falling edge of clk to set up for rising edge read or write
	process (running, jtag_clk)
	begin
		if running = '0' then
			rd_addr <= to_unsigned(0, rd_addr'length);
		elsif falling_edge(jtag_clk) then
			rd_addr <= rd_addr + 1;
		end if;
	end process;

	process (running, jtag_clk)
	begin
		if running = '0' then
			wr_addr <= unsigned(to_signed(-2, wr_addr'length));
		elsif rising_edge(jtag_clk) then
			wr_addr <= wr_addr + 1;
		end if;
	end process;

	shaker: Sync port map
		(RESET => reset,
		 REQ => run_start,
		 ACK => not ack,
		 STATUS => run_ack);

	process (reset, jtag_clk, run_start)
	begin
		if reset = '1' then

			state <= Idle;
			tms_i(0) <= '0';
			writing <= false;
			reading <= false;
			clocking <= false;
			running <= '0';
			ack <= '0';

		elsif rising_edge(jtag_clk) then
		
			case state is

				when Idle =>	-- wait for start signal
					if run_start = '1' then
						max <= run_bits;			-- latch vector size
						tms_i <= run_TMS & "0";-- latch tms data
			 			writing <= run_tdi;
						reading <= run_tdo;
						pingTMS <= run_pingTMS;
						state <= Handshake;
						ack <= '1';
					elsif run_freerun = '1' then
						writing <= false;
						reading <= false;
						clocking <= true;
						state <= Freerun;
						ack <= '1';
					end if;

				when Freerun =>
					ack <= '0';
					if run_freerun = '0' then
						state <= Idle;
						clocking <= false;
					end if;

				when Handshake =>
					ack <= '0';
					running <= '1';
					state <= Starting;

				when Starting =>
					state <= Run;

				when Run =>

					if max = 0 then	-- done?
						state <= Stopping;
						clocking <= false;
						tms_i(0) <= '0';
					elsif pingTMS and (max = 1) then
						tms_i(0) <= '1';
						clocking <= true;
						max <= max - 1;
					else
						clocking <= true;
						max <= max - 1;
						for idx in tms_i'right to tms_i'left-1 loop
							tms_i(idx) <= tms_i(idx + 1);
						end loop;
					end if;

				when Stopping =>
					running <= '0';
					state <= Idle;

			end case;

		end if;
	end process;

end RTL;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲九九爱视频| 亚洲午夜视频在线观看| 欧美性极品少妇| 国产电影一区在线| 丝袜美腿高跟呻吟高潮一区| 久久精品在线免费观看| 欧美久久一区二区| aaa亚洲精品| 国产呦精品一区二区三区网站| 亚洲欧美色图小说| 国产农村妇女毛片精品久久麻豆 | 欧美色精品在线视频| 国产98色在线|日韩| 老司机精品视频在线| 亚洲午夜在线电影| 亚洲日本青草视频在线怡红院| 久久一区二区视频| 日韩欧美中文字幕公布| 欧美日韩国产一级| 欧美日韩国产综合一区二区 | 日本一区二区综合亚洲| 欧美一区二区成人| 欧美探花视频资源| 欧美少妇xxx| 欧洲亚洲精品在线| 91免费观看视频| 豆国产96在线|亚洲| 国产一区二区视频在线| 久久精品久久99精品久久| 偷拍亚洲欧洲综合| 亚洲大片在线观看| 亚洲国产乱码最新视频| 亚洲影院理伦片| 亚洲精品视频在线| 亚洲黄色免费网站| 一区二区三区在线免费播放| 亚洲精品一卡二卡| 一区二区三区四区蜜桃 | 国内精品自线一区二区三区视频| 日韩精品欧美成人高清一区二区| 亚洲午夜在线视频| 天天影视涩香欲综合网| 日韩av不卡在线观看| 麻豆国产精品官网| 精品一区二区成人精品| 韩国精品主播一区二区在线观看| 精久久久久久久久久久| 国产精品一二三四| 97se狠狠狠综合亚洲狠狠| 99re成人在线| 欧美专区亚洲专区| 欧美精选午夜久久久乱码6080| 3d成人动漫网站| 精品免费视频一区二区| 久久久av毛片精品| 国产精品久久久久久亚洲毛片| 一区二区在线观看av| 日本不卡高清视频| 国产精品一区二区无线| www.欧美色图| 精品视频免费看| 日韩三区在线观看| 国产精品理伦片| 亚洲一级二级三级在线免费观看| 天天影视网天天综合色在线播放| 久久99国产精品尤物| 丁香婷婷综合激情五月色| 色综合久久综合中文综合网| 7777精品伊人久久久大香线蕉超级流畅 | 国产一区二区在线看| 国产mv日韩mv欧美| 在线一区二区视频| 欧美成人精品高清在线播放| 欧美激情一区二区在线| 亚洲一区国产视频| 蜜桃久久av一区| 99视频热这里只有精品免费| 欧美日本一道本| 欧美国产精品久久| 亚洲va天堂va国产va久| 国产成人av一区二区三区在线| 96av麻豆蜜桃一区二区| 日韩一区二区在线免费观看| 欧美国产一区视频在线观看| 午夜日韩在线电影| 成人国产一区二区三区精品| 欧美三级视频在线观看| 亚洲国产电影在线观看| 亚洲www啪成人一区二区麻豆 | 欧美视频中文字幕| 久久色在线观看| 亚洲成人一区二区| 国产91色综合久久免费分享| 欧美日韩久久不卡| 亚洲欧洲日产国产综合网| 蜜臀久久99精品久久久画质超高清| 成人h动漫精品一区二区| 欧美一级专区免费大片| 日韩一区在线看| 国产精品中文欧美| 69堂成人精品免费视频| 亚洲乱码国产乱码精品精可以看| 国产中文字幕精品| 91精品国产综合久久精品麻豆| 日韩理论电影院| 成人一区二区视频| 精品国产露脸精彩对白| 亚洲不卡在线观看| 91久久国产最好的精华液| 中文一区在线播放| 国产一区二区网址| 精品欧美乱码久久久久久 | 亚洲美女少妇撒尿| 成人激情小说网站| 国产视频一区二区三区在线观看| 日本伊人色综合网| 777欧美精品| 亚洲午夜国产一区99re久久| 91在线视频观看| 国产精品女上位| 国产盗摄精品一区二区三区在线| 欧美一区二区三区视频在线观看| 亚洲午夜精品17c| 在线精品视频小说1| 亚洲欧美国产高清| 色婷婷国产精品| 亚洲精品少妇30p| 色诱亚洲精品久久久久久| 亚洲欧美精品午睡沙发| 波多野结衣中文字幕一区| 中文字幕欧美区| 成人免费视频视频在线观看免费 | 日韩理论片在线| 99re热这里只有精品免费视频| 国产精品美女久久福利网站| 国产成人免费9x9x人网站视频| 国产午夜精品理论片a级大结局| 精品一区二区三区免费毛片爱 | 久久久影院官网| 极品少妇xxxx偷拍精品少妇| 日韩美女主播在线视频一区二区三区| 视频一区在线播放| 日韩欧美亚洲一区二区| 黄色日韩网站视频| 久久久久久久电影| 丁香另类激情小说| 亚洲美女视频在线| 5566中文字幕一区二区电影| 青青青爽久久午夜综合久久午夜| 日韩一区二区三| 国产精品88av| 亚洲天堂网中文字| 欧美日韩国产片| 国内精品伊人久久久久影院对白| 国产网站一区二区三区| aaa亚洲精品一二三区| 亚洲午夜激情网页| 欧美不卡一区二区| 懂色av中文字幕一区二区三区| 亚洲精品国产无套在线观| 欧美日韩在线直播| 久草热8精品视频在线观看| 国产欧美日韩另类一区| 色综合av在线| 美国十次综合导航| 中文字幕一区二区三区蜜月 | 色哟哟日韩精品| 日产国产欧美视频一区精品| 久久久久久久久久看片| 92精品国产成人观看免费 | 免费成人在线视频观看| 久久精品视频免费观看| 91福利视频在线| 老司机精品视频一区二区三区| 国产精品久久久久久久蜜臀| 欧美性色黄大片手机版| 国产一区在线视频| 亚洲一级二级三级| 久久色.com| 欧美亚洲免费在线一区| 国产一区二区精品在线观看| 又紧又大又爽精品一区二区| 欧美一区二区久久久| av电影天堂一区二区在线| 偷拍亚洲欧洲综合| 中文字幕一区av| 亚洲精品在线电影| 日本国产一区二区| 国产馆精品极品| 日韩和欧美一区二区| 国产精品乱码久久久久久| 欧美一区二区在线观看| 97超碰欧美中文字幕| 精品一区二区三区不卡| 亚洲h精品动漫在线观看| 亚洲欧洲日韩av| 久久日韩精品一区二区五区| 欧美伦理视频网站| 99久久精品免费看国产| 国产一区高清在线|