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

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

?? devicetranseiver.vhd

?? fpga介紹及其相關實驗代碼等等,fpga介紹及其相關實驗代碼
?? VHD
?? 第 1 頁 / 共 2 頁
字號:
					if read_count = read_in then
						handle_step := 6;		  
						-- send command: clear endpoint buffer	
					else
						a0 <= D12_DATA;
						rd_n_var := '0';
					end if;	
				when 6 => 
					a0 <= D12_COMMAND;
					data_out <= D12_COMMAND_CLEAR_EP_BUFFER;
					wr_n_var := '0';  
					handle_step := 7;		 
				when others => 
					handle_step := 0;
					-- restore to the origin state
					ts_state <= last_ts_state;			
				end case;
			
			-- state is 'end receive', means finishing receiving all data
			when TS_END_RECEIVE =>	
				recv_n <= '0';
				req_type <= ts_data(ADDRESS_DEVICE_REQUEST);	
				ts_state <= TS_IDLE;
			
			-- state is 'write endpoint 0', means writing data to endpoint 0 buffer
			when TS_WRITE_ENDPOINT =>
				case handle_step is
				when 0 =>						  
					-- send command: select end point
					a0 <= D12_COMMAND;
					data_out <= active_ep;
					wr_n_var := '0';
					handle_step := handle_step+1;
				when 1 =>
					-- i don't know what this does
					a0 <= D12_DATA;
					rd_n_var := '0';
					handle_step := handle_step+1;
				when 2 =>
					-- send command: read/write endpoint buffer
					a0 <= D12_COMMAND;
					data_out <= D12_COMMAND_RW_BUFFER;
					wr_n_var := '0';				 
					handle_step := handle_step+1;
				when 3 =>
					-- write first byte which is reserved
					a0 <= D12_DATA;
					data_out <= X"00";
					wr_n_var := '0';				 
					handle_step := handle_step+1;
				when 4 =>
					-- write data length
					a0 <= D12_DATA;
					data_out <= conv_std_logic_vector(to_write, 8);
					wr_n_var := '0';
					write_count := 0;
					handle_step := handle_step+1;  
				when 5 =>	
					if to_write = 0 then 
						-- send comnand: enable buffer
						a0 <= D12_COMMAND;
						data_out <= D12_COMMAND_ENABLE_BUFFER; 			   
						wr_n_var := '0';			 
						handle_step := 7;
					else
						handle_step := handle_step+1;
					end if;
				when 6 =>
					if write_count = to_write then 
						-- send comnand: enable buffer
						a0 <= D12_COMMAND;
						data_out <= D12_COMMAND_ENABLE_BUFFER; 			   
						wr_n_var := '0';
						handle_step := 7;
					else
						-- write data to buffer
						a0 <= D12_DATA;
						data_out <= ts_data(ram_address);  
						ram_address := ram_address+1;
						wr_n_var := '0';
						write_count := write_count+1;
					end if;
				when 7 =>   
					-- restore to the origin state
					handle_step := 0;
					ts_state <= last_ts_state;						
				when others =>				  
					NULL;
				end case;	 
			
			-- state is 'endpoint 0 transmit', means endpoint 0 need transmit data
			when TS_EP0_TRANSMIT =>		   			
				-- state is 'start', means starting processing
				case ih_state is 															   
				when IH_START =>	   	   	
					-- send command: read last transaction status register of endpoint 0
					a0 <= D12_COMMAND;
					data_out <= D12_COMMAND_READ_LTS_EP0_IN;
					wr_n_var := '0';
					handle_step := 0;
					ih_state <= IH_READ_LTS;
				-- state is 'read lts', means reading last transaction status
				when IH_READ_LTS =>
					if handle_step = 0 then
						-- try to retrieve last transaction status register of endpoint 0
						a0 <= D12_DATA;
						rd_n_var := '0';
						handle_step := handle_step+1;
					else
						-- check whether is in TRANSMIT state
						if is_transmit = '0' then
							ts_state <= TS_IDLE;
						else
							-- calculate base address
							handle_step := 0;
							active_ep := X"01";
							-- calculate write data count
							to_write := data_length - data_count; 
							ts_state <= TS_WRITE_ENDPOINT;
							last_ts_state := TS_IDLE;
							if to_write >= LENGTH_ENDPOINT0_BUFFER then
								to_write := LENGTH_ENDPOINT0_BUFFER;
							else
								is_transmit := '0';
							end if;									
							data_count := data_count+to_write;
						end if;
					end if;					
				-- unknown state, do nothing
				when others =>
					NULL;
				end case;

			-- 'get descriptor' request (1st step)
			when TS_SEND_DESCRIPTOR_1ST =>	
				if ts_data(ADDRESS_DESCRIPTOR_TYPE) = TYPE_DEVICE_DESCRIPTOR then 
					step(0) <= '0';
					to_write :=	LENGTH_ENDPOINT0_BUFFER;
					active_ep := X"01";
					ram_address := ADDRESS_DEVICE_DESCRIPTOR;	
					ts_state <= TS_WRITE_ENDPOINT;
					last_ts_state := TS_END_REQUESTHANDLER;			
					handle_step := 0;
				else
					ts_state <= TS_IDLE;
				end if;				
				
			-- 'get descriptor' request
			when TS_SEND_DESCRIPTOR =>												 
				handle_step := 0;
				active_ep := X"01";
				if ts_data(ADDRESS_DESCRIPTOR_TYPE) = TYPE_DEVICE_DESCRIPTOR then  
					step(0) <= '0';
					-- check data length
					if data_length > LENGTH_DEVICE_DESCRIPTOR then
						data_length := LENGTH_DEVICE_DESCRIPTOR;
					end if;	
					if data_length > LENGTH_ENDPOINT0_BUFFER then
						to_write := LENGTH_ENDPOINT0_BUFFER; 
						is_transmit := '1';	   
					else
						to_write := data_length; 
					end if;
					data_count := to_write; 
					ram_address := ADDRESS_DEVICE_DESCRIPTOR;
					ts_state <= TS_WRITE_ENDPOINT;
				elsif ts_data(ADDRESS_DESCRIPTOR_TYPE) = TYPE_CONFIGURATION_DESCRIPTOR then
					-- check data length  
					if data_length > LENGTH_CONFIGURATION_DESCRIPTOR then
						data_length := LENGTH_CONFIGURATION_DESCRIPTOR;	
						step(2) <= '0';
					else	 
						step(1) <= '0';
					end if;	
					if data_length > LENGTH_ENDPOINT0_BUFFER then
						to_write := LENGTH_ENDPOINT0_BUFFER; 
						is_transmit := '1';	   
					else
						to_write := data_length; 
					end if;						
					data_count := to_write; 
					ram_address := ADDRESS_CONFIGURATION_DESCRIPTOR; 
					ts_state <= TS_WRITE_ENDPOINT;	
				else
					ts_state <= TS_IDLE;
				end if;
				last_ts_state := TS_END_REQUESTHANDLER; 					
				
			-- 'set address' request
			when TS_SET_ADDRESS => 	
				step(3) <= '0';
				if handle_step = 0 then
					a0 <= D12_COMMAND;
					data_out <= D12_COMMAND_ENABLE_ADDRESS;
					wr_n_var := '0';
					handle_step := handle_step+1;
				elsif handle_step = 1 then
					a0 <= D12_DATA;
					data_out <= X"80" or ts_data(ADDRESS_SET_ADDRESS);
					wr_n_var := '0';
					handle_step := handle_step+1;
				else
					to_write :=	0;
					handle_step := 0;
					active_ep := X"01";
					ts_state <= TS_WRITE_ENDPOINT;
					last_ts_state := TS_END_REQUESTHANDLER;
				end if;
				
			-- 'set configuration' request
			when TS_SET_CONFIGURATION => 
				case ih_state is
				-- state is 'start', means start of handling
				when IH_START=>	 		  
					to_write := 0;
					active_ep := X"01";
					handle_step := 0;  
					last_ts_state := TS_SET_CONFIGURATION;
					ts_state <= TS_WRITE_ENDPOINT;
					ih_state <= IH_ENABLE_EP;--IH_DISABLE_EP;
				-- disable all endpoints
