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

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

?? gh_fifo_async16_rcsr_wf.vhd

?? FPGA開發中常用的串口模塊
?? VHD
字號:
---------------------------------------------------------------------
--	Filename:	gh_fifo_async16_rcsr_wf.vhd
--
--
--	Description:
--		a simple Asynchronous FIFO - uses FASM style Memory
--		16 word depth with UART level read flags
--		has "Style #2" gray code address compare
--              
--	Copyright (c) 2007 by Howard LeFevre 
--		an OpenCores.org Project
--		free to use, but see documentation for conditions 								 
--
--	Revision	History:
--	Revision	Date      	Author   	Comment
--	--------	----------	---------	-----------
--	1.0     	01/20/07  	h lefevre	Initial revision
--	
--------------------------------------------------------

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

entity gh_fifo_async16_rcsr_wf is
	GENERIC (data_width: INTEGER :=8 ); -- size of data bus
	port (					
		clk_WR  : in STD_LOGIC; -- write clock
		clk_RD  : in STD_LOGIC; -- read clock
		rst     : in STD_LOGIC; -- resets counters
		rc_srst : in STD_LOGIC:='0'; -- resets counters (sync with clk_RD!!!)
		WR      : in STD_LOGIC; -- write control 
		RD      : in STD_LOGIC; -- read control
		D       : in STD_LOGIC_VECTOR (data_width-1 downto 0);
		Q       : out STD_LOGIC_VECTOR (data_width-1 downto 0);
		empty   : out STD_LOGIC; -- sync with clk_RD!!!
		q_full  : out STD_LOGIC; -- sync with clk_RD!!!
		h_full  : out STD_LOGIC; -- sync with clk_RD!!!
		a_full  : out STD_LOGIC; -- sync with clk_RD!!!
		full    : out STD_LOGIC);
end entity;

architecture a of gh_fifo_async16_rcsr_wf is

component gh_binary2gray IS
	GENERIC (size: INTEGER := 8);
	PORT(	
		B   : IN STD_LOGIC_VECTOR(size-1 DOWNTO 0);
		G   : out STD_LOGIC_VECTOR(size-1 DOWNTO 0)
		);
end component;

component gh_gray2binary IS
	GENERIC (size: INTEGER := 8);
	PORT(	
		G   : IN STD_LOGIC_VECTOR(size-1 DOWNTO 0);	-- gray code in
		B   : out STD_LOGIC_VECTOR(size-1 DOWNTO 0) -- binary value out
		);
end component;

	type ram_mem_type is array (15 downto 0) 
	        of STD_LOGIC_VECTOR (data_width-1 downto 0);
	signal ram_mem : ram_mem_type; 
	signal iempty        : STD_LOGIC;
	signal diempty       : STD_LOGIC;
	signal ifull         : STD_LOGIC;
	signal add_WR_CE     : std_logic;
	signal add_WR        : std_logic_vector(4 downto 0); -- add_width -1 bits are used to address MEM
	signal add_WR_GC     : std_logic_vector(4 downto 0); -- add_width bits are used to compare
	signal iadd_WR_GC    : std_logic_vector(4 downto 0);
	signal n_add_WR      : std_logic_vector(4 downto 0); --   for empty, full flags
	signal add_WR_RS     : std_logic_vector(4 downto 0); -- synced to read clk
	signal add_RD_CE     : std_logic;
	signal add_RD        : std_logic_vector(4 downto 0);
	signal add_RD_GC     : std_logic_vector(4 downto 0);
	signal iadd_RD_GC    : std_logic_vector(4 downto 0);
	signal add_RD_GCwc   : std_logic_vector(4 downto 0);
	signal iadd_RD_GCwc  : std_logic_vector(4 downto 0);
	signal iiadd_RD_GCwc : std_logic_vector(4 downto 0);
	signal n_add_RD      : std_logic_vector(4 downto 0);
	signal add_RD_WS     : std_logic_vector(4 downto 0); -- synced to write clk
	signal srst_w        : STD_LOGIC;
	signal isrst_w       : STD_LOGIC;
	signal srst_r        : STD_LOGIC;
	signal isrst_r       : STD_LOGIC;
	signal c_add_RD      : std_logic_vector(4 downto 0);
	signal c_add_WR      : std_logic_vector(4 downto 0);
	signal c_add         : std_logic_vector(4 downto 0);

