اطلاعیه

Collapse
No announcement yet.

یک استفاده ی خاص ازFPGA

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

    یک استفاده ی خاص ازFPGA

    با سلام و خسثه نباشید
    من می خواستم بدونم میشه از fpga برای تولید نویز استفاده کرد و روی آی سی هایaltera ویاxilinx ریخت؟
    من میخواهم یک پالس با تاخیر دلخواه و با دامنه ی متفاوت (قابل تغییر توسط کاربر) که این قابلیت هم داشته باشه که نویز روش سوار شه.
    البته در نهایت می خواهم که روی سخت افزار پیاده اش کنم.
    میشه راهنماییم کنین.اگر هم یک سری خودآموز نرم افزار مربوطه(احتمالاVHDL )دارین میشه برام بذارین؟
    ممنونم از زحماتتون
    واقعا سایت خوبیه و از این که به تازه کارایی مثل من کمک میکنین نهایت تشکر را دارم.

    #2
    پاسخ : یک استفاده ی خاص ازFPGA

    عموما برای ایجاد نویز سفید یا صورتی از DSP ها استفاده می کنند. از FPGA های پیشرفته تر هم میشه برای اینکار استفاده کرد اما چندان توصیه نمی شود. مخصوصا اینکه fpgaهای ارزانتر از کلاک بالایی پشتیبانی نمی کنند در نتیجه ممکن است نویزتان کش بیاد!

    یک نگاه به لینک زیر بندازین بد نیست:
    http://zone.ni.com/reference/en-XX/help/371599C-01/lvfpga/fpga_white_noise


    یک راه ساده اون اینه که شما یک کلاک x10 یا x100 جدای کلاک اصلی مدار داشته باشید که صرفا اعداد مربوط به نویز را در آن فرکانس تولید می کند و خروجی ها رو با هم جمع کرده و به یک D/A بدهید. من یک نمونه از اون رو که توسط Terasic با یک FPGA از نوع StratixIII ساخته شده بود دیده بودم.

    هرچند این جواب نیست ولی امیدوارم بهتون کمک کنه. :nerd:

    برای مثال: این کد رو قبلا از یه جایی دودر کرده بودم که یک نمونه از ایجاد نویز توسط شیفت رجیستره:



    entity wgn is
    port(
    clk_24 : in std_logic;
    rst : in std_logic;
    en_192 : in std_logic;
    wgn_out : out std_logic_vector (23 downto 0);
    data_valid : out std_logic
    );
    end;

    architecture rtl of wgn is

    signal sh_reg : std_logic_vector(23 downto 0);
    signal data_valid_int : std_logic;

    begin
    process(clk_24,rst)
    begin
    if rst = '1' then

    wgn_out <= (others => '0'
    sh_reg <= (others => '1'
    data_valid_int <= '0';
    data_valid <= '0';

    elsif (clk_24'event and clk_24 = '1&#039 then -- Rising edge for clk24

    if en_192 = '1' then

    sh_reg(sh_reg'high downto 1) <= sh_reg((sh_reg'high-1) downto 0);
    sh_reg(0)<= sh_reg(23) xor sh_reg(7) xor sh_reg(2) xor sh_reg(1);
    data_valid_int <= '1';

    else

    data_valid <= data_valid_int;
    data_valid_int <= '0';
    wgn_out <= sh_reg;

    end if;
    end if;
    end process;
    end rtl;

    [/left]

    دیدگاه

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