2017-04-17 5 views
0

3ビット[FRQ(2 downto 0)のうちの1つの符号付きビットを格納する2つのレジスタを追加しようとしています)]であり、他は7ビット[PHS(6 downto 0)] ...であり、これら2つのレジスタの加算を7ビットレジスタ[PHS(6 downto 0)]に格納しなければならない。あなたの役に立つジェスチャーに感謝します。エラー:/..integrator.vhd(47):near "process":(VHCOM-1576)IF VHDLを期待しています

私が手にエラーがあるが.. >>> エラー:/..integrator.vhd(47):近くに "プロセス":(VCOM-1576)ここではVHDL

が私のコードでのIF期待:

library IEEE; 
    use ieee.std_logic_1164.all; 
    use ieee.numeric_std.all; 
    --use ieee.std_logic_unsigned.all; 


    entity integ is 
     port (
      SMP_CLK : in std_logic; 
      RESET : in std_logic; 
      PHS : out signed (6 downto 0); 
      FRQ : in signed (2 downto 0) 
      ); 
    end integ; 

    architecture behaviour of integ is 

    signal sig_FRQ : signed(2 downto 0) := (others => '0'); 
    signal ext_FRQ : signed(6 downto 0) := (others => '0'); 
    signal sig_PHS : signed(6 downto 0) := (others => '0'); 
    signal temp_PHS : signed(6 downto 0) := (others => '0'); 

    begin 

    sig_FRQ <=FRQ; 
    temp_PHS <= sig_PHS; 
    --PHS <=signal_PHS; 
    process (SMP_CLK, RESET) 
    begin 

    if sig_FRQ(2)='1' then 
     ext_FRQ(6 downto 3) <= b"0000"; 
    else 
     ext_FRQ(6 downto 3) <= b"1111"; 
    --end if; 

    if RESET='1' then 
     sig_PHS <= b"0000000"; 


    elsif (rising_edge(SMP_CLK)) then 
    -- temp_PHS <= sig_PHS; 
      sig_PHS <= signed(ext_FRQ) + signed(temp_PHS); 



end process; 


sig_PHS => PHS; 

end behaviour; 

答えて

2

あなたはif-elsif-elseの文で混乱します。 ext_FRQ(6 downto 3) <= b"1111";の行の後にif-elsif-elseステートメントの次の条件は、ifではなく、elsifという単語で始まることを続行したい場合は--end if;とコメントしています。

そして最後にif-elsif-elseの構成を閉じる必要があります。

だけでなく、あなたが比較してそれを使用するので、あなたは次のような構成

if sig_FRQ(2)='1' then 
    ext_FRQ(6 downto 3) <= b"0000"; 
else 
    ext_FRQ(6 downto 3) <= b"1111"; 
end if; 

が間違って動作するセンシティビティリストに追加していない場合は、センシティビティリストにsig_FRQ信号を追加する必要がありますよう。あなたのケースでは

私はif-elsif-else構造の正しいバージョンがどのように見えるとしますあなたは出力に結果を代入したい場合、あなたは別のオペレータ

PHS <= sig_PHS;を使用する必要があり、最終的には

process (sig_FRQ) 
begin 
    if sig_FRQ(2)='1' then 
     ext_FRQ(6 downto 3) <= b"0000"; 
    else 
     ext_FRQ(6 downto 3) <= b"1111"; 
    end if; 
end process; 

process (SMP_CLK, RESET) 
    if RESET='1' then 
     sig_PHS <= b"0000000"; 
    elsif (rising_edge(SMP_CLK)) then 
     --temp_PHS <= sig_PHS; 
     sig_PHS <= ext_FRQ + temp_PHS; 
    end if; 
end process; 

+0

出力ポートの割り当てを変更する必要がありますが、あなたの提案は非常に役に立ちました。どうもありがとう。コードは正しく実行されていますが、適切な追加のためには修正が必要です。それをシミュレートした後、期待通りの結果が得られなかったのでとにかく、ありがとう。 –

+0

コードの目的は何ですか? – Roman

+0

期待どおりに動作しました!とにかく、私はデータ通信のためのFSMを実装しており、デジタル設計を使用した変調方式で使用されています。 –

関連する問題