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

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

?? phy_rden_align.vhd

?? The xapp851.zip archive includes the following subdirectories. The specific contents of each subdi
?? VHD
字號:
-------------------------------------------------------------------------------
-- Copyright (c) 2006 Xilinx, Inc.
-- This design is confidential and proprietary of Xilinx, All Rights Reserved.
-------------------------------------------------------------------------------
--   ____  ____
--  /   /\/   /
-- /___/  \  /   Vendor: Xilinx
-- \   \   \/    Version: 1.1
--  \   \        Filename: phy_rden_align.vhd
--  /   /        Date Last Modified: 5/10/06
-- /___/   /\    Date Created:
-- \   \  /  \
--  \___\/\___\
-- 
--Device: Virtex-5
--Purpose: read enable calibration logic. Also delays read
--         captured read data (aka read data "FIFO").
--Reference:
--    XAPP851
--Revision History:
--    Rev 0.1 - Created. Author: Toshihiko Moriyama. 11/17/05
--    Rev 1.0 - Internal release. Author: Toshihiko Moriyama. 4/29/06.
--    Rev 1.1 - External release. Added header. 5/10/06.
-------------------------------------------------------------------------------

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

library work;
use work.ddr1_parameters.all;

library unisim ;
use unisim.vcomponents.all;

entity phy_rden_align is
port (
	rst			: in	std_logic;
	clk0		: in	std_logic;

	rd_en_i		: in	std_logic;	-- From controller
	rd_data_i	: in	std_logic_vector(dq_per_dqs*2 - 1 downto 0);	-- From the read data capture logic

	rd_data_o	: out	std_logic_vector(dq_per_dqs*2 - 1 downto 0);	-- To UI
	rd_lat_o	: out	std_logic_vector(5 downto 0);	-- To UI

	latency		: in	std_logic_vector(3 downto 0);	-- Fixed latency
	calib_start	: in	std_logic;	-- From controller
	calib_done	: out	std_logic;	-- To controller. 	When 1, second calibration done
	error		: out	std_logic
);
end phy_rden_align;

-----------------------------------------------
architecture rtl of phy_rden_align is

	TYPE ALIGNSTATE_TYPE is (
	WAIT_ST,	-- wait until data is valid
	IDLE_ST,
	RDEN0_ST,
	RDEN1_ST,
	RUN_ST,
	ERRCNT_ST,
	ERROR_ST
	);

	signal state_c			: ALIGNSTATE_TYPE;
	signal state_n			: ALIGNSTATE_TYPE;

	signal data_srl			: std_logic_vector(dq_per_dqs*2 - 1 downto 0);
	signal data_dly			: std_logic_vector(3 downto 0);

	signal rden_to_data		: std_logic_vector(3 downto 0);
	signal alignCnt			: std_logic_vector(2 downto 0);
	signal rd_en_dlycnt		: std_logic_vector(3 downto 0);
	signal rd_en_dlycntLast	: std_logic_vector(3 downto 0);
	signal rden_aligned		: std_logic;
	signal errCnt			: std_logic_vector(3 downto 0);

	constant TRAIN_PTN0		: std_logic_vector(7 downto 0) := X"A5";
	constant TRAIN_PTN1		: std_logic_vector(7 downto 0) := X"3C";

	signal LOGIC_0			: std_logic;
	signal LOGIC_1			: std_logic;

