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

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

?? mii_proc.vhd

?? MII接口1轉(zhuǎn)2處理
?? VHD
字號:
--Ethernet processing module for H9mo60B
-- by xikang
-- 2003-6-6

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;


entity MII_Proc is
port
(
      MII_ParDat_out : out std_logic_vector(7 downto 0) ;
      MII_ParEN_out : out std_logic ;
      MII_ParClk_out : out std_logic ;					-- use rising_edge to send the data
      MII_ParDat_in : in std_logic_vector(7 downto 0) ;
      MII_ParEN_in : in std_logic ;
      MII_SerDat_in : in std_logic_vector(3 downto 0) ;
      MII_SerEN_in : in std_logic ;
      MII_SerClk_in : out std_logic ;
	  MII_SerERR_in : in std_logic ;
      MII_SerDat_out : out std_logic_vector(3 downto 0) ;
      MII_SerEN_out : out std_logic ;
      MII_SerClk_out : out std_logic ;
	  MII_SerERR_out : out std_logic ;
	  MII_crs : out std_logic ;
	  MII_col : out std_logic ;
	  MII_link : out std_logic ;
	  Serdes_syn : in std_logic ;
	  Opt_LOS : in std_logic ;
      clk_50M : in std_logic ;
	  clk_25M : in std_logic ;
	  rxclken	: in std_logic;
	  clk_12m5 : in std_logic ;
	  rate		: in std_logic_vector( 6 downto 0 );
	  test		: in std_logic;
	  err		: out std_logic;
	  rxpkcnt 	: out std_logic_vector(15 downto 0) ;
	  txpkcnt 	: out std_logic_vector(15 downto 0) ;
	  clr_rxpkcnt : in std_logic;
	  clr_txpkcnt : in std_logic;
	  reset : in std_logic 
);
end MII_Proc;

architecture MII_Proc_Arch of MII_Proc is

signal wren			: std_logic;
signal byte_in		: std_logic_vector(7 downto 0);
signal part2		: std_logic;
signal MII_SerEn_in_d : std_logic;
signal iMII_ParDat_out : std_logic_vector(7 downto 0) ;

signal gapcnt		: integer range 0 to 31;

signal irxpkcnt 	: std_logic_vector(15 downto 0) ;
signal itxpkcnt 	: std_logic_vector(15 downto 0) ;

component bucket IS
	port 
	( 	reset 	: in std_logic;
		clk 	: in std_logic;
		rate	: in std_logic_vector( 6 downto 0 );
		usage	: in std_logic;
		nocredit: out std_logic
	);
END component;

component myfifo
	PORT
	(
		data		: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
		wrreq		: IN STD_LOGIC ;
		rdreq		: IN STD_LOGIC ;
		clk			: IN STD_LOGIC ;
		aclr		: IN STD_LOGIC ;
		full		: out STD_LOGIC ;
		empty		: out STD_LOGIC ;
		usedw		: out STD_LOGIC_VECTOR( 4 downto 0 );
		q		: OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
	);
end component;

component ethtest
	PORT
	(
		reset		: IN STD_LOGIC ;
		clk			: IN STD_LOGIC ;
		txclken		: IN STD_LOGIC ;
		txdat		: out STD_LOGIC_VECTOR (7 DOWNTO 0);
		txen		: out STD_LOGIC ;
		rxclken		: IN STD_LOGIC ;
		rxen		: IN STD_LOGIC ;
		rxdat		: in STD_LOGIC_VECTOR (7 DOWNTO 0);
		err			: out STD_LOGIC 
	);
end component;

signal wrfifo	: std_logic;
signal nearfull : std_logic;
signal paren_in1: std_logic;
signal pardat_in1: std_logic_vector(7 downto 0);
signal rdfifo	: std_logic;
signal rdfifo1	: std_logic;
signal rdfifo2	: std_logic;
signal aclr		: std_logic;
signal full		: std_logic;
signal empty	: std_logic;
signal byte_out	: std_logic_vector( 7 downto 0 );
signal usedw	: std_logic_vector( 4 downto 0 );
signal rdts		: std_logic;
signal seren_out: std_logic;
signal serdat_out: std_logic_vector( 3 downto 0 );
signal paren_out: std_logic;
signal fifo_ready : std_logic;
signal pklen	: std_logic_vector( 2 downto 0 );

signal nocredit	: std_logic;

signal txdat_test : std_logic_vector( 7 downto 0 );
signal txen_test : std_logic;
signal tmperr	 : std_logic;

begin

