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

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

?? gh_counter_control.vhd

?? VHDL Source code for 8254 timer/counter
?? VHD
字號:
-----------------------------------------------------------------------------
--	Filename:	gh_counter_control.vhd
--
--	Description:
--		counter control for the 8254 Timer
--
--	Copyright (c) 2008 by H LeFevre 
--		A VHDL 8254 Timer core
--		an OpenCores.org Project
--		free to use, but see documentation for conditions 
--
--	Revision 	History:
--	Revision 	Date       	Author    	Comment
--	-------- 	---------- 	---------	-----------
--	1.0      	08/02/08  	H LeFevre	Initial revision
--
-----------------------------------------------------------------------------
library ieee ;
use ieee.std_logic_1164.all ;

entity gh_counter_control is
	GENERIC(same_clk: boolean := false;	-- true, if same clock is used for bus and counter
	        sync_clk: boolean := false); -- true, if bus and counter clocks are synchronous
	port(	  
	-------- data bus/control signals ------------
		clk_i  : in std_logic;
		rst    : in std_logic;
		ics    : in std_logic;
		dwr    : in std_logic;
		iA     : in std_logic_vector(1 downto 0);
		iD     : in std_logic_vector(7 downto 0);
		dat_o  : out std_logic_vector(7 downto 0);
	----------------------------------------------------
	------ counter output/control signals --------------	
		clk     : in std_logic;
		rd_busy : out std_logic;
		gate    : in std_logic;
		Cout    : out std_logic
		);
end entity;

architecture a of gh_counter_control is

COMPONENT gh_edge_det is
	PORT(	
		clk : in STD_LOGIC;
		rst : in STD_LOGIC;
		D   : in STD_LOGIC;
		re  : out STD_LOGIC; -- rising edge (need sync source at D)
		fe  : out STD_LOGIC; -- falling edge (need sync source at D)
		sre : out STD_LOGIC; -- sync'd rising edge
		sfe : out STD_LOGIC  -- sync'd falling edge
		);
END COMPONENT;

COMPONENT gh_register_ce is
	GENERIC (size: INTEGER := 8);
	PORT(	
		clk : IN		STD_LOGIC;
		rst : IN		STD_LOGIC; 
		CE  : IN		STD_LOGIC; -- clock enable
		D   : IN		STD_LOGIC_VECTOR(size-1 DOWNTO 0);
		Q   : OUT		STD_LOGIC_VECTOR(size-1 DOWNTO 0)
		);
END COMPONENT;

COMPONENT gh_jkff is
	PORT(	
		clk  : IN STD_logic;
		rst  : IN STD_logic;
		J,K  : IN STD_logic;
		Q    : OUT STD_LOGIC
		);
END COMPONENT;

COMPONENT gh_edge_det_XCD_t is
	GENERIC(same_clk: boolean := false;	-- true, if same clock is used for i/o clocks
	        sync_clk: boolean := false); -- true, if i/o clocks are synchronous
	port(
		iclk : in STD_LOGIC;  -- clock for input data signal
		oclk : in STD_LOGIC;  -- clock for output data pulse
		rst  : in STD_LOGIC;
		D    : in STD_LOGIC;
		re   : out STD_LOGIC  -- rising edge 
		);
END COMPONENT;

COMPONENT gh_counter_down_16b_bb is
	port(
		clk    : in STD_LOGIC;
		rst    : in STD_LOGIC;
		BCD_EN : in STD_LOGIC;
		CE     : in STD_LOGIC;
		LD     : in STD_LOGIC;
		M_CMD  : in STD_LOGIC;
		MODE   : in STD_LOGIC_VECTOR(2 downto 0);
		DI     : in STD_LOGIC_VECTOR(15 downto 0);
		Cout   : out std_logic;
		NULL_C : out std_logic;
		DO     : out STD_LOGIC_VECTOR(15 downto 0)
		);