begin

--------------------------------------------
------- memory -----------------------------
--------------------------------------------


process (clk_WR)
begin			  
	if (rising_edge(clk_WR)) then
		if ((WR = '1') and (ifull = '0')) then
			ram_mem(CONV_INTEGER(add_WR(3 downto 0))) <= D;
		end if;
	end if;		
end process;

	Q <= ram_mem(CONV_INTEGER(add_RD(3 downto 0)));

-----------------------------------------
----- Write address counter -------------
-----------------------------------------

	add_WR_CE <= '0' when (ifull = '1') else
	             '0' when (WR = '0') else
	             '1';

	n_add_WR <= add_WR + "01";

U1 : gh_binary2gray
	generic map (size => 5)
	port map(
		B => n_add_WR,
		G => iadd_WR_GC
		);
	
process (clk_WR,rst)
begin 
	if (rst = '1') then
		add_WR <= (others => '0');
		add_RD_WS(4 downto 3) <= "11"; 
		add_RD_WS(2 downto 0) <= (others => '0');
		add_WR_GC <= (others => '0');
	elsif (rising_edge(clk_WR)) then
		add_RD_WS <= add_RD_GCwc;
		if (srst_w = '1') then
			add_WR <= (others => '0');
			add_WR_GC <= (others => '0');
		elsif (add_WR_CE = '1') then
			add_WR <= n_add_WR;
			add_WR_GC <= iadd_WR_GC;
		else
			add_WR <= add_WR;
			add_WR_GC <= add_WR_GC;
		end if;
	end if;
end process;
				 
	full <= ifull;

	ifull <= '0' when (iempty = '1') else -- just in case add_RD_WS is reset to all zero's
	         '0' when (add_RD_WS /= add_WR_GC) else ---- instend of "11 zero's" 
	         '1';

		
-----------------------------------------
----- Read address counter --------------
-----------------------------------------


	add_RD_CE <= '0' when (iempty = '1') else
	             '0' when (RD = '0') else
	             '1';
				 
	n_add_RD <= add_RD + "01";

U2 : gh_binary2gray
	generic map (size => 5)
	port map(
		B => n_add_RD,
		G => iadd_RD_GC -- to be used for empty flag
		);

	iiadd_RD_GCwc <= (not n_add_RD(4)) & n_add_RD(3 downto 0);
		
U3 : gh_binary2gray
	generic map (size => 5)
	port map(
		B => iiadd_RD_GCwc,
		G => iadd_RD_GCwc -- to be used for full flag
		);
		
process (clk_RD,rst)
begin 
	if (rst = '1') then
		add_RD <= (others => '0');	
		add_WR_RS <= (others => '0');
		add_RD_GC <= (others => '0');
		add_RD_GCwc(4 downto 3) <= "11";
		add_RD_GCwc(2 downto 0) <= (others => '0');
		diempty <= '1';
	elsif (rising_edge(clk_RD)) then
		add_WR_RS <= add_WR_GC;
		diempty <= iempty;
		if (srst_r = '1') then
			add_RD <= (others => '0');
			add_RD_GC <= (others => '0');
			add_RD_GCwc(4 downto 3) <= "11";
			add_RD_GCwc(2 downto 0) <= (others => '0');
		elsif (add_RD_CE = '1') then
			add_RD <= n_add_RD;
			add_RD_GC <= iadd_RD_GC;
			add_RD_GCwc <= iadd_RD_GCwc;
		else
			add_RD <= add_RD; 
			add_RD_GC <= add_RD_GC;
			add_RD_GCwc <= add_RD_GCwc;
		end if;
	end if;
end process;

	empty <= diempty;
 
	iempty <= '1' when (add_WR_RS = add_RD_GC) else
	          '0';
 
U4 : gh_gray2binary
	generic map (size => 5)
	port map(
		G => add_RD_GC,
		B => c_add_RD 
		);

