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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? agnus.v

?? Verilog, c and asm source codes of the Minimig system, a fpga implementation of the Amiga computer.
?? V
?? 第 1 頁 / 共 3 頁
字號(hào):
	if(bplen && (verbeam[8:0]>={1'b0,vdiwstrt[15:8]}) && (verbeam[8:0]<{~vdiwstop[15],vdiwstop[15:8]}))		bplenable=1;	else		bplenable=0;		bpldma_engine bpd1(	.clk(clk),	.reset(reset),	.enable(bplenable),	.horbeam(horbeam),	.dma(dma_bpl),	.interlace(interlace),	.regaddressin(regaddress),	.regaddressout(regaddress_bpl),	.datain(datain),	.addressout(address_bpl)	);//--------------------------------------------------------------------------------------//instantiate sprite dma enginesprdma_engine spr1(	.clk(clk),	.clk28m(clk28m),	.reqdma(req_spr),	.ackdma(ack_spr),	.hpos(horbeam),	.vpos(verbeam),	.vbl(vbl),	.vblend(vblend),	.regaddressin(regaddress),	.regaddressout(regaddress_spr),	.datain(datain),	.addressout(address_spr)	);//--------------------------------------------------------------------------------------//instantiate coppercopper cp1(	.clk(clk),	.reset(reset),	.reqdma(req_cop),	.ackdma(ack_cop),	.sof(sof),	.eol(sol),	.bbusy(bbusy),	.vpos(verbeam[7:0]),	.datain(datain),	.regaddressin(regaddress),	.regaddressout(regaddress_cop),	.addressout(address_cop)	);//--------------------------------------------------------------------------------------//instantiate blitterblitter bl1(	.clk(clk),	.reset(reset),	.reqdma(req_blt),	.ackdma(ack_blt),	.bzero(bzero),	.bbusy(bbusy),	.bblck(bblck),	.horbeam(horbeam[0]^horbeam[1]),//HACK, avoid dma contention a bit	.wr(wr_blt),	.datain(datain),	.dataout(data_blt),	.regaddressin(regaddress),	.addressout(address_blt)	);//generate blitter finished intterupt (int3)reg bbusyd;always @(posedge clk)	bbusyd<=bbusy;assign int3=(~bbusy)&bbusyd;//--------------------------------------------------------------------------------------//instantiate beam countersbeamcounter	bc1(		.clk(clk),	.reset(reset),	.interlace(interlace),	.ntsc(ntsc),	.datain(datain),	.dataout(data_bmc),	.regaddressin(regaddress),	.hpos(horbeam),	.vpos(verbeam),	._hsync(_hsync),	._vsync(_vsync),	.blank(blank),	.vbl(vbl),	.vblend(vblend),	.eol(sol),	.eof(sof));//horizontal strobe for Deniseassign strhor = horbeam==15 ? 1 : 0;//--------------------------------------------------------------------------------------endmodule//--------------------------------------------------------------------------------------//--------------------------------------------------------------------------------------//--------------------------------------------------------------------------------------//bit plane dma enginemodule bpldma_engine(	input 	clk,		    			//bus clock	input	reset,						//reset	input	enable,						//enable dma input	input	[8:0]horbeam,				//horizontal beam counter	output	reg dma,					//true if bitplane dma engine uses it's cycle	output	reg interlace,				//interlace mode is selected through bplcon0	input 	[8:1]regaddressin,		//register address inputs	output 	reg [8:1]regaddressout,	//register address outputs	input	[15:0]datain,				//bus data in	output	[20:1]addressout			//chip address out);//register names and adresses		parameter BPLPTBASE=9'h0e0;	//bitplane pointers base addressparameter DDFSTRT=9'h092;		parameter DDFSTOP=9'h094;parameter BPL1MOD=9'h108;parameter BPL2MOD=9'h10a;parameter BPLCON0=9'h100;parameter BPLCON1=9'h102;		//JB: needed for better ddfstrt/ddfstop handling//local signalsreg		[8:2]ddfstrt;			//display data fetch start //JB: added bit #2reg 	[8:2]ddfstop; 		//display data fetch stop //JB: added bit #2reg		[15:1]bpl1mod;		//modulo for odd bitplanesreg		[15:1]bpl2mod;		//modulo for even bitplanesreg		[15:12]bplcon0;		//bitplane control (HIRES and BPU bits)reg		[7:0]bplcon1;	 		//JB:reg 	hires;				 	//JB:reg		shres;				 	//JB:reg		[20:1]newpt;			//new pointer				reg 	[20:16]bplpth[7:0];	//upper 5 bits bitplane pointersreg 	[15:1]bplptl[7:0];	//lower 16 bits bitplane pointersreg		[2:0]plane;			//plane pointer selectwire	mod;					//end of data fetch, add modulo	//JB: changed reg to wire//--------------------------------------------------------------------------------------//register bank address multiplexerwire [2:0]select;assign select=(dma)?plane:regaddressin[4:2];//high word pointer register bank (implemented using distributed ram)wire [20:16]bplpth_in;assign bplpth_in=(dma)?newpt[20:16]:datain[4:0];always @(posedge clk)	if(dma || ((regaddressin[8:5]==BPLPTBASE[8:5]) && !regaddressin[1]))//if bitplane dma cycle or bus write		bplpth[select]<=bplpth_in;assign addressout[20:16]=bplpth[plane];//low word pointer register bank (implemented using distributed ram)wire [15:1]bplptl_in;assign bplptl_in=(dma)?newpt[15:1]:datain[15:1];always @(posedge clk)	if(dma || ((regaddressin[8:5]==BPLPTBASE[8:5]) && regaddressin[1]))//if bitplane dma cycle or bus write		bplptl[select]<=bplptl_in;assign addressout[15:1]=bplptl[plane];//--------------------------------------------------------------------------------------//write ddfstrt and ddfstop registersalways @(posedge clk)	if(regaddressin[8:1]==DDFSTRT[8:1])		if (datain[7:1] < 7'b0001_100)			ddfstrt[8:2] <= 7'b0001_100;		else			ddfstrt[8:2]<=datain[7:1];			//JB: added LSB		always @(posedge clk)	if(regaddressin[8:1]==DDFSTOP[8:1])		if (datain[7:1] > 7'b1101_100)			ddfstop[8:2] <= 7'b1101_100;		else			ddfstop[8:2] <= datain[7:1];		//JB: added LSB//write modulo registersalways @(posedge clk)	if(regaddressin[8:1]==BPL1MOD[8:1])		bpl1mod[15:1]<=datain[15:1];always @(posedge clk)	if(regaddressin[8:1]==BPL2MOD[8:1])		bpl2mod[15:1]<=datain[15:1];//write parts of bplcon0 register that are relevant to bitplane dma + interlace and ersyalways @(posedge clk)	if(reset)	begin		bplcon0[15:12]<=4'b0000;		interlace<=0;		hires <= 0;	//JB:		shres <= 0;	//JB:	end	else if(regaddressin[8:1]==BPLCON0[8:1])	begin		bplcon0[15:12]<=datain[15:12];		interlace<=datain[2];		hires <= datain[15];	//JB:		shres <= datain[6];	//JB:	end//JB: needed for better ddf handling//write part of bplcon1 registeralways @(posedge clk)	if (regaddressin[8:1] == BPLCON1[8:1])		bplcon1[7:0] <= datain[7:0];//--------------------------------------------------------------------------------------// (JB) More on mystical magic investigation after some experiments with my real A4k:// H3/H2 bits in DDFSTRT and DDFSTOP registers are important in all resolutions.// LORES:// if H3 or H2 of DDFSTRT is set the display is delayed by one full dma fetch cycle (8 colour clocks [cck])// it means that the display stop position is also shifted by 16 lowres pixels eventhough DDFSTOP hasn't changed// if H3:H2 of DDFSTOP is greater than H3:H2 of DDFSTRT the display is stopped after an extra dma cycle//   (extra 16 pixels fetched in lowres, 32 in hires and 64 in super hires)// if the DDFSTOP is close enough to the HTOTAL value in some cases the dma engine doesn't see a display stop// and total display corruption happens, i.e://  DDFSTOP=$D4 and DDFSTRT[3:2]=%01,//  DDFSTOP=$D6 and (DDFSTRT[3:2]=%01 or DDFSTRT[3:2]=%10),//  DDFSTOP>=$D8 and DDFSTRT[3:2]!=%00 //  if DDFSTOP > $D8 and DDFSTRT[3:2]=%00 the display stops at $D8 (hardware stop)// in lores dma cycles always begin and end on 8 colour clock (cck) cycle boundary// HIRES:// dma cycles can start and stop on 4 cck boundary and always last 8 ccks// if H2 of DDFSTART is set the display starts on next 4 cck boundary// (the display is a multiple of 32 hires pixels)// SUPER HIRES:// dma cycles can start and stop on 2 cck boundary and always last 8 ccks// (the display is a multiple of 64 super hires pixels)// in all resolutions the dma engine fetch cycle lasts 8 colour clocks// it can start at a multiple of: 8 cck's in lowres, 4 cck's in hires and 2 cck's in super hires// hint: SHRES bit in BPLCON0 takes precedence over HIRES bit// all tests were performed with FMODE=0// more magic: ddfstrt is delayed by one fetch cycle only if ddfstrt[3:2]>bplcon1[3:2] (tested only under UAE)wire	[8:2]ddf_start;reg 	[3:2]ddfstrt_latched;reg 	[3:2]ddf_start_latched;reg		[3:2]bplcon1_latched;wire	[8:2]ddf_stop;wire	[8:2]ddf_stop_delay;reg		ddf_enable;wire	[8:2]ddf_mask;assign ddf_mask = shres ? 7'b000_0000 : hires ? 7'b000_0001 : 7'b000_0011;//this should be rewritten someday to use more efficient codeassign ddf_start = ddfstrt-7'd1-bplcon1[3:2] | ddf_mask;assign ddf_stop_delay = ddfstop[3:2] > ddfstrt_latched[3:2] ? 7'd4 : 7'd0;assign ddf_stop = ({ddfstop[8:4],ddfstrt_latched[3:2]}-7'd1-bplcon1_latched[3:2] | ddf_mask) + ddf_stop_delay; //display dma last cyclereg	  ddf_last_fetch;// changing ddfstrt register value when display has already started doesn't affect the stop condition// so we have to store the initial value of ddfstrt to determine stop condition (only two bits do matter)always @(posedge clk)	if (reset)	begin		ddfstrt_latched <= 2'b00;		ddf_start_latched <= 2'b00;		bplcon1_latched <= 2'b00;	end	else if ({ddf_start,2'b11} == horbeam[8:0])	begin		ddfstrt_latched[3:2] <= ddfstrt[3:2];		ddf_start_latched[3:2] <= ddf_start[3:2];		bplcon1_latched <= bplcon1[3:2];	endalways @(posedge clk)	if (reset)		ddf_last_fetch <= 0;	else if ({ddf_stop,2'b11} == horbeam[8:0])		ddf_last_fetch <= ddf_enable;	else if ({ddf_start_latched[3:2],2'b11} == horbeam[3:0])		ddf_last_fetch <= 0;	always @(posedge clk)	if (reset)		ddf_enable <= 0;	else if ({ddf_start,2'b11} == horbeam[8:0])		ddf_enable <= 1;	else if (ddf_last_fetch && {ddf_start_latched[3:2],2'b11} == horbeam[3:0])		ddf_enable <= 0;assign mod = (ddf_last_fetch) & (hires ? horbeam[3]^ddfstrt_latched[3] : shres ? (&(horbeam[3:2]^ddfstrt_latched[3:2])): 1'b1);assign ddfenable = ddf_enable;always @(shres or hires or horbeam)	if (shres)		plane = {2'b00,~horbeam[1]};	else if (hires)		plane = {1'b0,~horbeam[1],~horbeam[2]};	else		plane = {~horbeam[1],~horbeam[2],~horbeam[3]};//generate dma signal//for a dma to happen plane must be less than BPU (bplcon0), dma must be enabled//(enable) and datafetch compares must be true (ddfenable)//because invalid slots are coded as plane=7, the compare with BPU is//automatically falsealways @(plane or bplcon0[14:12] or horbeam[0] or enable or ddfenable)begin	if(ddfenable && enable && horbeam[0])//if dma enabled and within ddf limits and dma slot	begin		if(plane[2:0]<bplcon0[14:12])//if valid plane			dma=1;		else			dma=0;	end	else		dma=0;end//--------------------------------------------------------------------------------------//dma pointer arithmetic unitalways @(addressout or bpl1mod or bpl2mod or plane[0] or mod)	if(mod)	begin		if(plane[0])//even plane	modulo			newpt[20:1]=addressout[20:1]+{bpl2mod[15],bpl2mod[15],bpl2mod[15],bpl2mod[15],bpl2mod[15],bpl2mod[15:1]}+1;		else//odd plane modulo			newpt[20:1]=addressout[20:1]+{bpl1mod[15],bpl1mod[15],bpl1mod[15],bpl1mod[15],bpl1mod[15],bpl1mod[15:1]}+1;	end	else		newpt[20:1]=addressout[20:1]+1;//Denise bitplane shift registers address lookup tablealways @(plane)begin	case(plane)		3'b000:	regaddressout[8:1]=8'h88;		3'b001:	regaddressout[8:1]=8'h89;		3'b010:	regaddressout[8:1]=8'h8a;		3'b011:	regaddressout[8:1]=8'h8b;		3'b100:	regaddressout[8:1]=8'h8c;		3'b101:	regaddressout[8:1]=8'h8d;		default:	regaddressout[8:1]=8'hff;	endcaseend//--------------------------------------------------------------------------------------endmodule//--------------------------------------------------------------------------------------//--------------------------------------------------------------------------------------//--------------------------------------------------------------------------------------/*JB: some conclusions of sprite engine investigation, it seems to be as follows:- during vblank sprite dma is disabled by hardware, no automatic fetches occur but copper or cpucan write to any sprite register, and all SPRxPTR pointers should be refreshed- during the last line of vblank (PAL: $19, NTSC: $14) if sprite dma is enabledit fetches SPRxPOS/SPRxCTL registers according to current SPRxPTR pointers	This is the only chance for DMA to fetch new values of SPRxPOS/SPRxCTL. If DMA isn't enabledduring this line new values won't be placed into SPRxPOS/SPRxCTL registers.	Enabling DMA after this line can have two results depending on current value of SPRxPOS/SPRxCTL.- if VSTOP value is matched first with VERBEAM, data from memory is fetched and placed into SPRxPOS/SPRxCTL- or if VSTART value is matched with VERBEAM, data from memory is fetched and placed into SPRxDATA/SPRxDATB   and the situation repeats with every new line until VSTOP condition is met.The VSTOP condition takes precedence.	If you set VSTART to value lower or the same (remember that VSTOP takes precedence) as the current VERBEAMthis condition will never be met and sprite engine will wait till VSTOP matches VERBEAM. If it happens then itfetches another two words into SPRxPOS/SPRxCTL. And again if new VSTART is lower or the same as VERBEAMit will fetch another new SPRxPOS/SPRxCTL when VSTOP is met (or will wait till next vbl).

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合电影一区二区三区| 美女尤物国产一区| 欧美大片在线观看一区二区| 9人人澡人人爽人人精品| 秋霞影院一区二区| 亚洲裸体xxx| 久久久91精品国产一区二区三区| 欧美日韩国产免费| 91免费观看在线| 大陆成人av片| 国产一区在线看| 免费不卡在线视频| 亚洲一区免费视频| 亚洲激情网站免费观看| 国产精品私人自拍| 久久青草国产手机看片福利盒子| 91精品免费观看| 欧美日韩免费电影| 欧美视频中文字幕| 色8久久精品久久久久久蜜| 99久久国产综合精品色伊| 国产精品亚洲一区二区三区妖精| 日本不卡一区二区三区高清视频| 亚洲大尺度视频在线观看| 亚洲欧美另类在线| 亚洲欧洲成人自拍| 国产精品激情偷乱一区二区∴| 久久色在线视频| 亚洲精品在线观看视频| 欧美大度的电影原声| 91精品久久久久久蜜臀| 欧美乱妇15p| 91精品国产综合久久精品性色| 欧美午夜免费电影| 欧美军同video69gay| 欧美久久久一区| 欧美人牲a欧美精品| 欧美一区二区三区四区在线观看 | 国产夫妻精品视频| 久久精工是国产品牌吗| 精品一区二区三区久久| 国产一二精品视频| 国产**成人网毛片九色| 成人app软件下载大全免费| jlzzjlzz欧美大全| 欧美自拍偷拍午夜视频| 欧美精品色一区二区三区| 91精品国产综合久久久久久久久久| 91麻豆精品久久久久蜜臀| 欧美第一区第二区| 国产视频一区二区三区在线观看| 国产亚洲成年网址在线观看| 欧美国产精品一区| 亚洲精品免费在线观看| 午夜精品福利一区二区三区av| 五月激情综合色| 韩国av一区二区三区四区| 成人晚上爱看视频| 在线日韩国产精品| 日韩欧美三级在线| 国产精品免费视频观看| 亚洲一区欧美一区| 精品午夜久久福利影院 | 欧美一区二区视频在线观看2022| 欧美一级高清片在线观看| 国产亚洲va综合人人澡精品| 综合久久久久综合| 日韩精品免费专区| 国产成人av电影| 欧美性猛片xxxx免费看久爱| 日韩久久免费av| 亚洲手机成人高清视频| 三级不卡在线观看| 成人爽a毛片一区二区免费| 欧美系列一区二区| 久久久久久久久久久久久夜| 一区二区三区不卡视频| 狠狠色2019综合网| 色欧美日韩亚洲| 精品国产不卡一区二区三区| 一区二区在线观看视频 | 日本不卡视频一二三区| 成人精品免费看| 欧美电影在线免费观看| 国产精品美女久久久久久久久 | 美日韩一区二区三区| 懂色av中文一区二区三区| 欧美性一二三区| 久久久精品蜜桃| 天天亚洲美女在线视频| bt欧美亚洲午夜电影天堂| 日韩一级二级三级| 国产99久久久精品| 欧美日韩国产免费一区二区| 国产精品久久久久婷婷二区次| 免费在线观看一区二区三区| 色欧美乱欧美15图片| 26uuu亚洲婷婷狠狠天堂| 香蕉影视欧美成人| 色综合一区二区| 国产午夜一区二区三区| 免费的成人av| 欧美日韩不卡一区| 亚洲猫色日本管| 成人综合婷婷国产精品久久| 日韩午夜电影av| 午夜久久福利影院| 91蜜桃在线免费视频| 国产欧美一区视频| 激情综合色播激情啊| 91麻豆精品国产91| 亚洲国产日韩综合久久精品| 99精品国产一区二区三区不卡| 久久综合久久鬼色中文字| 日韩av中文字幕一区二区三区| 在线一区二区三区| 亚洲图片激情小说| 成人午夜视频在线| 日本一区二区三区在线不卡| 激情六月婷婷久久| 精品日产卡一卡二卡麻豆| 图片区小说区区亚洲影院| 色婷婷综合久色| 亚洲欧美一区二区三区极速播放 | 亚洲精品一区二区精华| 麻豆精品久久精品色综合| 制服.丝袜.亚洲.中文.综合| 午夜免费久久看| 6080日韩午夜伦伦午夜伦| 天天综合色天天| 欧美日韩久久一区二区| 亚洲成人动漫在线观看| 91福利国产精品| 亚洲国产美女搞黄色| 欧美日韩美少妇| 日韩精彩视频在线观看| 日韩欧美一区二区三区在线| 日韩国产成人精品| 欧美一区二区国产| 蜜桃视频一区二区| www国产亚洲精品久久麻豆| 激情图区综合网| 久久久久成人黄色影片| 粉嫩av一区二区三区在线播放 | 免费在线欧美视频| 精品人伦一区二区色婷婷| 国产自产视频一区二区三区| 欧美激情在线一区二区| 99re这里只有精品6| 亚洲免费观看高清在线观看| 欧美四级电影网| 蜜桃一区二区三区四区| 久久久久久久久伊人| 成人av电影在线播放| 亚洲欧美日韩在线播放| 欧美日韩高清在线播放| 久久99深爱久久99精品| 久久精品一区二区三区不卡| 99国产精品久久久久久久久久 | 亚洲综合视频在线| 91.xcao| 国产在线一区观看| 亚洲少妇中出一区| 欧美一区午夜视频在线观看 | 欧美日韩日本视频| 精品在线播放免费| 国产精品久久久久毛片软件| 欧美日韩在线不卡| 国产一区二区三区免费在线观看| 亚洲欧洲一区二区三区| 欧美久久久久免费| 国产91清纯白嫩初高中在线观看| 亚洲一区在线观看网站| 欧美tk—视频vk| 一本色道久久综合精品竹菊| 日韩电影一区二区三区| 欧美激情一区二区在线| 欧美在线观看视频一区二区三区| 美女精品一区二区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产二区国产一区在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 91精品欧美福利在线观看| 成人爱爱电影网址| 日韩vs国产vs欧美| 国产精品电影一区二区三区| 3atv一区二区三区| 99久久伊人网影院| 蜜桃久久久久久久| 一区二区三区电影在线播| 国产亚洲精品久| 日韩写真欧美这视频| 色哟哟亚洲精品| 成人性生交大合| 裸体一区二区三区| 亚洲已满18点击进入久久| 亚洲国产精品成人综合色在线婷婷 | 国产一区 二区 三区一级| 亚洲成人av资源| 18成人在线观看|