END COMPONENT;

	signal control   : std_logic_vector(5 downto 0);
	signal cRW       : std_logic_vector(1 downto 0);
	signal DC_lsb    : std_logic_vector(7 downto 0);
	signal DC_msb    : std_logic_vector(7 downto 0);
	signal DCI       : std_logic_vector(15 downto 0);
	signal MODE      : std_logic_vector(2 downto 0);
	signal sMODE     : std_logic_vector(2 downto 0);
	signal iD_lsb    : std_logic_vector(7 downto 0);
	signal iD_msb    : std_logic_vector(7 downto 0);
	signal iload     : std_logic;
	signal load      : std_logic;
	signal ld_cmd    : std_logic;
	signal ld_lsb    : std_logic;
	signal ld_msb    : std_logic;
	signal rd_lsb    : std_logic;
	signal rd_msb    : std_logic;
	signal srd_lsb   : std_logic;
	signal srd_msb   : std_logic;
	signal dwb       : std_logic;
	signal rdwb      : std_logic;
	signal drb       : std_logic;
	signal rdrb      : std_logic;
	signal iout      : std_logic;
							 	 
	signal iclcw     : std_logic;
	signal clcw      : std_logic;
	signal clcw_l    : std_logic;
	signal clcw_m    : std_logic;
	signal slcw_l    : std_logic;
	signal slcw_m    : std_logic;
	signal iclsw     : std_logic;
	signal hclsw     : std_logic;
	signal clsw      : std_logic;
	signal clsw_n    : std_logic;
	signal rdst      : std_logic;
	signal DO        : std_logic_vector(15 downto 0);
	signal rDO       : std_logic_vector(15 downto 0);
	signal Ds        : std_logic_vector(7 downto 0);
	signal rDs       : std_logic_vector(7 downto 0);
	signal NULL_C    : std_logic;
	signal M_CMD     : std_logic;
	signal CE        : std_logic;
	signal m0_outh   : std_logic;
	signal set_busy  : std_logic;
	signal clr_busy  : std_logic;
	signal s_hdcl    : std_logic;
	signal h_hdcl    : std_logic;
	signal c_hdcl    : std_logic;
	signal fe_hdcl   : std_logic;
	signal ird_busy  : std_logic;
	signal clr_hclsw : std_logic;
	
begin
 
----------------------------------------------------

	
	rd_busy <= ird_busy;

	dat_o <= rDs when (hclsw = '1') else
	         rDO(7 downto 0) when ((control(5 downto 4) = "11") and (drb = '0')) else
	         rDO(15 downto 8) when (control(5 downto 4) = "11") else
	         rDO(7 downto 0) when (control(5 downto 4) = "01") else
	         rDO(15 downto 8);-- when ((iA = "00") and (control0(5 downto 4) = "10")) else;
			 
	Ds <= iout & NULL_C & control;
			 
u0 : gh_register_ce 
	generic map (8)
	port map(
		clk => clk,
		rst => rst,
		ce => clsw,
		D => Ds,
		Q => rDs);

	
----------------------------------------------------

	ld_cmd <= '1' when ((dwr = '1') and (iA = "11") and (iD(7 downto 6) = "00") and (iCS = '1')) else
	          '0';

U1 : gh_edge_det_XCD_t
	GENERIC MAP(same_clk => same_clk,
	            sync_clk => sync_clk)
	PORT MAP (
		iclk => clk_i,
		oclk => clk,
		rst => rst,
		d => ld_cmd,
		re => M_CMD);
			  
