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

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

?? lwbsaa7113.v.bak

?? saa7113配置
?? BAK
字號(hào):
/////////////////////////////////////////////////////////////////////
////                                                             ////
////             LWB rev 1.2 -- SAA7113 Control Logic            ////
////                                                             ////
////                                                             ////
////                 Author: Liu Tao                             ////
////          liutao94@tsinghua.org.cn                           ////
////                                                             ////
////                                                             ////
////                                                             ////
/////////////////////////////////////////////////////////////////////
////                                                             ////
////               Copyright (C) 2003 Liu Tao                    ////
////               liutao94@tsinghua.org.cn                      ////
////                                                             ////
////                                                             ////
/////////////////////////////////////////////////////////////////////

`include "timescale.v"

module LWBSAA7113 (reset,clk,llck,vpo,rst,capture,error,SRAM_CE_,SRAM_OE_,SRAM_WE_,la,ld);

	//=================================================================================
	//input
	//=================================================================================

	    /*___________________________________________________ */
		//reset
		input reset;//
	    /*___________________________________________________ */
		//from saa7113
		input clk;//50MHz clock
		input llck;//SAA7113 video clock (27 MHz)
		input [7:0] vpo;//data from SAA7113
		input [1:0] rst;//real-time video status
		input capture;//flag for grab video data


	//=================================================================================
	//output
	//=================================================================================
	    /*___________________________________________________ */
		//to sram
		output error;//state indicator,to LED
		output SRAM_CE_;
		output SRAM_OE_;
		output SRAM_WE_;
		output [18:0] la;//address bus to sram
		output [7:0] ld;//data bus to sram
		
	//=================================================================================
	//reg
	//=================================================================================

	    /*___________________________________________________ */
		//video in state machine declaration
		reg [3:0] presState;//
		reg [3:0] nextState;//
		reg [3:0] returnState;
		reg [3:0] nextReturnState;

	//=================================================================================
	//parameters
	//=================================================================================

	    /*___________________________________________________ */
		//state declaration
		parameter 	stIdle = 4'b0000;//IDLE STATE,START UP OF A STATE MACHINE,RESET
		parameter	stWaitForEscape = 4'b0001;//CHECK FOR "FF",START OF TIMING REFERENCE CODE
		parameter	stCheckEscape1 = 4'b0010;//CHECK FOR "00",SECOND
		parameter	stCheckEscape2 = 4'b0011;//CHECK FOR "00",THIRD
		parameter	stCheckForNewPage = 4'b0100;//CHECK FOR "01",It is in vertical blanking stage,
		parameter	stCheckForFirstLine = 4'b0101;//CHECK FOR "000",for SAV in valid row
		parameter	stChromaBlue = 4'b0110;//write Cb to sram,here not in use
		parameter	stLumaBlue = 4'b0111;//write Lb to sram
		parameter	stChromaRed = 4'b1000;//write Cr to sram,not in use
		parameter	stLumaRed = 4'b1001;//write Lr to sram,
		parameter	stCheckForEndLine = 4'b1010;//CHECK for end of line
		parameter	stCheckForNewLine = 4'b1011;//CHECK for new line
		parameter	stError = 4'b1100;//ERROR state
	

	//=================================================================================
	//wires
	//=================================================================================

	    /*___________________________________________________ */
		//vpo data from saa7113
		reg [7:0] vpoLatch;//synchronise data on the vpo bus to LLCK
		reg [7:0] luminanceB;
		reg [7:0] luminanceR;
		reg [7:0] chrominanceB;//not use now
		reg [7:0] chrominanceR;//not use now
		reg [7:0] nextLuminanceB;
		reg [7:0] nextLuminanceR;
		reg [7:0] nextChrominanceB;//not use now
		reg [7:0] nextChrominanceR;//not use now

		reg [8:0] grab_cntr_hori;//counter for horizon 720
		reg [8:0] grab_cntr_vert;//counter for vertical 286
		reg clr_grab_cntr;//clear both grab counters
		reg inc_grab_hori;//increment horizontal counter for each 2 pixels
		reg inc_grab_vert;//increment vertical counter and clear horizontal counter
		reg field;//0 for 1st field,1 for 2nd field
		reg nextField;//remember next field

		reg grab;//write current data
		reg nextGrab;

		wire [18:0] grab_addr;
		reg [18:0] write_addr;
		reg [7:0] writeData;
		reg write;
		reg lastwrite;
		reg dowrite;
//		reg capture;//
		reg error;


	//=================================================================================
	//hookup sram interface
	//=================================================================================
	    /*___________________________________________________ */
		//address
		LWBSRAM L_SRAM (
			.clk(clk),
			.reset(reset),
			.doWrite(dowrite),
			.writeAddr(write_addr),
			.writeData(writeData),
			.SRAM_CE_(SRAM_CE_),
			.SRAM_OE_(SRAM_OE_),
			.SRAM_WE_(SRAM_WE_),
			.SRAM_ADDR(la),
			.SRAM_DATA(ld)		
		);



	//=================================================================================
	//Assigning
	//=================================================================================
	    /*___________________________________________________ */
		//address
		assign grab_addr = {grab_cntr_vert,field,grab_cntr_hori};


		//colour calculations:  these have not been fully tested and may need to be edited	
		//These convert the YUV data to RGB
		//	red = ("00" & luminanceB & x"00") + (("01" & x"24") * chrominanceR) - ("00" & x"7D00");
		//	blue <= ("00" & luminanceB & x"00") + (("10" & x"07") * chrominanceB) - ("00" & x"EE80");
		//	green <= ("00" & luminanceB & x"00") + ("00" & x"9200") - (("00" & x"65") * chrominanceB) - (("00" & x"95") * chrominanceR);

	




	//=================================================================================
	//State Machine
	//=================================================================================


	    /*___________________________________________________ */
		//write data to sram

		


	    /*___________________________________________________ */
		//write data to sram
		always @(posedge llck or negedge reset)
			if (!reset)
				begin
					presState <= stIdle;
					grab <= 1'b0;		
					returnState <= stIdle;
					field <= 1'b0;
					grab_cntr_hori <= 1'b0;
					grab_cntr_vert <= 1'b0;

				end
			else 
				begin
					vpoLatch <= vpo;//synchronize asynchronous data
					presState <= nextState;// go to next state
					grab <= nextGrab;//delay so colour can be calculated

					returnState <= nextReturnState;
					field <= nextField;
					chrominanceR <= nextChrominanceR;
					chrominanceB <= nextChrominanceB;
					luminanceR <= nextLuminanceR;			
					luminanceB <= nextLuminanceB;	
					
					if (nextGrab)
						write_addr <= grab_addr;//give write address plenty of setup time

					if (grab)  //note that this is executed 1 cycle after nextGrab is seen to go high.
						begin
//							writeData <= '0' & colour;		-- high colour (15 bit) full colour.  360 double pixels wide.
							writeData <= luminanceR;
							write <= 1'b1;
						end
					else 
						write <= 1'b0;

					// operate on the grab counters for vertical and horizontal movement
					if (clr_grab_cntr)
						begin
							grab_cntr_hori <= 1'b0;
							grab_cntr_vert <= 1'b0;
						end
					else 
						if (inc_grab_hori == 1)
							grab_cntr_hori <= grab_cntr_hori + 1;

						if (inc_grab_vert == 1)
							begin
								grab_cntr_vert <= grab_cntr_vert + 1;
								grab_cntr_hori <= 1'b0; // clear horizontal counter with each new line
							end
				end

	    /*___________________________________________________ */
		//grab data from vpo bus
		always @(presState or vpoLatch or returnState or field or luminanceB or luminanceR or chrominanceB or chrominanceR or capture)
			begin
				//default signal values
				clr_grab_cntr <= 1'b0;
				inc_grab_hori <= 1'b0;
				inc_grab_vert <= 1'b0;

				nextGrab <= 1'b0;
	
				nextReturnState <= returnState;
				nextField <= field;
				nextLuminanceB <= luminanceB;
				nextLuminanceR <= luminanceR;
				nextChrominanceB <= chrominanceB;
				nextChrominanceR <= chrominanceR;	
	
				error <= 1'b0;

				//state machine
				case (presState)
					stIdle://
						if (capture == 1'b1)
							begin
								nextState <= stWaitForEscape;	// Look for an escape sequence
								nextReturnState <= stCheckForNewPage;// Check for start of field 0
							end
						else
							nextState <= stIdle;

					stWaitForEscape://Look for the first character in the sequence, keep looking until found
						if (vpoLatch == 8'hFF)
							nextState <= stCheckEscape1;
						else
							nextState <= stWaitForEscape;

					stCheckEscape1://Second character in the escape sequence is 0
						if (vpoLatch == 8'h00)
							nextState <= stCheckEscape2;
						else
							nextState <= stError;

					stCheckEscape2://Third charcter in the escape sequence is 0.  Go to returnState to check SAV/EAV code
						if (vpoLatch == 8'h00)
							nextState <= returnState;
						else
							nextState <= stError;

					stCheckForNewPage://Wait for an SAV or EAV in field 0 while in the vertical blanking stage
						if (vpoLatch[6:5] == 2'b01) //If it is then wait until the first line of active video
							begin
								nextState <= stWaitForEscape;
								nextReturnState <= stCheckForFirstLine;
								clr_grab_cntr <= 1'b1;//initialise counter
							end
						else  //Look for another SAV/EAV until we find the type we want.
							begin
								nextState <= stWaitForEscape;
								nextReturnState <= stCheckForNewPage;
							end

					stCheckForFirstLine://Wait for an SAV in field 0 while in the active video region
						if (vpoLatch[6:4] == 3'b000)  //start recording data
							begin
								nextState <= stChromaBlue;
								nextField <= 1'b0;//initialise field
							end
						else  //Look for another SAV/EAV until we find the type we want.
							begin
								nextState <= stWaitForEscape;
								nextReturnState <= stCheckForFirstLine;
							end
	
					stChromaBlue://This may be the start of another pair of pixels or the end of data
						if (vpoLatch == 8'hFF) //If the byte is FF then it is the start of the EAV.
							begin
								nextState <= stCheckEscape1;//Go to second state of subroutine
								nextReturnState <= stCheckForEndLine;//Check if this is the last line of the field
							end
						else if (vpoLatch == 8'h00)
							nextState <= stError;			
						else //latch data into register and continue
							begin
								nextState <= stLumaBlue;
								nextChrominanceB <= vpoLatch;
							end

					stLumaBlue://As long as valid data is present continue latching data
						if ((vpoLatch !== 8'hFF) && (vpoLatch !== 8'h00))
							begin
								nextState <= stChromaRed;
								nextLuminanceB <= vpoLatch;
							end
						else
							nextState <= stError;
							
					stChromaRed://As long as valid data is present continue latching data
						if ((vpoLatch !== 8'hFF) && (vpoLatch !== 8'h00))
							begin
								nextState <= stLumaRed;
								nextChrominanceR <= vpoLatch;
							end
						else
							nextState <= stError;

					stLumaRed://As long as valid data is present continue latching data and setup to write current data
						if ((vpoLatch !== 8'hFF) && (vpoLatch !== 8'h00))
							begin
								nextState <= stChromaBlue;
								nextLuminanceR <= vpoLatch;
								nextGrab <= 1'b1;//Set up a write after a delay (see clocked process)
								inc_grab_hori <= 1'b1;//Increment horizontal counter every two pixels
							end
						else
							nextState <= stError;

					stCheckForEndLine://possible conditions here are the end of field 0, end of field 1,or an EAV code indicating a new line in the active region.					
						if (vpoLatch[6:4] == 3'b111) //end of field 1
							nextState <= stIdle;
						else if (vpoLatch[6:4] == 3'b011) //end of field 0
							begin
								clr_grab_cntr <= 1'b1;//reset counter for field 1
								nextState <= stWaitForEscape;
								nextReturnState <= stCheckForNewLine;//start capture at first new line
							end
						else if (vpoLatch[5:4] == 2'b01) //end of line
							begin
								inc_grab_vert <= 1'b1;	// go to next line
								nextState <= stWaitForEscape;
								nextReturnState <= stCheckForNewLine;//capture next line from start
							end
						else // EAV expected but SAV received
							nextState <= stError;

					stCheckForNewLine://Wait until an SAV in the active video range arrives
						if (vpoLatch[5:4] == 2'b00)
							begin
								nextState <= stChromaBlue;// capture next line
								nextField <= vpoLatch[6];
							end
						else	// Wait for another code
							begin
								nextState <= stWaitForEscape;
								nextReturnState <= stCheckForNewLine;
							end

					stError://Wait until another capture is requested before continuing
						if (capture == 1'b1)
							begin
								nextState <= stWaitForEscape;
								nextReturnState <= stCheckForNewPage;
							end
						else
							begin
								nextState <= stError;
								error <= 1'b1;//indicate error on error LED
							end

					default:
						nextState <= stError;

				endcase
			end



	    /*___________________________________________________ */
		//synchronizes writes to the 50MHz clock
		always @(negedge reset or posedge clk)
			if(!reset)
				begin
					dowrite <= 1'b0;
					lastwrite <= 1'b0;
				end
			else
				begin
					lastwrite <= write;
					if (!write && lastwrite)
						dowrite <= 1'b1;
					else
						dowrite <= 1'b0;

				end



endmodule

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产色一区二区| 亚洲高清免费在线| 五月天中文字幕一区二区| 国模套图日韩精品一区二区| 99精品国产热久久91蜜凸| 欧美一区二区三区成人| 亚洲欧洲一区二区在线播放| 精品制服美女久久| 91精品福利视频| 欧美极品aⅴ影院| 另类成人小视频在线| 色老头久久综合| 国产精品免费看片| 国产一区不卡视频| 日韩一区二区视频在线观看| 亚洲美腿欧美偷拍| 成人小视频免费在线观看| 欧美一区二区三区不卡| 午夜久久久久久久久| 91精品办公室少妇高潮对白| 国产精品高潮呻吟久久| 国精产品一区一区三区mba视频| 欧美午夜一区二区| 一区二区国产视频| 色菇凉天天综合网| 亚洲日穴在线视频| 成人精品国产福利| 国产精品久久久久久久久免费相片 | 亚洲三级视频在线观看| 国产.欧美.日韩| 久久久蜜桃精品| 精品在线播放免费| 久久网站热最新地址| 国产一区二区精品久久99| 精品日韩成人av| 精品中文av资源站在线观看| 337p日本欧洲亚洲大胆精品| 国产麻豆成人精品| 久久久综合视频| 国产91在线观看丝袜| 中文字幕二三区不卡| 成人中文字幕在线| 亚洲三级免费观看| 欧美午夜免费电影| 日本亚洲免费观看| 欧美xxxxxxxx| 国产.欧美.日韩| 最新日韩av在线| 在线亚洲+欧美+日本专区| 亚洲高清在线视频| 日韩精品一区二区三区视频| 国产在线观看一区二区| 国产精品麻豆一区二区| 91在线视频在线| 午夜精品久久久久久不卡8050| 欧美丰满美乳xxx高潮www| 精品一区二区影视| 亚洲国产经典视频| 欧美亚州韩日在线看免费版国语版| 亚洲图片一区二区| 亚洲精品一区二区三区香蕉| 成人免费毛片app| 亚洲高清免费一级二级三级| 欧美大片一区二区| 91伊人久久大香线蕉| 视频一区视频二区中文字幕| 久久久综合九色合综国产精品| 99久久免费国产| 日本一区二区三区电影| 欧美性一级生活| 国产一区二区三区免费在线观看| 亚洲欧美日韩在线播放| 欧美一区二区三区爱爱| 成人h动漫精品| 日本女优在线视频一区二区| 国产精品麻豆视频| 91精品国产入口在线| 99久久国产免费看| 久草在线在线精品观看| 亚洲最新视频在线播放| 26uuu欧美| 欧美日韩国产综合久久| 国产69精品久久久久毛片| 天涯成人国产亚洲精品一区av| 国产视频一区二区三区在线观看| 欧美日韩日日骚| 成人午夜免费视频| 久久国产精品区| 亚洲bt欧美bt精品| 亚洲天堂成人网| 久久人人爽人人爽| 这里是久久伊人| 色爱区综合激月婷婷| 国产激情一区二区三区| 免费观看一级欧美片| 亚洲一线二线三线久久久| 中文一区二区在线观看| 日韩欧美激情一区| 欧美日韩你懂的| 色综合天天综合给合国产| 国产69精品一区二区亚洲孕妇| 美女一区二区三区在线观看| 性做久久久久久免费观看| 亚洲免费伊人电影| 中文字幕一区二区三区在线不卡| 久久久久久一级片| 精品福利在线导航| 欧美videos中文字幕| 欧美丰满高潮xxxx喷水动漫| 精品视频资源站| 欧美吻胸吃奶大尺度电影 | 日韩免费看的电影| 欧美精品乱码久久久久久按摩| 色婷婷av一区二区三区大白胸| 不卡免费追剧大全电视剧网站| 国产成人av电影在线观看| 国产精一区二区三区| 国产精品一区二区久激情瑜伽| 久久成人久久鬼色| 激情深爱一区二区| 国产精品一区在线| 懂色av一区二区夜夜嗨| 国产iv一区二区三区| 成人av资源在线观看| 99免费精品在线| 欧美曰成人黄网| 在线播放日韩导航| 日韩一区二区三区视频在线| 日韩免费看网站| 国产亚洲一区二区三区四区| 欧美国产日产图区| 亚洲欧洲中文日韩久久av乱码| 亚洲黄色av一区| 婷婷六月综合网| 国产做a爰片久久毛片| 成人性生交大片免费看在线播放| 99在线热播精品免费| 欧美又粗又大又爽| 日韩亚洲电影在线| 国产精品免费久久| 亚洲国产精品一区二区久久| 日本成人在线电影网| 国产一区二区三区精品欧美日韩一区二区三区 | 五月天亚洲精品| 蜜臀av国产精品久久久久| 国产成人综合在线播放| 97精品国产露脸对白| 欧美日韩黄色影视| 久久精品视频在线免费观看| 1区2区3区国产精品| 日韩影视精彩在线| 国产成人综合视频| 欧美亚洲一区二区三区四区| 精品国产精品网麻豆系列| 中文字幕字幕中文在线中不卡视频| 亚洲一区二区影院| 久久99精品一区二区三区| 91色在线porny| 日韩欧美一级二级三级| 最新国产精品久久精品| 青娱乐精品视频| 91麻豆国产精品久久| 日韩欧美一级在线播放| 亚洲精品一卡二卡| 国产很黄免费观看久久| 欧美色区777第一页| 国产女人18毛片水真多成人如厕 | 成人教育av在线| 日韩一级免费观看| 亚洲欧美另类综合偷拍| 国产美女一区二区| 欧美色综合网站| 综合久久久久久| 国产精品中文字幕欧美| 777午夜精品视频在线播放| 中文字幕乱码亚洲精品一区| 日本中文在线一区| 欧美三片在线视频观看| 亚洲欧洲另类国产综合| 国产精品综合在线视频| 91精品蜜臀在线一区尤物| 一区二区三区欧美激情| 成人avav影音| 久久久亚洲精品一区二区三区| 亚洲成人在线网站| 欧美专区在线观看一区| |精品福利一区二区三区| 粉嫩在线一区二区三区视频| 精品理论电影在线| 六月丁香婷婷久久| 6080亚洲精品一区二区| 性感美女极品91精品| 在线一区二区三区| 一区二区在线免费观看| av成人老司机| 1000部国产精品成人观看| 成人黄色av电影| 国产精品久久毛片a| 波多野结衣一区二区三区| 国产欧美一区二区精品性色超碰 |