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

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

?? rec_buf.vhd

?? USART coded in VHDL. It is writted in 5 files. I am uploading the files in order.
?? VHD
字號:

					--		RECEIVE BLOCK

library ieee;
use ieee.std_logic_1164.all;  

entity rec_buf is
port(rxclk				: in		std_logic;
		ciport				: in		std_logic_vector(7 downto 0);
		miport				: in		std_logic_vector(7 downto 0);
		syn1port			: in		std_logic_vector(7 downto 0);
		syn2port			: in		std_logic_vector(7 downto 0);
		statusport		: in		std_logic_vector(7 downto 0);
		writeport			: out		std_logic_vector(7 downto 0);
		rxrdy					: out		std_logic;	
		rxd						: in		std_logic; 
		syndet 				: inout	std_logic;
		parity_error	: out		std_logic;
		framing_error	: out		std_logic;
		overrun_error : out		std_logic;
		syndet_status	: out		std_logic; 
		status_read		: in		std_logic;
		data_read			: in		std_logic;	
		rxrdy_status	: out		std_logic );
end rec_buf;								

architecture rec_buf_arc of rec_buf is	 

	type 	serial1 is ( start, dbits, parity, stop );
	type 	serial2 is ( syn1det, syn2det, dbits, parity );
	type	serial3 is ( stop, dbits, parity );

	signal 	currrxd1	: serial1;
	signal 	nextrxd1	: serial1;
	signal 	currrxd2	: serial2;
	signal 	nextrxd2	: serial2;
	signal 	currrxd3	: serial3;
	signal 	nextrxd3	: serial3;
	signal 	holdreg		: std_logic_vector(7 downto 0):="11111111";	  
	signal 	i					: integer:=0;
	signal 	j					: integer:=0;
	signal 	k					: integer:=0;
	signal 	len				: integer;	
	signal	width			: integer:=2;
	signal 	baud			: integer;
	signal 	count			: integer:= 1;
	signal 	par_err		: std_logic:='0';
	signal 	rxreg_full: std_logic:='0';
	signal 	syndet_in	: std_logic:='0';
	signal 	syndet_out: std_logic:='0';  
	signal 	brkdet		: std_logic:='0';	 
	signal 	brk				: integer:=0; 
	signal 	rxrdy_in	: std_logic:='0';