U5 : gh_gray2binary
	generic map (size => 5)
	port map(
		G => add_WR_RS,
		B => c_add_WR 
		); 
		
	c_add <= (c_add_WR - c_add_RD);
	
	q_full <= '0' when (iempty = '1') else
	          '0' when (c_add(4 downto 2) = "000") else
	          '1';
	
	h_full <= '0' when (iempty = '1') else
	          '0' when (c_add(4 downto 3) = "00") else
	          '1'; 
	
	a_full <= '0' when (iempty = '1') else
	          '0' when (c_add(4 downto 1) < "0111") else
	          '1'; 
			  
----------------------------------
--- sync rest stuff --------------
--- rc_srst is sync with clk_RD --
--- srst_w is sync with clk_WR ---
----------------------------------

process (clk_WR,rst)
begin 
	if (rst = '1') then
		srst_w <= '0';	
		isrst_r <= '0';	
	elsif (rising_edge(clk_WR)) then
		srst_w <= isrst_w;
		if (srst_w = '1') then
			isrst_r <= '1';
		elsif (srst_w = '0') then
			isrst_r <= '0';
		end if;
	end if;
end process;

process (clk_RD,rst)
begin 
	if (rst = '1') then
		srst_r <= '0';	
		isrst_w <= '0';
	elsif (rising_edge(clk_RD)) then
		srst_r <= rc_srst;
		if (rc_srst = '1') then
			isrst_w <= '1';
		elsif (isrst_r = '1') then
			isrst_w <= '0';
		end if;
	end if;
end process;