begin

	LOGIC_0	<= '0';
	LOGIC_1 <= '1';

	process( clk0 )
	begin
	if clk0'event and clk0='1' then
		if rst='1' then
			data_dly <= (others => '0');
		else
			if latency = rden_to_data then
				data_dly <= (others => '0');
			else
				data_dly <= latency - rden_to_data - 1;
			end if;
		end if;
	end if;
	end process;

	------------------------------------------------------------------
	G_RDDATA : for I in 0 to dq_per_dqs*2 - 1 generate

	SRL16_RDDATA : SRL16
	generic map (
	INIT => X"0000")
	port map (
	Q	=> data_srl(I),
	A0	=> data_dly(0),
	A1	=> data_dly(1),
	A2	=> data_dly(2),
	A3	=> data_dly(3),
	CLK	=> clk0,
	D	=> rd_data_i(I)
	);

	end generate;

	rd_data_o <= data_srl when latency /= rden_to_data else rd_data_i;
	calib_done <= rden_aligned;

	P_ALIGN_NEXT : process( clk0 )
	begin
	if clk0'event and clk0='1' then
		if rst='1' then
			state_c <= WAIT_ST;
		else
			state_c <= state_n;
		end if;
	end if;
	end process;

	-------------------
	-- STATE MACHINE --
	-------------------
	P_ALIGN_ST : process(rst, state_c, rd_en_i, calib_start, rd_data_i, alignCnt, rd_en_dlycnt, errCnt )
	begin
	if rst='1' then
		state_n <= WAIT_ST;

	else
		case state_c is
		when WAIT_ST =>
			if calib_start = '1' then
				state_n <= IDLE_ST;
			else
				state_n <= WAIT_ST;
			end if;

		when IDLE_ST =>
			if alignCnt=3 then
				state_n <= RUN_ST;
			elsif rd_en_i = '1' then
				state_n <= RDEN0_ST;
			else
				state_n <= IDLE_ST;
			end if;

		when RDEN0_ST =>
			if (rd_data_i(3 downto 0) = TRAIN_PTN0(3 downto 0)) and
				(rd_data_i(dq_per_dqs + 3 downto dq_per_dqs) = TRAIN_PTN0(7 downto 4)) then
				state_n <= RDEN1_ST;
			elsif rd_en_dlycnt = X"F" then
				state_n <= ERRCNT_ST;
			else
				state_n <= RDEN0_ST;
			end if;

		when RDEN1_ST =>
			state_n <= IDLE_ST;

		when RUN_ST =>
			state_n <= RUN_ST;

		when ERRCNT_ST =>
			if errCnt = X"F" then
				state_n <=	ERROR_ST;
			else
				state_n <= IDLE_ST;
			end if;
		when ERROR_ST =>
			state_n <= ERROR_ST;

		when others =>
			state_n <= WAIT_ST;

		end case;
	end if;
	end process;

	-- delay increment
	P_ALIGN : process( clk0 )
	begin
	if clk0'event and clk0='1' then
		if rst='1' then
			alignCnt <= (others => '0');
			rd_en_dlycnt <= (others => '0');
			rd_en_dlycntLast <= (others => '0');
			rden_to_data <= (others => '0');

		else
			case state_c is
			when WAIT_ST =>
				alignCnt <= (others => '0');
				rd_en_dlycnt <= (others => '0');
				rd_en_dlycntLast <= (others => '0');
				rden_to_data <= (others => '0');

			when IDLE_ST =>
				alignCnt <= alignCnt;
				rd_en_dlycnt <= (others => '0');
				rd_en_dlycntLast <= rd_en_dlycntLast;
				rden_to_data <= (others => '0');

			when RDEN0_ST =>
				alignCnt <= alignCnt;
				rd_en_dlycnt <= rd_en_dlycnt + 1;
				rd_en_dlycntLast <= rd_en_dlycntLast;
				rden_to_data <= (others => '0');

			when RDEN1_ST =>
				if (rd_data_i(3 downto 0) = TRAIN_PTN1(3 downto 0)) and
					(rd_data_i(dq_per_dqs + 3 downto dq_per_dqs) = TRAIN_PTN1(7 downto 4)) and
					(rd_en_dlycntLast = rd_en_dlycnt) then
					alignCnt <= alignCnt + 1;
				else
					alignCnt <= (others => '0');
				end if;
				rd_en_dlycnt <= rd_en_dlycnt;
				rd_en_dlycntLast <= rd_en_dlycnt;
				rden_to_data <= (others => '0');

			when RUN_ST =>
				alignCnt <= (others => '0');
				rd_en_dlycnt <= rd_en_dlycnt;
				rd_en_dlycntLast <= rd_en_dlycntLast;
				rden_to_data <= rd_en_dlycntLast;

			when others =>
				alignCnt <= (others => '0');
				rd_en_dlycnt <= (others => '0');
				rd_en_dlycntLast <= (others => '0');
				rden_to_data <= (others => '0');

			end case;
		end if;
	end if;
	end process;

	-- output this module's read data latency from rden
	P_RD_LAT : process( clk0 )
	begin
	if clk0'event and clk0='1' then
		if rst = '1' then
			rd_lat_o <= (others => '0');
		else
			case rden_to_data is
			when "0011" =>	-- 3
				rd_lat_o <= "000001";
			when "0100" =>	-- 4
				rd_lat_o <= "000010";
			when "0101" =>	-- 5
				rd_lat_o <= "000100";
			when "0111" =>	-- 6
				rd_lat_o <= "001000";
			when "1000" =>	-- 7
				rd_lat_o <= "010000";
			when "1001" =>	-- 8
				rd_lat_o <= "100000";
			when others =>
				rd_lat_o <= (others => '0');
			end case;
		end if;
	end if;
	end process;

	P_DONE : process( clk0 )
	begin
	if clk0'event and clk0='1' then
		if rst='1' then
			rden_aligned <= '0';

		else
			case state_c is
			when RUN_ST =>
				rden_aligned <= '1';

			when others =>
				rden_aligned <= '0';

			end case;
		end if;
	end if;
	end process;

	-- error may occur due to bad signal integrity
	P_ERROR : process( clk0 )
	begin
	if clk0'event and clk0='1' then
		if rst='1' then
			errCnt <= (others => '0');
			error <= '0';

		else
			case state_c is
			when ERRCNT_ST =>
				errCnt <= errCnt + 1;
				error <= '1';

			when ERROR_ST =>
				errCnt <= (others => '0');
				error <= '1';

			when others =>
				errCnt <= (others => '0');
				error <= '0';
			end case;
		end if;
	end if;
	end process;