begin
	
	len <= 	5 when miport(3 downto 2) = "00" else
					6 when miport(3 downto 2) = "01" else
					7 when miport(3 downto 2) = "10" else
					8; 										 
			
	baud <= 1  when miport(1 downto 0) = "01" else
					16 when miport(1 downto 0) = "10" else
					64 when miport(1 downto 0) = "11" else
					1; 
	rxrdy <= rxrdy_in;
	rxrdy_status <= rxrdy_in;

	process( rxclk )
	begin
		currrxd1 <= nextrxd1; 
		currrxd2 <= nextrxd2; 
		currrxd3 <= nextrxd3; 
	end process; 
	
	process ( rxclk )
	begin	
		if rxclk = '0' and rxclk'event then	
			if miport(1 downto 0) = "01" then
				count <= baud/2;
			elsif miport(1) = '1' then
				if count = baud then
					count <= 1;
				else
					count <= count + 1;
				end if;
			end if;
		end if;
	end process;
	
	process ( rxclk, status_read )
	variable rxreg : std_logic_vector(7 downto 0):="11111111";
	begin		

	if status_read = '1' then
		syndet_out <= '0';
	end if;

	if rxclk = '1' and rxclk'event and ciport(2) = '1' then
		if miport(1 downto 0) /= "00" and brkdet = '0' then
			if count = baud/2 then
				case currrxd1 is
					when start =>		
						if rxd = '0' then
							nextrxd1 <= dbits;
							i <= 0;
						else
							nextrxd1 <= start;
						end if;
			
					when dbits => 
						rxreg(i) := rxd;
						if i <= len-2 then
							i <= i + 1;
							nextrxd1 <= dbits;
						elsif miport(4) = '1' then
							i <= 0;
							nextrxd1 <= parity;
						else	 			  
							i <= 0;
							nextrxd1 <= stop;
						end if;				 

					when parity =>		
						i <= 0; 
						nextrxd1 <= stop; 
			
					when stop =>			
						i <= 0;
						if rxd = '1' then
							nextrxd1 <= start;	
						end if;	
						nextrxd1 <= start;
				end	case;
			end if;
		elsif miport(1 downto 0) = "00" and miport(6) = '0' then 
			case currrxd2 is
				when syn1det =>
					if j <= len-1 then
						syndet_out <= '0';
						rxreg(j) := rxd;
						j <= j + 1;
					else
						rxreg(len-1 downto 0) := rxd & rxreg(len-1 downto 1) ;
					end if;				

					if rxreg(len-1 downto 0) = syn1port(len-1 downto 0) and j >= len-1 then
						j <= 0;
						if miport(7) = '0' then
							syndet_out <= '0';
							if miport(4) = '1' then
								nextrxd2 <= parity;
							else
								nextrxd2 <= syn2det;
							end if;
						else				   
							syndet_out <= '1';
							if miport(4) = '1' then
								nextrxd2 <= parity;
							else
								nextrxd2 <= dbits;
							end if;
						end if;
					else				
						syndet_out <= '0';
						nextrxd2 <= syn1det;
					end if;
			
				when syn2det =>
					if j <= len-1 then	
						syndet_out <= '0';
						rxreg(j) := rxd;
						j <= j + 1;
					end if;		
								   
					if j = len-1 then
						if rxreg(len-1 downto 0) = syn2port(len-1 downto 0) then
							syndet_out <= '1';
							if miport(4) = '1' then
								nextrxd2 <= parity;
							else
								nextrxd2 <= dbits;
							end if;
						else
							syndet_out <= '0';
							nextrxd2 <= syn1det;
						end if;
					else
						syndet_out <= '0';
						nextrxd2 <= syn2det;
					end if;
		
				when dbits => 
					rxreg(j) := rxd;
					if j <= len-2 then
						j <= j + 1;
						nextrxd2 <= dbits;
					elsif miport(4) = '1' then
						j <= 0;
						nextrxd2 <= parity;
					elsif syndet_out = '1' then	 			  
						j <= 0;
						nextrxd2 <= dbits; 
					elsif syndet_out = '0' then
						j <= 0;
						nextrxd2 <= syn1det;
					end if;					  

				when parity =>		
					j <= 0;
					if syndet_out = '1' then
		 				nextrxd2 <= dbits;
					elsif syndet_out = '0' then
						if rxreg(len-1 downto 0) = syn1port(len-1 downto 0) then
							nextrxd2 <= syn2det; 
						else		
							nextrxd2 <= syn1det;
						end if;
					end if;
			end case;
		elsif miport(1 downto 0) = "00" and miport(6) = '1' then 
			case currrxd3 is
				when dbits => 
					rxreg(k) := rxd;
					if k <= len-2 then
						k <= k + 1;
						nextrxd3 <= dbits;
					elsif miport(4) = '1' then
						k <= 0;
						nextrxd3 <= parity;
					else
						k <= 0;
						nextrxd3 <= dbits; 
					end if;					  

				when parity =>		
					k <= 0;
					nextrxd3 <= dbits; 
				when stop =>								
					k <= 0;
					if syndet_in = '1' then
		 				nextrxd3 <= dbits;
					elsif syndet_in = '0' then
						nextrxd3 <= stop; 
					end if; 
			end case;
		end if;							
		holdreg <= rxreg;
	end if;	 

	end process;

	process ( rxclk, currrxd1,currrxd2, currrxd3,ciport )
	variable par: std_logic:='0';
	begin	
		if ciport(4) = '1' then
			parity_error <= '0';
		end if;
		if rxclk = '1' and rxclk'event then
			if currrxd1 = parity or currrxd2 = parity or currrxd3 = parity then
				for l in 0 to len-1 loop
					par := par xor holdreg(l);
				end loop;
				parity_error <= (par xor rxd);
			end if;
		end if;
	end process;		
	
	process ( rxclk, currrxd1, ciport )
	begin	
		if ciport(4) = '1' then
			framing_error <= '0';
		end if;
		if rxclk = '1' and rxclk'event then
			if miport(1 downto 0) /= "00" then
				if currrxd1 = stop and rxd = '1' then
					framing_error <= '0';
				elsif currrxd1 = stop and rxd = '0' then
					framing_error <= '1';
				end if;
			end if;
		end if;
	end process;	

	process ( i, currrxd1, currrxd2, currrxd3, rxclk, ciport )
	begin
		if ciport(4) = '1' then
				overrun_error <= '0';   
		end if;				 
		if rxclk = '1' and rxclk'event then
			if miport(1 downto 0) /= "00" then
				if currrxd1 = stop then
					if rxrdy_in = '1' then 
						overrun_error <= '1';   
					end if;
					rxreg_full <= '1';
				else	
					rxreg_full <= '0';
				end if;
			elsif miport(1 downto 0) = "00" and miport(6) = '0' then
				if currrxd2 = dbits and j= len-1 then
					if rxrdy_in = '1' then 
						overrun_error <= '1';   
					end if;
					rxreg_full <= '1';
				else	
					rxreg_full <= '0';
				end if;
			elsif miport(1 downto 0) = "00" and miport(6) = '1' then 
				if currrxd3 = dbits and k = len-1 then
					if rxrdy_in = '1' then 
						overrun_error <= '1';   
					end if;
					rxreg_full <= '1';
				else	
					rxreg_full <= '0';
				end if;	 	
			end if;			
		end if;				
	end process;

	process ( rxclk, rxreg_full )
	begin	
		if rxreg_full = '1' then
			writeport <= holdreg;
		end if;
	end process;  				 

	process ( rxreg_full, data_read, ciport(2) )
	begin
		if rxreg_full = '1' then
			rxrdy_in <= '1';
		elsif data_read = '1' then
			rxrdy_in <= '0';
		elsif ciport(2) = '0' then
			rxrdy_in <= '0';	
		end if;
	end process;

	process (syndet_out, status_read, miport, rxclk, brkdet )
	begin		
		if miport(1 downto 0) = "00" and miport(6) = '0' then
			if status_read = '1' then
				syndet <= '0';
				syndet_status <= '0';				
			else
				syndet <= syndet_out;
				syndet_status <= syndet_out;
			end if;
		elsif miport(1 downto 0) /= "00" then
			syndet <= brkdet;				 
			syndet_status <= brkdet;
		else			   
			syndet_status <= 'Z';
			syndet <= 'Z';
		end if;
	end process;						   

	process ( syndet, miport, rxclk, status_read)
	begin
		if miport(1 downto 0) = "00" and miport(6) = '1' then
			syndet_in <= syndet; 
			if status_read = '1' then
				syndet_status <= '0';				
			elsif syndet = '1' then
				syndet_status <= '1';
			end if;
		else						
			syndet_status <= 'Z';
			syndet_in <= 'Z';
		end if;	 
	end process;   
	
	process ( rxclk )
	begin
		if rxclk = '1' and rxclk'event then
			if miport(1 downto 0) /= "00" and count = baud/2 then
				if rxd = '0' then
					brk <= brk + 1;
				else
					brk <= 0;
				end if;
			end if;
		end if;
	end process;  
	
	process( miport, len )		   
	variable w : integer:=0;
	begin
		if miport(1 downto 0) /= "00" then
			w := len + 2;
			if miport(4) = '1' then
				w := w + 1;
			end if;	
			if miport(7 downto 6) = "10" or miport(7 downto 6) = "11" then
				w := w + 1;
			end if;
			width <= w + w;
		end if;
	end process;

	process ( brk, rxd )
	begin
		if rxd = '1' then
			brkdet <= '0';	
		elsif brk >= width then
			brkdet <= '1';
		else
			brkdet <= '0';
		end if;
	end process;  

