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

📄 proc.vhd

📁 宇航级微处理器LEON2 2.2 VHDL源代码,很难找的.
💻 VHD
字号:
------------------------------------------------------------------------------  This file is a part of the LEON VHDL model--  Copyright (C) 1999  European Space Agency (ESA)----  This library is free software; you can redistribute it and/or--  modify it under the terms of the GNU Lesser General Public--  License as published by the Free Software Foundation; either--  version 2 of the License, or (at your option) any later version.----  See the file COPYING.LGPL for the full details of the license.------------------------------------------------------------------------------- Entity: 	proc-- File:	proc.vhd-- Author:	Jiri Gaisler - ESA/ESTEC-- Description:	This unit contains the integer unit, cache memory,--		clock/reset generation and (optinally) FPU.-------------------------------------------------------------------------------- Version control:-- 11-9-1998:	First implemetation-- 26-9-1999:	Release 1.0------------------------------------------------------------------------------library IEEE;use IEEE.std_logic_1164.all;use work.target.all;use work.config.all;use work.iface.all;use work.amba.all;use work.fpulib.all;entity proc is  port (    rst    : in  std_logic;    clki   : out clkgen_in_type;    clko   : in  clkgen_out_type;    apbi   : in  apb_slv_in_type;    apbo   : out apb_slv_out_type;    ahbi   : in  ahb_mst_in_type;    ahbo   : out ahb_mst_out_type;    iui    : in  iu_in_type;    iuo    : out iu_out_type  );end; architecture rtl of proc iscomponent iuport (    rst    : in  std_logic;			-- Reset    clk    : in  clk_type;		    iclk   : in  clk_type;		    dclk   : in  clk_type;		    holdn  : in  std_logic;		    ici    : out icache_in_type;    ico    : in  icache_out_type;    dci    : out dcache_in_type;    dco    : in  dcache_out_type;    rfi    : out rf_in_type;			-- register-file input    rfo    : in  rf_out_type;			-- register-file output    fpui   : out fpu_in_type;    fpuo   : in  fpu_out_type;    iui    : in  iu_in_type;    iuo    : out iu_out_type;			-- system output    cpi    : out cp_in_type;			-- CP input    cpo    : in  cp_out_type;			-- CP output    fpi    : out cp_in_type;			-- FP input    fpo    : in  cp_out_type			-- FP output  );end component;component regfile  port (    clk   : in  clk_type;                       -- Clock    holdn : in  std_logic;    rfi   : in  rf_in_type;    rfo   : out rf_out_type  );end component;component cache  port (    rst   : in  std_logic;    clk   : in  clk_type;    ici   : in  icache_in_type;    ico   : out icache_out_type;    dci   : in  dcache_in_type;    dco   : out dcache_out_type;    mcii  : out memory_ic_in_type;    mcio  : in  memory_ic_out_type;    mcdi  : out memory_dc_in_type;    mcdo  : in  memory_dc_out_type;    fpuholdn : in  std_logic  );end component; component cpport (    rst    : in  std_logic;			-- Reset    clk    : in  clk_type;			-- main clock	    iuclk  : in  clk_type;			-- gated IU clock    holdn  : in  std_logic;			-- pipeline hold    cpi    : in  cp_in_type;    cpo    : out cp_out_type  );end component;component fpport (    rst    : in  std_logic;			-- Reset    clk    : in  clk_type;			-- main clock	    iuclk  : in  clk_type;			-- gated IU clock    holdn  : in  std_logic;			-- pipeline hold    xholdn : in  std_logic;			-- pipeline hold    cpi    : in  cp_in_type;    cpo    : out cp_out_type  );end component;component fp1euport (    rst    : in  std_logic;			-- Reset    clk    : in  clk_type;			-- main clock	    iuclk  : in  clk_type;			-- gated IU clock    holdn  : in  std_logic;			-- pipeline hold    xholdn : in  std_logic;			-- pipeline hold    cpi    : in  cp_in_type;    cpo    : out cp_out_type  );end component;component acache  port (    rst    : in  std_logic;    clk    : in  clk_type;    mcii   : in  memory_ic_in_type;    mcio   : out memory_ic_out_type;    mcdi   : in  memory_dc_in_type;    mcdo   : out memory_dc_out_type;    iui    : in  iu_in_type;    iuo    : in  iu_out_type;		    apbi   : in  apb_slv_in_type;    apbo   : out apb_slv_out_type;    ahbi   : in  ahb_mst_in_type;    ahbo   : out ahb_mst_out_type  );end component;signal ici : icache_in_type;signal ico : icache_out_type;signal dci : dcache_in_type;signal dco : dcache_out_type;signal rfi : rf_in_type;			-- register-file inputsignal rfo : rf_out_type;			-- register-file outputsignal fpui : fpu_in_type;signal fpuo : fpu_out_type;signal cpi, fpi : cp_in_type;signal cpo, fpo : cp_out_type;signal pholdn, xholdn : std_logic;signal mcii : memory_ic_in_type;signal mcio : memory_ic_out_type;signal mcdi : memory_dc_in_type;signal mcdo : memory_dc_out_type;signal iuol : iu_out_type;		 begin  clki.iholdn <= ico.hold;  clki.imdsn  <= ico.mds;  clki.dholdn <= dco.hold;  clki.dmdsn  <= dco.mds;  clki.fpuholdn <= fpui.fpuholdn and cpo.holdn and fpo.holdn;  pholdn <= fpui.fpuholdn and cpo.holdn and fpo.holdn;  xholdn <= cpo.holdn and dco.hold and ico.hold;  iuo <= iuol;-- processor core  iu0 : iu  port map (rst, clko.iuclk, clko.iclk, clko.dclk, clko.holdn, 		      ici, ico, dci, dco, rfi, rfo, fpui, fpuo, 			iui, iuol, cpi, cpo, fpi, fpo  );-- register file  regfile0 : regfile port map (clko.rfclk, clko.holdn, rfi, rfo);-- cache memory  c0 : cache port map (rst, clko.clk, ici, ico, dci, dco, mcii, mcio, 		       mcdi, mcdo, pholdn);  a0 : acache port map (rst, clko.clk, mcii, mcio, mcdi, mcdo, iui, iuol, 			apbi, apbo, ahbi, ahbo);-- FPU (optional)  fpopt : if FPEN and (FPTYPE = meiko) generate    fpu0 : fpu port map (    ss_clock   => clko.clk,    FpInst     => fpui.FpInst,     FpOp       => fpui.fpop,     FpLd       => fpui.FpLd,     Reset      => fpui.reset,     fprf_dout1 => fpui.fprf_dout1,     fprf_dout2 => fpui.fprf_dout2,     RoundingMode => fpui.RoundingMode,     FpBusy    => fpuo.FpBusy,    FracResult => fpuo.FracResult,    ExpResult  => fpuo.ExpResult,    SignResult => fpuo.SignResult,    SNnotDB    => fpuo.SNnotDB,    Excep      => fpuo.Excep,    ConditionCodes => fpuo.ConditionCodes,    ss_scan_mode => fpui.ss_scan_mode,    fp_ctl_scan_in => fpui.fp_ctl_scan_in,    fp_ctl_scan_out => fpuo.fp_ctl_scan_out   );  end generate;-- external floating-point co-processor (optional)  fpcopt : if (FPTYPE = fpc) generate--    fp0 : fp port map (rst, clko.clk, clko.iuclk, clko.holdn, xholdn, fpi, fpo);    fp0 : fp1eu port map (rst, clko.clk, clko.iuclk, clko.holdn, xholdn, fpi, fpo);  end generate;  nofpc : if (FPTYPE /= fpc) generate    fpo.holdn <= '1';    fpo.ldlock <= '0';    fpo.ccv <= '1';  end generate;-- co-processor (optional)  cpopt : if CPEN generate--    cp0 : cp port map (rst, clko.clk, clko.iuclk, clko.holdn, cpi, cpo);    cp0 : fp1eu port map (rst, clko.clk, clko.iuclk, clko.holdn, xholdn, cpi, cpo);  end generate;  nocp : if not CPEN generate    cpo.holdn <= '1';    cpo.ldlock <= '0';  end generate;end ;

⌨️ 快捷键说明

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