u2 : gh_register_ce 
	generic map (6)
	port map(
		clk => clk_i,
		rst => rst,
		ce => ld_cmd,
		D => iD(5 downto 0),
		Q => control
		);
			   
	ld_lsb <= '1' when ((dwr = '1') and (iA = "00") and (control(5 downto 4) = "01") and (iCS = '1')) else
	          '1' when ((dwr = '1') and (iA = "00") and (control(5 downto 4) = "11") and (dwb = '0') and (iCS = '1')) else
	          '0';
			   
	ld_msb <= '1' when ((dwr = '1') and (iA = "00") and (control(5 downto 4) = "10") and (iCS = '1')) else
	          '1' when ((dwr = '1') and (iA = "00") and (control(5 downto 4) = "11") and (dwb = '1') and (iCS = '1')) else
	          '0';
			   
	rd_lsb <= '0' when (hclsw = '1') else
	          '1' when ((dwr = '0') and (iA = "00") and (control(5 downto 4) = "01") and (iCS = '1')) else
	          '1' when ((dwr = '0') and (iA = "00") and (control(5 downto 4) = "11") and (drb = '0') and (iCS = '1')) else
	          '0';
			   
	rd_msb <= '1' when ((dwr = '0') and (iA = "00") and (control(5 downto 4) = "10") and (iCS = '1')) else
	          '1' when ((dwr = '0') and (iA = "00") and (control(5 downto 4) = "11") and (drb = '1') and (iCS = '1')) else
	          '0';

	rdst <=  '1' when ((dwr = '0') and (iA = "00") and (iCS = '1')) else
	         '0';
			   
	sMODE <= control(3 downto 1);

	cRW <= control(5 downto 4);
	
process (sMODE,iload,iout,gate,ld_lsb,ld_msb,ld_cmd,cRW,dwb,m0_outh)
begin
	case sMODE is
		when "000" => -- mode zero
			MODE <= "000"; 			
			if (cRW = "11") then
				iload <= ld_msb;
			elsif ((ld_lsb or ld_msb or ld_cmd) = '1') then
				iload <= '1'; 
			else
				iload <= '0';
			end if;
			if (cRW = "11") then
				CE <= gate and (not dwb);
			else 
				CE <= gate;
			end if;
			if (iout = '1') then
				Cout <= '1';
			elsif (iload = '1') then
				Cout <= '0';
			else
				Cout <= m0_outh;
			end if;
		when "001" => 
			MODE <= "001";
			iload <= gate;
			CE <= gate;
			Cout <= iout;
		when "010" => 
			MODE <= "010";
			CE <= gate;
			if (cRW = "11") then
				iload <= ld_msb;
			elsif ((ld_lsb or ld_msb) = '1') then
				iload <= '1'; 
			else
				iload <= '0';
			end if;
			Cout <= iout or (not gate);
		when "110" =>
			MODE <= "010";
			CE <= gate;
			if (cRW = "11") then
				iload <= ld_msb;
			elsif ((ld_lsb or ld_msb) = '1') then
				iload <= '1'; 
			else
				iload <= '0';
			end if;
			Cout <= iout or (not gate); 
		when "011" =>
			MODE <= "011";
			CE <= gate;
			if (cRW = "11") then
				iload <= ld_msb;
			elsif ((ld_lsb or ld_msb) = '1') then
				iload <= '1'; 
			else
				iload <= '0';
			end if;
			Cout <= iout;
		when "111" =>
			MODE <= "011";
			CE <= gate;
			if (cRW = "11") then
				iload <= ld_msb;
			elsif ((ld_lsb or ld_msb) = '1') then
				iload <= '1'; 
			else
				iload <= '0';
			end if;
			Cout <= iout;
		when "100" =>
			MODE <= "100";
			CE <= gate;
			if (cRW = "11") then
				iload <= ld_msb;
			elsif ((ld_lsb or ld_msb) = '1') then
				iload <= '1'; 
			else
				iload <= '0';
			end if;
			Cout <= iout;
		when "101" =>
			MODE <= "101";
			iload <= '0';
			CE <= gate;
			Cout <= iout;
		when others =>
			MODE <= "111";
			iload <= '0';
			CE <= gate;
			Cout <= iout;
	end case;
end process;

U3 : gh_jkff 
	PORT MAP (
		clk => clk,
		rst => rst,
		j => iout,
		k => iload,
		Q => m0_outh);

	rdwb <= ld_msb or ld_cmd;
	rdrb <= '1' when ((rd_msb = '1') or (ld_cmd = '1')) else
	        '1' when ((dwr = '1') and (iA = "11") and (iD(7 downto 5) = "110") and (iD(1) = '1') and (iCS = '1')) else
	        '0';
	
U4 : gh_jkff 
	PORT MAP (
		clk => clk_i,
		rst => rst,
		j => ld_lsb,
		k => rdwb,
		Q => dwb);

