📄 misc.vhd
字号:
hsb_clk : in std_ulogic; lsb_clk : in std_ulogic; hsb_ahbsi : in ahb_slv_in_type; hsb_ahbso : out ahb_slv_out_type; hsb_ahbsov: in ahb_slv_out_vector; hsb_ahbmi : in ahb_mst_in_type; hsb_ahbmo : out ahb_mst_out_type; lsb_ahbsi : in ahb_slv_in_type; lsb_ahbso : out ahb_slv_out_type; lsb_ahbsov: in ahb_slv_out_vector; lsb_ahbmi : in ahb_mst_in_type; lsb_ahbmo : out ahb_mst_out_type); end component; function ahb2ahb_membar(memaddr : ahb_addr_type; prefetch, cache : std_ulogic; addrmask : ahb_addr_type) return integer; function ahb2ahb_iobar(memaddr : ahb_addr_type; addrmask : ahb_addr_type) return integer; type ahbstat_in_type is record cerror : std_logic_vector(0 to NAHBSLV-1); end record; component ahbstat is generic( pindex : integer := 0; paddr : integer := 0; pmask : integer := 16#FFF#; pirq : integer := 0; nftslv : integer range 1 to NAHBSLV - 1 := 3); port( rst : in std_ulogic; clk : in std_ulogic; ahbmi : in ahb_mst_in_type; ahbsi : in ahb_slv_in_type; stati : in ahbstat_in_type; apbi : in apb_slv_in_type; apbo : out apb_slv_out_type ); end component; type nuhosp3_in_type is record flash_d : std_logic_vector(15 downto 0); smsc_data : std_logic_vector(31 downto 0); smsc_ardy : std_ulogic; smsc_intr : std_ulogic; smsc_nldev : std_ulogic; lcd_data : std_logic_vector(7 downto 0); end record; type nuhosp3_out_type is record flash_a : std_logic_vector(20 downto 0); flash_d : std_logic_vector(15 downto 0); flash_oen : std_ulogic; flash_wen : std_ulogic; flash_cen : std_ulogic; smsc_addr : std_logic_vector(14 downto 0); smsc_data : std_logic_vector(31 downto 0); smsc_nbe : std_logic_vector(3 downto 0); smsc_resetn : std_ulogic; smsc_nrd : std_ulogic; smsc_nwr : std_ulogic; smsc_ncs : std_ulogic; smsc_aen : std_ulogic; smsc_lclk : std_ulogic; smsc_wnr : std_ulogic; smsc_rdyrtn : std_ulogic; smsc_cycle : std_ulogic; smsc_nads : std_ulogic; smsc_ben : std_ulogic; lcd_data : std_logic_vector(7 downto 0); lcd_rs : std_ulogic; lcd_rw : std_ulogic; lcd_en : std_ulogic; lcd_backl : std_ulogic; lcd_ben : std_ulogic; end record; component nuhosp3 generic ( hindex : integer := 0; haddr : integer := 0; hmask : integer := 16#fff#; ioaddr : integer := 16#200#; iomask : integer := 16#fff#); port ( rst : in std_ulogic; clk : in std_ulogic; ahbsi : in ahb_slv_in_type; ahbso : out ahb_slv_out_type; nui : in nuhosp3_in_type; nuo : out nuhosp3_out_type ); end component;-- On-chip Logic Analyzer component logan is generic ( dbits : integer range 0 to 256 := 32; -- Number of traced signals depth : integer range 256 to 16384 := 1024; -- Depth of trace buffer trigl : integer range 1 to 63 := 1; -- Number of trigger levels usereg : integer range 0 to 1 := 1; -- Use input register usequal : integer range 0 to 1 := 0; usediv : integer range 0 to 1 := 1; pindex : integer := 0; paddr : integer := 0; pmask : integer := 16#F00#; memtech : integer := DEFMEMTECH); port ( rstn : in std_logic; clk : in std_logic; tclk : in std_logic; apbi : in apb_slv_in_type; -- APB in record apbo : out apb_slv_out_type; -- APB out record signals : in std_logic_vector(dbits - 1 downto 0)); -- Traced signals end component; type ps2_in_type is record ps2_clk_i : std_ulogic; ps2_data_i : std_ulogic; end record; type ps2_out_type is record ps2_clk_o : std_ulogic; ps2_clk_oe : std_ulogic; ps2_data_o : std_ulogic; ps2_data_oe : std_ulogic; end record; component apbps2 generic( pindex : integer := 0; paddr : integer := 0; pmask : integer := 16#fff#; pirq : integer := 0; fKHz : integer := 50000; fixed : integer := 1); port( rst : in std_ulogic; -- Global asynchronous reset clk : in std_ulogic; -- Global clock apbi : in apb_slv_in_type; apbo : out apb_slv_out_type; ps2i : in ps2_in_type; ps2o : out ps2_out_type ); end component; type apbvga_out_type is record hsync : std_ulogic; -- horizontal sync vsync : std_ulogic; -- vertical sync comp_sync : std_ulogic; -- composite sync blank : std_ulogic; -- blank signal video_out_r : std_logic_vector(7 downto 0); -- red channel video_out_g : std_logic_vector(7 downto 0); -- green channel video_out_b : std_logic_vector(7 downto 0); -- blue channel end record; component apbvga generic( memtech : integer := DEFMEMTECH; pindex : integer := 0; paddr : integer := 0; pmask : integer := 16#fff#); port( rst : in std_ulogic; -- Global asynchronous reset clk : in std_ulogic; -- Global clock vgaclk : in std_ulogic; -- VGA clock apbi : in apb_slv_in_type; apbo : out apb_slv_out_type; vgao : out apbvga_out_type ); end component; component svgactrl generic( length : integer := 384; -- Fifo-length part : integer := 128; -- Fifo-part lenght memtech : integer := DEFMEMTECH; pindex : integer := 0; paddr : integer := 0; pmask : integer := 16#fff#; hindex : integer := 0; hirq : integer := 0; clk0 : integer := 40000; clk1 : integer := 20000; clk2 : integer := 15385; clk3 : integer := 0; burstlen : integer range 2 to 8 := 8 ); port ( rst : in std_logic; clk : in std_logic; vgaclk : in std_logic; apbi : in apb_slv_in_type; apbo : out apb_slv_out_type; vgao : out apbvga_out_type; ahbi : in ahb_mst_in_type; ahbo : out ahb_mst_out_type; clk_sel : out std_logic_vector(1 downto 0) ); end component; constant vgao_none : apbvga_out_type := ('0', '0', '0', '0', "00000000", "00000000", "00000000"); constant ps2o_none : ps2_out_type := ('1', '1', '1', '1');-- component ahbrom-- generic (-- hindex : integer := 0;-- haddr : integer := 0;-- hmask : integer := 16#fff#;-- pipe : integer := 0;-- tech : integer := 0;-- 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; component ahbdma generic ( hindex : integer := 0; pindex : integer := 0; paddr : integer := 0; pmask : integer := 16#fff#; pirq : integer := 0; dbuf : integer := 0); port ( rst : in std_logic; clk : in std_ulogic; apbi : in apb_slv_in_type; apbo : out apb_slv_out_type; ahbi : in ahb_mst_in_type; ahbo : out ahb_mst_out_type ); end component; end;package body misc is function ahb2ahb_membar(memaddr : ahb_addr_type; prefetch, cache : std_ulogic; addrmask : ahb_addr_type) return integer is variable tmp : std_logic_vector(29 downto 0); variable bar : std_logic_vector(31 downto 0); variable res : integer range 0 to 1073741823; begin bar := ahb_membar(memaddr, prefetch, cache, addrmask); tmp := (others => '0'); tmp(29 downto 18) := bar(31 downto 20); tmp(17 downto 0) := bar(17 downto 0); res := conv_integer(tmp); return(res); end; function ahb2ahb_iobar(memaddr : ahb_addr_type; addrmask : ahb_addr_type) return integer is variable tmp : std_logic_vector(29 downto 0); variable bar : std_logic_vector(31 downto 0); variable res : integer range 0 to 1073741823; begin bar := ahb_iobar(memaddr, addrmask); tmp := (others => '0'); tmp(29 downto 18) := bar(31 downto 20); tmp(17 downto 0) := bar(17 downto 0); res := conv_integer(tmp); return(res); end; end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -