اطلاعیه

Collapse
No announcement yet.

رجیستر4بیتی

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

    رجیستر4بیتی

    سلام.من تازه ISE رو شروع کردم.کدهام ارور زیاد دارن.
    کد ریجیستر 4 بیتی با قابلیت افزایش 1 :
    ----------------------------------------------------------------------------------
    -- Company:
    -- Engineer:
    --
    -- Create Date: 2323 11/27/2015
    -- Design Name:
    -- Module Name: hdl - Behavioral
    -- Project Name:
    -- Target Devices:
    -- Tool versions:
    -- Description:
    --
    -- Dependencies:
    --
    -- Revision:
    -- Revision 0.01 - File Created
    -- Additional Comments:
    --
    ----------------------------------------------------------------------------------
    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
    use IEEE.STD_LOGIC_UNSIGNED.ALL;
    use IEEE.STD_LOGIC_ARITH.ALL;
    -- Uncomment the following library declaration if using
    -- arithmetic functions with Signed or Unsigned values
    --use IEEE.NUMERIC_STD.ALL;

    -- Uncomment the following library declaration if instantiating
    -- any Xilinx primitives in this code.
    --library UNISIM;
    --use UNISIM.VComponents.all;

    entity hdl is
    Port ( clk : in STD_LOGIC;
    inc : in STD_LOGIC;
    dout : OUT STD_LOGIC_VECTOR (15 downto 0));
    end hdl;

    architecture Behavioral of hdl is
    signal Dout_sig: STD_LOGIC_VECTOR(15 downto 0);
    begin
    dout <= Dout_sig;
    process(Clk)
    begin
    if(clk='1' and clk'event)then
    if(inc='1&#039then
    Dout_sig<= Dout_sig+1;
    end if;
    end if;
    end process;
    end Behavioral;





    #2
    پاسخ : رجیستر4بیتی

    خروجی در ISIM به صورت : XXXXXXXXXXXXXXX قرمز میاد.

    دیدگاه


      #3
      پاسخ : رجیستر4بیتی

      آخه این چه طرز برنامه هست
      درست کپی پیست کن بشه کمکن کرد
      مهم نيست که کجايي هستي، چه رنگي هستي، به چه زبوني حرف مي زني. مهم اينه که انسان باشي.
      http://baranelec.mihanblog.com/
      آینده ای خواهم ساخت که گذشته ام در برابرش زانو بزند...

      دیدگاه


        #4
        پاسخ : رجیستر4بیتی

        vhdl module



        library IEEE;
        use IEEE.STD_LOGIC_1164.ALL;
        use IEEE.STD_LOGIC_UNSIGNED.ALL;
        use IEEE.STD_LOGIC_ARITH.ALL;
        entity hdl is
        Port ( clk : in STD_LOGIC;
        inc : in STD_LOGIC;
        dout : OUT STD_LOGIC_VECTOR (3 downto 0));
        end hdl;

        architecture Behavioral of hdl is
        signal Dout_sig: STD_LOGIC_VECTOR(3 downto 0);
        begin
        dout <= Dout_sig;
        process(Clk)
        begin
        if(clk='1' and clk'event)then
        if(inc='1&#039then
        Dout_sig<= Dout_sig+1;

        end if;
        end if;

        end process;
        dout <= Dout_sig;
        end Behavioral;

        دیدگاه


          #5
          پاسخ : رجیستر4بیتی

          دوست من برنامه vhdl میخای کپی کنی یک قسمت داره توی ویرایش به اسم کد .اونجا vhdl رو انتخاب کن برات یه چیزی شبیه دو تا پرانتز ظاهر میشه بعد بین اون کدتو کپی کن.ببین من الان کد تو رو اینجوری بذارم چقد فرق میکنه.... :agree:
          [code=vhdl]
          use IEEE.STD_LOGIC_1164.ALL;
          use IEEE.STD_LOGIC_UNSIGNED.ALL;
          use IEEE.STD_LOGIC_ARITH.ALL;
          entity hdl is
          Port ( clk : in STD_LOGIC;
          inc : in STD_LOGIC;
          dout : OUT STD_LOGIC_VECTOR (3 downto 0));
          end hdl;

          architecture Behavioral of hdl is
          signal Dout_sig: STD_LOGIC_VECTOR(3 downto 0);
          begin
          dout <= Dout_sig;
          process(Clk)
          begin
          if(clk='1' and clk'event)then
          if(inc='1&#039then
          Dout_sig<= Dout_sig+1;

          end if;
          end if;

          end process;
          dout <= Dout_sig;
          end Behavioral;
          [/code]

          دیدگاه


            #6
            پاسخ : رجیستر4بیتی

            خطای کدت هم یک دلیلش اینه که به رجیسترت مقدار اولیه ندادی. وقتی همینجوری تعریفش میکنی و میگی یکی اضافه شه اون بنده خدا از کجا بفهمه که مقدارش اون اول چند باشه :agree:
            مقدار اولیه هم بخای بدی اینجوریه
            [code=vhdl]signal Dout_sig: STD_LOGIC_VECTOR(3 downto 0):="0000";[/code]
            الان رجیستر صفر هستش و با هر کلاک یکی اضافه میشه

            دیدگاه


              #7
              پاسخ : رجیستر4بیتی

              ممنون حل شد

              دیدگاه


                #8
                پاسخ : رجیستر4بیتی

                نوشته اصلی توسط amin5659
                خطای کدت هم یک دلیلش اینه که به رجیسترت مقدار اولیه ندادی. وقتی همینجوری تعریفش میکنی و میگی یکی اضافه شه اون بنده خدا از کجا بفهمه که مقدارش اون اول چند باشه :agree:
                مقدار اولیه هم بخای بدی اینجوریه
                [code=vhdl]signal Dout_sig: STD_LOGIC_VECTOR(3 downto 0):="0000";[/code]
                الان رجیستر صفر هستش و با هر کلاک یکی اضافه میشه
                مقدار اولیه فقط در تست بنچ وجود داره و قابل سنتز نیست!!!!
                خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

                دیدگاه


                  #9
                  پاسخ : رجیستر4بیتی

                  نوشته اصلی توسط sima.b
                  ممنون حل شد
                  شما چون سنتز عملیاتی نکردی فک میکنید حل شده.
                  کلا سیر نوشتنتون اشتباهه
                  خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

                  دیدگاه


                    #10
                    پاسخ : رجیستر4بیتی

                    نوشته اصلی توسط حمید نجفی
                    مقدار اولیه فقط در تست بنچ وجود داره و قابل سنتز نیست!!!!
                    منم این حرفو شنیده بودم ولی به نظرم ابزار سنتز ise این مقدار اولیه ها رو اعمال میکنه چون من خودم خیلی پروژه ی عملی رو بر اساس همین مقدار اولیه ها نوشتم و جواب داده.
                    به نظرم یه جوری خودش میاد این سیگنال های clear و pre set فلیپ فلاپ ها رو تنظیم میکنه که رجیستر ها مقدار اولیه ی دلخواه رو داشته باشن

                    دیدگاه

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