2

簡単な VHDL D フリップフロップ コードの C++ ラッパーを作成する方法を教えてください。コードは次のようになります。

entity DFF is  
  Port ( D : in std_logic;  
       CLK : in std_logic := '0';  
       Q : out std_logic;  
       QN : out std_logic);  
 end DFF;  

 architecture behv of DFF is  
   begin  
      process (CLK)  
         begin  
             if CLK'event and CLK = '1' then  
                 Q <= D;  
                 QN <= NOT D;  
             end if;  
     end process;  

動作を終了します。

前もってありがとう、
ミリンド。

4

2 に答える 2

0

これから始めることができます:

//Template Method pattern is used here to describe Port interface
class Port{
public:
    void behavior(){
         architecture_behavior();
    }
    void setD(bool input)(){
         doSetD(input);
    }
    void setCLK(bool clk){
         doSetCLK(clk);
    }
    bool state(){
        return doState();
    }
protected:
    virtual void architecture_behavior();
    virtual void doSetD(bool input);
    virtual void doSetCLK(bool clk);
    virtual void doState();
};

class Dflipflop : public Port{
public:
    Dflipflop(bool clk, bool d){
        CLK=clk;
        D=d;
    }
private:
    void architecture_behavior(){
        if(CLK=true){
            Q=D;
            QN=!Q;
        }
    }
    void doSetD(bool d){
        D=d;
    }
    void doSetCLK(bool clk){
        CLK=clk;
    }
    bool doState(){
        return Q;
    }
};

これはあなたが望むものにさらに近いかもしれません:

class Dflipflop2 : public Port{
public:
    Dflipflop2(bool clk, bool d){
        CLK=clk;
        D=d;
    }
    void architecture_behavior(bool d, bool clk){ // set state
        D=d;
        if(CLK=true && clk==false){ //set Q only if clock switches from 1 to 0
            Q=D;
            QN=!Q;
        }
        CLK=clk;
    }
 private:
    bool doState(){
        return Q;
    }
};
于 2013-04-30T17:17:38.987 に答える