--				when IH_DISABLE_EP => 
--					if handle_step = 0 then
--						a0 <= D12_COMMAND;
--						data_out <= D12_COMMAND_ENABLE_ENDPOINT;
--						wr_n_var := '0';
--						handle_step := handle_step+1;
--					elsif handle_step = 1 then
--						a0 <= D12_DATA;
--						wr_n_var := '0';								  
--						data_out <= X"00"; 
--						if ts_data(ADDRESS_SET_CONFIGURATION) = X"00" then
--							config <= '0';	
--							ts_state <= TS_END_REQUESTHANDLER;
--						else
--							config <= '1';	
--							ih_state <= IH_ENABLE_EP;
--							handle_step := 0;
--						end if;
--					end if;
				-- enable all endpoints
				when IH_ENABLE_EP =>     
					step(4) <= '0';
					if handle_step = 0 then
						a0 <= D12_COMMAND;
						data_out <= D12_COMMAND_ENABLE_ENDPOINT;
						wr_n_var := '0';
						handle_step := handle_step+1;
					elsif handle_step = 1 then
						a0 <= D12_DATA;		  
						data_out <= X"01";	
						wr_n_var := '0';    		
						ts_state <= TS_END_REQUESTHANDLER;
					end if;	
				-- unknown state, do nothing
				when others =>
					NULL;
				end case;

			-- 'get status' request
			when TS_SEND_STATUS =>
				case ts_data(ADDRESS_DEVICE_REQUEST_TYPE)(1 downto 0) is 
				when "00" =>
					if remote_wakeup = '0' then
						ts_data(ADDRESS_TEMP_DATA) <= X"03";
					else
						ts_data(ADDRESS_TEMP_DATA) <= X"00";
					end if;
					ts_data(ADDRESS_TEMP_DATA+1) <= X"00";
				when "01" =>							  
					ts_data(ADDRESS_TEMP_DATA) <= X"00";
					ts_data(ADDRESS_TEMP_DATA+1) <= X"00";
				when "10" =>							  
					ts_data(ADDRESS_TEMP_DATA) <= X"00";
					ts_data(ADDRESS_TEMP_DATA+1) <= X"00";
				when others =>
					NULL;
				end case;
				ram_address := ADDRESS_TEMP_DATA;
				handle_step := 0;
				active_ep := X"01";
				to_write := 2;
				ts_state <= TS_WRITE_ENDPOINT;
				last_ts_state := TS_END_REQUESTHANDLER;	

			-- 'clear feature' request
			when TS_CLEAR_FEATURE =>
				case ts_data(ADDRESS_DEVICE_REQUEST_TYPE)(1 downto 0) is 
				when "00" =>
					if ts_data(ADDRESS_REQUEST_VALUE_LOW) = X"01" then
						remote_wakeup <= '0';
					end if;
				when others =>
					NULL;
				end case;
				handle_step := 0;
				active_ep := X"01";
				to_write := 0;
				ts_state <= TS_WRITE_ENDPOINT;
				last_ts_state := TS_END_REQUESTHANDLER;	
		  
			-- 'set feature' request	
			when TS_SET_FEATURE =>
				case ts_data(ADDRESS_DEVICE_REQUEST_TYPE)(1 downto 0) is 
				when "00" =>
					if ts_data(ADDRESS_REQUEST_VALUE_LOW) = X"01" then
						remote_wakeup <= '1';
					end if;
				when others =>
					NULL;
				end case;
				handle_step := 0;
				active_ep := X"01";
				to_write := 0;
				ts_state <= TS_WRITE_ENDPOINT;
				last_ts_state := TS_END_REQUESTHANDLER;

			-- 'get configuration' request
			when TS_GET_CONFIGURATION => 
				step(5) <= '0';
				handle_step := 0;
				active_ep := X"01";
				to_write := 1;
				if config = '1' then
					ts_data(ADDRESS_TEMP_DATA) <= X"01";
				else									
					ts_data(ADDRESS_TEMP_DATA) <= X"00";
				end if;
				ram_address := ADDRESS_TEMP_DATA;
				ts_state <= TS_WRITE_ENDPOINT;
				last_ts_state := TS_END_REQUESTHANDLER;
				
			-- 'get interface' request
			when TS_GET_INTERFACE =>   
				step(6) <= '0';
				handle_step := 0;
				active_ep := X"01";
				to_write := 1; 
				ts_data(ADDRESS_TEMP_DATA) <= X"00";
				ram_address := ADDRESS_TEMP_DATA;
				ts_state <= TS_WRITE_ENDPOINT;
				last_ts_state := TS_END_REQUESTHANDLER;

			-- 'set interface' request
			when TS_SET_INTERFACE =>
				handle_step := 0;
				active_ep := X"01";
				to_write := 0; 
				ts_state <= TS_WRITE_ENDPOINT;
				last_ts_state := TS_END_REQUESTHANDLER;
				
			-- state is unknows, do nothing
			when others =>
				NULL;
			
			end case;  
			-- set signal values
			wr_n <= wr_n_var;
			rd_n <= rd_n_var;
		end if;
	end process; 

