⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 220pack.vhd

📁 《数字信号处理的FPGA实现》代码
💻 VHD
📖 第 1 页 / 共 2 页
字号:
				 LPM_HINT : string := "UNUSED");
		port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0):= (OTHERS => '0');
			  CLOCK : in std_logic ;
			  CLK_EN : in std_logic := '1';
			  CNT_EN : in std_logic := '1';
			  UPDOWN : in std_logic := '1';
			  SLOAD : in std_logic := '0';
			  SSET : in std_logic := '0';
			  SCLR : in std_logic := '0';
			  ALOAD : in std_logic := '0';
			  ASET : in std_logic := '0';
			  ACLR : in std_logic := '0';
			  CIN : in std_logic := '0';
			  COUT : out std_logic := '0';
			  --EQ : out std_logic_vector(15 downto 0);
			  Q : out std_logic_vector(LPM_WIDTH-1 downto 0));
end component;


------------------------------------------------------------------------
-- STORAGE COMPONENTS --------------------------------------------------
------------------------------------------------------------------------

component LPM_LATCH
		generic (LPM_WIDTH : positive;
				 LPM_AVALUE : string := "UNUSED";
				 LPM_PVALUE : string := "UNUSED";
				 LPM_TYPE: string := L_LATCH;
				 LPM_HINT : string := "UNUSED");
		port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);
			  GATE : in std_logic;
			  ASET : in std_logic := '0';
			  ACLR : in std_logic := '0';
			  Q : out std_logic_vector(LPM_WIDTH-1 downto 0));
end component;

component LPM_FF
		generic (LPM_WIDTH : positive;
				 LPM_AVALUE : string := "UNUSED";
				 LPM_SVALUE : string := "UNUSED";
				 LPM_PVALUE : string := "UNUSED";
				 LPM_FFTYPE: string := "DFF";
				 LPM_TYPE: string := L_FF;
				 LPM_HINT : string := "UNUSED");
		port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);
			  CLOCK : in std_logic;
			  ENABLE : in std_logic := '1';
			  SLOAD : in std_logic := '0';
			  SCLR : in std_logic := '0';
			  SSET : in std_logic := '0';
			  ALOAD : in std_logic := '0';
			  ACLR : in std_logic := '0';
			  ASET : in std_logic := '0';
			  Q : out std_logic_vector(LPM_WIDTH-1 downto 0));
end component;

component LPM_SHIFTREG
		generic (LPM_WIDTH : positive;
				 LPM_AVALUE : string := "UNUSED";
				 LPM_SVALUE : string := "UNUSED";
				 LPM_PVALUE : string := "UNUSED";
				 LPM_DIRECTION: string := "UNUSED";
				 LPM_TYPE: string := L_SHIFTREG;
				 LPM_HINT : string := "UNUSED");
		port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0) := (OTHERS => '0');
			  CLOCK : in std_logic;
			  ENABLE : in std_logic := '1';
			  SHIFTIN : in std_logic := '1';
			  LOAD : in std_logic := '0';
			  SCLR : in std_logic := '0';
			  SSET : in std_logic := '0';
			  ACLR : in std_logic := '0';
			  ASET : in std_logic := '0';
			  Q : out std_logic_vector(LPM_WIDTH-1 downto 0);
			  SHIFTOUT : out std_logic);
end component;

component LPM_RAM_DQ
		generic (LPM_WIDTH : positive;
				 LPM_WIDTHAD : positive;
				 LPM_NUMWORDS : natural := 0;
				 LPM_INDATA : string := "REGISTERED";
				 LPM_ADDRESS_CONTROL: string := "REGISTERED";
				 LPM_OUTDATA : string := "REGISTERED";
				 LPM_FILE : string := "UNUSED";
				 LPM_TYPE : string := L_RAM_DQ;
				 LPM_HINT : string := "UNUSED");
		port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);
			  ADDRESS : in std_logic_vector(LPM_WIDTHAD-1 downto 0);
			  INCLOCK : in std_logic := '0';
			  OUTCLOCK : in std_logic := '0';
			  WE : in std_logic;
			  Q : out std_logic_vector(LPM_WIDTH-1 downto 0));
end component;