U5 : gh_jkff 
	PORT MAP (
		clk => clk_i,
		rst => rst,
		j => rd_lsb,
		k => rdrb,
		Q => drb);

	iD_lsb <= x"00" when (control(5 downto 4) = "10") else
	          iD;

	iD_msb <= x"00" when (control(5 downto 4) = "01") else
	          iD;
				
u6 : gh_register_ce 
	generic map (8)
	port map(
		clk => clk_i,
		rst => rst,
		ce => ld_lsb,
		D => iD_lsb,
		Q => DC_lsb
		);
		
u7 : gh_register_ce 
	generic map (8)
	port map(
		clk => clk_i,
		rst => rst,
		ce => ld_msb,
		D => iD_msb,
		Q => DC_msb
		);
		
	DCI <= (DC_msb & DC_lsb);

U8 : gh_edge_det_XCD_t
	GENERIC MAP(same_clk => same_clk,
	            sync_clk => sync_clk)
	PORT MAP (
		iclk => clk_i,
		oclk => clk,
		rst => rst,
		d => iLOAD,
		re => load);
		
U9 : gh_counter_down_16b_bb
	PORT MAP (
		clk    => clk,
		rst    => rst,
		BCD_EN => control(0),
		CE     => CE,
		LD     => load,
		M_CMD  => M_CMD,
		MODE   => MODE,
		DI	   => DCI,
		NULL_C => NULL_C,
		Cout   => iout,
		DO     => DO
		);

----------------------------------------------------

	iclcw <= '1' when ((dwr = '1') and (iA = "11") and (iD(7 downto 4) = x"0") and (iCS = '1')) else
	         '1' when ((dwr = '1') and (iA = "11") and (iD(7 downto 5) = "110") and (iD(1) = '1') and (iCS = '1')) else
	         '0';
			 
U10 : gh_edge_det_XCD_t 
	GENERIC MAP(same_clk => same_clk,
	            sync_clk => sync_clk)
	PORT MAP (
		iclk => clk_i,
		oclk => clk,
		rst => rst,
		d => iclcw,
		re => clcw);

	slcw_l <= M_CMD or srd_lsb;  
		
U11 : gh_jkff 
	PORT MAP (
		clk => clk,
		rst => rst,
		j => slcw_l,
		k => clcw,
		Q => clcw_l);
		
u12 : gh_register_ce 
	generic map (8)
	port map(
		clk => clk,
		rst => rst,
		ce => clcw_l,
		D => DO(7 downto 0),
		Q => rDO(7 downto 0));

	slcw_m <= M_CMD or srd_msb;
		
U13 : gh_jkff 
	PORT MAP (
		clk => clk,
		rst => rst,
		j => slcw_m,
		k => clcw,
		Q => clcw_m);
		
u14 : gh_register_ce 
	generic map (8)
	port map(
		clk => clk,
		rst => rst,
		ce => clcw_m,
		D => DO(15 downto 8),
		Q => rDO(15 downto 8));
		
	iclsw <= '1' when ((dwr = '1') and (iA = "11") and (iD(7 downto 6) = "11") and (iD(4) = '0') and (iD(1) = '1') and (iCS = '1')) else
	         '0';
			 
U15 : gh_edge_det_XCD_t
	GENERIC MAP(same_clk => same_clk,
	            sync_clk => sync_clk)
	PORT MAP (
		iclk => clk_i,
		oclk => clk,
		rst => rst,
		d => iclsw,
		re => clsw);
		
	clr_hclsw <= (rdst and not ird_busy) or fe_hdcl;
		
U16 : gh_jkff 
	PORT MAP (
		clk => clk_i,
		rst => rst,
		j => iclsw,
		k => clr_hclsw,
		Q => hclsw);

	s_hdcl <= iCS and (not dwr) and ird_busy;
		
U17 : gh_jkff 
	PORT MAP (
		clk => clk_i,
		rst => rst,
		j => s_hdcl,
		k => clr_hclsw,
		Q => h_hdcl);
		
	c_hdcl <= h_hdcl and ird_busy; 
		