rxpkcnt		    <= ( others => '0' ) when test = '1' else irxpkcnt;	
txpkcnt		    <= ( others => '0' ) when test = '1' else itxpkcnt;	
MII_ParDat_out	<= txdat_test when test = '1' else iMII_ParDat_out;
MII_ParEn_out	<= txen_test  when test = '1' else paren_out;
err 			<= tmperr and test;

U_ETHTEST : ethtest port map
(	
		reset		=> reset,
		clk			=> clk_25m,
		txclken		=> clk_12m5,
		txdat		=> txdat_test,
		txen		=> txen_test,
		rxclken		=> rxclken,
		rxdat		=> MII_ParDat_in, 
		rxen		=> MII_ParEN_in, 
		err			=> tmperr
);


MII_link 		<= Opt_LOS ;
MII_crs   		<= seren_out; --not Opt_LOS ;
MII_col 		<= '0' ;
MII_SerERR_out 	<= '0' ;
MII_ParClk_out 	<= clk_12m5;

----------------------------------------------------------------------------
-- MII ==> Optical Channel

MII_SerClk_in		<= clk_25M;
proc_tx_to_Optical: process( clk_25M, reset ) 
begin
	if( rising_edge( clk_25M ) ) then

		if( clr_rxpkcnt = '1' ) then
			irxpkcnt <= ( others => '0' );
		elsif( MII_SerEn_in_d = '0' ) and ( MII_SerEn_in = '1' ) then
			irxpkcnt <= irxpkcnt + '1';
		end if;

		MII_SerEn_in_d <= MII_SerEn_in;

		if( MII_SerEN_in = '1' ) then
			part2 <= not part2;
			if( part2 = '1' ) then
				if( clk_12m5 = '1' ) then
					iMII_ParDat_out( 7 downto 4 ) <= byte_in( 7 downto 4 );
					iMII_ParDat_out( 3 downto 0 ) <= MII_SerDat_in(0) & MII_SerDat_in(1) & MII_SerDat_in(2) & MII_SerDat_in(3);
					paren_out <= '1';
				end if;
				
				byte_in( 3 downto 0 ) <= MII_SerDat_in(0) & MII_SerDat_in(1) & MII_SerDat_in(2) & MII_SerDat_in(3);
			else
				if( clk_12m5 = '1' ) then
					iMII_ParDat_out <= byte_in;
					paren_out 		<= MII_SerEn_in_d;
				end if;

				byte_in( 7 downto 4 ) <= MII_SerDat_in(0) & MII_SerDat_in(1) & MII_SerDat_in(2) & MII_SerDat_in(3);
			end if;
		else
			if( clk_12m5 = '1' ) then
				iMII_ParDat_out <= byte_in;
				paren_out 		<= MII_SerEn_in_d;
			end if;
			part2 <= '0';
		end if;
	end if;

	if( reset = '0' ) then
		iMII_ParDat_out	<= ( others => '0' );
		irxpkcnt		<= ( others => '0' );
		byte_in			<= ( others => '0' );
		paren_out		<= '0';
		part2			<= '0';
	end if;
end process;

----------------------------------------------------------------------------
-- Optical Channel ==> MII 


U_FIFO: myfifo port map 
	(
		data 	=> pardat_in1,
		wrreq	=> wrfifo,
		rdreq	=> rdfifo,
		clk		=> clk_25M,
		aclr	=> aclr,	
		full	=> full,
		empty	=> empty,
		usedw	=> usedw,
		q		=> byte_out
	);

MII_SerClk_out		<= clk_25M;
MII_SerEn_out		<= seren_out;
MII_SerDat_out		<= serdat_out;
nearfull			<= '1' when usedw(4 downto 1) = "1111" else '0';

U_BUCKET : bucket 
	port map
	( 	reset 	=> reset,
		clk 	=> clk_25M, 
		rate	=> rate, 
		usage	=> rdfifo, 
		nocredit=> nocredit
	);

