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

📄 tg32pci.vhd

📁 vhdl 写的 PCI IP核程序
💻 VHD
📖 第 1 页 / 共 5 页
字号:
                      IOmem(ioaddr)(15 downto 0) := AD_Bus(15 downto 0);                  elsif C_BE_Bus = "0010" then                      IOmem(ioaddr)(31 downto 16) := AD_Bus(31 downto 16);                      IOmem(ioaddr)(7 downto 0) := AD_Bus(7 downto 0);                  elsif C_BE_Bus = "1010" then                      IOmem(ioaddr)(23 downto 16) := AD_Bus(23 downto 16);                      IOmem(ioaddr)(7 downto 0) := AD_Bus(7 downto 0);                  elsif C_BE_Bus = "0110" then                      IOmem(ioaddr)(31 downto 24) := AD_Bus(31 downto 24);                      IOmem(ioaddr)(7 downto 0) := AD_Bus(7 downto 0);                  elsif C_BE_Bus = "1110" then                      IOmem(ioaddr)(7 downto 0) := AD_Bus(7 downto 0);                  elsif C_BE_Bus(0) = '1' then                      report "Target device: Byte Enable word not valid !"                      severity Error;                  end if;               when "01"   =>                  if C_BE_Bus = "0001" then                       IOmem(ioaddr)(31 downto 8) := AD_Bus(31 downto 8);                  elsif C_BE_Bus = "1001" then                      IOmem(ioaddr)(23 downto 8) := AD_Bus(23 downto 8);                  elsif C_BE_Bus = "0101" then                      IOmem(ioaddr)(31 downto 24) := AD_Bus(31 downto 24);                      IOmem(ioaddr)(15 downto 8) := AD_Bus(15 downto 8);                  elsif C_BE_Bus = "1101" then                       IOmem(ioaddr)(15 downto 8) := AD_Bus(15 downto 8);                  elsif C_BE_Bus(1) = '1' then                      report "Target device: Byte Enable word not valid !"                      severity Error;                  end if;               when "10"   =>                  if C_BE_Bus = "0011" then                      IOmem(ioaddr)(31 downto 16) := AD_Bus(31 downto 16);                  elsif C_BE_Bus = "1011" then                      IOmem(ioaddr)(23 downto 16) := AD_Bus(23 downto 16);                  elsif C_BE_Bus(2) = '1' then                      report "Target device: Byte Enable word not valid !"                      severity Error;                  end if;               when "11"   =>                  if C_BE_Bus = "0111" then                      IOmem(ioaddr)(31 downto 24) := AD_Bus(31 downto 24);                  elsif C_BE_Bus(3) = '1' then                      report "Target device: Byte Enable word not valid !"                      severity Error;                  end if;               when others =>                  null;           end case;           ioaddr := ioaddr + 1;        elsif MemWrite = '1' then        -- Master writes to target memory space           case addr(1 downto 0) is                when "00"   =>  -- linear incrementing mode                    if C_BE_Bus = "0000" then                       Mem(memaddr) := AD_Bus;                    elsif C_BE_Bus = "0001" then                       Mem(memaddr)(31 downto 8) := AD_Bus(31 downto 8);                    elsif C_BE_Bus = "0010" then                       Mem(memaddr)(31 downto 16) := AD_Bus(31 downto 16);                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "0011" then                       Mem(memaddr)(31 downto 16) := AD_Bus(31 downto 16);                    elsif C_BE_Bus = "0100" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                       Mem(memaddr)(15 downto 0) := AD_Bus(15 downto 0);                    elsif C_BE_Bus = "0101" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                       Mem(memaddr)(15 downto 8) := AD_Bus(15 downto 8);                    elsif C_BE_Bus = "0110" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "0111" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                    elsif C_BE_Bus = "1000" then                       Mem(memaddr)(23 downto 0) := AD_Bus(23 downto 0);                    elsif C_BE_Bus = "1001" then                       Mem(memaddr)(23 downto 8) := AD_Bus(23 downto 8);                    elsif C_BE_Bus = "1010" then                       Mem(memaddr)(23 downto 16) := AD_Bus(23 downto 16);                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "1011" then                       Mem(memaddr)(23 downto 16) := AD_Bus(23 downto 16);                    elsif C_BE_Bus = "1100" then                       Mem(memaddr)(15 downto 0) := AD_Bus(15 downto 0);                    elsif C_BE_Bus = "1101" then                       Mem(memaddr)(15 downto 8) := AD_Bus(15 downto 8);                    elsif C_BE_Bus = "1110" then                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "1111" then                       report "Target device: Byte Enable word not valid !"                       severity Error;                    end if;                    memaddr := memaddr + 1;               when "01"   =>  -- reserved mode (disconnect after first data phase)                    if C_BE_Bus = "0000" then                       Mem(memaddr) := AD_Bus;                    elsif C_BE_Bus = "0001" then                       Mem(memaddr)(31 downto 8) := AD_Bus(31 downto 8);                    elsif C_BE_Bus = "0010" then                       Mem(memaddr)(31 downto 16) := AD_Bus(31 downto 16);                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "0011" then                       Mem(memaddr)(31 downto 16) := AD_Bus(31 downto 16);                    elsif C_BE_Bus = "0100" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                       Mem(memaddr)(15 downto 0) := AD_Bus(15 downto 0);                    elsif C_BE_Bus = "0101" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                       Mem(memaddr)(15 downto 8) := AD_Bus(15 downto 8);                    elsif C_BE_Bus = "0110" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "0111" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                    elsif C_BE_Bus = "1000" then                       Mem(memaddr)(23 downto 0) := AD_Bus(23 downto 0);                    elsif C_BE_Bus = "1001" then                       Mem(memaddr)(23 downto 8) := AD_Bus(23 downto 8);                    elsif C_BE_Bus = "1010" then                       Mem(memaddr)(23 downto 16) := AD_Bus(23 downto 16);                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "1011" then                       Mem(memaddr)(23 downto 16) := AD_Bus(23 downto 16);                    elsif C_BE_Bus = "1100" then                       Mem(memaddr)(15 downto 0) := AD_Bus(15 downto 0);                    elsif C_BE_Bus = "1101" then                       Mem(memaddr)(15 downto 8) := AD_Bus(15 downto 8);                    elsif C_BE_Bus = "1110" then                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "1111" then                       report "Target device: Byte Enable word not valid !"                       severity Error;                    end if;               when "10"   =>  -- cacheline wrap mode                    if C_BE_Bus = "0000" then                       Mem(memaddr) := AD_Bus;                    elsif C_BE_Bus = "0001" then                       Mem(memaddr)(31 downto 8) := AD_Bus(31 downto 8);                    elsif C_BE_Bus = "0010" then                       Mem(memaddr)(31 downto 16) := AD_Bus(31 downto 16);                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "0011" then                       Mem(memaddr)(31 downto 16) := AD_Bus(31 downto 16);                    elsif C_BE_Bus = "0100" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                       Mem(memaddr)(15 downto 0) := AD_Bus(15 downto 0);                    elsif C_BE_Bus = "0101" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                       Mem(memaddr)(15 downto 8) := AD_Bus(15 downto 8);                    elsif C_BE_Bus = "0110" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "0111" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                    elsif C_BE_Bus = "1000" then                       Mem(memaddr)(23 downto 0) := AD_Bus(23 downto 0);                    elsif C_BE_Bus = "1001" then                       Mem(memaddr)(23 downto 8) := AD_Bus(23 downto 8);                    elsif C_BE_Bus = "1010" then                       Mem(memaddr)(23 downto 16) := AD_Bus(23 downto 16);                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "1011" then                       Mem(memaddr)(23 downto 16) := AD_Bus(23 downto 16);                    elsif C_BE_Bus = "1100" then                       Mem(memaddr)(15 downto 0) := AD_Bus(15 downto 0);                    elsif C_BE_Bus = "1101" then                       Mem(memaddr)(15 downto 8) := AD_Bus(15 downto 8);                    elsif C_BE_Bus = "1110" then                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "1111" then                       report "Target device: Byte Enable word not valid !"                       severity Error;                    end if;                    memaddr := memaddr + 1;               when "11"   =>  -- reserved mode (disconnect after first data phase)                    if C_BE_Bus = "0000" then                       Mem(memaddr) := AD_Bus;                    elsif C_BE_Bus = "0001" then                       Mem(memaddr)(31 downto 8) := AD_Bus(31 downto 8);                    elsif C_BE_Bus = "0010" then                       Mem(memaddr)(31 downto 16) := AD_Bus(31 downto 16);                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "0011" then                       Mem(memaddr)(31 downto 16) := AD_Bus(31 downto 16);                    elsif C_BE_Bus = "0100" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                       Mem(memaddr)(15 downto 0) := AD_Bus(15 downto 0);                    elsif C_BE_Bus = "0101" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                       Mem(memaddr)(15 downto 8) := AD_Bus(15 downto 8);                    elsif C_BE_Bus = "0110" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "0111" then                       Mem(memaddr)(31 downto 24) := AD_Bus(31 downto 24);                    elsif C_BE_Bus = "1000" then                       Mem(memaddr)(23 downto 0) := AD_Bus(23 downto 0);                    elsif C_BE_Bus = "1001" then                       Mem(memaddr)(23 downto 8) := AD_Bus(23 downto 8);                    elsif C_BE_Bus = "1010" then                       Mem(memaddr)(23 downto 16) := AD_Bus(23 downto 16);                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "1011" then                       Mem(memaddr)(23 downto 16) := AD_Bus(23 downto 16);                    elsif C_BE_Bus = "1100" then                       Mem(memaddr)(15 downto 0) := AD_Bus(15 downto 0);                    elsif C_BE_Bus = "1101" then                       Mem(memaddr)(15 downto 8) := AD_Bus(15 downto 8);                    elsif C_BE_Bus = "1110" then                       Mem(memaddr)(7 downto 0) := AD_Bus(7 downto 0);                    elsif C_BE_Bus = "1111" then                       report "Target device: Byte Enable word not valid !"                       severity Error;                    end if;               when others =>                    null;           end case;        elsif CfgWrite = '1' then        -- Master writes to target configuration space           if C_BE_Bus = "0000" then              Cfgmem(cfgaddr) := AD_Bus;           elsif C_BE_Bus = "0001" then              Cfgmem(cfgaddr)(31 downto 8) := AD_Bus(31 downto 8);           elsif C_BE_Bus = "0010" then              Cfgmem(cfgaddr)(31 downto 16) := AD_Bus(31 downto 16);              Cfgmem(cfgaddr)(7 downto 0) := AD_Bus(7 downto 0);           elsif C_BE_Bus = "0011" then              Cfgmem(cfgaddr)(31 downto 16) := AD_Bus(31 downto 16);           elsif C_BE_Bus = "0100" then              Cfgmem(cfgaddr)(31 downto 24) := AD_Bus(31 downto 24);              Cfgmem(cfgaddr)(15 downto 0) := AD_Bus(15 downto 0);           elsif C_BE_Bus = "0101" then              Cfgmem(cfgaddr)(31 downto 24) := AD_Bus(31 downto 24);              Cfgmem(cfgaddr)(15 downto 8) := AD_Bus(15 downto 8);           elsif C_BE_Bus = "0110" then              Cfgmem(cfgaddr)(31 downto 24) := AD_Bus(31 downto 24);              Cfgmem(cfgaddr)(7 downto 0) := AD_Bus(7 downto 0);           elsif C_BE_Bus = "0111" then              Cfgmem(cfgaddr)(31 downto 24) := AD_Bus(31 downto 24);           elsif C_BE_Bus = "1000" then              Cfgmem(cfgaddr)(23 downto 0) := AD_Bus(23 downto 0);           elsif C_BE_Bus = "1001" then              Cfgmem(cfgaddr)(23 downto 8) := AD_Bus(23 downto 8);

⌨️ 快捷键说明

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