component LPM_RAM_DP
		generic (LPM_WIDTH : positive;
				 LPM_WIDTHAD : positive;
				 LPM_NUMWORDS : natural := 0;
				 LPM_INDATA : string := "REGISTERED";
				 LPM_OUTDATA : string := "REGISTERED";
				 LPM_RDADDRESS_CONTROL : string := "REGISTERED";
				 LPM_WRADDRESS_CONTROL : string := "REGISTERED";
				 LPM_FILE : string := "UNUSED";
				 LPM_TYPE : string := L_RAM_DP;
				 LPM_HINT : string := "UNUSED");
		port (RDCLOCK : in std_logic := '0';
			  RDCLKEN : in std_logic := '1';
			  RDADDRESS : in std_logic_vector(LPM_WIDTHad-1 downto 0);
			  RDEN : in std_logic := '1';
			  DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);
			  WRADDRESS : in std_logic_vector(LPM_WIDTHad-1 downto 0);
			  WREN : in std_logic;
			  WRCLOCK : in std_logic := '0';
			  WRCLKEN : in std_logic := '1';
			  Q : out std_logic_vector(LPM_WIDTH-1 downto 0));
end component;

component LPM_RAM_IO
		generic (LPM_WIDTH : positive;
				 LPM_WIDTHAD : positive;
				 LPM_NUMWORDS : natural := 0;
				 LPM_INDATA : string := "REGISTERED";
				 LPM_ADDRESS_CONTROL : string := "REGISTERED";
				 LPM_OUTDATA : string := "REGISTERED";
				 LPM_FILE : string := "UNUSED";
				 LPM_TYPE : string := L_RAM_IO;
				 LPM_HINT : string := "UNUSED");
		port (ADDRESS : in STD_LOGIC_VECTOR(LPM_WIDTHAD-1 downto 0);
			  INCLOCK : in STD_LOGIC := '0';
			  OUTCLOCK : in STD_LOGIC := '0';
			  MEMENAB : in STD_LOGIC := '1';
			  OUTENAB : in STD_LOGIC := '1';
			  WE : in STD_LOGIC;
			  DIO : inout STD_LOGIC_VECTOR(LPM_WIDTH-1 downto 0));
end component;

component LPM_ROM
		generic (LPM_WIDTH : positive;
				 LPM_WIDTHAD : positive;
				 LPM_NUMWORDS : natural := 0;
				 LPM_ADDRESS_CONTROL : string := "REGISTERED";
				 LPM_OUTDATA : string := "REGISTERED";
				 LPM_FILE : string;
				 LPM_TYPE : string := L_ROM;
				 LPM_HINT : string := "UNUSED");
		port (ADDRESS : in STD_LOGIC_VECTOR(LPM_WIDTHAD-1 downto 0);
			  INCLOCK : in STD_LOGIC := '0';
			  OUTCLOCK : in STD_LOGIC := '0';
			  MEMENAB : in STD_LOGIC := '1';
			  Q : out STD_LOGIC_VECTOR(LPM_WIDTH-1 downto 0));
end component;

component LPM_FIFO
		generic (LPM_WIDTH : positive;
				 LPM_WIDTHU : positive := 1;
				 LPM_NUMWORDS : positive;
				 LPM_SHOWAHEAD : string := "OFF";
				 LPM_TYPE : string := L_FIFO;
				 LPM_HINT : string := "UNUSED");
		port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);
			  CLOCK : in std_logic;
			  WRREQ : in std_logic;
			  RDREQ : in std_logic;
			  ACLR : in std_logic := '0';
			  SCLR : in std_logic := '0';
			  Q : out std_logic_vector(LPM_WIDTH-1 downto 0);
			  USEDW : out std_logic_vector(LPM_WIDTHU-1 downto 0);
			  FULL : out std_logic;
			  EMPTY : out std_logic);
end component;