proc_rx_from_optical: process( clk_25M, reset )
begin
	if rising_edge( clk_25M ) then
		
		------------------------------------------------------------------
		--- fifo write control
		aclr <= '0';

		if( rxclken = '1' ) then

			paren_in1	<= MII_ParEn_in;
			pardat_in1	<= MII_ParDat_in;
			if( MII_ParEn_in = '1' ) then
				if( pklen /= "100" ) then
					pklen <= pklen + 1;
				end if;
				if( paren_in1 = '0' ) then
					-- packet head
					if( empty = '0' ) or ( Serdes_syn = '1' ) or ( Opt_LOS = '1' ) then
						wrfifo <= '0';
						wren   <= '0';
					else
						wrfifo <= '1';
						wren   <= '1';
					end if;
				else
					-- packet middle
					if( nearfull = '1' ) or ( Serdes_syn = '1' ) or ( Opt_LOS = '1' ) then
						wrfifo <= '0';
						wren   <= '0';
						aclr   <= '1';
					else
						wrfifo <= wren;
					end if;
				end if;
			else
				if( wren = '1' ) and ( pklen /= "100" ) then
					aclr <= '1';
				end if;
				pklen		<= "000";
				wrfifo 		<= '0';
				wren		<= '0';
			end if;
		else
			wrfifo <= '0';
		end if;

		if( clr_txpkcnt = '1' ) then
			itxpkcnt <= ( others => '0' );
		end if;

		------------------------------------------------------------------
		--- fifo read control

		rdts		<= not rdts;
		rdfifo1		<= rdfifo;
		rdfifo2		<= rdfifo1;
		if( empty = '0' ) and ( usedw( 4 downto 1 ) /= "0000" ) and ( gapcnt = 0 ) and ( nocredit = '0' ) then
			fifo_ready <= '1';
		elsif( empty = '1' ) then
			fifo_ready <= '0';
		end if;

		if( rdts = '0' ) and ( empty = '0' ) then
			rdfifo	<= fifo_ready;
		else
			rdfifo	<= '0';
		end if;

		------------------------------------------------------------------
		--- tx to MII
		if( rdfifo2 = '0' ) and ( rdfifo = '1' ) then
			itxpkcnt <= itxpkcnt + '1';
		end if;

		if( rdfifo1 = '1' ) then
			serdat_out	<= byte_out(4) & byte_out(5) & byte_out(6) & byte_out(7);
			seren_out  		<= '1';
		elsif( rdfifo2 = '1' ) then
			serdat_out	<= byte_out(0) & byte_out(1) & byte_out(2) & byte_out(3);
			seren_out		<= '1';
		else
			seren_out		<= '0';
		end if;

		------------------------------------------------------------------
		--- gap counter
		if( rdfifo = '0' ) and ( rdfifo1 = '0' ) then
			if( gapcnt /= 0 ) then
				gapcnt <= gapcnt - 1;
			end if;
		else
			gapcnt <= 22;
		end if;
	end if;

	if( reset = '0' ) then
		aclr		<= '1';
		wrfifo		<= '0';
		wren		<= '0';
		paren_in1	<= '0';
		pardat_in1	<= ( others => '0' );
		serdat_out <= ( others => '0' );
		rdfifo		<= '0';
		rdfifo1		<= '0';
		rdfifo2		<= '0';
		rdts		<= '0';
		gapcnt		<= 0;
		seren_out	<= '0';
		fifo_ready	<= '0';
		itxpkcnt	<= ( others => '0' );

	end if;
end process;

