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

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

?? lwbsaa7113.v

?? vhdl,用i2c控制philips的7111和7128
?? V
字號:
/////////////////////////////////////////////////////////////////////
////                                                             ////
////             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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av影院| 国产传媒日韩欧美成人| 欧美激情综合在线| 久久精品一区二区三区不卡| 久久久久久久久久久电影| 欧美精品一区二区三区蜜桃视频| 91麻豆精品国产91久久久久久久久| 欧美日韩久久一区| 欧美日韩的一区二区| 日韩一区二区免费在线观看| 日韩欧美一区二区三区在线| 久久一区二区视频| 国产亚洲婷婷免费| 亚洲天堂中文字幕| 午夜精品久久久久久久久久久 | 国产麻豆成人精品| 韩国欧美国产一区| 国产不卡视频在线播放| 99re热视频这里只精品| 欧美日韩亚州综合| 久久久蜜桃精品| 最新日韩av在线| 亚洲第一会所有码转帖| 黄色日韩网站视频| 成人免费观看男女羞羞视频| 欧美午夜精品理论片a级按摩| 欧美日韩免费视频| 久久精品一区二区三区不卡牛牛| 亚洲精品日韩综合观看成人91| 偷拍一区二区三区| 国产成人欧美日韩在线电影| 在线看不卡av| 久久综合国产精品| 亚洲一区二区影院| 大尺度一区二区| 精品视频色一区| 国产精品天干天干在观线| 欧美一区二区三区视频在线观看| 国产欧美精品一区二区色综合| 亚洲成av人影院在线观看网| 国产不卡视频在线播放| 在线电影欧美成精品| 国产精品久久久久久亚洲伦| 琪琪一区二区三区| 色视频欧美一区二区三区| 精品日产卡一卡二卡麻豆| 亚洲男人的天堂av| 丰满少妇在线播放bd日韩电影| 91精品啪在线观看国产60岁| 亚洲精选在线视频| 99精品久久只有精品| 2019国产精品| 久久精品久久精品| 欧美区一区二区三区| 亚洲日本在线a| 国产91丝袜在线播放九色| 欧美一区二区三区四区视频| 亚洲国产视频在线| 91精品国产综合久久久蜜臀图片| 中文字幕不卡在线播放| 国内外成人在线| 日韩欧美国产三级电影视频| 午夜精品福利在线| 91久久精品国产91性色tv| 国产精品素人视频| 国产91丝袜在线播放| 国产亚洲欧美色| 久久91精品久久久久久秒播| 日韩欧美在线观看一区二区三区| 亚洲成年人影院| 欧美精品视频www在线观看| 亚洲永久免费视频| 欧美三级视频在线观看| 一区二区在线免费| 欧美最新大片在线看 | 欧美午夜精品一区二区三区| 亚洲免费观看高清在线观看| 91小视频在线| 亚洲综合丝袜美腿| 欧美裸体一区二区三区| 蜜桃视频在线观看一区| 日韩女优制服丝袜电影| 激情久久五月天| 久久久久国色av免费看影院| 成人性生交大片免费看中文| 中文字幕在线不卡一区| 在线视频你懂得一区| 午夜国产精品一区| 中文字幕精品综合| eeuss鲁片一区二区三区| 欧美经典一区二区三区| fc2成人免费人成在线观看播放| 日韩一区中文字幕| 在线视频中文字幕一区二区| 免费成人美女在线观看| 久久亚洲一级片| www.日本不卡| 日韩精品视频网| 久久综合九色欧美综合狠狠| 99re亚洲国产精品| 同产精品九九九| 久久久久高清精品| 色播五月激情综合网| 久久国产欧美日韩精品| 17c精品麻豆一区二区免费| 欧美视频一区二区三区| 国产一区在线不卡| 亚洲免费资源在线播放| 日韩欧美电影在线| 91在线观看下载| 极品美女销魂一区二区三区免费| 国产精品久久国产精麻豆99网站| 欧美日韩在线播| 国产不卡视频在线观看| 日韩av一级电影| 亚洲欧美中日韩| 日韩一区二区麻豆国产| www.视频一区| 久久电影国产免费久久电影 | 欧美色偷偷大香| 国产精品一区在线观看你懂的| 亚洲欧美一区二区三区孕妇| 精品久久久久av影院| 色诱视频网站一区| 国产91丝袜在线播放| 麻豆免费看一区二区三区| 亚洲女厕所小便bbb| 国产欧美日韩久久| 欧美精品 日韩| 色哦色哦哦色天天综合| 国产精品一二三区在线| 美腿丝袜亚洲综合| 亚洲成人在线免费| 亚洲精品视频免费观看| 中文欧美字幕免费| 久久久久久久久久久黄色| 日韩一级免费一区| 欧美日韩在线播| 精品视频在线看| 欧美视频一区二区三区四区| 色综合久久中文综合久久牛| 成人国产精品视频| 成人精品一区二区三区四区| 国产成人精品三级麻豆| 国产在线精品一区二区| 国内外成人在线| 精品一区二区综合| 久久激情综合网| 国产精品中文字幕日韩精品| 激情成人综合网| 国产一区二区调教| 国产高清无密码一区二区三区| 国内外成人在线| 高清av一区二区| 91麻豆福利精品推荐| 97精品电影院| 欧美日韩视频在线观看一区二区三区| 日韩欧美电影一二三| 欧美一区二区三区免费观看视频| 91麻豆精品国产| 精品入口麻豆88视频| 久久久国际精品| 国产精品国产三级国产aⅴ原创| 中文字幕 久热精品 视频在线| 国产精品视频看| 亚洲人一二三区| 亚洲一区二区三区四区不卡| 丝瓜av网站精品一区二区| 理论片日本一区| 国产成人免费在线视频| 色综合久久综合中文综合网| 在线观看国产91| 日韩三级伦理片妻子的秘密按摩| 亚洲精品一区二区三区福利| 国产精品乱码人人做人人爱| 亚洲一区二区三区在线看| 美女视频一区二区三区| 国产成人精品影视| 欧美在线观看一区二区| 欧美不卡123| 亚洲欧美国产77777| 男女性色大片免费观看一区二区| 国产综合成人久久大片91| 91视视频在线观看入口直接观看www | 欧美成人女星排行榜| 国产三级久久久| 午夜精品久久久久久久蜜桃app| 国产一区二区毛片| 欧美在线观看禁18| 精品91自产拍在线观看一区| 亚洲视频免费观看| 久久av资源网| 欧美专区日韩专区| 久久九九久精品国产免费直播| 亚洲精品成人少妇| 久久99精品国产麻豆婷婷| 91在线观看视频| 国产日产欧美一区二区三区 | 日韩欧美国产电影| 一区二区三区在线观看欧美|