ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 17
  1. #1
    2013/03/26
    122
    1

    برنامه نویسی به زبان VHDL

    دوستان ممکنه کد VHDL ابن دو برنامه رو اینجا قرار بدید.
    1)کد VHDL یک up-down cnt با قابلیت load را بنویسد
    2)کد وی اچ دی ال shift_register با قابلیت شیفت به چپ وراست را بنویسد
    .........
    ممنون میشم راهنمایی کنید
    خیلی لازم دارم
    صبرت که تمام شد نرو!
    "معرفت"
    تازه از آن لحظه آغاز می شود...
  2. #2
    2008/02/28
    109
    2

    پاسخ : برنامه نويسي به زبان VHDL

    کد کانتر معمولي:
    http://baranelec.mihanblog.com/post/38
    هرچي مي خواي ميتوني با استفاده از دستور when بهش اضافه کني.( بايد برنامه مورد نظرتو به قسمت when- else اضافه کني)
    ساده هست. تلاشتو بکن موفق مي شي :applause:
    مهم نيست که کجايي هستي، چه رنگي هستي، به چه زبوني حرف مي زني. مهم اينه که انسان باشي.
    http://baranelec.mihanblog.com/
    آینده ای خواهم ساخت که گذشته ام در برابرش زانو بزند...
  3. #3
    2013/03/26
    122
    1

    پاسخ : برنامه نویسی به زبان VHDL

    ممنون از راهنمایی تون ولی این برنامه رو قبل از اینکه شما پاسخ بدیدبا موفقیت انجامش دادم ولی با این حال بازم ممنونننننننن...
    البته یه راهنمایی ازتون در مورد نحوه نوشتن برنامه دیکدر 4x16 با دو تا دیکدر 3x8 داشتم....ممنون میشم راهنمایی کنید.
    صبرت که تمام شد نرو!
    "معرفت"
    تازه از آن لحظه آغاز می شود...
  4. #4
    2008/02/28
    109
    2

    پاسخ : برنامه نويسي به زبان VHDL

    1- هر کدام از ديکودرهاي 3به 8 به يک پايه enable نياز دارند که وقتي غير فعال باشد، خروجي صفر باشد.
    بيت پر ارزش يعني Y3 را به يکي از اين پايه ها وصل کن و not آن را به پايه ديگر.
    2- بقيه ورودي ها يعني Y0 تا Y2 را مستقيم به ورودي هر دو ديکدر وصل کن.

    با نوشتن يک برنامه ديکدر 3 به 8 و استفاده از port map به راحتي ميشه برنامه رو بنويسي.
    مهم نيست که کجايي هستي، چه رنگي هستي، به چه زبوني حرف مي زني. مهم اينه که انسان باشي.
    http://baranelec.mihanblog.com/
    آینده ای خواهم ساخت که گذشته ام در برابرش زانو بزند...
  5. #5
    2010/11/18
    34
    1

    پاسخ : برنامه نویسی به زبان VHDL

    سلام
    شما نيازي به نوشتن اين كدها نداريد ..
    ميتونيد از code example هاي خود ise استفاده كنيد. ( همون لامپ زرد رنگ بالاي صفحه)...
    پيشنهاد ديگه استفاده از ip core براي اين كاره..
    راه اول ساده تره ولي راه دوم از لحاظ پياده سازي بهينه تره ...
    واسه كار شما همون روش اول بهتره...
  6. #6
    2014/01/22
    7
    0

    یک سوال

    سلام به همه دوستان. 1 سوال کلی دارم.
    اگه تو یه برنامه 2 تا پروسس داشته باشی و بخای از خروجی
    یکی از اون ها به عنوان ورودی یکی دیگه استفاده کنی راهش چیه؟
    اگه از یک سیگنال برا هر دو استفاده کنی خطای مولتی سورس میده.
    اگه در هر پروسس متغیر تعریف کنی و بعد خروجی اولی رو بریزی تو یه سیگنال
    و تو پروسس دوم مقدار اون سیگنال رو بریزی تو متغیر پروسس دوم بازم مشکل پیش میاد.
    چون هر بار پروسس دوم اجرا میشه مقدار متغیرش دوباره میشه مقدار متغیر پروسس اول ...
    ممنون میشم راهنماییم کنید
  7. #7
    2008/02/28
    109
    2

    پاسخ : برنامه نويسي به زبان VHDL

    يک سگنال تعريف کن
    سيگنال تو پروسس اول تغيير مي کنه.
    از سيگنال تو پروسس دوم استفاده کن ولي تغييرش نده.
    به همين سادگي
    مهم نيست که کجايي هستي، چه رنگي هستي، به چه زبوني حرف مي زني. مهم اينه که انسان باشي.
    http://baranelec.mihanblog.com/
    آینده ای خواهم ساخت که گذشته ام در برابرش زانو بزند...
  8. #8
    2010/11/18
    34
    1

    پاسخ : برنامه نویسی به زبان VHDL

    با سلام
    شما زمانيكه يه سيگنال تعريف ميكني و توي پروسس بهش مقدار ميدي ، جاي ديگه اي نميتوني مقدار دهي مجدد انجام بدي، فقط ميتوني از اون سيگنال بخوني
    توي خوندن نبايد مشكلي باشه و حتي ميتوني اون سيگنال رو توي ليست حساسيت قرار بدي
    اما به سيگنال دو جاي مختلف نميتوني مقدار بدي.
    ياعلي
  9. #9
    2014/01/22
    7
    0

    پاسخ : برنامه نویسی به زبان VHDL

    ممنون از راهنماییتون.
    چیزی که میگید درسته اما برا کاری که من میخام جواب نمیده.
    من تو پروسس اول میخام 100 بیت دیتا که به صورت سریال و سنکرون
    (از طریق دو پین) به fpga وارد میشه رو بخون. برا این قیمت یه شیفت رجیستر نوشتم.
    بعد از 100 کلاک، میخام مقدار این رجیستر وارد متغیر پروسس دوم بشه و این دفعه با
    کلاک خود fpga به صورت سریال سنکرون ارسال بشه. بنابر این اون مقداری که باید تو پروسس دوم
    کپی بسه فقط یه بار باید ریخته بشه. اگه ما تو پروسس دوم بنویسم DataOut <= DataIn و بعد شیفت بدیم
    هر وقت کلاک بیاد مقدار DataOut برابر DataIn میشه. و هر چقدر شیفت بدی همش بیت اول ارسال میشه.
    چجوری میشه که مقدار دهی DataOut فقط 1 بار انجام بشه و بعد 100 بار شیفت پیدا کنه؟
    امیدوارم منظورم درست گفته باشم. با تشکر از راهنماییتون
  10. #10
    2007/10/14
    تهران
    1,335
    38

    پاسخ : برنامه نویسی به زبان VHDL

    این طور که من فهمیدم کاری که داری میکنی اینه که یک مقدار 100 بیتی به صورت سنکرون و با یک کلاک غیر از کلاک اصلی دریافت می کنی و بعد از کامل شدن دریافت داده (دریافت 100 بیت) این داده 100 بیتی رو میخوای در پروسسی با همون کلاک اصلی به یک پورت خروجی بفرستی.
    در پروسس اول احتمالاً یک شمارنده گذاشتی که تعداد بیت های دریافتی رو میشماره (با هر کلاک سنکرون با دیتا یکی زیاد میشه) و هر وقت به 100 رسید مقدار 100 بیت در شیفت رجیستر DataIn قرار گرفته و سیگنالی (مثلاً به اسم start) یک میشه که به پروسس دوم میفهمونه که حالا شروع به انتقال دیتا کن. مشکل اینه که اگه مقدار start رو بخوای توی همین پروسس در کلاک بعدی صفر کنی پروسس دوم که کلاک دیگه ای داره، چند بار اجرا شده و اگه بخوای توی پروسس دوم یه شرط بذاری که هر وقت مقدار start یک بود صفرش کنه، باز هم نمیشه چون نمیشه به یک سیگنال در دو پروسس دسترسی داشت.
    راه حل پیشنهادی:
    چون توضیحش طولانی میشه کد رو میذارم خودت تحلیل کن، اگه دوستان راه های ساده تر دارن حتماً بگن.
    کد:
    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
    
    entity Top is
      Port ( clk : in STD_LOGIC;
          sData : in STD_LOGIC;
    			 sClk : in STD_LOGIC;
          Dout : out STD_LOGIC
    	);
    end Top;
    
    architecture Behavioral of Top is
    	signal start,p_start,sDout : std_logic := '0';
    	signal DataIn : std_logic_vector(0 to 99) := (others => '0');
    begin
    
    
    Receive_proc: process(sclk)
    	variable i : integer range 0 to 100 := 0;
    begin
    	if rising_edge(sClk) then
    		DataIn(i) <= sData;
    		if i = 99 then
    			start <= '1';
    			i := 0;
    		else
    			start <= '0';
    			i := i + 1;
    		end if;
    	end if;
    end process;
    
    Send_proc: process(clk)
    	variable Send : std_logic := '0';
    	variable i : integer range 0 to 100 := 0;
    begin
    	if rising_edge(clk) then
    		p_start <= start;
    		if p_start = '0' and start = '1' then
    			Send := '1';
    			sDout <= DataIn(i);
    			i := i + 1;
    		elsif i = 100 then
    			i := 0;
    			Send := '0';
    		elsif Send = '1' then
    			sDout <= DataIn(i);
    			i := i + 1;
    		end if;
    	end if;
    end process;
    
    Dout <= sDout;
    
    end Behavioral;
    این هم TestBench:

    کد:
    LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;
     
    ENTITY tb_Top IS
    END tb_Top;
     
    ARCHITECTURE behavior OF tb_Top IS 
     
      COMPONENT Top
      PORT(
         clk : IN std_logic;
         sData : IN std_logic;
         sClk : IN std_logic;
         Dout : OUT std_logic
        );
      END COMPONENT;
      
    
      --Inputs
      signal clk : std_logic := '0';
      signal sData : std_logic := '0';
      signal sClk : std_logic := '0';
    
     	--Outputs
      signal Dout : std_logic;
    
      -- Clock period definitions
      constant clk_period : time := 10 ns;
      constant sClk_period : time := 100 ns;
      signal sda : std_logic_vector(0 to 99) := X"FEDCBA9876543210FEDCBA987";
    BEGIN
     
    	-- Instantiate the Unit Under Test (UUT)
      uut: Top PORT MAP (
         clk => clk,
         sData => sData,
         sClk => sClk,
         Dout => Dout
        );
    
      -- Clock process definitions
      clk_process :process
      begin
    		clk <= '0';
    		wait for clk_period/2;
    		clk <= '1';
    		wait for clk_period/2;
      end process;
     
      sClk_process :process
      begin
    		sClk <= '0';
    		wait for sClk_period/2;
    		sClk <= '1';
    		wait for sClk_period/2;
      end process;
     
    
      -- Stimulus process
      stim_proc: process
      begin		
       -- hold reset state for 100 ns.
       wait for 100 ns;	
    
       wait for clk_period*10;
    
       -- insert stimulus here 
    		
       wait;
      end process;
    	
    	Receive_proc: process(sClk)
    		variable i : integer range 0 to 100 := 0;
    	begin
    		if rising_edge(sClk) then
    			if i = 100 then
    --				i := 0;
    			else
    				sData <= sda(i);
    				i := i + 1;
    			end if;
    		end if;
    	end process;
    END;
    و نتیجه شبیه سازی:

    لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
    لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
    با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
    اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
    يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"
صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 17

موضوعات مشابه

  1. برنامه نویسی به زبان vhdl توسط الگوريتم cordic و FPGA
    توسط ramin_ramtin در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 1
    آخرين نوشته: 2014/07/22, 23:36
  2. برنامه ای به زبان vhdl که از rs232
    توسط mmojtabaa در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 2
    آخرين نوشته: 2012/12/20, 17:50
  3. برنامه ALU به زبان VHDL
    توسط dspcore1 در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 0
    آخرين نوشته: 2012/05/05, 12:45
  4. زبان برنامه نويسي VHDL
    توسط محمد نحوی در انجمن برنامه نويسي و اينترفيس
    پاسخ: 14
    آخرين نوشته: 2011/06/15, 14:22
  5. برنامه نویسی با VHDL
    توسط فرنوش 68 در انجمن PLD , SPLD , GAL , CPLD , FPGA
    پاسخ: 1
    آخرين نوشته: 2011/06/14, 20:00

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •