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

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

?? jtag_logic.vhd

?? 這是自制altera usb_blaster所用到的CPLD程序
?? VHD
字號:
-------------------------------------------------------------------------------
-- Serial/Parallel converter, interfacing JTAG chain with FTDI FT245BM
-------------------------------------------------------------------------------

LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;

ENTITY jtag_logic IS
	PORT
	(
		CLK : IN STD_LOGIC;        -- external 24/25 MHz oscillator
		nRXF : IN STD_LOGIC;       -- FT245BM nRXF
		nTXE : IN STD_LOGIC;       -- FT245BM nTXE
		B_TDO  : IN STD_LOGIC;     -- JTAG input: TDO, AS/PS input: CONF_DONE
		B_ASDO : IN STD_LOGIC;     -- AS input: DATAOUT, PS input: nSTATUS
		B_TCK  : BUFFER STD_LOGIC; -- JTAG output: TCK to chain, AS/PS DCLK
		B_TMS  : BUFFER STD_LOGIC; -- JTAG output: TMS to chain, AS/PS nCONFIG
		B_NCE  : BUFFER STD_LOGIC; -- AS output: nCE
		B_NCS  : BUFFER STD_LOGIC; -- AS output: nCS
		B_TDI  : BUFFER STD_LOGIC; -- JTAG output: TDI to chain, AS: ASDI, PS: DATA0
		B_OE   : BUFFER STD_LOGIC; -- LED output/output driver enable 
		nRD : OUT STD_LOGIC;       -- FT245BM nRD
		WR : OUT STD_LOGIC;        -- FT245BM WR
		D : INOUT STD_LOGIC_VECTOR(7 downto 0) -- FT245BM D[7..0]
	);
END jtag_logic;

ARCHITECTURE spec OF jtag_logic IS

	-- There are exactly 16 states. If this is encoded using 4 bits, there will
	-- be no unknown/undefined state. The host will send us 64 times "0" to move
	-- the state machine to a known state. We don't need a power-on reset.
	
	TYPE states IS
	(
		wait_for_nRXF_low,
		set_nRD_low,
		keep_nRD_low,
		latch_data_from_host,
		set_nRD_high,
		bits_set_pins_from_data,
		bytes_set_bitcount,
		bytes_get_tdo_set_tdi,
		bytes_clock_high_and_shift,
		bytes_keep_clock_high,
		bytes_clock_finish,
		wait_for_nTXE_low,
		set_WR_high,
		output_enable,
		set_WR_low,
		output_disable
	);
	
	ATTRIBUTE ENUM_ENCODING: STRING;
	ATTRIBUTE ENUM_ENCODING OF states: TYPE IS 
	  "0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111";
	
	SIGNAL carry: STD_LOGIC;
	SIGNAL do_output: STD_LOGIC;
	SIGNAL ioshifter: STD_LOGIC_VECTOR(7 DOWNTO 0);
	SIGNAL bitcount: STD_LOGIC_VECTOR(8 DOWNTO 0);
	SIGNAL state, next_state: states;
	
