FPGA的51内核(全)

源代码在线查看: mc8051_alu_struc.vhd

软件大小: 436 K
上传用户: zupo2013
关键词: FPGA 51内核
下载地址: 免注册下载 普通下载 VIP

相关代码

				-------------------------------------------------------------------------------
				--                                                                           --
				--          X       X   XXXXXX    XXXXXX    XXXXXX    XXXXXX      X          --
				--          XX     XX  X      X  X      X  X      X  X           XX          --
				--          X X   X X  X         X      X  X      X  X          X X          --
				--          X  X X  X  X         X      X  X      X  X         X  X          --
				--          X   X   X  X          XXXXXX   X      X   XXXXXX      X          --
				--          X       X  X         X      X  X      X         X     X          --
				--          X       X  X         X      X  X      X         X     X          --
				--          X       X  X      X  X      X  X      X         X     X          --
				--          X       X   XXXXXX    XXXXXX    XXXXXX    XXXXXX      X          --
				--                                                                           --
				--                                                                           --
				--                       O R E G A N O   S Y S T E M S                       --
				--                                                                           --
				--                            Design & Consulting                            --
				--                                                                           --
				-------------------------------------------------------------------------------
				--                                                                           --
				--         Web:           http://www.oregano.at/                             --
				--                                                                           --
				--         Contact:       8051@oregano.at                                  --
				--                                                                           --
				-------------------------------------------------------------------------------
				--                                                                           --
				--  MC8051 - VHDL 8051 Microcontroller IP Core                               --
				--  Copyright (C) 2001 OREGANO SYSTEMS                                       --
				--                                                                           --
				--  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.1 of the License, or (at your option) any later version.       --
				--                                                                           --
				--  This library 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        --
				--  Lesser General Public License for more details.                          --
				--                                                                           --
				--  Full details of the license can be found in the file LGPL.TXT.           --
				--                                                                           --
				--  You should have received a copy of the GNU Lesser General Public         --
				--  License along with this library; if not, write to the Free Software      --
				--  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  --
				--                                                                           --
				-------------------------------------------------------------------------------
				--
				--
				--         Author:                 Roland H鰈ler
				--
				--         Filename:               mc8051_alu_struc.vhd
				--
				--         Date of Creation:       Mon Aug  9 12:14:48 1999
				--
				--         Version:                $Revision: 1.9 $
				--
				--         Date of Latest Version: $Date: 2006/09/07 10:02:11 $
				--
				--
				--         Description: Connects the units alumux, alucore, addsub_core,
				--                      comb_mltplr, comb_divider, and dcml_adjust together.
				--                      The whole design is made up of combinational logic.
				--
				--
				--
				--
				-------------------------------------------------------------------------------
				architecture struc of mc8051_alu is
				
				  signal s_alu_result   : std_logic_vector(DWIDTH-1 downto 0);
				  signal s_alu_new_cy   : std_logic_vector((DWIDTH-1)/4 downto 0);
				  signal s_alu_op_a     : std_logic_vector(DWIDTH-1 downto 0);
				  signal s_alu_op_b     : std_logic_vector(DWIDTH-1 downto 0);
				  signal s_alu_cmd      : std_logic_vector(3 downto 0);
				  signal s_dvdnd        : std_logic_vector(DWIDTH-1 downto 0);
				  signal s_dvsor        : std_logic_vector(DWIDTH-1 downto 0);
				  signal s_qutnt        : std_logic_vector(DWIDTH-1 downto 0);
				  signal s_rmndr        : std_logic_vector(DWIDTH-1 downto 0);
				  signal s_mltplcnd     : std_logic_vector(DWIDTH-1 downto 0);
				  signal s_mltplctr     : std_logic_vector(DWIDTH-1 downto 0);
				  signal s_product      : std_logic_vector((DWIDTH*2)-1 downto 0);
				  signal s_dcml_data    : std_logic_vector(DWIDTH-1 downto 0);
				  signal s_dcml_rslt    : std_logic_vector(DWIDTH-1 downto 0);
				  signal s_dcml_cy      : std_logic;
				  signal s_addsub_rslt  : std_logic_vector(DWIDTH-1 downto 0);
				  signal s_addsub_newcy : std_logic_vector((DWIDTH-1)/4 downto 0);
				  signal s_addsub_ov    : std_logic;
				  signal s_addsub_cy    : std_logic;
				  signal s_addsub       : std_logic;
				  signal s_addsub_opa   : std_logic_vector(DWIDTH-1 downto 0);
				  signal s_addsub_opb   : std_logic_vector(DWIDTH-1 downto 0);
				
				begin                 -- architecture structural
				
				  i_alumux : alumux
				    generic map (
				      DWIDTH => DWIDTH)
				    port map (
				      -- Primary I/Os of the ALU unit.
				      rom_data_i    => rom_data_i,
				      ram_data_i    => ram_data_i,
				      acc_i         => acc_i,
				      cmd_i         => cmd_i,
				      cy_i          => cy_i,
				      ov_i          => ov_i,
				      cy_o          => new_cy_o,
				      ov_o          => new_ov_o,
				      result_a_o    => result_a_o,
				      result_b_o    => result_b_o,
				      -- I/Os connecting the submodules.
				      result_i      => s_alu_result,
				      new_cy_i      => s_alu_new_cy,
				      addsub_rslt_i => s_addsub_rslt,
				      addsub_cy_i   => s_addsub_newcy,
				      addsub_ov_i   => s_addsub_ov,
				      op_a_o        => s_alu_op_a,
				      op_b_o        => s_alu_op_b,
				      alu_cmd_o     => s_alu_cmd,
				      opa_o         => s_addsub_opa,
				      opb_o         => s_addsub_opb,
				      addsub_o      => s_addsub,
				      addsub_cy_o   => s_addsub_cy,
				      dvdnd_o       => s_dvdnd,
				      dvsor_o       => s_dvsor,
				      qutnt_i       => s_qutnt,
				      rmndr_i       => s_rmndr,
				      mltplcnd_o    => s_mltplcnd,
				      mltplctr_o    => s_mltplctr,
				      product_i     => s_product,
				      dcml_data_o   => s_dcml_data,
				      dcml_data_i   => s_dcml_rslt,
				      dcml_cy_i     => s_dcml_cy);
				
				  i_alucore : alucore
				    generic map (
				      DWIDTH    => DWIDTH)
				    port map (
				      op_a_i    => s_alu_op_a,
				      op_b_i    => s_alu_op_b,
				      alu_cmd_i => s_alu_cmd,
				      cy_i      => cy_i,
				      cy_o      => s_alu_new_cy,
				      result_o  => s_alu_result);
				
				  i_addsub_core : addsub_core
				    generic map (DWIDTH => DWIDTH)
				    port map (opa_i    => s_addsub_opa,
				              opb_i    => s_addsub_opb,
				              addsub_i => s_addsub,
				              cy_i     => s_addsub_cy,
				              cy_o     => s_addsub_newcy,
				              ov_o     => s_addsub_ov,
				              rslt_o   => s_addsub_rslt);
				
				  gen_multiplier1 : if C_IMPL_MUL = 1 generate
				    i_comb_mltplr : comb_mltplr
				      generic map (
				        DWIDTH     => DWIDTH)
				      port map (
				        mltplcnd_i => s_mltplcnd,
				        mltplctr_i => s_mltplctr,
				        product_o  => s_product);
				  end generate gen_multiplier1;
				  gen_multiplier0 : if C_IMPL_MUL /= 1 generate
				    s_product  '0');
				  end generate gen_multiplier0;
				
				  gen_divider1  : if C_IMPL_DIV = 1 generate
				    i_comb_divider : comb_divider
				      generic map (
				        DWIDTH  => DWIDTH)
				      port map (
				        dvdnd_i => s_dvdnd,
				        dvsor_i => s_dvsor,
				        qutnt_o => s_qutnt,
				        rmndr_o => s_rmndr);
				  end generate gen_divider1;
				  gen_divider0  : if C_IMPL_DIV /= 1 generate
				    s_qutnt  '0');
				    s_rmndr  '0');
				  end generate gen_divider0;
				
				  gen_dcml_adj1  : if C_IMPL_DA = 1 generate
				    i_dcml_adjust : dcml_adjust
				      generic map (
				        DWIDTH => DWIDTH)
				      port map (
				        data_i => s_dcml_data,
				        cy_i   => cy_i,
				        data_o => s_dcml_rslt,
				        cy_o   => s_dcml_cy);
				  end generate gen_dcml_adj1;
				  gen_dcml_adj0  : if C_IMPL_DA /= 1 generate
				    s_dcml_rslt  '0');
				    s_dcml_cy   				  end generate gen_dcml_adj0;
				
				end struc;
							

相关资源