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

📄 bus_split.vhd

📁 Viertex 2 开发板的接口程序
💻 VHD
字号:
library ieee;
use ieee.std_logic_1164.all;


entity bus_split is
  
  generic (
    C_INPUT_WIDTH  : integer := 8;
    C_INPUT_BIDIR  : integer := 0;
    C_OUTPUT_BIDIR : integer := 0; 
    C_LOW_INDEX    : integer := 0;
    C_HIGH_INDEX   : integer := 4);

  port (
    Data_In        : in std_logic_vector(0 to C_INPUT_WIDTH-1);
    Data_Tri       : in std_logic_vector(0 to C_INPUT_WIDTH-1);
    Data_Out       : out std_logic_vector(0 to C_INPUT_WIDTH-1);

    Data_IO_In_I   : in std_logic_vector(0 to C_INPUT_WIDTH-1);
    Data_IO_In_T   : out std_logic_vector(0 to C_INPUT_WIDTH-1);
    Data_IO_In_O   : out std_logic_vector(0 to C_INPUT_WIDTH-1);
    
    Data_IO_Out_I  : in std_logic_vector(C_LOW_INDEX to C_HIGH_INDEX);  
    Data_IO_Out_T  : out std_logic_vector(C_LOW_INDEX to C_HIGH_INDEX);
    Data_IO_Out_O  : out std_logic_vector(C_LOW_INDEX to C_HIGH_INDEX);

    Split_In       : in std_logic_vector(C_LOW_INDEX to C_HIGH_INDEX);
    Split_Tri      : in std_logic_vector(C_LOW_INDEX to C_HIGH_INDEX);
    Split_Out      : out std_logic_vector(C_LOW_INDEX to C_HIGH_INDEX));

    
end bus_split;

architecture behavioral of bus_split is

begin 

  Not_Bidir: if C_INPUT_BIDIR = 0 and C_OUTPUT_BIDIR = 0 generate
    Split_Out <= Data_In(C_LOW_INDEX to C_HIGH_INDEX);
  end generate Not_Bidir;

  Input_Bidir: if C_INPUT_BIDIR = 1 generate
    Input_Bidir_Proc: process (Data_IO_In_I, Split_Tri, Split_In)
    begin
      -- Set default values
      Data_IO_In_T <= (others => '1');
      Data_IO_In_O <= (others => '1');

      Split_Out <= Data_IO_In_I(C_LOW_INDEX to C_HIGH_INDEX);
      Data_IO_In_T(C_LOW_INDEX to C_HIGH_INDEX) <= Split_Tri;
      Data_IO_In_O(C_LOW_INDEX to C_HIGH_INDEX) <= Split_In;
    end process Input_Bidir_Proc;
  end generate Input_Bidir;

  Output_Bidir: if C_OUTPUT_BIDIR = 1 generate
    Output_Bidir_Proc: process (Data_In, Data_Tri, Data_IO_Out_I)
    begin 
      -- Set default values
      Data_Out <= (others => '1');
      
      Data_IO_Out_O <= Data_In(C_LOW_INDEX to C_HIGH_INDEX);
      Data_IO_Out_T <= Data_Tri(C_LOW_INDEX to C_HIGH_INDEX);
      Data_Out(C_LOW_INDEX to C_HIGH_INDEX) <= Data_IO_Out_I;
    end process Output_Bidir_Proc;
  end generate Output_Bidir;

end behavioral;

⌨️ 快捷键说明

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