BEGIN
	sm: PROCESS(CLK, nRXF, nTXE, state, bitcount, ioshifter, do_output)

	BEGIN
		CASE state IS
		
			-- ============================ INPUT
		
			WHEN wait_for_nRXF_low =>
				IF nRXF='0' THEN
					next_state <= set_nRD_low;
				ELSE
					next_state <= wait_for_nRXF_low;
				END IF;
				
			WHEN set_nRD_low =>
				next_state <= keep_nRD_low;
			
			WHEN keep_nRD_low => 
				next_state <= latch_data_from_host;
				
			WHEN latch_data_from_host =>
				next_state <= set_nRD_high;
			
			WHEN set_nRD_high =>
				IF NOT (bitcount(8 DOWNTO 3) = "000000") THEN
					next_state <= bytes_get_tdo_set_tdi;
				ELSIF ioshifter(7) = '1' THEN
					next_state <= bytes_set_bitcount;
				ELSE
					next_state <= bits_set_pins_from_data;
				END IF;
			
			WHEN bytes_set_bitcount =>
				next_state <= wait_for_nRXF_low;
			
			-- ============================ BIT BANGING
				
			WHEN bits_set_pins_from_data =>
				IF ioshifter(6) = '0' THEN
					next_state <= wait_for_nRXF_low; -- read next byte from host
				ELSE
					next_state <= wait_for_nTXE_low; -- output byte to host
				END IF;
				
			-- ============================ BYTE OUTPUT (SHIFT OUT 8 BITS)
			
			WHEN bytes_get_tdo_set_tdi =>
				next_state <= bytes_clock_high_and_shift;
			
			WHEN bytes_clock_high_and_shift =>
				next_state <= bytes_keep_clock_high;
				
			WHEN bytes_keep_clock_high =>
				next_state <= bytes_clock_finish;
				
			WHEN bytes_clock_finish =>
				IF NOT (bitcount(2 DOWNTO 0) = "111") THEN
					next_state <= bytes_get_tdo_set_tdi; -- clock next bit
				ELSIF do_output = '1' THEN
					next_state <= wait_for_nTXE_low; -- output byte to host
				ELSE
					next_state <= wait_for_nRXF_low; -- read next byte from host
				END IF;
			
			-- ============================ OUTPUT BYTE TO HOST
			
			WHEN wait_for_nTXE_low =>
				IF nTXE = '0' THEN
					next_state <= set_WR_high;
				ELSE
					next_state <= wait_for_nTXE_low;
				END IF;
				
			WHEN set_WR_high =>
				next_state <= output_enable;
				
			WHEN output_enable =>
				next_state <= set_WR_low;
				
			WHEN set_WR_low =>
				next_state <= output_disable;
			
			WHEN output_disable =>
				next_state <= wait_for_nRXF_low; -- read next byte from host
				
			WHEN OTHERS => 
				next_state <= wait_for_nRXF_low;
				
		END CASE;
	END PROCESS sm;

	out_sm: PROCESS(CLK, state, ioshifter, B_TDO, bitcount, carry)

	BEGIN
		IF CLK = '1' AND CLK'event THEN
			
			IF state = set_nRD_low OR state = keep_nRD_low OR state = latch_data_from_host THEN
				nRD <= '0';
			ELSE
				nRD <= '1';
			END IF;
			
			IF state = latch_data_from_host THEN
				ioshifter(7 DOWNTO 0) <= D;
			END IF;
			
			IF state = set_WR_high OR state = output_enable THEN
				WR <= '1';
			ELSE
				WR <= '0';
			END IF;
			
			IF state = output_enable OR state = set_WR_low THEN
				D <= ioshifter(7 DOWNTO 0);
			ELSE
				D <= "ZZZZZZZZ";	
			END IF;
			
			IF state = bits_set_pins_from_data THEN
				B_TCK <= ioshifter(0);
				B_TMS <= ioshifter(1);
				B_NCE <= ioshifter(2);
				B_NCS <= ioshifter(3);
				B_TDI <= ioshifter(4);
				B_OE  <= ioshifter(5);
				ioshifter <= "000000" & B_ASDO & B_TDO;
			END IF;
			
			IF state = bytes_set_bitcount THEN
				bitcount <= ioshifter(5 DOWNTO 0) & "111";
				do_output <= ioshifter(6);
			END IF;
			
			IF state = bytes_get_tdo_set_tdi THEN
				IF B_NCS = '1' THEN
					carry <= B_TDO; -- JTAG mode (nCS=1)
				ELSE
					carry <= B_ASDO; -- Active Serial mode (nCS=0)
				END IF;
				B_TDI <= ioshifter(0);
				bitcount <= bitcount - 1;
			END IF;
			
			IF state = bytes_clock_high_and_shift OR state = bytes_keep_clock_high THEN
				B_TCK <= '1';
			END IF;
			
			IF state = bytes_clock_high_and_shift THEN
				ioshifter <= carry & ioshifter(7 DOWNTO 1);
			END IF;
			
			IF state = bytes_clock_finish THEN
				B_TCK <= '0';
			END IF;
		
			state <= next_state;
			
		END IF;
	END PROCESS out_sm;
	