end rec_buf_arc;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲香肠在线观看| 色综合色狠狠天天综合色| 成人精品国产一区二区4080| 欧美在线一二三四区| 国产亚洲va综合人人澡精品| 天天影视涩香欲综合网| 成人av网址在线| 精品国产乱码久久久久久影片| 1024成人网| 高清不卡在线观看| 欧美va亚洲va香蕉在线| 天天综合网 天天综合色| 91免费版pro下载短视频| 久久久久久久久久美女| 蜜桃久久久久久久| 欧美日韩视频在线观看一区二区三区| 中文字幕精品一区| 国产馆精品极品| 欧美xingq一区二区| 免费视频最近日韩| 6080日韩午夜伦伦午夜伦| 亚洲激情男女视频| 一本久久综合亚洲鲁鲁五月天| 国产视频一区二区在线观看| 极品销魂美女一区二区三区| 欧美一区二区三区精品| 日韩成人dvd| 91精品国产欧美一区二区18| 日本视频一区二区三区| 欧美一区永久视频免费观看| 日本不卡中文字幕| 91精品国产91久久久久久一区二区| 午夜免费欧美电影| 91精品在线一区二区| 美女视频黄 久久| 精品欧美一区二区三区精品久久| 久久精品国产第一区二区三区| 日韩一级在线观看| 黑人精品欧美一区二区蜜桃 | 日韩电影在线免费观看| 欧美亚洲一区二区在线| 亚洲自拍偷拍麻豆| 欧美精品1区2区3区| 国产成人av一区| 精品福利av导航| 国产99精品视频| 亚洲免费在线视频| 在线看国产一区| 午夜伦欧美伦电影理论片| 日韩精品自拍偷拍| 国产黄人亚洲片| 亚洲精品视频免费看| 欧美日韩色一区| 国产麻豆午夜三级精品| 国产精品色在线| 欧美性xxxxxx少妇| 精品夜夜嗨av一区二区三区| 国产欧美日韩精品一区| 在线免费亚洲电影| 青青国产91久久久久久| 久久精品日产第一区二区三区高清版| 成年人国产精品| 午夜激情一区二区| 国产欧美在线观看一区| 欧美综合天天夜夜久久| 精品亚洲成a人| 亚洲自拍另类综合| 精品播放一区二区| 日本丶国产丶欧美色综合| 久久成人免费网站| 亚洲啪啪综合av一区二区三区| 51精品久久久久久久蜜臀| 国产不卡一区视频| 午夜精品123| 中文字幕一区二区三区不卡| 欧美久久久久久蜜桃| 懂色av一区二区三区蜜臀| 亚洲第一av色| 1000部国产精品成人观看| 日韩一区二区高清| 在线观看一区二区精品视频| 国产电影一区二区三区| 亚洲成人激情综合网| 中文字幕精品在线不卡| 日韩午夜电影av| 在线观看日韩国产| jlzzjlzz亚洲日本少妇| 久久9热精品视频| 亚洲成a人片在线观看中文| 中文字幕人成不卡一区| 欧美精品一区二区三区蜜桃| 欧美美女激情18p| 国产亚洲一二三区| 久久伊99综合婷婷久久伊| 日韩欧美卡一卡二| 在线观看免费成人| 成人精品视频一区二区三区尤物| 丝袜美腿亚洲色图| 亚洲丰满少妇videoshd| 亚洲美女免费视频| 国产精品久久久久影院色老大| 欧美sm美女调教| 555www色欧美视频| 91精品国产综合久久久久久久久久| 99精品国产99久久久久久白柏| 国产九色精品成人porny| 精品亚洲aⅴ乱码一区二区三区| 日韩专区在线视频| 首页国产欧美日韩丝袜| 婷婷成人激情在线网| 亚洲成在人线在线播放| 亚洲成人精品在线观看| 亚洲v日本v欧美v久久精品| 亚洲一区自拍偷拍| 污片在线观看一区二区| 亚洲国产一区二区三区青草影视| 亚洲女人的天堂| 亚洲制服丝袜av| 亚洲18色成人| 日韩主播视频在线| 老司机精品视频在线| 韩国v欧美v日本v亚洲v| 国产高清精品久久久久| 成人v精品蜜桃久久一区| 99国内精品久久| 欧美日韩一区二区三区不卡| 欧美日韩不卡在线| 精品国产凹凸成av人导航| 久久青草欧美一区二区三区| 日本一区二区三区四区 | 色94色欧美sute亚洲13| 在线免费观看视频一区| 欧美日韩精品久久久| 日韩欧美色综合网站| 久久婷婷色综合| 亚洲欧美色一区| 奇米精品一区二区三区在线观看| 久久草av在线| 99久久精品国产一区| 欧美人伦禁忌dvd放荡欲情| 欧美v亚洲v综合ⅴ国产v| 国产精品久久久久久久久图文区| 亚洲乱码中文字幕综合| 老司机免费视频一区二区三区| 国产999精品久久久久久绿帽| 97精品久久久久中文字幕| 欧美精品久久一区二区三区| 精品免费99久久| 亚洲色图都市小说| 日本不卡一二三区黄网| www.66久久| 日韩一区二区免费高清| 国产精品家庭影院| 麻豆精品精品国产自在97香蕉| 不卡的av网站| 91麻豆精品国产91久久久更新时间 | 欧美一级夜夜爽| 中文字幕国产一区| 毛片一区二区三区| 一本一道久久a久久精品| 日韩一区二区影院| 亚洲人成在线观看一区二区| 美女一区二区在线观看| 91官网在线免费观看| 久久久久久久久伊人| 午夜视频在线观看一区二区三区| 成人免费视频免费观看| 日韩欧美一二三四区| 亚洲自拍偷拍综合| 不卡电影免费在线播放一区| 日韩欧美自拍偷拍| 午夜免费欧美电影| 91精彩视频在线| 国产精品青草综合久久久久99| 青青草视频一区| 欧洲一区二区三区在线| 国产精品人人做人人爽人人添| 麻豆精品在线观看| 666欧美在线视频| 亚洲va中文字幕| 色国产综合视频| 亚洲桃色在线一区| 99精品国产91久久久久久 | 欧美美女一区二区三区| 亚洲精品国产一区二区精华液| 成人精品一区二区三区四区| 久久美女艺术照精彩视频福利播放 | 国产精品网曝门| 激情综合色播激情啊| 日韩情涩欧美日韩视频| 婷婷夜色潮精品综合在线| 欧美日韩一区高清| 午夜精品福利在线| 欧美日韩一级大片网址| 亚洲电影在线免费观看| 欧美人xxxx| 日韩精品亚洲专区| 日韩美女一区二区三区四区| 日本va欧美va欧美va精品| 欧美一卡二卡在线|