end architecture;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天综合日日夜夜精品| 亚洲免费高清视频在线| 91成人免费在线视频| 国产激情一区二区三区| 亚洲成人激情av| 亚洲精品综合在线| 国产精品久久久久影院色老大 | 亚洲免费观看高清完整版在线观看 | 国产精品国产三级国产三级人妇| 99久久久国产精品免费蜜臀| 精品一二线国产| 久久激情五月激情| 欧美网站一区二区| 97久久超碰国产精品电影| 国内精品在线播放| 美女脱光内衣内裤视频久久影院| 一区二区三区资源| 亚洲精品乱码久久久久久黑人| 国产精品欧美久久久久无广告| 久久久久高清精品| 欧美国产精品一区| 国产精品成人一区二区艾草| 中文字幕在线不卡一区二区三区| 国产片一区二区| 国产精品网站在线| 国产精品短视频| 亚洲欧美激情插| 亚洲国产成人av| 麻豆精品一二三| 国产一区二区免费视频| 国产成人在线观看| 成人h精品动漫一区二区三区| 国产成人日日夜夜| 91免费视频大全| 欧美日韩久久久一区| 日韩免费看的电影| 国产喂奶挤奶一区二区三区| 最新久久zyz资源站| 亚洲一二三区在线观看| 五月激情综合色| 国产呦萝稀缺另类资源| 成人动漫在线一区| 欧美日韩免费观看一区三区| 91精品在线免费观看| 久久久综合视频| 亚洲男人的天堂一区二区| 一个色妞综合视频在线观看| 麻豆国产欧美日韩综合精品二区| 国产福利一区二区| 欧美午夜片在线看| 久久久久久免费网| 一区二区三区高清不卡| 精品午夜一区二区三区在线观看| 成人视屏免费看| 欧美高清www午色夜在线视频| 久久综合久久综合九色| 亚洲精品乱码久久久久久黑人| 日韩avvvv在线播放| 成人理论电影网| 678五月天丁香亚洲综合网| 亚洲国产精品二十页| 日本视频在线一区| 波多野结衣欧美| 欧美成人激情免费网| 亚洲精品免费视频| 国产东北露脸精品视频| 91精品国产91久久综合桃花| 亚洲欧洲韩国日本视频| 精品中文字幕一区二区| 欧美天堂一区二区三区| 中文字幕成人av| 精品一区二区三区免费| 在线不卡欧美精品一区二区三区| 国产精品色呦呦| 国产一区二区毛片| 91麻豆精品国产91久久久使用方法| 中文字幕av一区 二区| 免费成人你懂的| 欧美午夜寂寞影院| 亚洲欧美一区二区三区国产精品 | 99久久精品99国产精品| 日韩欧美在线综合网| 亚洲一区二区精品久久av| 成人永久看片免费视频天堂| 欧美电影免费观看高清完整版在线观看 | 亚洲欧美一区二区三区久本道91 | 自拍偷拍欧美精品| 国产精品18久久久久久vr| 91麻豆精品国产无毒不卡在线观看| 亚洲尤物在线视频观看| 91蝌蚪porny| 亚洲天堂精品视频| 99久久精品情趣| 中文字幕佐山爱一区二区免费| 成熟亚洲日本毛茸茸凸凹| 国产日产欧美精品一区二区三区| 久久国产人妖系列| 久久婷婷综合激情| 国产成人免费高清| 国产精品丝袜一区| 91在线视频在线| 亚洲免费观看视频| 欧美午夜视频网站| 日本vs亚洲vs韩国一区三区| 日韩精品中文字幕在线不卡尤物 | 中文字幕一区三区| 99精品视频中文字幕| 综合久久久久久| 欧美视频中文字幕| 美腿丝袜亚洲色图| 国产午夜精品美女毛片视频| 成人不卡免费av| 亚洲永久精品大片| 91精品免费观看| 激情图片小说一区| 欧美高清在线视频| 色猫猫国产区一区二在线视频| 亚洲成人免费在线| 欧美成人激情免费网| 高清不卡在线观看| 亚洲一区二区视频在线| 91精品国产乱| 成人午夜视频网站| 亚洲午夜三级在线| 久久综合九色综合97_久久久| 国产91对白在线观看九色| 亚洲黄网站在线观看| 欧美一卡二卡在线观看| 国产91高潮流白浆在线麻豆| 亚洲午夜精品网| 久久午夜电影网| 欧美日韩中文精品| 国产精品一区二区x88av| 亚洲视频中文字幕| 91精品国产麻豆| www.亚洲免费av| 日韩和的一区二区| 国产精品免费久久久久| 91精品国产麻豆| 91蝌蚪porny九色| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲日本va午夜在线影院| 日韩一级二级三级| 99riav一区二区三区| 免费高清不卡av| 一区二区在线免费| 久久久精品日韩欧美| 欧美日韩成人一区二区| 成人小视频在线观看| 蜜桃视频一区二区三区| 亚洲欧美日韩一区二区三区在线观看 | 午夜久久久久久久久| 国产精品无圣光一区二区| 884aa四虎影成人精品一区| 国内精品视频666| 亚洲国产日韩a在线播放性色| 国产日韩在线不卡| 日韩一区二区电影网| 欧美午夜在线观看| 91香蕉视频黄| 成人精品一区二区三区四区| 蜜臀av一区二区| 亚洲成在线观看| 最新热久久免费视频| 久久久久久久久久电影| 日韩一区二区麻豆国产| 欧美老肥妇做.爰bbww视频| 91视频观看免费| aaa欧美色吧激情视频| 国产精品91xxx| 国产一区二区三区观看| 久久99精品久久久久久国产越南| 亚洲国产精品久久久久秋霞影院| 日韩一区中文字幕| 中文字幕在线一区二区三区| 国产欧美一区二区精品秋霞影院| 日韩精品中午字幕| 精品国产一区二区三区久久久蜜月 | 日本不卡在线视频| 一区二区三区**美女毛片| 亚洲欧洲精品一区二区三区不卡| 国产日韩欧美不卡| 久久蜜桃av一区精品变态类天堂 | 粉嫩久久99精品久久久久久夜 | 91麻豆6部合集magnet| 成人av综合在线| 成人久久18免费网站麻豆| 成人动漫在线一区| av色综合久久天堂av综合| 99视频有精品| 在线一区二区视频| 欧美在线免费观看亚洲| 欧美婷婷六月丁香综合色| 欧美精品视频www在线观看| 91精品久久久久久久91蜜桃| 欧美精品色一区二区三区| 欧美一级理论片| 国产视频911| 亚洲精品日韩综合观看成人91| 亚洲一区成人在线|