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

📄 dsp_module.vhd

📁 Xilinx软核microblaze源码(VHDL)版本7.10
💻 VHD
📖 第 1 页 / 共 2 页
字号:
        MASK                            => to_bitvector(C_MASK),         -- [bit_vector]        MREG                            => C_M_REG,          -- [integer]        MULTCARRYINREG                  => 0,                -- [integer]        OPMODEREG                       => 0,                -- [integer]        PATTERN                         => to_bitvector(C_PATTERN),      -- [bit_vector]        PREG                            => C_P_REG,          -- [integer]        SEL_MASK                        => "MASK",           -- [string]        SEL_PATTERN                     => "PATTERN",        -- [string]        SEL_ROUNDING_MASK               => "SEL_MASK",       -- [string]        USE_MULT                        => LEGACY_MODE,      -- [string]        USE_PATTERN_DETECT              => C_USE_PATTERN,    -- [string]        USE_SIMD                        => "ONE48")          -- [string]      port map (        ACOUT          => open,         -- [out std_logic_vector(29 downto 0)]        BCOUT          => open,         -- [out std_logic_vector(17 downto 0)]        CARRYCASCOUT   => open,         -- [out std_ulogic]        CARRYOUT       => open,         -- [out std_logic_vector(3 downto 0)]        MULTSIGNOUT    => open,         -- [out std_ulogic]        OVERFLOW       => open,         -- [out std_ulogic]        P              => P,            -- [out std_logic_vector(47 downto 0)]        PATTERNBDETECT => open,         -- [out std_ulogic]        PATTERNDETECT  => DETECT,       -- [out std_ulogic]        PCOUT          => PCOUT,        -- [out std_logic_vector(47 downto 0)]        UNDERFLOW      => open,         -- [out std_ulogic]        A             => A1,            -- [in  std_logic_vector(29 downto 0)]        ACIN          => zero30,        -- [in  std_logic_vector(29 downto 0)]        ALUMODE       => zero4,         -- [in  std_logic_vector(3 downto 0)]        B             => B,             -- [in  std_logic_vector(17 downto 0)]        BCIN          => zero18,        -- [in  std_logic_vector(17 downto 0)]        C             => C,             -- [in  std_logic_vector(47 downto 0)]        CARRYCASCIN   => '0',           -- [in  std_ulogic]        CARRYIN       => '0',           -- [in  std_ulogic]        CARRYINSEL    => zero3,         -- [in  std_logic_vector(2 downto 0)]        CEA1          => ab_ce_i,       -- [in  std_ulogic]        CEA2          => ab_ce2_i,      -- [in  std_ulogic]        CEALUMODE     => '0',           -- [in  std_ulogic]        CEB1          => ab_ce_i,       -- [in  std_ulogic]        CEB2          => ab_ce2_i,      -- [in  std_ulogic]        CEC           => '0',           -- [in  std_ulogic]        CECARRYIN     => '0',           -- [in  std_ulogic]        CECTRL        => '0',           -- [in  std_ulogic]        CEM           => m_ce_i,        -- [in  std_ulogic]        CEMULTCARRYIN => '0',           -- [in  std_ulogic]        CEP           => p_ce_i,        -- [in  std_ulogic]        CLK           => CLK,           -- [in  std_ulogic]        MULTSIGNIN    => '0',           -- [in  std_ulogic]        OPMODE        => OpMode,        -- [in  std_logic_vector(6 downto 0)]        PCIN          => PCIN,          -- [in  std_logic_vector(47 downto 0)]        RSTA          => '0',           -- [in  std_ulogic]        RSTALLCARRYIN => '0',           -- [in  std_ulogic]        RSTALUMODE    => '0',           -- [in  std_ulogic]        RSTB          => '0',           -- [in  std_ulogic]        RSTC          => '0',           -- [in  std_ulogic]        RSTCTRL       => '0',           -- [in  std_ulogic]        RSTM          => Reset_M,       -- [in  std_ulogic]        RSTP          => Reset_P);      -- [in std_ulogic]  end generate Using_Virtex5;  Using_Spartan3ADSP : if (C_TARGET = spartan3Adsp) generate    subtype virtex_opmode is std_logic_vector(0 to 6);    subtype s3adsp_opmode is std_logic_vector(0 to 7);        function convert_s3adsp_opmode(v_op : virtex_opmode) return s3adsp_opmode is    begin  -- function convert_s3adsp_opmode            case v_op is        when "0000101" => return "00000001";  -- AxB        when "0010101" => return "00000101";  -- PCIn + AxB        when "1010101" => return "00001101";  -- (PCIN >> 17) + AxB        when "0001100" => return "00000111";  -- PCIn + C  (for S3ADSP C=D:A:B)        when others    => return "00000000";      end case;    end function convert_s3adsp_opmode;    constant s3_opmode : s3adsp_opmode := convert_s3adsp_opmode(C_OpMode);      begin    Need_to_shift_P_in_fabric : if (C_OpMode = "1010101") generate      signal pcin_shifted : std_logic_vector(0 to 47);    begin      pcin_shifted(0 to 16)  <= (others => P_Copy(0));      pcin_shifted(17 to 47) <= P_Copy(0 to 30);            DSP48A_I1 : DSP48A      generic map (        A0REG      => C_AB_REG,         -- [integer]        A1REG      => 0,                -- [integer]        B0REG      => C_AB_REG,         -- [integer]        B1REG      => 0,                -- [integer]        CARRYINREG => 0,                -- [integer]        CARRYINSEL => "OPMODE5",        -- [string]        CREG       => 0,                -- [integer]        DREG       => 0,                -- [integer]        MREG       => C_M_REG,          -- [integer]        OPMODEREG  => 0,                -- [integer]        PREG       => C_P_REG,          -- [integer]        RSTTYPE    => "SYNC")           -- [string]      port map (        BCOUT    => open,               -- [out std_logic_vector(17 downto 0)]        CARRYOUT => open,               -- [out std_ulogic]        P        => P,                  -- [out std_logic_vector(47 downto 0)]        PCOUT    => PCOUT,              -- [out std_logic_vector(47 downto 0)]        A => A,  -- [in  std_logic_vector(17 downto 0)]        B => B,  -- [in  std_logic_vector(17 downto 0)]        C          => pcin_shifted,     -- [in  std_logic_vector(47 downto 0)]        CARRYIN    => '0',              -- [in  std_ulogic]        CEA        => ab_ce2_i,         -- [in  std_ulogic]        CEB        => ab_ce2_i,         -- [in  std_ulogic]        CEC        => '0',              -- [in  std_ulogic]        CECARRYIN  => '0',              -- [in  std_ulogic]        CED        => '0',              -- [in  std_ulogic]        CEM        => m_ce_i,           -- [in  std_ulogic]        CEOPMODE   => '0',              -- [in  std_ulogic]        CEP        => p_ce_i,           -- [in  std_ulogic]        CLK        => CLK,              -- [in  std_ulogic]        D          => zero18,           -- [in  std_logic_vector(17 downto 0)]        OPMODE     => s3_opmode,        -- [in  std_logic_vector(7 downto 0)]        PCIN       => (others => '0'),  -- [in  std_logic_vector(47 downto 0)]        RSTA       => '0',              -- [in  std_ulogic]        RSTB       => '0',              -- [in  std_ulogic]        RSTC       => '0',              -- [in  std_ulogic]        RSTCARRYIN => '0',              -- [in  std_ulogic]        RSTD       => '0',              -- [in  std_ulogic]        RSTM       => Reset_M,          -- [in  std_ulogic]        RSTOPMODE  => '0',              -- [in  std_ulogic]        RSTP       => Reset_P);         -- [in std_ulogic]          end generate Need_to_shift_P_in_fabric;    P_plus_C_Mode: if (C_OpMode = "0001100") generate      signal new_C : std_logic_vector(0 to 17);    begin      new_C <= "000000" & C(0 to 11);      DSP48A_I1 : DSP48A      generic map (        A0REG      => C_AB_REG,         -- [integer]        A1REG      => 0,                -- [integer]        B0REG      => C_AB_REG,         -- [integer]        B1REG      => 0,                -- [integer]        CARRYINREG => 0,                -- [integer]        CARRYINSEL => "OPMODE5",        -- [string]        CREG       => 0,                -- [integer]        DREG       => 0,                -- [integer]        MREG       => C_M_REG,          -- [integer]        OPMODEREG  => 0,                -- [integer]        PREG       => C_P_REG,          -- [integer]        RSTTYPE    => "SYNC")           -- [string]      port map (        BCOUT    => open,               -- [out std_logic_vector(17 downto 0)]        CARRYOUT => open,               -- [out std_ulogic]        P        => P,                  -- [out std_logic_vector(47 downto 0)]        PCOUT    => PCOUT,              -- [out std_logic_vector(47 downto 0)]        A => C(12 to 29),  -- [in  std_logic_vector(17 downto 0)]        B => C(30 to 47),  -- [in  std_logic_vector(17 downto 0)]        C          => zero48,                -- [in  std_logic_vector(47 downto 0)]        CARRYIN    => '0',              -- [in  std_ulogic]        CEA        => ab_ce2_i,         -- [in  std_ulogic]        CEB        => ab_ce2_i,         -- [in  std_ulogic]        CEC        => '0',              -- [in  std_ulogic]        CECARRYIN  => '0',              -- [in  std_ulogic]        CED        => '0',              -- [in  std_ulogic]        CEM        => m_ce_i,           -- [in  std_ulogic]        CEOPMODE   => '0',              -- [in  std_ulogic]        CEP        => p_ce_i,           -- [in  std_ulogic]        CLK        => CLK,              -- [in  std_ulogic]        D          => new_C,            -- [in  std_logic_vector(17 downto 0)]        OPMODE     => s3_opmode,        -- [in  std_logic_vector(7 downto 0)]        PCIN       => PCIN,             -- [in  std_logic_vector(47 downto 0)]        RSTA       => '0',              -- [in  std_ulogic]        RSTB       => '0',              -- [in  std_ulogic]        RSTC       => '0',              -- [in  std_ulogic]        RSTCARRYIN => '0',              -- [in  std_ulogic]        RSTD       => '0',              -- [in  std_ulogic]        RSTM       => Reset_M,          -- [in  std_ulogic]        RSTOPMODE  => '0',              -- [in  std_ulogic]        RSTP       => Reset_P);         -- [in std_ulogic]          end generate P_plus_C_Mode;    Normal_in_fabric : if (C_OpMode /= "1010101") and (C_OpMode /= "0001100") generate      DSP48A_I1 : DSP48A      generic map (        A0REG      => C_AB_REG,         -- [integer]        A1REG      => 0,                -- [integer]        B0REG      => C_AB_REG,         -- [integer]        B1REG      => 0,                -- [integer]        CARRYINREG => 0,                -- [integer]        CARRYINSEL => "OPMODE5",        -- [string]        CREG       => 0,                -- [integer]        DREG       => 0,                -- [integer]        MREG       => C_M_REG,          -- [integer]        OPMODEREG  => 0,                -- [integer]        PREG       => C_P_REG,          -- [integer]        RSTTYPE    => "SYNC")           -- [string]      port map (        BCOUT    => open,               -- [out std_logic_vector(17 downto 0)]        CARRYOUT => open,               -- [out std_ulogic]        P        => P,                  -- [out std_logic_vector(47 downto 0)]        PCOUT    => PCOUT,              -- [out std_logic_vector(47 downto 0)]        A => A,  -- [in  std_logic_vector(17 downto 0)]        B => B,  -- [in  std_logic_vector(17 downto 0)]        C          => C,                -- [in  std_logic_vector(47 downto 0)]        CARRYIN    => '0',              -- [in  std_ulogic]        CEA        => ab_ce2_i,         -- [in  std_ulogic]        CEB        => ab_ce2_i,         -- [in  std_ulogic]        CEC        => '0',              -- [in  std_ulogic]        CECARRYIN  => '0',              -- [in  std_ulogic]        CED        => '0',              -- [in  std_ulogic]        CEM        => m_ce_i,           -- [in  std_ulogic]        CEOPMODE   => '0',              -- [in  std_ulogic]        CEP        => p_ce_i,           -- [in  std_ulogic]        CLK        => CLK,              -- [in  std_ulogic]        D          => zero18,           -- [in  std_logic_vector(17 downto 0)]        OPMODE     => s3_opmode,        -- [in  std_logic_vector(7 downto 0)]        PCIN       => PCIN,             -- [in  std_logic_vector(47 downto 0)]        RSTA       => '0',              -- [in  std_ulogic]        RSTB       => '0',              -- [in  std_ulogic]        RSTC       => '0',              -- [in  std_ulogic]        RSTCARRYIN => '0',              -- [in  std_ulogic]        RSTD       => '0',              -- [in  std_ulogic]        RSTM       => Reset_M,          -- [in  std_ulogic]        RSTOPMODE  => '0',              -- [in  std_ulogic]        RSTP       => Reset_P);         -- [in std_ulogic]    end generate Normal_in_fabric;  end generate Using_Spartan3ADSP;end architecture IMP;

⌨️ 快捷键说明

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