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

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

?? ps2keyboard.v

?? Verilog, c and asm source codes of the Minimig system, a fpga implementation of the Amiga computer.
?? V
?? 第 1 頁 / 共 3 頁
字號:
// Copyright 2006, 2007 Dennis van Weeren//// This file is part of Minimig//// Minimig 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 3 of the License, or// (at your option) any later version.//// Minimig 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, see <http://www.gnu.org/licenses/>.//////// This is the Minimig PS/2 keyboard handler//// 19-11-2006	-started coding// 20-11-2006	-more coding// 21-11-2006	-finished PS/2 state machine, added keymap// 29-11-2006	-keymap is now blockram, saves almost 80 slices!// 04-12-2006	-added keyack signal// 05-12-2006	-more work; cleaning up, optimizing//			-added on-screen-display control// 01-01-2007	-added extra key for on-screen-display control// 11-02-2007	-reset is now ctrl-alt-alt (as in Amiga OS4) instead of ctrl-lgui-rgui // this is the ps2 keyboard module itself// every time a new key is decoded, keystrobe is asserted.// keydat is only valid when keystrobe is asserted// after keystrobe, keyboard controller waits for keyack or timeout// kbdrst is asserted when the control, left gui and right gui keys are hold down together// leda and ledb control the numlock and scrolllock leds//JB:// 2008-03-01	- added support for prtscr and ctrlbrk keys// 		- verilog 2001 style module declarationmodule ps2keyboard(	input 	clk,		   		//bus clock	input 	reset,			   	//reset (system reset in)	inout	ps2kdat,			//keyboard PS/2 data	inout	ps2kclk,			//keyboard PS/2 clk	input	leda,				//keyboard led a in	input	ledb,				//keyboard led b in	output	kbdrst,				//keyboard reset out	output	[7:0]keydat,		//keyboard data out	output	reg keystrobe,		//keyboard data out strobe	input	keyack,				//keyboard data out acknowledge	output	[5:0]osdctrl		//on-screen-display controll);//local signalsreg		pclkout; 				//ps2 clk outwire	pdatout;				//ps2 data outwire	pclkneg;				//negative edge of ps2 clock strobereg		pdatb,pclkb,pclkc;	//input synchronization	reg		[11:0]preceive;		//ps2 receive registerreg		[11:0]psend;			//ps2 send registerreg		[19:0]ptimer;			//ps2 timerreg		[2:0]kstate;			//keyboard controller current statereg		[2:0]knext;			//keyboard controller next statereg		capslock;				//capslock statusreg		prreset;				//ps2 receive resetwire	prbusy;					//ps2 receive busyreg		ptreset;				//ps2 reset timerwire	pto1;					//ps2 timer timeout 1 wire	pto2;					//ps2 timer timeout 2reg		psled1;					//ps2 send led code 1reg		psled2;					//ps2 send led code 2wire	psready;				//ps2 send readywire	valid;					//valid amiga key code at keymap output//bidirectional open collector IO buffersassign ps2kclk=(pclkout)?1'bz:1'b0;assign ps2kdat=(pdatout)?1'bz:1'b0;//input synchronization of external signalsalways @(posedge clk)begin	pdatb<=ps2kdat;	pclkb<=ps2kclk;	pclkc<=pclkb;end						//detect ps2 clock negative edgeassign pclkneg=pclkc&(~pclkb);//PS2 input shifterwire prready;always @(posedge clk)	if(prreset||prready)		preceive[11:0]<=12'b111111111111;	else if(pclkneg)		preceive[11:0]<={1'b0,pdatb,preceive[10:1]};assign prready=~preceive[0];assign prbusy=~preceive[11];//PS2 timeralways @(posedge clk)	if(ptreset)		ptimer[19:0]<=0;	else if(!pto2)		ptimer[19:0]<=ptimer[19:0]+1;assign pto1=ptimer[15];//4.6ms @ 7.09Mhzassign pto2=ptimer[19];//74ms @ 7.09Mhz//PS2 send shifteralways @(posedge clk)	if(psled1)		psend[11:0]<=12'b111111011010;//$ED	else if(psled2)		psend[11:0]<={2'b11,~(capslock^leda^ledb),5'b00000,capslock,leda,ledb,1'b0};//led status	else if(!psready && pclkneg)		psend[11:0]<={1'b0,psend[11:1]};assign psready=(psend[11:0]==12'b000000000001)?1:0;assign pdatout=psend[0];//keyboard state machinealways @(posedge clk)	if(reset)//master reset		kstate<=0;	else 		kstate<=knext;always @(kstate or pto1 or pto2 or psready or prready or prbusy or keystrobe or keyack)begin	case(kstate)		0://reset timer			begin				prreset=1;				ptreset=1;				pclkout=0;				psled1=0;				psled2=0;								knext=1;			end		1://"request-to-send" for led1 code  			begin				prreset=1;				ptreset=0;				pclkout=0;				psled1=1;				psled2=0;								if(pto1)					knext=2;				else					knext=1;			end		2://wait for led1 code to be sent and acknowledge received			begin				prreset=~psready;				ptreset=1;				pclkout=1;				psled1=0;				psled2=0;								if(prready)					knext=3;				else					knext=2;			end		3://"request-to-send" for led2 code			begin				prreset=1;				ptreset=0;				pclkout=0;				psled1=0;				psled2=1;								if(pto1)					knext=4;				else					knext=3;			end		4://wait for led2 code to be sent			begin				prreset=~psready;				ptreset=1;				pclkout=1;				psled1=0;				psled2=0;								if(prready)					knext=5;				else					knext=4;			end		5://wait for valid amiga key code			begin				prreset=0;				ptreset=keystrobe;				pclkout=1;				psled1=0;				psled2=0;				if(keystrobe)//valid amiga key decoded					knext=6;				else if(!prbusy && pto2)//timeout, update leds					knext=0;				else//stay here					knext=5; 			end		6://hold of ps2 keyboard and wait for keyack or timeout			begin				prreset=0;				ptreset=keyack;				pclkout=0;				psled1=0;				psled2=0;				if(keyack || pto2)//keyack or timeout					knext=5;				else//stay here					knext=6; 			end		default://we should never come here			begin				prreset=0;//ps2 receiver reset				ptreset=0;//ps2 timer reset				pclkout=1;//ps2 clock override				psled1=0;//ps2 send led code 1				psled2=0;//ps2 send led code 2				knext=0;//go to reset state 			end	endcaseend//instantiate keymap to convert ps2 scan codes to amiga raw key codeswire ctrl,aleft,aright,caps;ps2keyboardmap km1(	.clk(clk),	.reset(reset),	.enable(prready),	.ps2key(preceive[8:1]),	.valid(valid),	.akey(keydat[7:0]),	.ctrl(ctrl),	.aleft(aleft),	.aright(aright),	.caps(caps),	.osdctrl(osdctrl));//Duplicate key filter and caps lock handling.//A ps/2 keyboard has a future called "typematic".//This means that the last key downstroke event//is repeated (at approx 2Hz default).//An Amiga keyboard does not do this so this filter removes//all duplicate downstroke events://When a duplicate downstroke event is detected, keystrobe is not asserted.//When the event is unique (no duplicate), keystrobe is asserted when valid is asserted.////Capslock on amiga is "remembered" by keyboard. A ps/2 keyboard doesn't do this//therefore, amiga-like caps lock behaviour is simulated herewire keyequal;reg [7:0]keydat2;assign keyequal=(keydat2[6:0]==keydat[6:0])?1:0;//detect if latched key equals new key//latch last key downstroke eventalways @(posedge clk)	if(reset)		keydat2[7:0]<=0;	else if(valid && !keydat[7])//latch downstroke event for last key pressed		keydat2[7:0]<=keydat[7:0];	else if (valid && keydat[7] && keyequal)//upstroke event for latched key received		keydat2[7:0]<=keydat[7:0];//toggle capslock status on capslock downstroke event		always @(posedge clk)	if(reset)		capslock<=0;	else if(valid && !keydat[7] && caps && !(keyequal && (keydat[7]==keydat2[7])))		capslock<=~capslock;//generate keystrobe to indicate valid keycode				//assign keystrobe=(keyequal && (keydat[7]==keydatlatch[7]))?0:keyok;always @(capslock or caps or keyequal or keydat or keydat2 or valid)	if(capslock && caps)//filter out capslock downstroke && capslock upstroke events if capslock is set		keystrobe=0;	else if(keyequal && (keydat[7]==keydat2[7]))//filter out duplicate events		keystrobe=0;	else if(valid)//valid amiga keycode, assert strobe		keystrobe=1;	else		keystrobe=0;//Keyboard reset detector. //Reset is accomplished by holding down the//ctrl, left alt en right alt keys all at the same timereg [2:0]kbdrststatus;always @(posedge clk)begin	//latch status of control key	if(reset)		kbdrststatus[2]<=1;	else if (valid && ctrl)		kbdrststatus[2]<=keydat[7];	//latch status of left alt key

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜在线观看视频在线| 日本va欧美va欧美va精品| 亚洲欧洲精品一区二区三区| 国产精品国产三级国产普通话蜜臀| 日韩欧美电影在线| 欧美激情一区二区三区在线| 一区二区三区四区乱视频| 日韩国产高清在线| 日韩国产高清在线| 成人h精品动漫一区二区三区| 色狠狠桃花综合| 欧美va日韩va| 国产在线播放一区三区四| 91蝌蚪porny成人天涯| 欧美一区二区三区四区视频| 国产欧美一区二区三区沐欲| 亚洲一区二区三区四区中文字幕| 久久国产剧场电影| 色噜噜狠狠成人中文综合| 欧美精品一区二区三区蜜桃 | 天天色图综合网| 国产精品自拍在线| 欧美精品色综合| 日本一区二区电影| 久久国产精品99久久久久久老狼 | 欧美三级在线播放| 久久久久高清精品| 日本欧美在线观看| 91精彩视频在线观看| 久久久久久影视| 亚洲v日本v欧美v久久精品| 国产成人免费高清| 精品国产人成亚洲区| 亚洲午夜私人影院| 99综合电影在线视频| 久久精品日韩一区二区三区| 日本欧美在线观看| 欧美日韩1区2区| 亚洲免费观看高清| av中文字幕亚洲| 久久久国产综合精品女国产盗摄| 日韩精彩视频在线观看| 欧美在线999| 亚洲免费看黄网站| 一本到高清视频免费精品| 久久婷婷成人综合色| 蜜臀av性久久久久蜜臀aⅴ流畅| 在线观看精品一区| 亚洲欧美国产毛片在线| 国产98色在线|日韩| 欧美哺乳videos| 久久er99精品| 日韩欧美一区二区免费| 视频一区二区国产| 日韩一级片网站| 国产一区二区三区在线看麻豆| 成人av影院在线| 亚洲精品精品亚洲| 欧美日韩在线播放三区四区| 日本aⅴ亚洲精品中文乱码| 久久午夜老司机| 色噜噜偷拍精品综合在线| 五月激情丁香一区二区三区| 精品捆绑美女sm三区| 成人国产精品视频| 日韩中文字幕av电影| 欧美激情综合网| 欧美三级韩国三级日本三斤| 韩国精品主播一区二区在线观看| 国产精品911| 一区二区三区小说| 久久久综合九色合综国产精品| 日本久久一区二区| 精品一区二区三区在线观看国产| 国产精品天干天干在线综合| 51精品视频一区二区三区| 成人综合婷婷国产精品久久免费| 亚洲一区二区在线免费看| 国产片一区二区| 717成人午夜免费福利电影| 成人综合在线观看| 六月丁香婷婷久久| 一区二区三区免费| 国产精品美女视频| 日韩欧美三级在线| 欧美日韩1234| 色综合久久中文字幕综合网| 国产麻豆视频一区二区| 日韩av中文字幕一区二区| 亚洲精选视频免费看| 久久久不卡影院| 欧美一区二区久久久| 在线视频欧美区| 成人av电影免费观看| 国产在线一区二区| 免费高清在线一区| 午夜激情一区二区| 亚洲影院理伦片| 亚洲丝袜自拍清纯另类| 久久久久国产精品麻豆ai换脸| 欧美一级久久久| 91麻豆精品久久久久蜜臀| 在线国产亚洲欧美| 一本在线高清不卡dvd| 97se亚洲国产综合自在线| 丰满放荡岳乱妇91ww| 激情五月婷婷综合网| 精品一区二区久久久| 蜜桃精品在线观看| 蜜臀av性久久久久av蜜臀妖精| 天天综合色天天综合色h| 婷婷久久综合九色国产成人| 亚洲高清视频在线| 日韩精品欧美精品| 日本中文字幕不卡| 久久综合综合久久综合| 捆绑紧缚一区二区三区视频| 日本不卡视频在线观看| 久久精品久久久精品美女| 美女尤物国产一区| 国产一区二区福利| 粉嫩绯色av一区二区在线观看| 成人动漫视频在线| 91美女精品福利| 欧美在线免费观看亚洲| 欧美疯狂做受xxxx富婆| 日韩欧美电影一区| 日本一区二区三区免费乱视频| 国产精品网站在线观看| 亚洲美腿欧美偷拍| 亚洲国产精品一区二区尤物区| 亚洲国产综合色| 秋霞影院一区二区| 国产高清不卡二三区| 色综合色综合色综合| 欧美最猛性xxxxx直播| 欧美一区二区在线免费播放| 精品久久久三级丝袜| 国产精品美女久久久久久久久久久 | 九九精品一区二区| 成人网男人的天堂| 日本道色综合久久| 日韩欧美一区二区视频| 久久久久久久久久看片| 亚洲欧美偷拍另类a∨色屁股| 亚洲主播在线观看| 精品一区二区在线播放| eeuss鲁片一区二区三区| 欧美区在线观看| 精品国产91乱码一区二区三区| 国产精品毛片久久久久久久| 一区二区三区在线免费视频 | 欧美一二三四区在线| 国产午夜三级一区二区三| 亚洲精品自拍动漫在线| 久久99精品视频| 91福利精品视频| 日韩欧美的一区二区| 国产精品第四页| 美女网站一区二区| 99re热视频这里只精品| 日韩一二在线观看| 亚洲精品第1页| 蜜桃在线一区二区三区| 一本高清dvd不卡在线观看| 精品国产三级电影在线观看| 亚洲麻豆国产自偷在线| 国产一区二区精品久久| 欧美日韩精品二区第二页| 国产精品家庭影院| 黄页视频在线91| 51久久夜色精品国产麻豆| 亚洲免费资源在线播放| 福利一区二区在线观看| 日韩欧美一区二区三区在线| 亚洲一区二区三区小说| 99久久伊人精品| 久久午夜国产精品| 蜜桃视频一区二区三区在线观看| 在线欧美日韩国产| 亚洲欧美综合在线精品| 国产一区亚洲一区| 日韩免费视频线观看| 日日夜夜一区二区| 欧美亚洲综合另类| 亚洲三级小视频| 成人黄色软件下载| 欧美激情综合五月色丁香小说| 九九九久久久精品| 欧美xxxx老人做受| 美女在线视频一区| 日韩欧美aaaaaa| 麻豆传媒一区二区三区| 777精品伊人久久久久大香线蕉| 亚洲一区视频在线| 91国偷自产一区二区开放时间| 国产精品盗摄一区二区三区| 国产91露脸合集magnet| 欧美激情在线看| 波多野结衣欧美|