U18 : gh_edge_det 
	PORT MAP (
		clk => clk_i,
		rst => rst,
		d => c_hdcl,
		fe => fe_hdcl);
		
----------------------------------------------------

	clsw_n <= not clsw;

U19 : gh_edge_det_XCD_t
	GENERIC MAP(same_clk => same_clk,
	            sync_clk => sync_clk)
	PORT MAP (
		iclk => clk,
		oclk => clk_i,
		rst => rst,
		d => clsw_n,
		re => clr_busy);
	
	set_busy <= iclcw;
	
U20 : gh_jkff 
	PORT MAP (
		clk => clk_i,
		rst => rst,
		j => set_busy,
		k => clr_busy,
		Q => ird_busy);

U21 : gh_edge_det_XCD_t
	GENERIC MAP(same_clk => same_clk,
	            sync_clk => sync_clk)
	PORT MAP (
		iclk => clk_i,
		oclk => clk,
		rst => rst,
		d => rd_lsb,
		re => srd_lsb);

U22 : gh_edge_det_XCD_t
	GENERIC MAP(same_clk => same_clk,
	            sync_clk => sync_clk)
	PORT MAP (
		iclk => clk_i,
		oclk => clk,
		rst => rst,
		d => rd_msb,
		re => srd_msb);
		
