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

📄 pps_mem.vhd

📁 这是一个基于mips-I结构的处理器,32bit,冯诺依曼结构
💻 VHD
字号:
--------------------------------------------------------------------------------------                                                                                ----    Copyright (c) 2004, Hangouet Samuel                                         ----                  , Jan Sebastien                                               ----                  , Mouton Louis-Marie                                          ----                  , Schneider Olivier     all rights reserved                   ----                                                                                ----    This file is part of miniMIPS.                                              ----                                                                                ----    miniMIPS is free software; you can redistribute it and/or modify            ----    it under the terms of the GNU General Public License as published by        ----    the Free Software Foundation; either version 2 of the License, or           ----    (at your option) any later version.                                         ----                                                                                ----    miniMIPS is distributed in the hope that it will be useful,                 ----    but WITHOUT ANY WARRANTY; without even the implied warranty of              ----    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               ----    GNU General Public License for more details.                                ----                                                                                ----    You should have received a copy of the GNU General Public License           ----    along with miniMIPS; if not, write to the Free Software                     ----    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA   ----                                                                                ---------------------------------------------------------------------------------------- If you encountered any problem, please contact :----   lmouton@enserg.fr--   oschneid@enserg.fr--   shangoue@enserg.fr------------------------------------------------------------------------------                                                                      ----                                                                      ----             Processor miniMIPS : Memory access stage                 ----                                                                      ----                                                                      ----                                                                      ---- Authors : Hangouet  Samuel                                           ----           Jan       S閎astien                                        ----           Mouton    Louis-Marie                                      ----           Schneider Olivier                                          ----                                                                      ----                                                          june 2003   ----------------------------------------------------------------------------library IEEE;use IEEE.std_logic_1164.all;library work;use work.pack_mips.all;entity pps_mem isport(    clock : in std_logic;    reset : in std_logic;    stop_all : in std_logic;             -- Unconditionnal locking of the outputs    clear : in std_logic;                -- Clear the pipeline stage    -- Interface with the control bus    MTC_data : out bus32;                -- Data to write in memory    MTC_adr : out bus32;                 -- Address for memory    MTC_r_w : out std_logic;             -- Read/Write in memory    MTC_req : out std_logic;             -- Request access to memory    CTM_data : in bus32;                 -- Data from memory    -- Datas from Execution stage    EX_adr : in bus32;                   -- Instruction address    EX_data_ual : in bus32;              -- Result of alu operation    EX_adresse : in bus32;               -- Result of the calculation of the address    EX_adr_reg_dest : in adr_reg_type;   -- Destination register address for the result    EX_ecr_reg : in std_logic;           -- Effective writing of the result    EX_op_mem : in std_logic;            -- Memory operation needed    EX_r_w : in std_logic;               -- Type of memory operation (read or write)    EX_exc_cause : in bus32;             -- Potential exception cause    EX_level : in level_type;            -- Availability stage for the result for bypassing    EX_it_ok : in std_logic;             -- Allow hardware interruptions    -- Synchronous outputs for bypass unit    MEM_adr : out bus32;                 -- Instruction address    MEM_adr_reg_dest : out adr_reg_type; -- Destination register address    MEM_ecr_reg : out std_logic;         -- Writing of the destination register    MEM_data_ecr : out bus32;            -- Data to write (from alu or memory)    MEM_exc_cause : out bus32;           -- Potential exception cause    MEM_level : out level_type;          -- Availability stage for the result for bypassing    MEM_it_ok : out std_logic            -- Allow hardware interruptions);end pps_mem;architecture rtl of pps_mem is    signal tmp_data_ecr : bus32;         -- Selection of the data source (memory or alu)begin    -- Bus controler connexions    MTC_adr <= EX_adresse;              -- Connexion of the address    MTC_r_w <= EX_r_w;                  -- Connexion of R/W    MTC_data <= EX_data_ual;            -- Connexion of the data bus    MTC_req <= EX_op_mem and not clear; -- Connexion of the request (if there is no clearing of the pipeline)    -- Preselection of the data source for the outputs    tmp_data_ecr <= CTM_data when EX_op_mem = '1' else EX_data_ual;    -- Set the synchronous outputs    process (clock)    begin        if clock = '1' and clock'event then            if reset = '1' then                MEM_adr  <= (others => '0');                MEM_adr_reg_dest <= (others => '0');                MEM_ecr_reg <= '0';                MEM_data_ecr <= (others => '0');                MEM_exc_cause <= IT_NOEXC;                MEM_level <= LVL_DI;                MEM_it_ok <= '0';            elsif stop_all = '0' then                if clear = '1' then -- Clear the stage                    MEM_adr <= EX_adr;                    MEM_adr_reg_dest <= (others => '0');                    MEM_ecr_reg <= '0';                    MEM_data_ecr <= (others => '0');                    MEM_exc_cause <= IT_NOEXC;                    MEM_level <= LVL_DI;                    MEM_it_ok <= '0';                else -- Normal evolution                     MEM_adr <= EX_adr;                    MEM_adr_reg_dest <= EX_adr_reg_dest;                    MEM_ecr_reg <= EX_ecr_reg;                    MEM_data_ecr <= tmp_data_ecr;                    MEM_exc_cause <= EX_exc_cause;                    MEM_level <= EX_level;                    MEM_it_ok <= EX_it_ok;                end if;            end if;        end if;    end process;end rtl;

⌨️ 快捷键说明

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