end DeviceTranseiver;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人美女在线观看| 亚洲第四色夜色| 国内精品在线播放| 日韩精品在线网站| 精久久久久久久久久久| 久久免费视频一区| 91影视在线播放| 亚洲成人中文在线| 精品av久久707| 丁香激情综合国产| 怡红院av一区二区三区| 欧美精品电影在线播放| 国产自产2019最新不卡| 中文字幕亚洲一区二区va在线| 色吧成人激情小说| 强制捆绑调教一区二区| 国产精品妹子av| 欧美日韩在线播放三区四区| 六月婷婷色综合| 国产精品传媒在线| 欧美一区二区啪啪| 成人影视亚洲图片在线| 一区二区三区精密机械公司| 日韩欧美成人激情| 成人综合婷婷国产精品久久 | 亚洲精品亚洲人成人网在线播放| 成人黄色a**站在线观看| 综合欧美一区二区三区| 欧美一级日韩不卡播放免费| 国产一区二区三区四区五区入口 | 日韩免费高清电影| 国产jizzjizz一区二区| 国产精品国产三级国产普通话三级| 欧美日韩一级视频| 日韩高清在线一区| 国产亚洲污的网站| 欧美视频三区在线播放| 久久91精品国产91久久小草| 亚洲欧洲日韩女同| 欧美日韩国产中文| 成人福利视频在线看| 91福利视频在线| 亚洲香蕉伊在人在线观| 久久综合国产精品| 99久久精品国产麻豆演员表| 日韩成人免费电影| 国产欧美日韩综合精品一区二区| 欧美一区二区在线免费播放| av不卡在线观看| 国内外成人在线| 天堂久久一区二区三区| 亚洲欧美激情一区二区| 久久精品一二三| 7777精品久久久大香线蕉| 色哟哟国产精品免费观看| 国产精品123| 日韩二区三区在线观看| 亚洲成人在线观看视频| 一区二区三区中文在线观看| 国产精品乱码妇女bbbb| 久久久www成人免费无遮挡大片| 欧美日韩一区视频| 欧美三级在线看| 色综合久久久久久久久| 99热精品国产| 成人av电影观看| 成人免费不卡视频| 国产成人午夜视频| 成人性生交大片免费看中文| 国产呦萝稀缺另类资源| 国产一区二区三区免费播放| 国产自产2019最新不卡| 国产麻豆精品在线| 国产乱人伦精品一区二区在线观看 | 欧美天天综合网| 在线观看91精品国产入口| 色中色一区二区| 在线观看免费亚洲| 欧美日韩一区二区三区在线| 欧美色精品在线视频| 色呦呦一区二区三区| 色呦呦网站一区| 欧美日韩黄色影视| 欧美一级片免费看| 久久欧美一区二区| 欧美国产日韩a欧美在线观看| 国产亚洲一区二区三区四区| 国产日韩欧美精品在线| 日韩毛片高清在线播放| 一区二区三区中文在线观看| 亚洲一区在线观看网站| 五月激情丁香一区二区三区| 久久成人av少妇免费| 国产经典欧美精品| 一本久道中文字幕精品亚洲嫩| 欧美亚洲高清一区二区三区不卡| 欧美浪妇xxxx高跟鞋交| 欧美一区二区私人影院日本| 精品成人一区二区三区四区| 国产亚洲成aⅴ人片在线观看| 中文字幕一区二区三区在线观看| 亚洲狠狠丁香婷婷综合久久久| 亚洲午夜久久久久| 久久电影网站中文字幕| 成人教育av在线| 欧美日本在线视频| 国产三级一区二区| 一区二区三区欧美在线观看| 日韩成人午夜电影| 成人激情黄色小说| 91精品在线观看入口| 国产日韩欧美精品一区| 亚洲成人777| 国产精品18久久久久久久网站| 91一区二区三区在线播放| 日韩一区二区免费在线观看| 欧美激情综合五月色丁香| 亚洲国产一区二区a毛片| 久久精品国产亚洲aⅴ| av电影在线观看完整版一区二区| 欧美日本国产一区| 日本一区二区电影| 日韩va亚洲va欧美va久久| 成人免费看片app下载| 欧美一区三区二区| 1区2区3区精品视频| 久久精品国产久精国产| 91丨porny丨蝌蚪视频| 精品国产成人在线影院| 亚洲综合视频在线| 成人免费视频视频在线观看免费| 欧美日韩国产天堂| 一区精品在线播放| 国产一区二区三区在线观看免费 | 国产精品乱人伦| 美国十次了思思久久精品导航| 99久久夜色精品国产网站| 精品动漫一区二区三区在线观看 | 日本va欧美va精品| 色婷婷av久久久久久久| 国产免费观看久久| 久久99热99| 91精品国产色综合久久不卡蜜臀| 一区二区三区高清不卡| 成人美女视频在线观看| 久久综合一区二区| 麻豆精品视频在线观看| 欧美伦理影视网| 亚洲一区精品在线| 一本大道久久a久久综合婷婷| 国产精品久久久久一区二区三区共| 国产乱子伦一区二区三区国色天香| 欧美人狂配大交3d怪物一区| 亚洲精品免费在线| 色天使久久综合网天天| 亚洲同性gay激情无套| 99久久99精品久久久久久| 国产精品欧美久久久久无广告| 国产精品资源站在线| 久久天堂av综合合色蜜桃网| 国内精品久久久久影院薰衣草| 日韩精品一区二区三区四区视频| 美女视频网站久久| 日韩三级高清在线| 麻豆视频观看网址久久| 日韩久久久精品| 国模无码大尺度一区二区三区| 日韩三级视频在线观看| 九色综合狠狠综合久久| 久久影院电视剧免费观看| 国产在线国偷精品免费看| www激情久久| 成人在线视频一区| 中文字幕在线不卡视频| 91视频免费播放| 亚洲激情欧美激情| 欧美色涩在线第一页| 日本不卡123| 久久综合成人精品亚洲另类欧美 | 91麻豆精品国产无毒不卡在线观看| 日韩中文欧美在线| 精品免费视频一区二区| 国产精品一卡二卡| 日本一区二区视频在线观看| 99在线热播精品免费| 亚洲午夜一二三区视频| 欧美一区二区三区四区五区| 国内精品免费在线观看| 国产精品国产三级国产专播品爱网 | 国产精品综合二区| 亚洲人精品一区| 欧美日韩一级黄| 国产精品一区二区久久不卡| 亚洲欧洲av色图| 欧美日韩你懂得| 国产精品亚洲一区二区三区妖精| 亚洲人成影院在线观看| 在线成人午夜影院| 成人午夜视频在线观看| 亚洲香肠在线观看|