fifocnt4.vhd

来自「基于4个mips核的noc设计」· VHDL 代码 · 共 82 行

VHD
82
字号
--------------------------------------------------------------------------
--  Design: FIFOCNT4 
--  File:   $Id: fifocnt4.vhd,v 1.1 2003/10/31 11:45:09 aslusarc Exp $
--
--  This is a special counter for FIFO Applications
--  When the 'direction' is to count down, the read enable does not
--  need to be asserted, this is so that the counter can be backed up on
--  a single signal
--
--  Copyright (c) 1998 Nallatech Ltd.  All rights reserved.
----------------------------------------------------------------------------							

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


entity FIFOCNT4 is
	port(
		CLK 	: in std_logic;
		GSR_RST	: in std_logic;
		SW_RST	: in std_logic;
		CE 	: in std_logic;
		DIR 	: in std_logic;
		Q	: out std_logic_vector(3 downto 0)
	);
	
end FIFOCNT4;


architecture FIFOCNT4_arch of FIFOCNT4 is

signal COUNT : integer range 0 to 15;
signal SYNCRST : std_logic;

begin

	-- Ensure that reset signal is synced to the clk in this domain
	DOSYNCRST : process(CLK,GSR_RST)
	begin
		if GSR_RST='1' then
			SYNCRST <= '1';
		elsif CLK'event and CLK='1' then
			SYNCRST <= SW_RST;
		end if;
	end process DOSYNCRST;
	
	-- Perform the counting
	Q <= CONV_STD_LOGIC_VECTOR(COUNT,4);
	
	DOCOUNT : process (CLK, GSR_RST, SYNCRST, CE,DIR)
	begin
		if GSR_RST='1' then
			COUNT <= 0;
		elsif CLK='1' and CLK'event then
			if SYNCRST='1' then
				COUNT <= 0;
			elsif CE='1' or DIR='0' then
				if DIR='1' then  
--					if COUNT=15 then
--						COUNT <= 0;
--					else	 
						COUNT <= COUNT + 1;
--					end if;	
				else
--					if COUNT=0 then
--						COUNT <= 15;
--					else	
						COUNT <= COUNT - 1;
--					end if;	
				end if;
			end if;
		end if;
	end process;

end FIFOCNT4_arch;
		

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?