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

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

?? lwbsaa7113.v

?? 視頻解壓縮程序(用verilog語言實現)
?? 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一区二区三区免费野_久草精品视频
欧美精品777| 精品一区二区av| 欧美亚洲自拍偷拍| 丝袜亚洲精品中文字幕一区| 欧美丰满美乳xxx高潮www| 免费看黄色91| 国产视频一区二区在线| 97se亚洲国产综合自在线不卡| 亚洲天堂免费在线观看视频| 欧美性xxxxxxxx| 久久精品国产一区二区三区免费看| 精品国产污污免费网站入口| 国产 欧美在线| 一区二区三区加勒比av| 欧美一三区三区四区免费在线看| 麻豆91在线看| 久久精品一二三| 日本丶国产丶欧美色综合| 亚洲成a人v欧美综合天堂下载| 欧美一区二区免费视频| 波多野结衣中文字幕一区| 亚洲一级二级三级| 26uuu欧美| 色猫猫国产区一区二在线视频| 日韩电影在线一区二区| 中文av一区二区| 欧美高清hd18日本| 不卡视频一二三四| 日韩高清国产一区在线| 日本一区二区三区久久久久久久久不 | 香蕉乱码成人久久天堂爱免费| 欧美精品vⅰdeose4hd| 国产一区二区三区高清播放| 国产精品高清亚洲| 日韩欧美视频一区| 色婷婷av一区二区三区之一色屋| 久久国产精品色| 综合色天天鬼久久鬼色| 日韩欧美在线观看一区二区三区| www.欧美色图| 亚洲日本在线看| 91激情五月电影| 九九九久久久精品| 亚洲精品国产高清久久伦理二区| 日韩视频在线观看一区二区| 91网站在线观看视频| 久久国产生活片100| 亚洲人妖av一区二区| 久久综合九色综合97婷婷女人| 91婷婷韩国欧美一区二区| 国产乱码精品一区二区三区av | 在线精品视频小说1| 美女视频黄 久久| 亚洲成av人片一区二区| 亚洲免费观看高清在线观看| 国产拍欧美日韩视频二区| 精品三级av在线| 7777精品伊人久久久大香线蕉 | 日韩欧美国产一二三区| 国内精品视频一区二区三区八戒| 亚洲不卡av一区二区三区| 国产精品久久久久久久久快鸭| 精品国产伦一区二区三区观看体验| 欧美日韩高清在线| 一本大道久久a久久综合婷婷| 高清国产午夜精品久久久久久| 美女任你摸久久| 日本视频在线一区| 日本伊人色综合网| 日韩精品一级中文字幕精品视频免费观看| 亚洲精品视频一区| 亚洲免费观看高清完整版在线| 中文字幕不卡一区| 国产蜜臀av在线一区二区三区| 久久九九国产精品| 日本vs亚洲vs韩国一区三区二区| 亚洲一区二区三区四区的| 亚洲麻豆国产自偷在线| 亚洲视频一区二区免费在线观看| 一区二区中文视频| 亚洲天堂av老司机| 一区二区三区丝袜| 亚洲成人免费影院| 日日骚欧美日韩| 丝袜美腿亚洲综合| 丝袜美腿亚洲综合| 日本系列欧美系列| 奇米色777欧美一区二区| 亚洲国产一区二区三区青草影视| 亚洲精品高清在线| 亚洲午夜国产一区99re久久| 午夜精品在线视频一区| 日本不卡在线视频| 国产精品99久久久| jizz一区二区| 欧美色精品天天在线观看视频| 欧美理论片在线| 精品国产99国产精品| 国产日韩欧美麻豆| 一区二区三区高清不卡| 日韩中文字幕av电影| 精品在线视频一区| 成人午夜在线播放| 在线免费观看成人短视频| 在线综合视频播放| 国产免费久久精品| 亚洲.国产.中文慕字在线| 久久国产生活片100| av动漫一区二区| 欧美亚洲国产一区二区三区va| 91麻豆精品国产91久久久 | 欧美伦理电影网| 久久一区二区视频| 一区二区三区国产| 久久精品国产999大香线蕉| 国产精品一区二区在线观看网站| 91麻豆精品在线观看| 日韩一区二区电影| 国产精品久久久久婷婷| 日韩中文字幕麻豆| 99精品国产热久久91蜜凸| 欧美卡1卡2卡| 国产精品伦一区| 日本午夜一本久久久综合| 成人久久久精品乱码一区二区三区| 欧美日韩亚洲综合在线 | 欧美刺激午夜性久久久久久久| 国产亚洲精品7777| 三级影片在线观看欧美日韩一区二区| 国产高清精品在线| 欧美一区二区三区在| 亚洲丝袜制服诱惑| 国产精品一区二区久激情瑜伽| 欧美女孩性生活视频| 成人免费在线视频观看| 国产老女人精品毛片久久| 欧美无人高清视频在线观看| 中文字幕欧美三区| 久久99蜜桃精品| 欧美日韩国产高清一区| 中文字幕一区二区三区蜜月| 欧美亚男人的天堂| 国产日韩在线不卡| 国模少妇一区二区三区| 911精品国产一区二区在线| 亚洲男人的天堂在线观看| 国产99一区视频免费| 欧美videofree性高清杂交| 日韩精品五月天| 欧美欧美欧美欧美| 亚洲成av人综合在线观看| 欧美在线影院一区二区| 亚洲婷婷国产精品电影人久久| 成人一区二区三区视频| 久久理论电影网| 久久网站最新地址| 欧美电影免费观看高清完整版 | 3751色影院一区二区三区| 一区二区三区中文在线| 99re这里只有精品视频首页| 国产欧美一区二区精品性| 国产美女一区二区| 2023国产精品| 国产精品自拍网站| 久久久久青草大香线综合精品| 久久99蜜桃精品| 精品国产乱子伦一区| 黑人巨大精品欧美黑白配亚洲| 日韩精品一区二区三区在线| 蜜桃视频在线观看一区| 精品欧美久久久| 国产成人免费9x9x人网站视频| 久久久激情视频| 成人免费av在线| 最新国产成人在线观看| 色婷婷亚洲一区二区三区| 亚洲一区二区三区影院| 欧美日韩国产综合草草| 日产欧产美韩系列久久99| 精品国产污污免费网站入口| 国产乱人伦偷精品视频免下载| 国产视频一区二区在线观看| 波多野结衣中文字幕一区| 一区二区三区四区中文字幕| 欧美色偷偷大香| 久久精品99国产国产精| 欧美精品一区二区三| 成人激情图片网| 亚洲亚洲精品在线观看| 日韩一区二区在线观看视频| 国产精品夜夜嗨| 亚洲理论在线观看| 91精品国产入口| 国产成人免费在线| 亚洲国产cao| 国产亚洲女人久久久久毛片| 91麻豆国产在线观看| 日韩精品欧美精品| 欧美—级在线免费片| 欧美视频一区二区三区四区|