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

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

?? analyser.vhd

?? keyboardcontroller IP CORE .VERY GOOD AS A STUDY FILE
?? VHD
字號:
library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;use work.Constants.all; entity Analyser is    port (reset, clk : in  std_logic;       analyse : in std_logic;		 store : in std_logic;		 		 debounced: out std_logic;           keychanged : out std_logic;       released : out std_logic;              sample_col : in col;       sample_row_number : in row_number;              conv_col : out col_number;       conv_row : out row_number              );    end Analyser;architecture Analyser_arc of Analyser is   function ones_in_column(inp: col) return col_number isvariable number : col_number;begin    number := 0;    for i in inp'range loop       if inp(i)='1' then number := number+1;       end if;    end loop;    return number;end ones_in_column;function ones_in_row(inp: row) return row_number isvariable number : row_number;begin    number := 0;    for i in inp'range loop       if inp(i)='1' then number := number + 1;       end if;    end loop;    return number;end ones_in_row;function priority_encode(inp: col) return col_number isvariable tmp: col_number;begin    if inp(5)='1' then tmp:= 5;    elsif inp(4)='1' then tmp:= 4;    elsif inp(3)='1' then tmp:= 3;    elsif inp(2)='1' then tmp:= 2;    elsif inp(1)='1' then tmp:= 1;    else tmp:= 0;    end if;    return tmp;end priority_encode;--reduce or function to look for key press in a columnfunction key_pressed(inp : row) return std_logic is   variable tmp: std_logic;begin    tmp:='0';    for i in inp'range loop       tmp := tmp or inp(i);    end loop;    return tmp;end key_pressed;--function that checks whether the new key specified by col_number and row_number is valid--large input is necessary to make it a legal functionfunction valid_key(colnum: col_number; rownum: row_number; row0:row; row1:row; row2:row; row3:row; row4:row; row5:row; keysdown: key_number) return std_logic isvariable colpress : col;variable rowpress : row;variable valid :std_logic;  begin    valid := '1'; --valid until proven otherwise    colpress := "000000";    rowpress := "000000000000";        colpress(0):= key_pressed(row0);    colpress(1):= key_pressed(row1);    colpress(2):= key_pressed(row2);    colpress(3):= key_pressed(row3);    colpress(4):= key_pressed(row4);    colpress(5):= key_pressed(row5);        for i in number_of_cols-1 downto 0 loop    	rowpress(i) := row0(i) or row1(i)  or row2(i)  or row3(i)  or row4(i)  or row5(i);    end loop;        --add virtual key        colpress(colnum) := '1';    rowpress(rownum) := '1';              if (keysdown >= max_keys_pressed) then  --too many keys pressed       valid := '0';    elsif (keysdown = 2) then --check for ghosting       if (ones_in_column(colpress)=2 and ones_in_row(rowpress)=2) then           valid := '0';       end if;    end if;           return valid;end valid_key;signal debounce_state : col;signal keysdown : natural range 0 to max_keys_pressed ;signal next_keysdown : natural range 0 to max_keys_pressed;signal keychange : std_logic;signal release : std_logic;signal conv_col_number : col_number;signal conv_row_number : row_number;signal previous_sample : col; --last sampled columnsignal row0 : row;signal row1 : row;	signal row2 : row;signal row3 : row;signal row4 : row;signal row5 : row;begin    			--look for valid keychange	detector: process ( conv_col_number, conv_row_number, keysdown, row0, row1, row2, row3, row4, row5, sample_row_number, previous_sample)	variable colpress : col_number;		begin	colpress := 0;	if ((row0(sample_row_number) xor previous_sample(0))='1') then	--change detected	--keychange if valid or !pressed_down			keychange <= (not previous_sample(0)) or valid_key(0, sample_row_number, row0, row1, row2, row3, row4, row5, keysdown);			release <= not previous_sample(0);		 			colpress := 0;	elsif((row1(sample_row_number) xor previous_sample(1))='1') then			keychange <= (not previous_sample(1)) or valid_key(1, sample_row_number, row0, row1, row2, row3, row4, row5, keysdown);			release <= not previous_sample(1);		 			colpress := 1;	elsif((row2(sample_row_number) xor previous_sample(2))='1') then			keychange <= (not previous_sample(2)) or valid_key(2, sample_row_number, row0, row1, row2, row3, row4, row5, keysdown);			release <= not previous_sample(2);		 			colpress := 2;	elsif((row3(sample_row_number) xor previous_sample(3))='1') then			keychange <= (not previous_sample(3)) or valid_key(3, sample_row_number, row0, row1, row2, row3, row4, row5, keysdown);			release <= not previous_sample(3);		 			colpress := 3;	elsif((row4(sample_row_number) xor previous_sample(4))='1') then			keychange <= (not previous_sample(4)) or valid_key(4, sample_row_number, row0, row1, row2, row3, row4, row5, keysdown);			release <= not previous_sample(4);		 			colpress := 4;	elsif ((row5(sample_row_number) xor previous_sample(5))='1') then			keychange <= (not previous_sample(5)) or valid_key(5, sample_row_number, row0, row1, row2, row3, row4, row5, keysdown);			release <= not previous_sample(5);		 			colpress := 5;	else			keychange <= '0';			release <= '0';	end if;		conv_col_number <= colpress;	conv_row_number <= sample_row_number;	end process;	next_keysdown <= keysdown+1 when keychange='1' and release='0'							else						  keysdown-1 when keychange='1' and release='1'						  	else						  keysdown;						  	storer:process 	begin	wait until rising_edge(clk);	if (reset='1') then	   row0 <= "000000000000";		row1 <= "000000000000";		row2 <= "000000000000";		row3 <= "000000000000";		row4 <= "000000000000";		row5 <= "000000000000";		keychanged <= '0';		released <= '0';		keysdown <= 0;		conv_col <= 0;		conv_row <= 0; 	elsif (store='1') then  		 	if (debounce_state = "000000") then       		 	keychanged <= keychange;				   released <= release;				   keysdown <= next_keysdown;			      conv_col <= conv_col_number;	     	         conv_row <= conv_row_number;				   if (keychange='1') then 								case conv_col_number is							when 0 => row0(conv_row_number) <= previous_sample(0);							when 1 => row1(conv_row_number) <= previous_sample(1);							when 2 => row2(conv_row_number) <= previous_sample(2);							when 3 => row3(conv_row_number) <= previous_sample(3);							when 4 => row4(conv_row_number) <= previous_sample(4);							when 5 => row5(conv_row_number) <= previous_sample(5);							when others => null;						end case; 	 				   end if;			else			   keychanged <= '0';           	released <= '0';  		   end if;	else	  keychanged <= '0';	  released <= '0';	end if;	end process;	--debouncing	debouncer: process	variable counter : natural range 0 to debounce_count;	begin	wait until rising_edge(clk);		if (reset = '1') then	   debounce_state <= (others=> '0');	   previous_sample <= (others => '0');		counter := debounce_count;		debounced <= '0';	else		if (analyse='1') then	 		if (counter > 0 and counter < debounce_count) then            counter := counter - 1;	 	      debounce_state <= debounce_state or (previous_sample xor sample_col);	 	      debounced <= '0';	 	   end if;	 	   	 	 	if (counter = debounce_count) then	 		   previous_sample <= sample_col; 	 		   counter := counter -1 ;	 		end if;	 			 		if (counter = 0) then	 		   debounced <= '1';			end if; 			  		else 		   counter := debounce_count;		   debounced <= '0';		   debounce_state <= (others=> '0');		end if;		 	end if;	end process;	end Analyser_arc;       

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费不卡视频| 欧美精品第1页| 国产成人精品午夜视频免费| 水蜜桃久久夜色精品一区的特点| 亚洲一级在线观看| 一区二区三区免费| 亚洲高清在线视频| 日本成人在线一区| 国产一区激情在线| 处破女av一区二区| 色88888久久久久久影院按摩| 色婷婷久久久久swag精品| 在线一区二区视频| 制服丝袜亚洲色图| 国产偷v国产偷v亚洲高清| 国产精品每日更新| 亚洲影视在线播放| 蜜桃av噜噜一区| 岛国av在线一区| 欧美三级韩国三级日本一级| 91精品国产色综合久久ai换脸| 久久综合九色综合97婷婷| 中文字幕一区二区在线播放| 亚洲一区在线观看视频| 麻豆精品久久精品色综合| 成人涩涩免费视频| 欧美三级三级三级爽爽爽| 精品99一区二区| 亚洲欧美国产毛片在线| 久久国产欧美日韩精品| 成人18视频日本| 欧美一区二区三区成人| 国产精品久久毛片a| 日日骚欧美日韩| 成人免费毛片嘿嘿连载视频| 777午夜精品免费视频| 中文字幕精品一区| 免费欧美日韩国产三级电影| 91偷拍与自偷拍精品| 精品久久人人做人人爽| 亚洲欧美日韩一区二区三区在线观看| 免费不卡在线观看| 色综合久久久久综合99| 久久亚洲一区二区三区明星换脸| 一区二区三区在线高清| 国产精品一区二区久激情瑜伽 | 亚洲精品久久嫩草网站秘色| 久久精品国产精品亚洲精品| 91麻豆国产自产在线观看| 26uuu精品一区二区| 丝袜诱惑亚洲看片| 91麻豆国产福利在线观看| 国产视频一区二区在线| 日韩和欧美一区二区三区| 91浏览器在线视频| 国产精品久久久一区麻豆最新章节| 奇米综合一区二区三区精品视频| 色综合婷婷久久| 国产精品福利av| 成人精品视频一区| 欧美成人午夜电影| 麻豆91免费观看| 欧美精选在线播放| 亚洲成a人片综合在线| 91在线高清观看| 亚洲视频精选在线| www.亚洲人| 国产欧美日韩在线观看| 国产露脸91国语对白| 日韩午夜在线播放| 久久99精品久久久| 欧美精品一区二区三区视频| 免费人成黄页网站在线一区二区| 欧美人与禽zozo性伦| 日韩av电影一区| 精品国产欧美一区二区| 久久99国产精品免费网站| 日韩欧美一区二区不卡| 精油按摩中文字幕久久| 久久这里只有精品视频网| 精品一区二区国语对白| 国产午夜精品在线观看| 成人av电影免费在线播放| 最新热久久免费视频| 91蝌蚪porny| 亚洲成国产人片在线观看| 正在播放亚洲一区| 国产在线麻豆精品观看| 中文字幕国产精品一区二区| 97精品视频在线观看自产线路二| 亚洲综合在线视频| 日韩一区二区三区电影| 高清国产一区二区| 亚洲美女区一区| 欧美电影在哪看比较好| 国产精品一区二区免费不卡| 国产精品九色蝌蚪自拍| 欧美区一区二区三区| 狠狠色综合色综合网络| 中文字幕一区在线| 666欧美在线视频| 成人免费毛片片v| 丝袜美腿高跟呻吟高潮一区| 久久免费偷拍视频| 色天天综合色天天久久| 蜜臀va亚洲va欧美va天堂| 欧美韩日一区二区三区四区| 欧美日韩一区不卡| 成人精品在线视频观看| 午夜精品在线视频一区| 国产精品私人影院| 日韩一级黄色大片| 色狠狠桃花综合| 国产一区91精品张津瑜| 亚洲成人激情自拍| 国产精品久久国产精麻豆99网站| 欧美日韩国产大片| av不卡免费在线观看| 麻豆精品蜜桃视频网站| 亚洲一级不卡视频| 国产精品天美传媒沈樵| 亚洲精品在线观看网站| 欧洲一区二区av| 成人自拍视频在线观看| 精品在线一区二区三区| 亚洲成av人影院在线观看网| 中文字幕亚洲成人| 久久精品亚洲麻豆av一区二区 | 91在线国产福利| 国产一区二区三区免费| 日本va欧美va欧美va精品| 一二三四区精品视频| 欧美韩国一区二区| 国产亚洲欧美一级| 久久综合九色综合欧美就去吻| 欧美精品亚洲二区| 欧美日韩在线三级| 日本高清无吗v一区| 99视频有精品| 不卡一区在线观看| 成人免费高清视频| 波多野结衣亚洲| 国产不卡视频在线观看| 精品一区二区久久久| 免费观看在线综合| 看电影不卡的网站| 韩国v欧美v日本v亚洲v| 久久国产三级精品| 精品一区二区在线播放| 精品在线观看免费| 极品美女销魂一区二区三区| 久久激情综合网| 国产麻豆午夜三级精品| 国产suv一区二区三区88区| 国产精品1024| 国产69精品久久久久毛片| 国产激情一区二区三区| 大白屁股一区二区视频| 91女人视频在线观看| 色哦色哦哦色天天综合| 欧美日韩在线观看一区二区 | 91在线视频网址| 99久久精品免费看国产| 91丨porny丨在线| 91麻豆成人久久精品二区三区| 日本韩国欧美国产| 制服丝袜日韩国产| 国产午夜精品一区二区三区嫩草 | 欧美一区二区三区白人| 日韩欧美一级在线播放| 国产欧美日韩不卡| 一区二区三区中文在线| 免费av成人在线| 成人免费毛片a| 在线观看日韩精品| 日韩免费一区二区| 欧美激情一区二区三区全黄| 一区二区三区四区五区视频在线观看| 日欧美一区二区| 国产成人精品一区二| 欧美在线不卡视频| 亚洲精品一区二区三区99| 亚洲色图清纯唯美| 美国欧美日韩国产在线播放| 国产成人精品免费网站| 欧美亚洲精品一区| 国产日韩精品久久久| 天堂久久久久va久久久久| 国产不卡在线视频| 日韩一区国产二区欧美三区| 国产精品人妖ts系列视频| 亚洲成人精品在线观看| 风流少妇一区二区| 日韩三级电影网址| 一区二区三区四区在线| 国产高清无密码一区二区三区| 欧美三日本三级三级在线播放| 久久精品综合网| 男男gaygay亚洲| 欧美色涩在线第一页|