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

📄 plb_npi_vga_controller.vhd

📁 Genode FX is a composition of hardware and software components that enable the creation of fully fl
💻 VHD
📖 第 1 页 / 共 2 页
字号:
  ------------------------------------------  constant IPIF_BUS2CORE_CLK_RATIO        : integer              := 1;  ------------------------------------------  -- Width of the slave data bus (32 only)  ------------------------------------------  constant USER_SLV_DWIDTH                : integer              := C_SPLB_NATIVE_DWIDTH;  constant IPIF_SLV_DWIDTH                : integer              := C_SPLB_NATIVE_DWIDTH;  ------------------------------------------  -- Number of device level interrupts  ------------------------------------------  constant INTR_NUM_IPIF_IRPT_SRC         : integer              := 4;  ------------------------------------------  -- Capture mode for each IP interrupt (generated by user logic)  -- 1 = pass through (non-inverting)  -- 2 = pass through (inverting)  -- 3 = registered level (non-inverting)  -- 4 = registered level (inverting)  -- 5 = positive edge detect  -- 6 = negative edge detect  ------------------------------------------  constant USER_NUM_INTR                  : integer              := 2;  constant USER_INTR_CAPTURE_MODE         : integer              := 5;  constant INTR_IP_INTR_MODE_ARRAY        : INTEGER_ARRAY_TYPE   :=     (      0  => USER_INTR_CAPTURE_MODE,      1  => USER_INTR_CAPTURE_MODE     );  ------------------------------------------  -- Device priority encoder feature inclusion/omission  -- true  = include priority encoder  -- false = omit priority encoder  ------------------------------------------  constant INTR_INCLUDE_DEV_PENCODER      : boolean              := false;  ------------------------------------------  -- Device ISC feature inclusion/omission  -- true  = include device ISC  -- false = omit device ISC  ------------------------------------------  constant INTR_INCLUDE_DEV_ISC           : boolean              := false;  ------------------------------------------  -- Index for CS/CE  ------------------------------------------  constant USER_SLV_CS_INDEX              : integer              := 0;  constant USER_SLV_CE_INDEX              : integer              := calc_start_ce_index(IPIF_ARD_NUM_CE_ARRAY, USER_SLV_CS_INDEX);  constant INTR_CS_INDEX                  : integer              := 1;  constant INTR_CE_INDEX                  : integer              := calc_start_ce_index(IPIF_ARD_NUM_CE_ARRAY, INTR_CS_INDEX);  constant USER_CE_INDEX                  : integer              := USER_SLV_CE_INDEX;  ------------------------------------------  -- IP Interconnect (IPIC) signal declarations  ------------------------------------------  signal ipif_Bus2IP_Clk                : std_logic;  signal ipif_Bus2IP_Reset              : std_logic;  signal ipif_IP2Bus_Data               : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);  signal ipif_IP2Bus_WrAck              : std_logic;  signal ipif_IP2Bus_RdAck              : std_logic;  signal ipif_IP2Bus_Error              : std_logic;  signal ipif_Bus2IP_Addr               : std_logic_vector(0 to C_SPLB_AWIDTH-1);  signal ipif_Bus2IP_Data               : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);  signal ipif_Bus2IP_RNW                : std_logic;  signal ipif_Bus2IP_BE                 : std_logic_vector(0 to IPIF_SLV_DWIDTH/8-1);  signal ipif_Bus2IP_CS                 : std_logic_vector(0 to ((IPIF_ARD_ADDR_RANGE_ARRAY'length)/2)-1);  signal ipif_Bus2IP_RdCE               : std_logic_vector(0 to calc_num_ce(IPIF_ARD_NUM_CE_ARRAY)-1);  signal ipif_Bus2IP_WrCE               : std_logic_vector(0 to calc_num_ce(IPIF_ARD_NUM_CE_ARRAY)-1);  signal intr_IPIF_Reg_Interrupts       : std_logic_vector(0 to 1);  signal intr_IPIF_Lvl_Interrupts       : std_logic_vector(0 to INTR_NUM_IPIF_IRPT_SRC-1);  signal intr_IP2Bus_Data               : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);  signal intr_IP2Bus_WrAck              : std_logic;  signal intr_IP2Bus_RdAck              : std_logic;  signal intr_IP2Bus_Error              : std_logic;  signal user_Bus2IP_RdCE               : std_logic_vector(0 to USER_NUM_REG-1);  signal user_Bus2IP_WrCE               : std_logic_vector(0 to USER_NUM_REG-1);  signal user_IP2Bus_Data               : std_logic_vector(0 to USER_SLV_DWIDTH-1);  signal user_IP2Bus_RdAck              : std_logic;  signal user_IP2Bus_WrAck              : std_logic;  signal user_IP2Bus_Error              : std_logic;  signal user_IP2Bus_IntrEvent          : std_logic_vector(0 to USER_NUM_INTR-1);begin  ------------------------------------------  -- instantiate plbv46_slave_single  ------------------------------------------  PLBV46_SLAVE_SINGLE_I : entity plbv46_slave_single_v1_00_a.plbv46_slave_single    generic map    (      C_ARD_ADDR_RANGE_ARRAY         => IPIF_ARD_ADDR_RANGE_ARRAY,      C_ARD_NUM_CE_ARRAY             => IPIF_ARD_NUM_CE_ARRAY,      C_SPLB_P2P                     => C_SPLB_P2P,      C_BUS2CORE_CLK_RATIO           => IPIF_BUS2CORE_CLK_RATIO,      C_SPLB_MID_WIDTH               => C_SPLB_MID_WIDTH,      C_SPLB_NUM_MASTERS             => C_SPLB_NUM_MASTERS,      C_SPLB_AWIDTH                  => C_SPLB_AWIDTH,      C_SPLB_DWIDTH                  => C_SPLB_DWIDTH,      C_SIPIF_DWIDTH                 => IPIF_SLV_DWIDTH,      C_FAMILY                       => C_FAMILY    )    port map    (      SPLB_Clk                       => SPLB_Clk,      SPLB_Rst                       => SPLB_Rst,      PLB_ABus                       => PLB_ABus,      PLB_UABus                      => PLB_UABus,      PLB_PAValid                    => PLB_PAValid,      PLB_SAValid                    => PLB_SAValid,      PLB_rdPrim                     => PLB_rdPrim,      PLB_wrPrim                     => PLB_wrPrim,      PLB_masterID                   => PLB_masterID,      PLB_abort                      => PLB_abort,      PLB_busLock                    => PLB_busLock,      PLB_RNW                        => PLB_RNW,      PLB_BE                         => PLB_BE,      PLB_MSize                      => PLB_MSize,      PLB_size                       => PLB_size,      PLB_type                       => PLB_type,      PLB_lockErr                    => PLB_lockErr,      PLB_wrDBus                     => PLB_wrDBus,      PLB_wrBurst                    => PLB_wrBurst,      PLB_rdBurst                    => PLB_rdBurst,      PLB_wrPendReq                  => PLB_wrPendReq,      PLB_rdPendReq                  => PLB_rdPendReq,      PLB_wrPendPri                  => PLB_wrPendPri,      PLB_rdPendPri                  => PLB_rdPendPri,      PLB_reqPri                     => PLB_reqPri,      PLB_TAttribute                 => PLB_TAttribute,      Sl_addrAck                     => Sl_addrAck,      Sl_SSize                       => Sl_SSize,      Sl_wait                        => Sl_wait,      Sl_rearbitrate                 => Sl_rearbitrate,      Sl_wrDAck                      => Sl_wrDAck,      Sl_wrComp                      => Sl_wrComp,      Sl_wrBTerm                     => Sl_wrBTerm,      Sl_rdDBus                      => Sl_rdDBus,      Sl_rdWdAddr                    => Sl_rdWdAddr,      Sl_rdDAck                      => Sl_rdDAck,      Sl_rdComp                      => Sl_rdComp,      Sl_rdBTerm                     => Sl_rdBTerm,      Sl_MBusy                       => Sl_MBusy,      Sl_MWrErr                      => Sl_MWrErr,      Sl_MRdErr                      => Sl_MRdErr,      Sl_MIRQ                        => Sl_MIRQ,      Bus2IP_Clk                     => ipif_Bus2IP_Clk,      Bus2IP_Reset                   => ipif_Bus2IP_Reset,      IP2Bus_Data                    => ipif_IP2Bus_Data,      IP2Bus_WrAck                   => ipif_IP2Bus_WrAck,      IP2Bus_RdAck                   => ipif_IP2Bus_RdAck,      IP2Bus_Error                   => ipif_IP2Bus_Error,      Bus2IP_Addr                    => ipif_Bus2IP_Addr,      Bus2IP_Data                    => ipif_Bus2IP_Data,      Bus2IP_RNW                     => ipif_Bus2IP_RNW,      Bus2IP_BE                      => ipif_Bus2IP_BE,      Bus2IP_CS                      => ipif_Bus2IP_CS,      Bus2IP_RdCE                    => ipif_Bus2IP_RdCE,      Bus2IP_WrCE                    => ipif_Bus2IP_WrCE    );  ------------------------------------------  -- instantiate interrupt_control  ------------------------------------------  INTERRUPT_CONTROL_I : entity interrupt_control_v2_00_a.interrupt_control    generic map    (      C_NUM_CE                       => INTR_NUM_CE,      C_NUM_IPIF_IRPT_SRC            => INTR_NUM_IPIF_IRPT_SRC,      C_IP_INTR_MODE_ARRAY           => INTR_IP_INTR_MODE_ARRAY,      C_INCLUDE_DEV_PENCODER         => INTR_INCLUDE_DEV_PENCODER,      C_INCLUDE_DEV_ISC              => INTR_INCLUDE_DEV_ISC,      C_IPIF_DWIDTH                  => IPIF_SLV_DWIDTH    )    port map    (      Bus2IP_Clk                     => ipif_Bus2IP_Clk,      Bus2IP_Reset                   => ipif_Bus2IP_Reset,      Bus2IP_Data                    => ipif_Bus2IP_Data,      Bus2IP_BE                      => ipif_Bus2IP_BE,      Interrupt_RdCE                 => ipif_Bus2IP_RdCE(INTR_CE_INDEX to INTR_CE_INDEX+INTR_NUM_CE-1),      Interrupt_WrCE                 => ipif_Bus2IP_WrCE(INTR_CE_INDEX to INTR_CE_INDEX+INTR_NUM_CE-1),      IPIF_Reg_Interrupts            => intr_IPIF_Reg_Interrupts,      IPIF_Lvl_Interrupts            => intr_IPIF_Lvl_Interrupts,      IP2Bus_IntrEvent               => user_IP2Bus_IntrEvent,      Intr2Bus_DevIntr               => IP2INTC_Irpt,      Intr2Bus_DBus                  => intr_IP2Bus_Data,      Intr2Bus_WrAck                 => intr_IP2Bus_WrAck,      Intr2Bus_RdAck                 => intr_IP2Bus_RdAck,      Intr2Bus_Error                 => intr_IP2Bus_Error,      Intr2Bus_Retry                 => open,      Intr2Bus_ToutSup               => open    );  -- feed registered and level-pass-through interrupts into Device ISC if exists, otherwise ignored  intr_IPIF_Reg_Interrupts(0) <= '0';  intr_IPIF_Reg_Interrupts(1) <= '0';  intr_IPIF_Lvl_Interrupts(0) <= '0';  intr_IPIF_Lvl_Interrupts(1) <= '0';  intr_IPIF_Lvl_Interrupts(2) <= '0';  intr_IPIF_Lvl_Interrupts(3) <= '0';  ------------------------------------------  -- instantiate User Logic  ------------------------------------------  USER_LOGIC_I : entity plb_npi_vga_controller_v1_02_a.user_logic  generic map  (	-- MAP USER GENERICS BELOW THIS LINE ---------------	-- USER generics mapped here	  C_PI_ADDR_WIDTH => C_PI_ADDR_WIDTH,	  C_PI_DATA_WIDTH => C_PI_DATA_WIDTH,	  C_PI_BE_WIDTH   => C_PI_BE_WIDTH,	  C_PI_RDWDADDR_WIDTH => C_PI_RDWDADDR_WIDTH,	  C_NPI_PIXEL_CLK_RATIO => C_NPI_PIXEL_CLK_RATIO,	  C_USE_VGA_OUT => C_USE_VGA_OUT,	  C_PIXEL_CLK_GREATER_65MHZ => C_PIXEL_CLK_GREATER_65MHZ,	  -- MAP USER GENERICS ABOVE THIS LINE ---------------	  C_SLV_DWIDTH                   => USER_SLV_DWIDTH,	  C_NUM_REG                      => USER_NUM_REG,	  C_NUM_INTR                     => USER_NUM_INTR  )  port map  (	-- MAP USER PORTS BELOW THIS LINE ------------------	  -- USER ports mapped here	  NPI_clk => NPI_clk,	  NPI_rst => NPI_rst,	  -- VGA/TFT signals	  clk_pixel     => clk_pixel,	  tft_lcd_hsync => tft_lcd_hsync,	  tft_lcd_vsync => tft_lcd_vsync,	  tft_lcd_r     => tft_lcd_r,	  tft_lcd_g     => tft_lcd_g,	  tft_lcd_b     => tft_lcd_b,	  tft_lcd_data  => tft_lcd_data,	  tft_lcd_de    => tft_lcd_de,	  tft_lcd_clk_n => tft_lcd_clk_n,	  tft_lcd_clk_p => tft_lcd_clk_p,	  tft_lcd_reset => tft_lcd_reset,	  tft_lcd_sda   => tft_lcd_sda,	  tft_lcd_scl   => tft_lcd_scl,	  -- MPMC Port Interface - Bus is prefixed with XIL_NPI_ 	  XIL_NPI_Addr => XIL_NPI_Addr,	  XIL_NPI_AddrReq  => XIL_NPI_AddrReq,	  XIL_NPI_AddrAck => XIL_NPI_AddrAck,	  XIL_NPI_RNW => XIL_NPI_RNW,	  XIL_NPI_Size => XIL_NPI_Size,	  XIL_NPI_InitDone => XIL_NPI_InitDone,	  XIL_NPI_WrFIFO_Data => XIL_NPI_WrFIFO_Data,	  XIL_NPI_WrFIFO_BE => XIL_NPI_WrFIFO_BE,	  XIL_NPI_WrFIFO_Push => XIL_NPI_WrFIFO_Push,	  XIL_NPI_RdFIFO_Data => XIL_NPI_RdFIFO_Data,	  XIL_NPI_RdFIFO_Pop => XIL_NPI_RdFIFO_Pop,	  XIL_NPI_RdFIFO_RdWdAddr => XIL_NPI_RdFIFO_RdWdAddr,	  XIL_NPI_WrFIFO_AlmostFull => XIL_NPI_WrFIFO_AlmostFull,	  XIL_NPI_WrFIFO_Flush => XIL_NPI_WrFIFO_Flush,	  XIL_NPI_RdFIFO_Empty => XIL_NPI_RdFIFO_Empty,	  XIL_NPI_RdFIFO_Latency => XIL_NPI_RdFIFO_Latency,	  XIL_NPI_RdFIFO_Flush  => XIL_NPI_RdFIFO_Flush,	  -- MAP USER PORTS ABOVE THIS LINE ------------------	  Bus2IP_Clk                     => ipif_Bus2IP_Clk,	  Bus2IP_Reset                   => ipif_Bus2IP_Reset,	  Bus2IP_Data                    => ipif_Bus2IP_Data,	  Bus2IP_BE                      => ipif_Bus2IP_BE,	  Bus2IP_RdCE                    => user_Bus2IP_RdCE,	  Bus2IP_WrCE                    => user_Bus2IP_WrCE,	  IP2Bus_Data                    => user_IP2Bus_Data,	  IP2Bus_RdAck                   => user_IP2Bus_RdAck,	  IP2Bus_WrAck                   => user_IP2Bus_WrAck,	  IP2Bus_Error                   => user_IP2Bus_Error,	  IP2Bus_IntrEvent               => user_IP2Bus_IntrEvent  );  ------------------------------------------  -- connect internal signals  ------------------------------------------  IP2BUS_DATA_MUX_PROC : process( ipif_Bus2IP_CS, user_IP2Bus_Data, intr_IP2Bus_Data ) is  begin    case ipif_Bus2IP_CS is      when "10" => ipif_IP2Bus_Data <= user_IP2Bus_Data;      when "01" => ipif_IP2Bus_Data <= intr_IP2Bus_Data;      when others => ipif_IP2Bus_Data <= (others => '0');    end case;  end process IP2BUS_DATA_MUX_PROC;  ipif_IP2Bus_WrAck <= user_IP2Bus_WrAck or intr_IP2Bus_WrAck;  ipif_IP2Bus_RdAck <= user_IP2Bus_RdAck or intr_IP2Bus_RdAck;  ipif_IP2Bus_Error <= user_IP2Bus_Error or intr_IP2Bus_Error;  user_Bus2IP_RdCE <= ipif_Bus2IP_RdCE(USER_CE_INDEX to USER_CE_INDEX+USER_NUM_REG-1);  user_Bus2IP_WrCE <= ipif_Bus2IP_WrCE(USER_CE_INDEX to USER_CE_INDEX+USER_NUM_REG-1);end IMP;

⌨️ 快捷键说明

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