end a;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看国产91| 久久综合综合久久综合| 国产一区美女在线| 欧美卡1卡2卡| 亚洲国产精品久久一线不卡| 成人高清视频在线| 日韩欧美色电影| 欧美aⅴ一区二区三区视频| 在线视频一区二区免费| 亚洲欧美国产三级| 色综合天天综合在线视频| 中文字幕免费观看一区| 久久国产夜色精品鲁鲁99| 91麻豆精品国产91久久久更新时间| 亚洲品质自拍视频网站| 色综合欧美在线视频区| 一区二区三区在线免费观看| 91国产免费观看| 中文字幕一区二区在线播放| 91视频国产观看| 一区二区三区四区中文字幕| 97国产精品videossex| 亚洲天堂成人在线观看| 91国产免费观看| 日韩1区2区日韩1区2区| 欧美成人艳星乳罩| 国产精品一区一区| 最新久久zyz资源站| 色婷婷香蕉在线一区二区| 亚洲自拍另类综合| 日韩一区二区三区免费看 | 精品日韩在线一区| 久久精品国产成人一区二区三区| 精品国产凹凸成av人导航| 麻豆一区二区三| 久久欧美一区二区| 色综合色综合色综合色综合色综合 | 欧美美女一区二区三区| 男男视频亚洲欧美| 国产校园另类小说区| 91视频在线看| 免费在线看成人av| 中文字幕免费不卡| 欧美日韩一区不卡| 国产露脸91国语对白| 久久久99久久| 欧美日韩一区二区欧美激情| 国内精品久久久久影院色| 日韩一区欧美小说| 日韩欧美视频一区| 福利电影一区二区| 亚洲成av人片一区二区三区| 26uuu国产电影一区二区| 91视频你懂的| 精品一区二区三区久久久| 亚洲人成人一区二区在线观看| 欧美一级国产精品| 国产精品1区二区.| 亚洲人午夜精品天堂一二香蕉| 欧美一级欧美三级| 91日韩在线专区| 国产一区啦啦啦在线观看| 亚洲影院在线观看| www亚洲一区| 欧美日韩国产精品自在自线| 国产精品77777| 午夜精品福利视频网站| 中文字幕在线观看一区二区| 3d成人h动漫网站入口| 99精品国产视频| 国产成人啪免费观看软件| 香蕉加勒比综合久久| 中文字幕日韩精品一区| 欧美三级日本三级少妇99| 不卡视频一二三| 国产伦精品一区二区三区免费 | 欧美日韩另类一区| fc2成人免费人成在线观看播放 | 精品国产制服丝袜高跟| 欧美日韩中文另类| 色婷婷综合久久久久中文 | 欧美一区二区黄| 91国内精品野花午夜精品| 国产激情一区二区三区| 亚洲一区二区三区小说| 中文字幕中文乱码欧美一区二区| 精品久久久久久久久久久久包黑料| 欧美手机在线视频| 91精彩视频在线| 色婷婷综合久久| 91免费观看视频| 99re这里只有精品首页| 国产精品12区| 成人一二三区视频| 国产伦精品一区二区三区免费迷 | 国产aⅴ综合色| 国产精品资源在线看| 激情综合色综合久久综合| 美女久久久精品| 蜜桃在线一区二区三区| 国产盗摄一区二区| 色综合久久久久综合体桃花网| 91国产福利在线| 日韩一区二区在线播放| 欧美激情在线观看视频免费| 综合av第一页| 婷婷久久综合九色综合绿巨人 | 舔着乳尖日韩一区| 久久99久久久欧美国产| 豆国产96在线|亚洲| 91久久久免费一区二区| 日韩一级成人av| 国产精品国产三级国产aⅴ入口| 一区二区三区四区高清精品免费观看| 午夜精品一区二区三区电影天堂| 九九在线精品视频| 97精品视频在线观看自产线路二| 欧美剧情电影在线观看完整版免费励志电影| 91精品久久久久久久91蜜桃 | 国产精品久久久久久久久晋中 | 91精品国产综合久久久久久久 | 亚洲图片欧美激情| 午夜日韩在线电影| 国产成人精品亚洲午夜麻豆| 欧美午夜精品理论片a级按摩| 日韩欧美的一区二区| 国产精品国产三级国产普通话蜜臀 | 不卡一卡二卡三乱码免费网站| 欧美日韩美少妇| 欧美激情在线一区二区| 日本系列欧美系列| 99久久国产免费看| 日韩精品一区二区三区四区视频 | 国产精品一区二区果冻传媒| 欧美中文字幕一二三区视频| 久久婷婷国产综合精品青草| 亚洲大片在线观看| 成人精品鲁一区一区二区| 制服丝袜激情欧洲亚洲| 成人一区在线观看| 日韩写真欧美这视频| 亚洲精品欧美在线| 国产电影一区在线| 日韩一区二区免费高清| 亚洲精品自拍动漫在线| 国产一区二区免费看| 欧美丰满美乳xxx高潮www| 亚洲女同ⅹxx女同tv| 国产不卡视频在线观看| 精品国产乱码久久久久久久久| 亚洲一区二区三区四区五区黄| 成人一区在线看| xfplay精品久久| 久久狠狠亚洲综合| 欧美一区二区三区小说| 亚洲一区二区三区中文字幕在线| 99视频精品在线| 国产精品情趣视频| 国产美女精品人人做人人爽| 欧美xxxxxxxx| 日本aⅴ亚洲精品中文乱码| 欧美性生活影院| 一区二区三区在线视频免费 | 人人狠狠综合久久亚洲| 欧美三级电影网站| 亚洲影视在线观看| 91亚洲精品久久久蜜桃网站| 国产精品国产三级国产三级人妇| 国产福利一区在线| 久久在线观看免费| 国产在线精品一区二区三区不卡 | 欧美一区二区三区小说| 日本午夜精品一区二区三区电影 | 国产精品色呦呦| 岛国一区二区在线观看| 国产日韩v精品一区二区| 国产xxx精品视频大全| 久久久久久免费网| 成人夜色视频网站在线观看| 中文幕一区二区三区久久蜜桃| 成人精品小蝌蚪| 成人免费在线播放视频| 91精品福利视频| 日韩电影免费一区| 日韩免费视频一区二区| 国产露脸91国语对白| 中文字幕va一区二区三区| av一二三不卡影片| 一区二区三区在线视频免费观看| 欧美色网站导航| 麻豆精品国产91久久久久久| 精品国产乱码久久久久久夜甘婷婷 | 精品影院一区二区久久久| 久久久久久久久久久99999| 不卡一区二区在线| 亚洲一二三区视频在线观看| 欧美一级欧美一级在线播放| 国产精品原创巨作av| 亚洲色图制服丝袜| 制服丝袜国产精品|