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

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

?? cia8520.v

?? Verilog, c and asm source codes of the Minimig system, a fpga implementation of the Amiga computer.
?? V
?? 第 1 頁 / 共 2 頁
字號:
// 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/>.//////// These are the cia's// Note that these are simplified implementation of both CIA's, just enough// to get Minimig going// NOT implemented is:// serial data register for CIA B(but keyboard input for CIA A is supported)// port B for CIA A// counter inputs for timer A and B other then 'E' clock// toggling of PB6/PB7 by timer A/B//// 30-03-2005		-started coding //				-intterupt description finished// 03-04-2005		-added timers A,B and D// 05-04-2005		-simplified state machine of timerab//				-improved timing of timer-reload of timerab//				-cleaned up timer d//				-moved intterupt part to seperate module//				-created nice central address decoder// 06-04-2005		-added I/O ports//				-fixed small bug in timerab state machine// 10-04-2005		-added clock synchronisation latch on input ports//				-added rd (read) input to detect valid bus states// 11-04-2005		-removed rd again due to change in address decoder//				-better reset behaviour for timer D// 17-04-2005		-even better reset behaviour for timer D and timers A and B// 17-07-2005		-added pull-up simulation on I/O ports// 21-12-2005		-added rd input// 21-11-2006		-splitted in seperate ciaa and ciab//				-added ps2 keyboard module to ciaa// 22-11-2006		-added keyboard reset// 05-12-2006		-added keyboard acknowledge// 11-12-2006		-ciaa cleanup// 27-12-2006		-ciab cleanup// 01-01-2007		-osdctrl[] is now 4 bits/keys// JB:// 2008-03-25	- osdctrl[] is 6 bits/keys (Ctrl+Break and PrtScr keys added)
//				- verilog 2001 style declaration// 2008-04-02	- separate Timer A and Timer B descriptions (they differ a little)//				- one-shot mode of Timer A/B sets START bit in control register//				- implemented Timer B counting mode of Timer A underflows// 2008-04-25	- added transmit interrupt for serial port// 2008-07-28	- scroll lock led as disk activity led
//
//
//----------------------------------------------------------------------------------//----------------------------------------------------------------------------------/*cia a*/module ciaa(	input 	clk,	  			//clock	input 	aen,		    	//adress enable	input	rd,					//read enable	input	wr,					//write enable	input 	reset, 				//reset	input 	[3:0]rs,	   		//register select (address)	input 	[7:0]datain,		//bus data in	output 	[7:0]dataout,		//bus data out	input 	tick,				//tick (counter input for TOD timer)	input 	e,	    			//e (counter input for timer A/B)	output 	irq,	   			//interrupt request out	input	[7:2]portain, 	//porta in	output 	[1:0]portaout,	//porta out	output	kbdrst,				//keyboard reset out	inout	kbddat,				//ps2 keyboard data	inout	kbdclk,				//ps2 keyboard clock	output	[5:0]osdctrl		//osd control);//local signalswire 	[7:0]icrout;wire	[7:0]tmraout;			wire	[7:0]tmrbout;wire	[7:0]tmrdout;wire	[7:0]sdrout;	reg		[7:0]paout;wire	alrm;				//TOD interruptwire	ta;					//TIMER A interruptwire	tb;					//TIMER B interruptwire	tmra_ovf;			//TIMER A underflow (for Timer B)wire	tmra_start;			//TIMER A is running//JB://Action Replay writes to serial data register when serial port is in output mode//and timer A is running, then checks if interrupt for serial port has been asserted//this all if for figuring out if serial port interrupt has been enabled
//if this part is missing keyboard is not working any more after exiting actiorn replay
////see: $4147BE: CLR.B  $C00(A0) ; = $BFEC01 (sdr)//     ...//     $4147D2: MOVE.B $D00(A0),D0//     ...//     $4147DE: BTST   #3,D0// copy of recovered ICR stored at $44F983.Bwire	spmode;				//TIMER A Serial Port Mode (0-input, 1-output)wire	ser_tx_irq;//----------------------------------------------------------------------------------//address decoder//----------------------------------------------------------------------------------wire	pra,ddra,cra,talo,tahi,crb,tblo,tbhi,tdlo,tdme,tdhi,icrs,sdr;wire	enable;assign enable = aen & (rd | wr);//decoderassign	pra  = (enable && rs==0)?1:0;assign	ddra = (enable && rs==2)?1:0;assign	talo = (enable && rs==4)?1:0;assign	tahi = (enable && rs==5)?1:0;assign	tblo = (enable && rs==6)?1:0;assign	tbhi = (enable && rs==7)?1:0;assign	tdlo = (enable && rs==8)?1:0;assign	tdme = (enable && rs==9)?1:0;assign	tdhi = (enable && rs==10)?1:0;assign	sdr  = (enable && rs==12)?1:0;assign	icrs = (enable && rs==13)?1:0;assign	cra  = (enable && rs==14)?1:0;assign	crb  = (enable && rs==15)?1:0;//----------------------------------------------------------------------------------//dataout multiplexer//----------------------------------------------------------------------------------assign dataout=icrout|tmraout|tmrbout|tmrdout|sdrout|paout;//----------------------------------------------------------------------------------//instantiate keyboard module//----------------------------------------------------------------------------------wire	keystrobe,keyack;reg		[7:0]sdrlatch;wire	[7:0]keydat;ps2keyboard	kbd1(	.clk(clk),	.reset(reset),	.ps2kdat(kbddat),	.ps2kclk(kbdclk),	.leda(~portaout[1]),	//power led	.ledb(~portain[5]),	//disk ready, active while motor on and drive selected	.kbdrst(kbdrst),	.keydat(keydat[7:0]),	.keystrobe(keystrobe),	.keyack(keyack),	.osdctrl(osdctrl));//sdr register//!!! Amiga receives keycode ONE STEP ROTATED TO THE RIGHT AND INVERTED !!!always @(posedge clk)	if(reset)		sdrlatch[7:0] <= 8'h00;	else if(keystrobe)		sdrlatch[7:0] <= ~{keydat[6:0],keydat[7]};//sdr register	readassign sdrout = (!wr && sdr) ? sdrlatch[7:0] : 8'h00;//keyboard acknowledgeassign keyack = (!wr && sdr) ? 1 : 0;//interrupt on serial port data port write when serial port is in output mode and Timer A is runningassign ser_tx_irq = sdr & wr & spmode & tmra_start;	//----------------------------------------------------------------------------------//porta//----------------------------------------------------------------------------------reg [7:2]portain2;reg [1:0]regporta;reg [7:0]ddrporta;//synchronizing of input dataalways @(posedge clk)	portain2[7:2] <= portain[7:2];//writing of output portalways @(posedge clk)	if(reset)		regporta[1:0] <= 0;	else if(wr && pra)		regporta[1:0] <= datain[1:0];//writing of ddr register always @(posedge clk)	if(reset)		ddrporta[7:0] <= 0;	else if(wr && ddra) 		ddrporta[7:0] <= datain[7:0];//reading of port/ddr registeralways @(wr or pra or portain2 or portaout or ddra or ddrporta)begin	if(!wr && pra)		paout[7:0] = {portain2[7:2],portaout[1:0]};	else if(!wr && ddra)		paout[7:0] = ddrporta[7:0];	else		paout[7:0] = 8'h00;end		//assignment of output port while keeping in mind that the original 8520 uses pull-upsassign portaout[1:0] = (~ddrporta[1:0]) | regporta[1:0];	 //----------------------------------------------------------------------------------//instantiate cia interrupt controller//----------------------------------------------------------------------------------ciaint cnt (	.clk(clk),	.wr(wr),	.reset(reset),	.icrs(icrs),	.ta(ta),	.tb(tb),	.alrm(alrm),	.flag(1'b0),	.ser(keystrobe | ser_tx_irq ),	.datain(datain),	.dataout(icrout),	.irq(irq)	);//----------------------------------------------------------------------------------//instantiate timer A//----------------------------------------------------------------------------------timera tmra (	.clk(clk),	.wr(wr),	.reset(reset),	.tlo(talo),	.thi(tahi),	.tcr(cra),	.datain(datain),	.dataout(tmraout),	.eclk(e),	.spmode(spmode),	.tmra_ovf(tmra_ovf),	.start(tmra_start),	.irq(ta) );//----------------------------------------------------------------------------------//instantiate timer B//----------------------------------------------------------------------------------timerb tmrb (		.clk(clk),	.wr(wr),	.reset(reset),	.tlo(tblo),	.thi(tbhi),	.tcr(crb),	.datain(datain),	.dataout(tmrbout),	.eclk(e),	.tmra_ovf(tmra_ovf),	.irq(tb) );//----------------------------------------------------------------------------------//instantiate timer D//----------------------------------------------------------------------------------timerd tmrd(	.clk(clk),	.wr(wr),	.reset(reset),	.tlo(tdlo),	.tme(tdme),	.thi(tdhi),	.tcr(crb),	.datain(datain),	.dataout(tmrdout),	.count(tick),	.irq(alrm)	); endmodule//----------------------------------------------------------------------------------//----------------------------------------------------------------------------------//----------------------------------------------------------------------------------/*cia b*/module ciab(	input 	clk,	  			//clock	input 	aen,		    	//adress enable	input	rd,					//read enable	input	wr,					//write enable	input 	reset, 				//reset	input 	[3:0]rs,	   		//register select (address)	input 	[7:0]datain,		//bus data in	output 	[7:0]dataout,		//bus data out	input 	tick,				//tick (counter input for TOD timer)	input 	e,	    			//e (counter input for timer A/B)	input 	flag, 				//flag (set FLG bit in ICR register)	output 	irq,	   			//interrupt request out	input	[5:3]portain, 	//input port	output 	[7:6]portaout,	//output port	output	[7:0]portbout		//output port);//local signals	wire 	[7:0]icrout;	wire	[7:0]tmraout;				wire	[7:0]tmrbout;	wire	[7:0]tmrdout;		reg		[7:0]paout;	reg		[7:0]pbout;			wire	alrm;				//TOD interrupt	wire	ta;					//TIMER A interrupt	wire	tb;					//TIMER B interrupt	wire	tmra_ovf;		//TIMER A underflow (for Timer B)//----------------------------------------------------------------------------------//address decoder//----------------------------------------------------------------------------------	wire	pra,prb,ddra,ddrb,cra,talo,tahi,crb,tblo,tbhi,tdlo,tdme,tdhi,icrs;	wire	enable;assign enable = aen & (rd | wr);//decoderassign	pra  = (enable && rs==0)?1:0;assign	prb  = (enable && rs==1)?1:0;assign	ddra = (enable && rs==2)?1:0;assign	ddrb = (enable && rs==3)?1:0;assign	talo = (enable && rs==4)?1:0;assign	tahi = (enable && rs==5)?1:0;assign	tblo = (enable && rs==6)?1:0;assign	tbhi = (enable && rs==7)?1:0;assign	tdlo = (enable && rs==8)?1:0;assign	tdme = (enable && rs==9)?1:0;assign	tdhi = (enable && rs==10)?1:0;assign	icrs = (enable && rs==13)?1:0;assign	cra  = (enable && rs==14)?1:0;assign	crb  = (enable && rs==15)?1:0;//----------------------------------------------------------------------------------//dataout multiplexer//----------------------------------------------------------------------------------assign dataout = icrout | tmraout | tmrbout | tmrdout | paout | pbout;//----------------------------------------------------------------------------------//porta//----------------------------------------------------------------------------------	reg [5:3]portain2;	reg [7:6]regporta;	reg [7:0]ddrporta;//synchronizing of input dataalways @(posedge clk)	portain2[5:3] <= portain[5:3];//writing of output portalways @(posedge clk)	if(reset)		regporta[7:6] <= 0;	else if(wr && pra)		regporta[7:6] <= datain[7:6];//writing of ddr register always @(posedge clk)	if(reset)		ddrporta[7:0] <= 0;	else if(wr && ddra) 		ddrporta[7:0] <= datain[7:0];//reading of port/ddr registeralways @(wr or pra or portain2 or portaout or ddra or ddrporta)begin	if(!wr && pra)		paout[7:0] = {portaout[7:6],portain2[5:3],3'b111};	else if(!wr && ddra)		paout[7:0] = ddrporta[7:0];	else		paout[7:0] = 8'h00;end		//assignment of output port while keeping in mind that the original 8520 uses pull-upsassign portaout[7:6] = (~ddrporta[7:6]) | regporta[7:6];	//----------------------------------------------------------------------------------//portb//----------------------------------------------------------------------------------	reg [7:0]regportb;	reg [7:0]ddrportb;//writing of output portalways @(posedge clk)	if(reset)		regportb[7:0] <= 0;	else if(wr && prb)		regportb[7:0] <= datain[7:0];//writing of ddr register always @(posedge clk)	if(reset)		ddrportb[7:0] <= 0;	else if(wr && ddrb) 		ddrportb[7:0] <= datain[7:0];//reading of port/ddr registeralways @(wr or prb or portbout or ddrb or ddrportb)begin	if(!wr && prb)		pbout[7:0] = portbout[7:0];	else if(!wr && ddrb)		pbout[7:0] = ddrportb[7:0];	else		pbout[7:0] = 8'h00;end		//assignment of output port while keeping in mind that the original 8520 uses pull-upsassign portbout[7:0] = (~ddrportb[7:0]) | regportb[7:0];	 //----------------------------------------------------------------------------------//instantiate cia interrupt controller//----------------------------------------------------------------------------------ciaint cnt(	.clk(clk),	.wr(wr),	.reset(reset),	.icrs(icrs),	.ta(ta),	.tb(tb),	.alrm(alrm),	.flag(flag),	.ser(1'b0),	.datain(datain),	.dataout(icrout),	.irq(irq)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av中文字幕亚洲| 欧美极品美女视频| 久久久午夜精品理论片中文字幕| 欧美日韩中文字幕一区| 亚洲地区一二三色| 国产精品夫妻自拍| 天堂va蜜桃一区二区三区| 久久新电视剧免费观看| 日韩美一区二区三区| 日本道免费精品一区二区三区| 国产精品免费看片| 国产成人亚洲综合色影视| 国产亚洲精品aa午夜观看| 在线观看网站黄不卡| 久久99深爱久久99精品| 国产精品污www在线观看| 色综合视频在线观看| 亚洲高清不卡在线| 宅男噜噜噜66一区二区66| 午夜激情综合网| 9久草视频在线视频精品| 粉嫩在线一区二区三区视频| 91一区二区三区在线观看| 亚洲激情成人在线| 欧美一区二区三区男人的天堂| 日韩视频一区二区三区在线播放 | 91麻豆精品秘密| 国产黄人亚洲片| 高清国产午夜精品久久久久久| 久久不见久久见中文字幕免费| 成人一级片网址| 久久精品国内一区二区三区| 国产精品久久久久久久久免费桃花| 97精品国产97久久久久久久久久久久| 日韩二区三区四区| 亚洲中国最大av网站| 久久综合五月天婷婷伊人| 色综合久久综合| 亚洲国产日韩综合久久精品| 欧美激情中文字幕一区二区| 日韩精品一区二区三区中文不卡 | 免费成人美女在线观看| 亚洲精品一区二区三区精华液| 久久久欧美精品sm网站 | 精品日韩在线一区| 亚洲国产精品高清| 日韩av电影一区| 97国产精品videossex| 555夜色666亚洲国产免| 1024国产精品| 亚洲一区二区三区在线| 亚洲激情在线激情| 亚洲欧美一区二区三区极速播放| 欧美一区二区三区公司| 欧美不卡激情三级在线观看| 欧美精品一二三区| 日韩精品资源二区在线| 久久综合久久综合久久综合| 久久久久国产精品免费免费搜索| 久久网站热最新地址| 大胆亚洲人体视频| 亚洲超碰97人人做人人爱| 免费人成黄页网站在线一区二区 | 国产中文字幕精品| 国产九色sp调教91| 亚洲女女做受ⅹxx高潮| 大白屁股一区二区视频| 精品国产伦理网| 久久66热re国产| 久久嫩草精品久久久精品| 亚洲午夜久久久| 日日夜夜精品视频免费| 经典三级视频一区| 91污片在线观看| 555夜色666亚洲国产免| 国产精品色婷婷| 天堂成人国产精品一区| 狠狠色丁香久久婷婷综合_中| 色婷婷av一区二区三区软件 | 91麻豆国产在线观看| 欧美日韩一区不卡| 久久夜色精品国产欧美乱极品| 亚洲欧洲成人av每日更新| 亚洲自拍偷拍网站| 国内精品久久久久影院一蜜桃| 成人免费观看av| 欧美福利一区二区| 国产精品免费网站在线观看| 亚洲高清免费一级二级三级| 国产一区二区三区不卡在线观看| 91免费在线看| 精品福利av导航| 亚洲影院理伦片| 国产激情精品久久久第一区二区 | 91精品国产欧美一区二区18| 日韩av一区二区三区| 国内精品伊人久久久久av影院 | 色妞www精品视频| 成人动漫视频在线| 欧美一级片免费看| 不卡视频免费播放| 亚洲1区2区3区视频| 国产精品国产a级| 中文字幕第一区综合| 日韩亚洲欧美中文三级| 色欧美日韩亚洲| 日韩电影一二三区| 欧美性受xxxx黑人xyx| 亚洲免费观看视频| 一本到一区二区三区| 亚洲一区二区三区影院| 在线不卡的av| 蜜桃一区二区三区四区| 日韩一卡二卡三卡四卡| 国产在线精品免费| 国产精品美女久久久久久| 免费的国产精品| 欧美亚洲禁片免费| 17c精品麻豆一区二区免费| 国产精品一区二区三区乱码| 91精品国产入口| 亚洲一二三四久久| 色诱视频网站一区| 中文字幕一区二区三区精华液| 国产九色sp调教91| 精品国产髙清在线看国产毛片| 人人精品人人爱| 欧美日韩综合色| 一区二区欧美精品| 色乱码一区二区三区88| 国产精品成人免费精品自在线观看| 国产一区二区三区电影在线观看| 日韩欧美国产三级| 免费看欧美女人艹b| 在线观看91av| 美国十次综合导航| 日韩你懂的在线播放| 麻豆成人综合网| 日韩视频一区在线观看| 久久99国产精品尤物| 日韩免费视频一区二区| 麻豆成人在线观看| 久久久亚洲精华液精华液精华液| 黄色日韩网站视频| 久久精品日产第一区二区三区高清版 | 韩国毛片一区二区三区| 一区二区三区鲁丝不卡| 亚洲色图在线视频| 亚洲欧洲av另类| 国产乱子伦视频一区二区三区 | 久久狠狠亚洲综合| 国产suv精品一区二区883| 欧美在线色视频| 91精品国产福利| 亚洲精品国产a| 国产在线精品一区二区不卡了| 国产精品 日产精品 欧美精品| 日韩在线卡一卡二| 一区二区成人在线| 日韩中文字幕91| 国产成人综合视频| 波多野结衣在线一区| 丰满少妇久久久久久久 | 欧美高清性hdvideosex| 九九九久久久精品| 日韩欧美国产wwwww| 国产一区二区三区黄视频 | 韩国v欧美v日本v亚洲v| 久久精品人人爽人人爽| 99re这里只有精品首页| 亚洲一级在线观看| 日韩欧美电影一区| www.久久精品| 日韩av在线播放中文字幕| 久久精品视频一区| 在线亚洲精品福利网址导航| 日本中文字幕不卡| 国产精品久久久久影视| 欧美日韩视频在线第一区 | 99久久99久久精品国产片果冻 | 婷婷丁香激情综合| 久久久久久久久久看片| 日本韩国一区二区| 极品少妇xxxx偷拍精品少妇| 国产精品久久久久久久久免费相片 | 日韩午夜在线播放| 99国产精品一区| 成人a免费在线看| 国产亚洲一区二区三区在线观看| 老司机免费视频一区二区三区| 国产91高潮流白浆在线麻豆 | www.激情成人| 精品国产区一区| 日韩激情av在线| 欧美性大战久久久| 一区二区三区精密机械公司| 国产不卡免费视频| 欧美成人三级电影在线| 亚洲国产欧美在线| 欧美日韩一级黄|