2017-12-01 5 views
-2

私はこのコードで何が間違っているのか理解しようとしています。しかし、このファイルをコンパイルしようとすると、他のファイルはすべて動作します。アクティブVHDL:デザインユニットの宣言が期待される

# Error: COMP96_0019: file_io.vhd : (30, 6): Keyword 'begin' expected. 
# Error: COMP96_0016: file_io.vhd : (30, 11): Design unit declaration expected. 

エラーは次のセグメントのものです。

data : in std_logic_vector(63 downto 0); 
initial_addr:in std_logic_vector(3 downto 0); 
rst_iar_bar:in std_logic; 
clk:in std_logic; 
wb_data:out std_logic_vector(63 downto 0); 

----fetch 
instruction:out std_logic_vector(15 downto 0); 

----IDRD 
idrd_srcA,idrd_srcB,idrd_data:out std_logic_vector(63 downto 0); 
idrd_opcode,idrd_rd_addr,idrd_rs2_addr:out std_logic_vector(3 downto 0); 

idrd_addorsub,idrd_lv,idrd_alu_op,idrd_B_select,idrd_saturate,idrd_reg_wr:out std_logic; 
idrd_sel: out std_logic_vector(6 downto 0); 

----IFID 
ifid_opcode,ifid_rs1_addr,ifid_rs2_addr,ifid_rd_addr:out std_logic_vector(3 downto 0) 

以下は完全なファイルです。このエラーを修正する方法を理解する必要があります。私は教授が作成した例に従っていますが、私にとってはうまくいきません。

library IEEE; 
use IEEE.STD_LOGIC_1164.all; 
use std.textio.all;  
use ieee.numeric_std.all; 
use txt_util.all; 

entity fileio is 
end fileio; 


architecture fileio of fileio is 
signal data:std_logic_vector(63 downto 0); 
signal initial_addr,idrd_rs2_addr,idrd_rd_addr,idrd_opcode,ifid_opcode,ifid_rs1_addr,ifid_rs2_addr, 
ifid_rd_addr:std_logic_vector(3 downto 0); 
signal reset: std_logic; -- 

signal Instr_out: std_logic_vector(15 downto 0); 


signal clk: std_logic; -- 
signal idrd_addorsub,idrd_lv,idrd_alu_op,idrd_saturate,idrd_B_select,idrd_reg_wr:std_logic; 
signal instruction_in:std_logic_vector(15 downto 0); 
signal wb_data,idrd_srcA,idrd_srcB,idrd_data: std_logic_vector(63 downto 0); 
signal idrd_sel:std_logic_vector(6 downto 0); 
signal instruction:std_logic_vector(15 downto 0); 
constant period:time:=20ns;  


    data : in std_logic_vector(63 downto 0); 
    initial_addr:in std_logic_vector(3 downto 0); 
    rst_iar_bar:in std_logic; 
    clk:in std_logic; 
    wb_data:out std_logic_vector(63 downto 0); 

    ----fetch 
    instruction:out std_logic_vector(15 downto 0); 

    ----IDRD 
    idrd_srcA,idrd_srcB,idrd_data:out std_logic_vector(63 downto 0); 
    idrd_opcode,idrd_rd_addr,idrd_rs2_addr:out std_logic_vector(3 downto 0); 
    idrd_addorsub,idrd_lv,idrd_alu_op,idrd_B_select,idrd_saturate,idrd_reg_wr:out std_logic; 
    idrd_sel: out std_logic_vector(6 downto 0); 

    ----IFID 
    ifid_opcode,ifid_rs1_addr,ifid_rs2_addr,ifid_rd_addr:out std_logic_vector(3 downto 0); 




begin     
uut:cellliteunit 
port map(
    instruction=>instruction, 
    idrd_srcA=>idrd_srcA, 
    idrd_srcB=>idrd_srcB, 
    idrd_data=>idrd_data, 
    idrd_opcode=>idrd_opcode, 
    idrd_rd_addr=>idrd_rd_addr, 
    idrd_rs2_addr=>idrd_rs2_addr, 
    idrd_addorsub=>idrd_addorsub,idrd_lv=>idrd_lv,idrd_alu_op=>idrd_alu_op, 
    idrd_B_select=>idrd_B_select,idrd_saturate=>idrd_saturate,idrd_reg_wr=>idrd_reg_wr, 
    idrd_sel=>idrd_sel, 
    ifid_opcode=>ifid_opcode,ifid_rs1_addr=>ifid_rs1_addr, 
    ifid_rs2_addr=>ifid_rs2_addr,ifid_rd_addr=>ifid_rd_addr, 
    data=>data, 
    initial_addr=>initial_addr, 
    rst_iar_bar=>rst_iar_bar, 
    clk=>clk, 
    wb_data=>wb_data 
    );  

a:process  
begin 
    data<=X"FFFFFFFFFFFFFFFF"; 
    wait for 6*period; 

    data<=X"0000000100000000"; 

    wait; 
end process; 

b:process 
begin  
    initial_addr<=X"0"; 

    rst_iar_bar<='0', '1' after period; 
    wait; 
end process b; 

clock:process 
begin 
    clk<='1'; 
    for i in 0 to 100 loop 
     wait for period; 
     clk<=not clk; 
    end loop; 
    wait; 
end process clock; 


write_p:process 
    file outfile:text;   
    variable r:string(1 to 5); 
    variable s:string(1 to 5); 
    variable t:string(1 to 5); 

begin     
    for j in 1 to 15 loop 
     wait for 2*period; 
     case instruction(15 downto 12) is 
      ... 
      ... 
      ... 
     end case; 
    end loop; 
end fileio; 
+0

あなたが最後 – Ivan

+0

で 'for'ループの' end'が欠落しているそれはちょうど偶然それを切り取ら、元のコードであります! – Jkim045

+0

これはシンプルな誤植で、Stack Overflowの[オフトピック](https://stackoverflow.com/help/on-topic)です。 – JHBonarius

答えて

0

あなたの投稿に表示されたセグメントは、アーキテクチャに属していません。 data : in std_logic_vector(63 downto 0);などはポートの宣言です(方向指定子inに注目してください)。私はそれが実体宣言cellliteunitのコピー&ペーストエラーだと推測します。

また、このブロックの各識別子は、まったく同じタイプのarchtictureの信号に与えられていることにも注意してください。私はすべてのあなたの他のファイルなしでこれをテストすることはできませんが、私は、あなたは、単に行から29コンポーネント宣言は、あなたのアーキテクチャに欠けているEDIT

45にブロックを削除する必要があります推測します。 29行目から45行目のブロックがそのように見えます。これはおそらく、このようlooklingする必要があります。

component cellliteunit 
    port(
     data : in std_logic_vector(63 downto 0); 
     initial_addr:in std_logic_vector(3 downto 0); 
     [...] 
     ifid_opcode,ifid_rs1_addr,ifid_rs2_addr,ifid_rd_addr:out std_logic_vector(3 downto 0) 
    ); 
end component 
+0

私は、UUTのために:cellliteunit "コンポーネント宣言を見つけることができません"と言っています。 – Jkim045

+0

私は十分にコードを読んでいませんでした。私は自分の答えを編集しました。 – DLnd

関連する問題