END spec;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区不卡在线| 91在线观看成人| 亚洲精品视频在线看| 欧美一区二区三区四区五区| av中文字幕在线不卡| 视频一区二区三区在线| 国产精品久久久久久妇女6080| 91精品国产色综合久久不卡蜜臀 | 加勒比av一区二区| 一区二区不卡在线视频 午夜欧美不卡在| 日韩欧美在线网站| 在线免费观看成人短视频| 国产盗摄视频一区二区三区| 蜜桃一区二区三区在线| 亚洲一卡二卡三卡四卡| 国产精品久久久久久久久快鸭 | 国产网红主播福利一区二区| 欧美肥胖老妇做爰| 在线免费不卡视频| 99vv1com这只有精品| 国产老肥熟一区二区三区| 奇米亚洲午夜久久精品| 午夜欧美大尺度福利影院在线看| 亚洲欧洲精品一区二区三区不卡 | 午夜免费久久看| 日韩伦理电影网| 欧美激情一区二区三区蜜桃视频| 精品对白一区国产伦| 在线成人av影院| 欧美三级三级三级爽爽爽| 色婷婷综合久久久| 99国产麻豆精品| aaa亚洲精品一二三区| 国产精品亚洲第一区在线暖暖韩国| 免费观看30秒视频久久| 男女激情视频一区| 久久国产精品免费| 精品亚洲成a人| 精品一区二区免费看| 久久99精品国产麻豆不卡| 成人性生交大片免费看中文网站 | 欧美人牲a欧美精品| 欧美视频完全免费看| 欧美日韩国产首页| 欧美日韩国产成人在线免费| 欧美男人的天堂一二区| 欧美一级精品大片| 欧美岛国在线观看| 久久久久国色av免费看影院| 国产欧美一区二区精品秋霞影院| 国产亚洲制服色| 亚洲四区在线观看| 夜夜爽夜夜爽精品视频| 污片在线观看一区二区 | 99久久夜色精品国产网站| 97se狠狠狠综合亚洲狠狠| 日本韩国欧美一区| 91精品国产综合久久久久久久| 欧美不卡在线视频| 国产亚洲女人久久久久毛片| 欧美高清在线一区二区| 亚洲色图清纯唯美| 亚洲高清视频的网址| 免费高清视频精品| 国产成人精品一区二区三区网站观看| 国产+成+人+亚洲欧洲自线| 91亚洲国产成人精品一区二三| 91久久久免费一区二区| 91精品国产麻豆| 国产亲近乱来精品视频 | 国产在线看一区| jizz一区二区| 欧美精品黑人性xxxx| 久久先锋影音av| 亚洲精品欧美二区三区中文字幕| 午夜激情综合网| 国产乱码精品一区二区三| 色综合天天综合网天天看片| 欧美一级夜夜爽| 国产精品久久久一区麻豆最新章节| 亚洲电影激情视频网站| 国产精品一卡二卡在线观看| 色老汉一区二区三区| 日韩精品中午字幕| 亚洲欧美另类图片小说| 蜜臀av一区二区| 99精品国产热久久91蜜凸| 91精品国产高清一区二区三区蜜臀| 国产精品午夜电影| 日韩av电影免费观看高清完整版 | 欧美网站一区二区| 日本一区二区综合亚洲| 午夜日韩在线电影| 99亚偷拍自图区亚洲| 日韩欧美成人激情| 一区二区三区在线观看欧美| 国产乱子伦视频一区二区三区| 欧洲精品一区二区三区在线观看| 久久五月婷婷丁香社区| 香蕉久久夜色精品国产使用方法 | 欧美视频完全免费看| 欧美激情综合五月色丁香小说| 无码av免费一区二区三区试看 | 色综合久久综合中文综合网| 欧美一级高清片| 亚洲成人一区在线| 91免费视频观看| 欧美国产国产综合| 极品少妇一区二区三区精品视频| 欧美日韩一区二区电影| 亚洲日本一区二区| 国产成a人亚洲精品| 日韩欧美在线一区二区三区| 性做久久久久久久久| 95精品视频在线| 亚洲国产精品黑人久久久| 美国毛片一区二区三区| 88在线观看91蜜桃国自产| 一区二区三区精品视频| 91在线视频18| 国产精品美日韩| 国产91在线观看丝袜| 久久精品亚洲国产奇米99| 久久不见久久见免费视频7| 777久久久精品| 日本午夜精品一区二区三区电影| 在线国产亚洲欧美| 亚洲卡通动漫在线| 色综合久久中文综合久久97| 日韩美女视频一区| av不卡免费在线观看| 亚洲欧洲精品一区二区三区不卡 | 欧美精品一区二区三区四区| 蜜桃久久久久久| 精品少妇一区二区三区日产乱码| 日韩不卡一区二区| 精品少妇一区二区三区视频免付费 | 欧美日韩成人激情| 亚洲色欲色欲www| 麻豆国产精品一区二区三区| 91精品国产综合久久国产大片| 亚洲乱码日产精品bd| 99久久er热在这里只有精品15| 久久精子c满五个校花| 久久精品国产网站| 亚洲精品一区二区三区福利| 奇米精品一区二区三区四区| 欧美性猛片xxxx免费看久爱| 亚洲最大成人综合| 国产一区二区三区四| 国产女同互慰高潮91漫画| 国产成人无遮挡在线视频| 国产亚洲欧美日韩俺去了| 国产九色精品成人porny| 中文一区在线播放| 成人激情动漫在线观看| 中文字幕亚洲不卡| 91小视频在线观看| 午夜av区久久| 欧美日韩一区二区欧美激情| 石原莉奈一区二区三区在线观看| 欧美精品v日韩精品v韩国精品v| 亚洲一线二线三线久久久| 欧美一区二区三区爱爱| 麻豆久久一区二区| 国产亚洲一区二区三区| 成人高清在线视频| 亚洲国产精品久久艾草纯爱| 91精品国产色综合久久ai换脸| 蜜桃久久av一区| 国产日韩av一区| 91色.com| 天天综合网 天天综合色| 欧美成人福利视频| 成人性色生活片免费看爆迷你毛片| 一区二区三区电影在线播| 欧美精品aⅴ在线视频| 久久er99精品| 中文字幕巨乱亚洲| av在线免费不卡| 美女视频黄a大片欧美| 中文字幕不卡一区| 欧美日韩在线三区| 麻豆91在线播放免费| 日韩一区在线看| 制服丝袜一区二区三区| 国产一区在线观看视频| 国产精品理论片| 欧美va在线播放| 色婷婷综合久久久久中文一区二区| 视频一区欧美精品| 久久精品亚洲一区二区三区浴池| 色综合咪咪久久| 精品一区二区三区免费| 一区二区三区中文字幕精品精品 | 极品少妇xxxx精品少妇| 亚洲欧美激情在线| 精品久久久久久最新网址| 日本高清不卡一区| 久久99精品国产91久久来源|