end rtl;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区在线观看免费| 日韩精品一区二区三区蜜臀 | 麻豆91在线看| 亚洲宅男天堂在线观看无病毒| 亚洲色图一区二区| 亚洲人成网站影音先锋播放| 中文字幕在线一区免费| 中文字幕一区二区三区不卡 | 欧美优质美女网站| 色偷偷成人一区二区三区91| 91在线视频18| 色老汉一区二区三区| 欧美日韩精品一区二区三区| 精品视频一区二区三区免费| 欧美日韩国产欧美日美国产精品| 欧美日韩在线精品一区二区三区激情| 欧美日韩综合色| 日韩欧美久久一区| 中文字幕一区二区三中文字幕| 国产精品传媒在线| 亚洲一区二区三区四区五区中文| 日日夜夜一区二区| 国产一区在线看| 91丝袜呻吟高潮美腿白嫩在线观看| 在线观看区一区二| 欧美一区二区视频在线观看 | 亚洲欧美日韩综合aⅴ视频| 亚洲香蕉伊在人在线观| 久久国产成人午夜av影院| 国产成人精品免费| 欧美无砖专区一中文字| 日韩欧美第一区| 国产精品免费视频网站| 无吗不卡中文字幕| 丁香一区二区三区| 欧美日韩精品系列| 国产午夜亚洲精品羞羞网站| 亚洲一区在线观看视频| 国产在线一区观看| 欧美色视频在线观看| 久久人人97超碰com| 亚洲一区在线电影| 国产乱理伦片在线观看夜一区| 欧美日韩视频在线观看一区二区三区 | 亚洲欧洲精品一区二区精品久久久 | 亚洲天堂2014| 国内一区二区在线| 日本高清不卡一区| 久久久久亚洲蜜桃| 麻豆精品新av中文字幕| 欧美综合天天夜夜久久| 国产精品网站导航| 久久电影国产免费久久电影| 欧美精品乱码久久久久久按摩| 日本一区二区不卡视频| 久久精品国产亚洲a| 色婷婷综合久久久中文一区二区| 久久久www免费人成精品| 三级久久三级久久| 欧美唯美清纯偷拍| 亚洲欧洲另类国产综合| 成人丝袜视频网| 久久精品人人做人人综合| 日韩中文欧美在线| 欧美亚一区二区| 一区二区高清在线| 色www精品视频在线观看| 国产精品日产欧美久久久久| 国产福利91精品一区| 精品国产网站在线观看| 麻豆久久久久久| 日韩欧美国产精品一区| 乱中年女人伦av一区二区| 欧美精品精品一区| 日欧美一区二区| 91精品婷婷国产综合久久性色| 亚洲国产中文字幕| 欧美性做爰猛烈叫床潮| 午夜激情久久久| 欧美老肥妇做.爰bbww视频| 午夜精品视频在线观看| 在线播放国产精品二区一二区四区| 性做久久久久久免费观看欧美| 欧美亚洲动漫制服丝袜| 日本在线不卡视频| 精品裸体舞一区二区三区| 蜜桃视频在线一区| 久久久久久久综合色一本| 麻豆成人av在线| 欧美极品另类videosde| av一本久道久久综合久久鬼色| 国产精品久久久久一区| 色视频成人在线观看免| 三级精品在线观看| 国产亚洲福利社区一区| 99这里只有久久精品视频| 亚洲欧美一区二区三区久本道91 | 琪琪一区二区三区| 亚洲精品在线观看网站| 波多野结衣91| 亚洲午夜免费视频| 777午夜精品免费视频| 久久99久久精品| 中文成人av在线| 欧美伊人久久大香线蕉综合69 | 久久亚洲免费视频| eeuss国产一区二区三区| 一区二区三区视频在线观看| 欧美一区二区在线看| 成人小视频在线| 亚洲小说欧美激情另类| 久久久久久久久久久久久女国产乱| 99九九99九九九视频精品| 日本午夜精品一区二区三区电影| 精品处破学生在线二十三| 在线观看亚洲成人| 久久精品噜噜噜成人av农村| 综合久久综合久久| 精品国产欧美一区二区| 91在线视频18| 国产精品一区在线观看乱码| 五月激情六月综合| 国产精品久久久久久久久久免费看| 欧美精品在线一区二区| 91视频免费看| 国产福利91精品| 久久国产欧美日韩精品| 天堂午夜影视日韩欧美一区二区| 国产精品人成在线观看免费| 日韩精品综合一本久道在线视频| 在线视频国内一区二区| aaa亚洲精品一二三区| 精品无人码麻豆乱码1区2区| 性久久久久久久| 香蕉久久夜色精品国产使用方法| 中文字幕一区二区在线播放| 欧美精品一区二区三区蜜桃 | 91美女片黄在线| 国产suv精品一区二区6| 日韩福利电影在线| 亚洲一区二区三区三| 亚洲欧洲日韩在线| 国产性做久久久久久| 精品福利二区三区| 91精品国产日韩91久久久久久| 欧美性生活一区| 欧美做爰猛烈大尺度电影无法无天| 91麻豆国产福利精品| 97久久久精品综合88久久| 99久久精品国产导航| 成人免费毛片高清视频| 国产91在线|亚洲| 国产丶欧美丶日本不卡视频| 国产福利精品一区| 国产福利精品导航| 成人黄色免费短视频| 9人人澡人人爽人人精品| 国产xxx精品视频大全| 成人精品免费视频| 成人一区二区三区| av不卡免费在线观看| 色婷婷精品久久二区二区蜜臀av| 一本色道久久综合亚洲aⅴ蜜桃| 一本在线高清不卡dvd| 91国模大尺度私拍在线视频| 欧美日韩一区二区三区四区五区| 欧美日韩免费一区二区三区| 7777精品伊人久久久大香线蕉的 | 丁香激情综合国产| 成人免费视频一区| 91视频在线看| 51午夜精品国产| 精品日韩成人av| 欧美激情一区不卡| 亚洲精品国产一区二区精华液 | 精品国产免费人成在线观看| 久久婷婷国产综合精品青草| 国产人伦精品一区二区| 亚洲欧洲精品一区二区三区不卡 | 国产欧美一区二区在线观看| 国产精品久久久久7777按摩| 亚洲国产精品精华液网站| 久久99在线观看| 99精品一区二区| 欧美成人精品3d动漫h| 国产精品麻豆99久久久久久| 亚洲一区二区美女| 国产美女精品人人做人人爽| 91在线你懂得| 91精品国产色综合久久不卡蜜臀| 久久免费偷拍视频| 天天操天天色综合| 国产成人综合亚洲网站| 欧美亚洲国产一区在线观看网站| 精品毛片乱码1区2区3区| 亚洲免费电影在线| 国产精品123| 4438亚洲最大| 亚洲最快最全在线视频| 国产高清无密码一区二区三区|