SURF  1.0
Iprog.vhd
Go to the documentation of this file.
1 -------------------------------------------------------------------------------
2 -- File : Iprog.vhd
3 -- Company : SLAC National Accelerator Laboratory
4 -- Created : 2015-06-18
5 -- Last update: 2016-12-01
6 -------------------------------------------------------------------------------
7 -- Description: Wrapper for the ICAP Module to issue IPROG command
8 -------------------------------------------------------------------------------
9 -- This file is part of 'SLAC Firmware Standard Library'.
10 -- It is subject to the license terms in the LICENSE.txt file found in the
11 -- top-level directory of this distribution and at:
12 -- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html.
13 -- No part of 'SLAC Firmware Standard Library', including this file,
14 -- may be copied, modified, propagated, or distributed except according to
15 -- the terms contained in the LICENSE.txt file.
16 -------------------------------------------------------------------------------
17 
18 library ieee;
19 use ieee.std_logic_1164.all;
20 
21 use work.StdRtlPkg.all;
22 use work.TextUtilPkg.all;
23 
24 --! @see entity
25  --! @ingroup xilinx_general
26 entity Iprog is
27  generic (
28  TPD_G : time := 1 ns;
29  XIL_DEVICE_G : string := "7SERIES"; -- Either "7SERIES" or "ULTRASCALE"
30  USE_SLOWCLK_G : boolean := false;
31  BUFR_CLK_DIV_G : positive := 8;
32  RST_POLARITY_G : sl := '1');
33  port (
34  clk : in sl;
35  rst : in sl;
36  slowClk : in sl := '0';
37  start : in sl;
38  bootAddress : in slv(31 downto 0) := X"00000000");
39 end Iprog;
40 
41 architecture rtl of Iprog is
42 
43  component Iprog7Series is
44  generic (
45  TPD_G : time;
46  USE_SLOWCLK_G : boolean;
47  BUFR_CLK_DIV_G : string);
48  port (
49  clk : in sl;
50  rst : in sl;
51  slowClk : in sl := '0';
52  start : in sl;
53  bootAddress : in slv(31 downto 0) := X"00000000");
54  end component Iprog7Series;
55 
56  component IprogUltraScale is
57  generic (
58  TPD_G : time;
59  USE_SLOWCLK_G : boolean;
60  BUFR_CLK_DIV_G : natural;
61  RST_POLARITY_G : sl);
62  port (
63  clk : in sl;
64  rst : in sl;
65  slowClk : in sl := '0';
66  start : in sl;
67  bootAddress : in slv(31 downto 0) := X"00000000");
68  end component IprogUltraScale;
69 
70 
71 begin
72 
73  GEN_7SERIES : if (XIL_DEVICE_G = "7SERIES") generate
74  Iprog7Series_Inst : Iprog7Series
75  generic map (
76  TPD_G => TPD_G,
78  BUFR_CLK_DIV_G => str(BUFR_CLK_DIV_G, 10))
79  port map (
80  clk => clk,
81  rst => rst,
82  slowClk => slowClk,
83  start => start,
85  end generate;
86 
87  GEN_ULTRA_SCALE : if (XIL_DEVICE_G = "ULTRASCALE") generate
88  IprogUltraScale_Inst : IprogUltraScale
89  generic map (
90  TPD_G => TPD_G,
94  port map (
95  clk => clk,
96  rst => rst,
97  slowClk => slowClk,
98  start => start,
100  end generate;
101 
102 end rtl;
in slowClksl := '0'
USE_SLOWCLK_Gboolean := false
Definition: Iprog.vhd:30
std_logic sl
Definition: StdRtlPkg.vhd:28
USE_SLOWCLK_Gboolean := false
in bootAddressslv( 31 downto 0) := X"00000000"
Definition: Iprog.vhd:38
in slowClksl := '0'
TPD_Gtime := 1 ns
RST_POLARITY_Gsl := '1'
TPD_Gtime := 1 ns
in startsl
Definition: Iprog.vhd:37
Definition: Iprog.vhd:26
USE_SLOWCLK_Gboolean := false
TPD_Gtime := 1 ns
Definition: Iprog.vhd:28
BUFR_CLK_DIV_Gstring := "8"
in rstsl
Definition: Iprog.vhd:35
BUFR_CLK_DIV_Gnatural := 8
RST_POLARITY_Gsl := '1'
Definition: Iprog.vhd:32
in slowClksl := '0'
Definition: Iprog.vhd:36
_library_ ieeeieee
Definition: DspAddSub.vhd:18
in bootAddressslv( 31 downto 0) := X"00000000"
in bootAddressslv( 31 downto 0) := X"00000000"
BUFR_CLK_DIV_Gpositive := 8
Definition: Iprog.vhd:31
XIL_DEVICE_Gstring := "7SERIES"
Definition: Iprog.vhd:29
in clksl
Definition: Iprog.vhd:34
std_logic_vector slv
Definition: StdRtlPkg.vhd:29