📄 misc.vhd
字号:
-------------------------------------------------------------------------------- This file is a part of the GRLIB VHDL IP LIBRARY-- Copyright (C) 2003, Gaisler Research---- This program is free software; you can redistribute it and/or modify-- it under the terms of the GNU General Public License as published by-- the Free Software Foundation; either version 2 of the License, or-- (at your option) any later version.---- This program is distributed in the hope that it will be useful,-- but WITHOUT ANY WARRANTY; without even the implied warranty of-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-- GNU General Public License for more details.---- You should have received a copy of the GNU General Public License-- along with this program; if not, write to the Free Software-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------- Package: misc-- File: misc.vhd-- Author: Jiri Gaisler - Gaisler Research-- Description: Misc models------------------------------------------------------------------------------library ieee;use ieee.std_logic_1164.all;library grlib;use grlib.amba.all;use grlib.devices.all;use grlib.stdlib.all;library techmap;use techmap.gencomp.all;library gaisler;use gaisler.leon3.all;package misc is-- reset generator with filter component rstgen generic (acthigh : integer := 0; syncrst : integer := 0); port ( rstin : in std_ulogic; clk : in std_ulogic; clklock : in std_ulogic; rstout : out std_ulogic; rstoutraw : out std_ulogic); end component; type gptimer_in_type is record dhalt : std_ulogic; extclk : std_ulogic; end record; type gptimer_out_type is record tick : std_logic_vector(0 to 7); timer1 : std_logic_vector(31 downto 0); wdogn : std_ulogic; wdog : std_ulogic; end record; component gptimer generic ( pindex : integer := 0; paddr : integer := 0; pmask : integer := 16#fff#; pirq : integer := 0; sepirq : integer := 0; -- use separate interrupts for each timer sbits : integer := 16; -- scaler bits ntimers : integer range 1 to 7 := 1; -- number of timers nbits : integer := 32; -- timer bits wdog : integer := 0 ); port ( rst : in std_ulogic; clk : in std_ulogic; apbi : in apb_slv_in_type; apbo : out apb_slv_out_type; gpti : in gptimer_in_type; gpto : out gptimer_out_type ); end component;-- 32-bit ram with AHB interface component ahbram generic ( hindex : integer := 0; haddr : integer := 0; hmask : integer := 16#fff#; tech : integer := DEFMEMTECH; kbytes : integer := 1); port ( rst : in std_ulogic; clk : in std_ulogic; ahbsi : in ahb_slv_in_type; ahbso : out ahb_slv_out_type); end component; type ahbram_out_type is record ce : std_ulogic; end record; component ftahbram is generic ( hindex : integer := 0; haddr : integer := 0; hmask : integer := 16#fff#; tech : integer := DEFMEMTECH; kbytes : integer := 1; pindex : integer := 0; paddr : integer := 0; pmask : integer := 16#fff#; edacen : integer := 1; autoscrub : integer := 0; errcnten : integer := 0; cntbits : integer range 1 to 8 := 1; ahbpipe : integer := 0); port ( rst : in std_ulogic; clk : in std_ulogic; ahbsi : in ahb_slv_in_type; ahbso : out ahb_slv_out_type; apbi : in apb_slv_in_type; apbo : out apb_slv_out_type; aramo : out ahbram_out_type ); end component; component ahbtrace is generic ( hindex : integer := 0; ioaddr : integer := 16#000#; iomask : integer := 16#E00#; tech : integer := DEFMEMTECH; irq : integer := 0; kbytes : integer := 1); port ( rst : in std_ulogic; clk : in std_ulogic; ahbmi : in ahb_mst_in_type; ahbsi : in ahb_slv_in_type; ahbso : out ahb_slv_out_type ); end component; type ahb_dma_in_type is record address : std_logic_vector(31 downto 0); wdata : std_logic_vector(31 downto 0); start : std_ulogic; burst : std_ulogic; write : std_ulogic; busy : std_ulogic; irq : std_ulogic; size : std_logic_vector(1 downto 0);end record;type ahb_dma_out_type is record start : std_ulogic; active : std_ulogic; ready : std_ulogic; retry : std_ulogic; mexc : std_ulogic; haddr : std_logic_vector(9 downto 0); rdata : std_logic_vector(31 downto 0);end record; component ahbmst generic ( hindex : integer := 0; hirq : integer := 0; venid : integer := VENDOR_GAISLER; devid : integer := 0; version : integer := 0; chprot : integer := 3; incaddr : integer := 0); port ( rst : in std_ulogic; clk : in std_ulogic; dmai : in ahb_dma_in_type; dmao : out ahb_dma_out_type; ahbi : in ahb_mst_in_type; ahbo : out ahb_mst_out_type ); end component; type gpio_in_type is record din : std_logic_vector(31 downto 0); end record; type gpio_out_type is record dout : std_logic_vector(31 downto 0); oen : std_logic_vector(31 downto 0); val : std_logic_vector(31 downto 0); end record; type ahb2ahb_ctrl_type is record slck : std_ulogic; blck : std_ulogic; end record; component grgpio generic ( pindex : integer := 0; paddr : integer := 0; pmask : integer := 16#fff#; imask : integer := 16#0000#; nbits : integer := 16; -- GPIO bits oepol : integer := 0; -- Output enable polarity syncrst : integer := 0 ); port ( rst : in std_ulogic; clk : in std_ulogic; apbi : in apb_slv_in_type; apbo : out apb_slv_out_type; gpioi : in gpio_in_type; gpioo : out gpio_out_type ); end component; component ahb2ahb generic( tech : integer := 0; hsindex : integer := 0; hmindex : integer := 0; slv : integer := 0; dir : integer := 0; -- 0 - down, 1 - up ffact : integer := 0; pfen : integer range 0 to 1 := 0; rbufsz : integer range 2 to 32 := 8; wbufsz : integer range 2 to 32 := 2; iburst : integer range 4 to 8 := 8; rburst : integer range 2 to 32 := 8; irqsync : integer range 0 to 1 := 0; bar0 : integer range 0 to 1073741823 := 0; bar1 : integer range 0 to 1073741823 := 0; bar2 : integer range 0 to 1073741823 := 0; bar3 : integer range 0 to 1073741823 := 0; sbus : integer := 0; mbus : integer := 0; ioarea : integer := 0); port ( rstn : in std_ulogic; hclkm : in std_ulogic; hclks : in std_ulogic; ahbsi : in ahb_slv_in_type; ahbso : out ahb_slv_out_type; ahbmi : in ahb_mst_in_type; ahbmo : out ahb_mst_out_type; ahbso2 : in ahb_slv_out_vector; lcki : in ahb2ahb_ctrl_type; lcko : out ahb2ahb_ctrl_type ); end component; component ahbbridge generic( tech : integer := 0; ffact : integer := 2; ncpu : integer := 1; -- high-speed bus hsb_hsindex : integer := 0; hsb_hmindex : integer := 0; hsb_iclsize : integer range 4 to 8 := 8; hsb_bank0 : integer range 0 to 1073741823 := 0; hsb_bank1 : integer range 0 to 1073741823 := 0; hsb_bank2 : integer range 0 to 1073741823 := 0; hsb_bank3 : integer range 0 to 1073741823 := 0; hsb_ioarea : integer := 0; -- low-speed bus lsb_hsindex : integer := 0; lsb_hmindex : integer := 0; lsb_rburst : integer range 16 to 32 := 16; lsb_wburst : integer range 2 to 32 := 8; lsb_bank0 : integer range 0 to 1073741823 := 0; lsb_bank1 : integer range 0 to 1073741823 := 0; lsb_bank2 : integer range 0 to 1073741823 := 0; lsb_bank3 : integer range 0 to 1073741823 := 0; lsb_ioarea : integer := 0); port ( rstn : in std_ulogic;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -