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

📄 lutabsolutemapping.java

📁 Java遗传算法库
💻 JAVA
字号:
/*
 * LUTAbsoluteMapping.java
 *
 * Created on 01 April 2002, 19:00
 */

package jaga.pj.circuits.fpgaft;

import jaga.BitSet;
import jaga.pj.circuits.*;

/** Genotype -> Phenotype mapping is: <p>
 * first 2^LUTInputs bits of block declare Look Up Table bits. <p>
 * other bitsPerVar * LUTInputs declare element from where inputs are taken, 
 * coding similar to jaga.pj.circuits.grippingeh.cnand.SimlatorCNANDCircuit.java
 *
 * @author  Michael Garvie
 * @version 
 */
public class LUTAbsoluteMapping implements CircuitMapping {

    /** Config */
    protected int nrIns, nrOuts, LUTInputs, bitsPerVar;
    protected ElementDelayModel delayModel;
        
    public LUTAbsoluteMapping(int ins,int outs,int bpv,int LUTins,ElementDelayModel delmod)
    {
        nrIns = ins;
        nrOuts = outs;
        LUTInputs = LUTins;
        bitsPerVar = bpv;
        delayModel = delmod;
    }
        
    public SimulatorLogicElement[][] map( BitSet genotype )
    {
        int numVars = 1 << bitsPerVar;
        int numLUTs = numVars - nrIns;
        int LUTSize = 1 << LUTInputs;
        
        SimulatorLogicElement[] inputs = new SimulatorLogicElement[ nrIns ];
        SimulatorLogicElement[] outputs = new SimulatorLogicElement[ nrOuts ];
        SimulatorFaultyDelayLE[] elements = new SimulatorFaultyDelayLE[ numVars ];
        
        int genPos = 0;
        int geneSize = LUTSize + LUTInputs * bitsPerVar;
        
        
        // 1. Init LUTs
        for( int ll = 0; ll < numLUTs; ll++ )
        {
            //elements[ ll ] = new SimulatorLUT( genotype.getChunk( genPos, LUTSize ), delayModel.getDelay() );
            elements[ ll ] = new SimulatorLUT( genotype.getBooleanChunk( genPos, LUTSize ), delayModel.getDelay() );
            genPos += geneSize;
        }
        
        // 2. Init inputs
        for( int il = 0; il < inputs.length; il++ )
        {
            elements[ numVars - il - 1 ] = new SimulatorFaultyDelayLE( 0 );
        }
        
        genPos = 0;
        // 3. Internal Connections
        for( int ll = 0; ll < numLUTs; ll++ )
        {
            SimulatorLogicElement[] connections = new SimulatorLogicElement[ LUTInputs ];
            genPos += LUTSize;
            for( int il = 0; il < LUTInputs; il++ )
            {
                int inpIndex = genotype.bitsToInt( genPos, genPos + bitsPerVar );
                connections[ il ] = elements[ inpIndex ];
                //addFwdLink( inpIndex, elements[ ll ] );
                genPos += bitsPerVar;
            }
            elements[ ll ].connect( connections );
        }
        // 4. Connect Inputs
        for( int il = 0; il < inputs.length; il++ )
        {
            inputs[ il ] = elements[ numVars - il - 1 ];
        }
        // 5. Connect Outputs
        for( int ol = 0; ol < outputs.length; ol++ )
        {
            outputs[ ol ] = elements[ ol ];
        }
        
        SimulatorFaultyDelayLE[] onlyUsedLUTs;
        onlyUsedLUTs = new SimulatorFaultyDelayLE[ numLUTs ];
        System.arraycopy( elements, 0, onlyUsedLUTs, 0, numLUTs );
        SimulatorLogicElement[][] rv = { inputs, outputs, onlyUsedLUTs };
        return rv;
    }
    
    public String toString()
    {
        String rv = "LUTAbsoluteMapping with:";
        rv += "\n      # inputs = " + nrIns;
        rv += "\n      # outputs = " + nrOuts;
        rv += "\n      Bits per Variable = " + bitsPerVar;
        rv += "\n      # LUT inputs = " + LUTInputs;
        rv += "\n      Delay Model: " + delayModel;
        return rv;
    }
 
    public void resetDelays( Object delayDef )
    {
        delayModel.set( delayDef );
    }
    
    public SimulatorLogicElement getElementFromAddress(SimulatorLogicElement[][] inoutels, int address)
    {
        int numVars = 1 << bitsPerVar;
        int numLUTs = numVars - nrIns;
        if( address < numLUTs )
        {
            return inoutels[ ELEMENTS ][ address ];
        }else
        {
            return inoutels[ INPUTS ][ numVars - 1 - address ];
        }
    }
    
}

⌨️ 快捷键说明

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