end;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩av一区二区三区| 午夜精品久久久久久久蜜桃app| 激情五月播播久久久精品| 欧美一区永久视频免费观看| 青青草伊人久久| 亚洲精品在线免费播放| 丁香六月综合激情| 亚洲乱码一区二区三区在线观看| 色综合久久综合中文综合网| 亚洲国产精品一区二区久久| 欧美精品日韩精品| 国产精品一线二线三线| 国产精品久久久久久久久免费相片| 99视频一区二区| 午夜影院在线观看欧美| 精品电影一区二区三区| 成人午夜精品在线| 亚洲国产美女搞黄色| 日韩久久久久久| 波多野结衣亚洲一区| 午夜精品福利在线| 久久美女高清视频| 欧美午夜精品久久久久久孕妇| 日韩精品1区2区3区| 国产精品视频免费看| 欧美日韩电影在线播放| 国产福利不卡视频| 亚洲超碰精品一区二区| 久久久久久免费网| 色哟哟一区二区| 精品一区二区三区在线观看国产| 亚洲色图丝袜美腿| 欧美mv和日韩mv的网站| 日本久久电影网| 国产成人亚洲综合a∨婷婷| 亚洲大片免费看| 国产精品五月天| 精品日韩在线一区| 欧美日韩一级视频| 波多野结衣欧美| 国内一区二区在线| 亚洲第一二三四区| 亚洲欧美另类小说视频| 久久久久青草大香线综合精品| 欧美综合欧美视频| 97久久超碰精品国产| 国产精品自产自拍| 免费看日韩精品| 一区二区三区四区中文字幕| 国产欧美综合在线| 久久婷婷国产综合精品青草 | 亚洲精品少妇30p| 久久久国产精品麻豆| 欧美一卡在线观看| 欧美日韩大陆一区二区| 91美女视频网站| 成人视屏免费看| 国产精品系列在线观看| 理论电影国产精品| 青青国产91久久久久久| 午夜激情综合网| 一区二区三区在线免费播放| 中文字幕一区二区三区蜜月| 国产视频视频一区| 久久一区二区视频| 日韩精品一区二区三区中文精品| 欧美精品高清视频| 欧美二区在线观看| 欧美欧美午夜aⅴ在线观看| 欧洲激情一区二区| 欧美亚洲禁片免费| 欧美午夜电影网| 欧洲国产伦久久久久久久| 91麻豆免费看| 欧美综合一区二区| 欧美日韩的一区二区| 欧美日本韩国一区二区三区视频| 欧美日韩视频一区二区| 欧美理论在线播放| 51久久夜色精品国产麻豆| 欧美一区二区三区色| 欧美一级黄色片| 精品国产伦理网| 久久精品视频在线看| 久久久久久久电影| 日本一区二区动态图| 亚洲天堂福利av| 性做久久久久久久久| 免费看日韩精品| 国产成人在线视频免费播放| www.欧美日韩| 91福利在线免费观看| 欧美一区日本一区韩国一区| 日韩精品资源二区在线| 中文字幕精品综合| 亚洲免费观看高清完整版在线观看| 亚洲午夜久久久久久久久电影院 | 久久久久国产精品麻豆| 国产精品视频一二| 亚洲一区中文日韩| 麻豆精品一二三| 成人免费福利片| 欧美日韩国产中文| 久久久久久久久99精品| 亚洲欧美偷拍另类a∨色屁股| 亚洲第四色夜色| 国产精品小仙女| 色狠狠综合天天综合综合| 欧美一级免费观看| 国产精品免费免费| 亚洲国产一二三| 国产一区免费电影| 91色.com| 日韩精品中午字幕| 亚洲人成7777| 精品亚洲porn| 在线视频一区二区免费| 精品国产一区二区三区四区四| 中文字幕制服丝袜一区二区三区| 天天色 色综合| 不卡欧美aaaaa| 欧美一区二区在线不卡| 中文字幕一区免费在线观看| 天堂蜜桃91精品| 99re在线精品| 欧美成人aa大片| 亚洲成在线观看| 99热99精品| 26uuu精品一区二区在线观看| 亚洲天堂免费看| 国产毛片一区二区| 欧美妇女性影城| 亚洲另类在线视频| 高清不卡一二三区| 欧美一区二区精品在线| 亚洲黄色性网站| 不卡的av在线| 久久美女高清视频| 青青草97国产精品免费观看无弹窗版| 99精品国产99久久久久久白柏| 欧美大片一区二区三区| 一区二区三区欧美亚洲| 国产成人精品www牛牛影视| 日韩欧美国产小视频| 亚洲成人7777| 欧美自拍偷拍一区| 亚洲黄色免费电影| 99re成人在线| 中国av一区二区三区| 国产精品456| 久久久国产综合精品女国产盗摄| 久久精品国产77777蜜臀| 欧美人妇做爰xxxⅹ性高电影| 亚洲美女视频在线| 一本到三区不卡视频| 亚洲四区在线观看| 99视频一区二区| 亚洲丝袜制服诱惑| 一本色道久久综合精品竹菊 | 亚洲激情综合网| 99久久婷婷国产综合精品| 中文字幕乱码久久午夜不卡| 国产剧情在线观看一区二区| 精品国产伦理网| 国产精品一区专区| 国产欧美日韩视频一区二区| 国产成人精品亚洲日本在线桃色 | 奇米888四色在线精品| 欧美一区二区精品久久911| 日韩成人伦理电影在线观看| 欧美精品xxxxbbbb| 美女一区二区在线观看| 欧美成人午夜电影| 韩日精品视频一区| 国产女同互慰高潮91漫画| 成人黄色在线网站| 亚洲欧美日韩久久精品| 91久久精品一区二区| 亚洲风情在线资源站| 日韩一区二区不卡| 狠狠色狠狠色综合日日91app| 国产喷白浆一区二区三区| 99精品一区二区| 亚洲成人一区在线| 91精品国产综合久久久久| 久久国产精品露脸对白| 国产亚洲精品aa午夜观看| av电影天堂一区二区在线| 亚洲愉拍自拍另类高清精品| 欧美一区午夜视频在线观看| 国产精品正在播放| 亚洲免费大片在线观看| 欧美日韩激情在线| 日本vs亚洲vs韩国一区三区 | 美女视频黄 久久| 中文字幕乱码一区二区免费| 欧美va在线播放| av一二三不卡影片| 日日夜夜精品视频免费| 国产视频一区二区三区在线观看|