component LPM_FIFO_DC
		generic (LPM_WIDTH : positive ;
				 LPM_WIDTHU : positive := 1;
				 LPM_NUMWORDS : positive;
				 LPM_SHOWAHEAD : string := "OFF";
				 LPM_TYPE : string := L_FIFO_DC;
				 LPM_HINT : string := "UNUSED");
		port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);
			  WRCLOCK : in std_logic;
			  RDCLOCK : in std_logic;
			  WRREQ : in std_logic;
			  RDREQ : in std_logic;
			  ACLR : in std_logic := '0';
			  Q : out std_logic_vector(LPM_WIDTH-1 downto 0);
			  WRUSEDW : out std_logic_vector(LPM_WIDTHU-1 downto 0);
			  RDUSEDW : out std_logic_vector(LPM_WIDTHU-1 downto 0);
			  WRFULL : out std_logic;
			  RDFULL : out std_logic;
			  WREMPTY : out std_logic;
			  RDEMPTY : out std_logic);
end component;


------------------------------------------------------------------------
-- TABLE PRIMITIVES ----------------------------------------------------
------------------------------------------------------------------------

component LPM_TTABLE
		generic (LPM_WIDTHIN : positive;
				 LPM_WIDTHOUT : positive;
				 LPM_FILE : string;
				 LPM_TRUTHTYPE : string := "FD";                 
				 LPM_TYPE : string := L_TTABLE;
				 LPM_HINT : string := "UNUSED");
		port (DATA : in std_logic_vector(LPM_WIDTHIN-1 downto 0);
			  RESULT : out std_logic_vector(LPM_WIDTHOUT-1 downto 0));
end component;

component LPM_FSM
		generic (LPM_WIDTHIN : positive; 
				 LPM_WIDTHOUT : positive; 
				 LPM_WIDTHS : positive := 1;
				 LPM_FILE : string ; 
				 LPM_PVALUE : string := "UNUSED";
				 LPM_AVALUE : string := "UNUSED";
				 LPM_TRUTHTYPE : string := "FD";
				 LPM_TYPE : string := L_FSM;
				 LPM_HINT : string := "UNUSED");
		port (DATA : in std_logic_vector(LPM_WIDTHIN-1 downto 0);
			  CLOCK : in std_logic;
			  ASET : in std_logic := '0';
			  TESTENAB : in std_logic := '0';
			  TESTIN : in std_logic := '0';
			  TESTOUT : out std_logic;
			  STATE : out std_logic_vector(LPM_WIDTHS-1 downto 0);
			  RESULT : out std_logic_vector(LPM_WIDTHOUT-1 downto 0));
end component;


------------------------------------------------------------------------
-- PAD PRIMITIVES ------------------------------------------------------
------------------------------------------------------------------------

component LPM_INPAD
		generic (LPM_WIDTH : positive;
				 LPM_TYPE : string := L_INPAD;
				 LPM_HINT : string := "UNUSED");
		port (PAD : in std_logic_vector(LPM_WIDTH-1 downto 0);
			  RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0));
end component;

component LPM_OUTPAD
		generic (LPM_WIDTH : positive;
				 LPM_TYPE : string := L_OUTPAD;
				 LPM_HINT : string := "UNUSED");
		port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);
			  PAD : out std_logic_vector(LPM_WIDTH-1 downto 0));
end component;

component LPM_BIPAD
		generic (LPM_WIDTH : positive;
				 LPM_TYPE : string := L_BIPAD;
				 LPM_HINT : string := "UNUSED");
		port (DATA : in std_logic_vector(LPM_WIDTH-1 downto 0);
			  ENABLE : in std_logic;
			  RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0);
			  PAD : inout std_logic_vector(LPM_WIDTH-1 downto 0));
end component;

end;


package body LPM_COMPONENTS is

	function str_to_int( s : string ) return integer is
	variable len : integer := s'length;
	variable ivalue : integer := 0;
	variable digit : integer;
	begin
		for i in len downto 1 loop
			case s(i) is
				when '0' =>
					digit := 0;
				when '1' =>
					digit := 1;
				when '2' =>
					digit := 2;
				when '3' =>
					digit := 3;
				when '4' =>
					digit := 4;
				when '5' =>
					digit := 5;
				when '6' =>
					digit := 6;
				when '7' =>
					digit := 7;
				when '8' =>
					digit := 8;
				when '9' =>
					digit := 9;
				when others =>
					ASSERT FALSE
					REPORT "Illegal Character "&  s(i) & "in string parameter! "
					SEVERITY ERROR;
			end case;
			ivalue := ivalue * 10 + digit;
		end loop;
		return ivalue;
	end;

end;

⌨️ 快捷键说明

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