اطلاعیه

Collapse
No announcement yet.

سوالاتی درباره Verilog و نحوه تبدیل به VHDL

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

    سوالاتی درباره Verilog و نحوه تبدیل به VHDL

    با سلام
    من سوالاتی در مورد Verilog و VHDL دارم. یه کد دارم که با Verilog نوشته شده و میخوام قسمت هاییش رو بفهمم و به VHDL تبدیل کنم. آخه با VHDL بیشتر حال میکنم.
    اولین سوال اینه که تا اونجا که من فهمیدم reg تو وریلوگ همون wire هستش فقط آخرین مقدار رو تو خودش نگه میداره تا وقتی که مقدار جدیدی توش نوشته بشه. درسته ؟
    و اینکه wire همچین حالتی نداره و مقداری رو ذخیره نمیکنه. درسته ؟ میشه برا این دو مورد توضیح بدید ؟

    تو VHDL فقط یه Signal داریم و با این حساب reg یا wire یکدومشون باید معادل Signal باشه. خب کدومه ؟
    یعنی Signal هم اخرین مقدار رو ذخیره میکنه و مثل reg عمل میکنه یا نه مثل wire ؟ یا به جز سیگنال چیز دیگه ای داریم برای این کار ؟

    تو کدی که من دارم اومده یه ماژول نوشته که چند تا ورودی خروجی داره. فقط اومده برای بعضی از خروجی ها اینطوری نوشته :
    output reg reset=1;
    output reg send_time_out=0;
    output reg [31:0]rec_I=0;
    output reg finish_led=0;
    همونطور که میبینید تو اونجا که میخواد بعد از تعریف ماژول نوع ورودی یا خروجی بودن سیگنالهای ماژول رو تعریف کنه برای بعضی از خروجی ها بجای output نوشته output reg و فقط هم برای اونایی که مقدار اولیه براشون تعریف کرده این کار رو کرده.
    خب برای چی این کار رو کرده ؟
    یه موردش که به نظر خودم رسید اینه که میخواد بعدا از اون خروجی یه چیزی رو بخونه. که تو کد هم دیدم که اینکار رو کرده. اما خب چرا از inout استفاده نکرده ؟
    به نظر خودم دلیلش این نیست که میخواد اون خروجی رو بخونه. چون برای همه سیگنالها این کار رو نکرده. فقط تو یه سیگنال مثلا سیگنال rd (همون read از نوع Active Low) اینکار رو کرده :
    output reg rd=1;
    بعد تو برنامه یه جا برای نوشتن تو رجیسترها اومده سیگنال rd رو چک کرده تا عمل نوشتن و خواندن تداخل پیدا نکنن:
    // writing process
    if(rd)
    begin
    end
    معادلش تو VHDL چی میشه ؟
    output reg finish_led=0;


    سوال بعدی اینه که همچین چیزی رو تو VHDL چطور مینویسند :
    reg [15:0]address[31:0];
    اصلا چی هست ؟ فکر کنم 32 تا المان که هر المان 16 تا طول داره تعریف کرده. یه چی مثله آرایه دو بعدی. درسته ؟
    تو VHDL چی میشه معادلش ؟

    یه سوال اساسی. تو وریلوگ چیزی به اسم نوع داده ندیدم. مثلا تو VHDL میگیم STD_LOGIC یا STD_LOGIC_VECTOR یا INTEGER یا ...
    خب من حالا بخوام یه سیگنالی رو به VHDL تبدیل کنم چیکار باید بکنم ؟
    نوع داده رو چطور میشه تشخیص داد؟ همون STD_LOGIC یا نوع VECTOR میشه و کافیه ؟ یا باید یه روش خاصی داره ؟

    همینطور در مورد مشخصه parameter
    مثلا parameter GAP=16'hC0A8 رو باید اینطوری بنویسم :
    CONSTANT GAP : STD_LOGIC_VECTOR(15 DOWNTO 0) := X"C0A8";
    یا اینطوری :
    CONSTANT GAP : INTEGER := 51728 ;
    کدوم درسته ؟ یا اصلا فرقی میکنه ؟
    متاسفانه خیلی هم VHDL بلد نیستم .
    ممنون میشم یکی از دوستان توضیح کامل بده. خیلی لازم دارم.

    #2
    پاسخ : سوالاتی درباره Verilog و نحوه تبدیل به VHDL

    کسی نبود کمک کنه ؟

    دیدگاه


      #3
      پاسخ : سوالاتی درباره Verilog و نحوه تبدیل به VHDL

      سلام. برای تبدیل verilog به VHDL و برعکس می تونید از برنامه ی X-HDL استفاده کنید.
      موفق باشین

      دیدگاه


        #4
        پاسخ : سوالاتی درباره Verilog و نحوه تبدیل به VHDL

        سلام دوست گرامی
        ببین توی وریلاک سیم یا وایر دقیقا همون معنی رو می ده یعنی سیم!
        مثلا شما میتونی خروجی دو تا رجیستر رو با هم جمع کنی و حاصل رو بریزی توی یه سیم
        assign wire1=reg1+reg2
        assign out1=wire1

        و این یعنی که آقای سینتسایزر! حاصل جمع reg1 و reg2 رو بریز تو خروچی اول که میشد بدون استفاده از وایر هم این کار رو کرد البته وایر کاربرد های دیگه ای هم داره مثلا میخاهیم دو نقطه از مدار رو به هم وصل کنیم به طوری که بلافاصله پس از تغییر در یک نقطه اون یکی هم تغییر کنه و منتظر کلاک نمونه(البته ممکنه یکیشون این ور آی سی باشه و اون یکی اون ور و یه مقدار خیلی کم زمان تاخیر روتینگ داشته باشیم!)
        -------------------------------------------------------------------------------------------------------
        ولی reg یا رجیستر قضیش فرق فوکوله!
        رجیستر در واقع یه فلیپ فلاپه که یه کلاک میگیره و یه ریست و یه ورودی و یه خروجی و آخرین مقدار رو نگه میداره تا کلاک بیاد و ورودی جدید به خروجی اعمال بشه و وقتی استفاده می کنیم که بخاهیم مقادیر قبلی رو داشته باشیم
        -------------------------------------------------------------------------------------------------------
        اون که گفتید درسته یعنی یه آرایه دو بعدی هستش ولی توجه کنید که تو این نوع تعریف نمیشه به تک تک بیت ها دست رسی داشت و فقط میتونیم کلمات رو با هم بخونیم
        ------------------------------------------------------------------------------------------------------
        امیدوارم حداقل جواب یه سوالتو گرفته باشی :smile:

        دیدگاه


          #5
          پاسخ : سوالاتی درباره Verilog و نحوه تبدیل به VHDL

          روش تعریف ثابت در وریلاگ:
          [tt]difine m 2`[/tt]
          و این یعنی هر جا تو کد m دیدی به جاش 2 در نظر بگیر
          (اون علامته همونیه که بالای دکمه tab هست)

          دیدگاه

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