اطلاعیه

Collapse
No announcement yet.

مشکل این برنامه چیه ؟

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل این برنامه چیه ؟

    آقا من این برنامه را توی modelsim pe v10 نوشتم - این 3 تا پیغام خطا را نمیده ؟ هرکاری میکنم بازم همینا رو میگه - اگه کسی وارده خواهش می کنم کمک کنه - برنامه یه ضرب کننده هست -
    ------ and_2.vhd (component): ---------
    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    ---------------------------------------
    ENTITY and_2 IS
    PORT ( a, b: IN STD_LOGIC;
    y: OUT STD_LOGIC);
    END and_2;
    ---------------------------------------
    ARCHITECTURE and_2 OF and_2 IS
    BEGIN
    y <= a AND b;
    END and_2;
    ---------------------------------------
    ------ reg.vhd (component): -----------
    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    ---------------------------------------
    ENTITY reg IS
    PORT ( d, clk, rst: IN STD_LOGIC;
    q: OUT STD_LOGIC);
    END reg;
    ---------------------------------------
    ARCHITECTURE reg OF reg IS
    BEGIN
    PROCESS (clk, rst)
    BEGIN
    IF (rst='1&#039 THEN q<='0';
    ELSIF (clk'EVENT AND clk='1&#039 THEN q<=d;
    END IF;
    END PROCESS;
    END reg;
    ---------------------------------------
    ------ fau.vhd (component): -----------
    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    ---------------------------------------
    ENTITY fau IS
    PORT ( a, b, cin: IN STD_LOGIC;
    s, cout: OUT STD_LOGIC);
    END fau;
    ---------------------------------------
    ARCHITECTURE fau OF fau IS
    BEGIN
    s <= a XOR b XOR cin;
    cout <= (a AND b) OR (a AND cin) OR (b AND cin);
    END fau;
    ---------------------------------------
    ------ pipe.vhd (component): ----------
    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    USE work.my_components.all;
    ---------------------------------------
    ENTITY pipe IS
    PORT ( a, b, clk, rst: IN STD_LOGIC;
    q: OUT STD_LOGIC);
    END pipe;
    ---------------------------------------
    ARCHITECTURE structural OF pipe IS
    SIGNAL s, cin, cout: STD_LOGIC;
    BEGIN
    U1: COMPONENT fau PORT MAP (a, b, cin, s, cout);
    U2: COMPONENT reg PORT MAP (cout, clk, rst, cin);
    U3: COMPONENT reg PORT MAP (s, clk, rst, q);
    END structural;
    ---------------------------------------
    ----- my_components.vhd (package):-----
    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    ---------------------------------------
    PACKAGE my_components IS
    --------------------------
    COMPONENT and_2 IS
    PORT (a, b: IN STD_LOGIC; y: OUT STD_LOGIC);
    END COMPONENT;
    --------------------------
    COMPONENT fau IS
    PORT (a, b, cin: IN STD_LOGIC; s, cout: OUT STD_LOGIC);
    END COMPONENT;
    --------------------------
    COMPONENT reg IS
    PORT (d, clk, rst: IN STD_LOGIC; q: OUT STD_LOGIC);
    END COMPONENT;
    --------------------------
    COMPONENT pipe IS
    PORT (a, b, clk, rst: IN STD_LOGIC; q: OUT STD_LOGIC);
    END COMPONENT;
    --------------------------
    END my_components;
    ---------------------------------------
    ----- multiplier.vhd (project): -------
    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    USE work.my_components.all;
    ---------------------------------------
    ENTITY multiplier IS
    PORT ( a, clk, rst: IN STD_LOGIC;
    b: IN STD_LOGIC_VECTOR (3 DOWNTO 0);
    prod: OUT STD_LOGIC);
    END multiplier;
    ---------------------------------------
    ARCHITECTURE structural OF multiplier IS
    SIGNAL and_out, reg_out: STD_LOGIC_VECTOR (3 DOWNTO 0);
    BEGIN
    U1: COMPONENT and_2 PORT MAP (a, b(3), and_out(3));
    U2: COMPONENT and_2 PORT MAP (a, b(2), and_out(2));
    U3: COMPONENT and_2 PORT MAP (a, b(1), and_out(1));
    U4: COMPONENT and_2 PORT MAP (a, b(0), and_out(0));
    U5: COMPONENT reg PORT MAP (and_out(3), clk, rst,
    reg_out(3));
    U6: COMPONENT pipe PORT MAP (and_out(2), reg_out(3),
    clk, rst, reg_out(2));
    U7: COMPONENT pipe PORT MAP (and_out(1), reg_out(2),
    clk, rst, reg_out(1));
    U8: COMPONENT pipe PORT MAP (and_out(0), reg_out(1),
    clk, rst, reg_out(0));
    prod <= reg_out(0);
    END structural;
    ---------------------------------------

    اینم error هاشه :

    ** Error: (vcom-11) Could not find work.my_components.
    ** Error: C:/----------------/new 1.vhd(52): (vcom-1195) Cannot find expanded name "work.my_components".
    ** Error: C:/-----------------------/new 1.vhd(52): Unknown expanded name.
    ** Error: C:/---------------------------i/new 1.vhd(54): VHDL Compiler exiting

    مرسی

    #2
    پاسخ : مشکل این برنامه چیه ؟

    مشکل سر اینه که سنتزگز فایلی که استفاده کردید رو پیدا نمیکنه:
    USE work.my_components.all;
    برای معرفی باید فایلتون رو Include کنید تا سنتزگر اون فایل رو پیدا کنه. برای ise و quartus روشها متفاوته، گوگل کنید حتما پیدا میکنید که چطور یک فایل رو به پروژتون اضافه کنید.
    اسمایل، تومورو ویل بی وُرس

    دیدگاه


      #3
      پاسخ : مشکل این برنامه چیه ؟

      مرسی- ولی این یه پکیجه که توی خود همین برنامه به اسم my-component نوشته شده و با همین برنامه توی کتابخانه کاری فعلی work با هم کامپایل می شن - حالا دیگه جه نیازی به فایلش هست ؟ مگه پکیج نیست ؟ یعنی باید یکیج را جدا براش یه فایل درست کنم و کامپایلش کنم و بعد ازش توی این برنامه استفاده کنم ؟ ( منظورم پکیجیه که توی برنامه نوشته شده هست )

      دیدگاه


        #4
        پاسخ : مشکل این برنامه چیه ؟

        نوشته اصلی توسط mahemorad
        مرسی- ولی این یه پکیجه که توی خود همین برنامه به اسم my-component نوشته شده و با همین برنامه توی کتابخانه کاری فعلی work با هم کامپایل می شن - حالا دیگه جه نیازی به فایلش هست ؟ مگه پکیج نیست ؟ یعنی باید یکیج را جدا براش یه فایل درست کنم و کامپایلش کنم و بعد ازش توی این برنامه استفاده کنم ؟ ( منظورم پکیجیه که توی برنامه نوشته شده هست )
        بخاطر اینکه مشخص کردین که سنتزگر در working directory به دنبال my_components باشه، اونهم پیداش نکرده، پس باید فایلی رو که اون پکیج در اون تعریف شده رو در working directory تون قرار بدید یا اون رو در خود برنامه به root هایی که باید توشون دنبال فایلهابگرده اضافه کنید(include کنید).
        اسمایل، تومورو ویل بی وُرس

        دیدگاه


          #5
          پاسخ : مشکل این برنامه چیه ؟

          خیلی ساده می گم :
          مشکل اینجاست که هنوز کامپایلر fau و reg و(add_2 ) رو به عنوان component نمیشناسه (که بخواد از اونا به عنوان component استفاده کنه).
          باید fau و reg رو توی pipe,package به عنوان component تعریف کنی بد ازشون استفاده کنی.
          و در اخر هم باید add_2 و pipe رو باید توی multiplier,package به عنوان component تعریف کنی. :nice: :nice:

          دیدگاه

          لطفا صبر کنید...
          X