آموزش وریلاگ | پروژه وریلاگ
 گروه تلگرام 
VerilogCode.ir
آموزش وریلاگ | پروژه وریلاگ


آموزش وریلاگ - جلسه 22 :

آموزش وریلاگ آموزش Verilog

دانلود فیلم مربوط به (جلسه بیست و دوم)

این جلسه قراره توی ورودی یه کلاک رو بگیریم و توی خروجی یه کلاک با فرکانس متفاوتی تحویل بدیم . ماژول مون چیز خاصی نداره ، صرفا یه ورودی کلاک و ریست و یک خروجی تک بیتی که قراره یجوری صفر و یک اش کنیم که سیگنال کلاک ساخته بشه که البته دوره تناوب این کلاک ، ضریبی از دوره تناوب کلاک ورودی مدار باشه .

آموزش وریلاگ

فرض کنید این ماژول قراره کلاک رو در ورودی بگیره و یه کلاک خروجی با فرکانس ½ تحویل بده ، این ماژول رو میشه با فلیپ فلاپ نوع D پیاده سازی کرد اما من اصلا نمیخوام با شماتیک توصیف اش کنم ، میخوام رفتاری کد نویسی کنم ، پس بیایم رفتار سیگنال ورودی و خروجی رو ببینیم :

آموزش وریلاگ

الان فرکانس سیگنال آبی دو برابر فرکانس سیگنال صورتی هست ، یا به عبارتی فرکانس سیگنال صورتی ½ فرکانس سیگنال آبی هست یا اگه به کادر قرمز نگاه کنید هر یه دوره کلاک صورتی رنگ به اندازه دو دوره کلاک آبی رنگ هست . برای تولید این سیگنال همونطور که میبینید کافیه توی هر لبه بالارونده کلاک آبی ، ما سیگنال صورتی رو نات کنیم ، به راحتی سیگنال صورتی ساخته خواهد شد.

ISE Project - VerilogCode.ir : \ Box22-1.v
 1-
 2-
 3-
 4-
 5-
 6-
 7- 
 8-
 9-
10-
11-
12-
13-
14-
15-
module Ferq2(
    input Clk,
    input Rst,
    output reg Out
    ); 

    always @(posedge Clk or negedge Rst)
    begin
        if (~Rst)
            Out=0;
        else
            Out=~Out;	
    end
		
endmodule

خیلی ساده کد رو نوشتیم ، در ابتدا که ریست فعال است خروجی ما صفر خواهد بود اما پس از اون با اومدن هر لبه کلاک ، سیگنال خروجی ما نات خواهد شد یک فرکانس ½ برای ما خواهد ساخت .

آموزش وریلاگ

حالا شکل بالا رو ببینید ، فرض کنید بما گفتن فرکانس خروجی 1/16 فرکانس ورودی باشد ، برای اینکار بجای اینکه در هر لبه کلاک سیگنال صورتی رو نات کنیم باید در هر 8 تا لبه کلاک اینکار رو کنیم ، بنابراین یه شمارنده باید بذاریم تا لبه های کلاک رو بشماره و هرگاه این لبه ها 8 تا شد ، خروجی رو نات کنه :

ISE Project - VerilogCode.ir : \ Box22-2.v
 1-
 2-
 3-
 4-
 5-
 6-
 7- 
 8-
 9-
10-
11-
12-
13-
14-
15-
16-
17-
18-
19-
20-
21-
22-
23-
24-
25-
26-
27-
module Ferq16(
    input Clk,
    input Rst,
    output reg Out
    ); 

    reg [4:0] i;

    always @(posedge Clk or negedge Rst)
    begin
        if (~Rst)
        begin 
            Out=0;
            i=0;
        end
        else
        begin
            i=i+1;
            if(i==8)
            begin
	        Out=~Out;
		i=0;
            end
        end
    end
		
endmodule

یه متغییر به اسم i گذاشتیم که از 0 تا 8 میشماره و وقتی به 8 رسید خروجی رو نات میکنه و مقدار خود شمارنده صفر میشه تا مجددا آماده بشه برای شمارش 8 تا لبه ی بعدی .

آموزش وریلاگ

حالا فرض کنید همون مثال قبلی ، یه خروجی با فرکانس 1/16 داریم اما دیوتی سایکل اون 75% هست ، یعنی در هر 16 کلاک ، 12 کلاک خروجی ما 1 باشه و 4 کلاک خروجی ما 0 باشه ، توجه کنین فرکانس ما تغییری نکرده مشابه مثال قبلی همون 1/16 هست اما سیگنال از قرینگی در اومده ، به جای اینکه 8 کلاک صفر باشه و 8 کلاک یک باشه ، 4 کلاک صفر هست و 12 کلاک یک هست .

ISE Project - VerilogCode.ir : \ Box22-3.v
 1-
 2-
 3-
 4-
 5-
 6-
 7- 
 8-
 9-
10-
11-
12-
13-
14-
15-
16-
17-
18-
19-
20-
21-
22-
23-
24-
25-
26-
27-
28-
29-
module Ferq16_75(
    input Clk,
    input Rst,
    output reg Out
    ); 

    reg [4:0] i;

    always @(posedge Clk or negedge Rst)
    begin
        if (~Rst)
        begin 
            Out=0;
            i=0;
        end
        else
        begin
            i=i+1;
			
            if(i==4 || i==16)
	        Out=~Out;

            if(i==16)
	        i=0;

	end
    end
		
endmodule

همونطور که در تصویر هم دیدیم ، در کلاک چهارم و کلاک شونزدهم باید خروجی رو نات کنیم ، وقتی هم که به کلاک شونزدهم رسیدیم ، شمارنده i رو صفر میکنیم تا مجددا این قضیه تکرار بشه .
بنابراین ما یاد گرفتیم فرکانس های زوج رو دیگه بسازیم مثل ¼ و 1/8 و 1/10 و ... حتی با دیوتی سایکل های متفاوت . البته میشه فرکانس های فرد رو هم بسازیم مثل 1/3 و 1/5 و ... که البته دردسر بیشتری داره چون باید همزمان با لبه بالای و با لبه ی پایین کلاک شمارش انجام بدید که به دلیل ریزه کاری هایی که داره بی خیال میشم و تولید فرکانس های فرد رو به خودتون میسپارم هر چند بعیده بتونید : ))) دانلود فیلم جلسه

رفتن به جلسه بعد ...

مشاهده نظرات کاربران




پیام شما با موفقیت ارسال شد و به زودی در این قسمت به نمایش در خواهد آمد .
لطفا تمام فیلد های الزامی را پُر کنید .