با سلام
من سوالاتی در مورد Verilog و VHDL دارم. یه کد دارم که با Verilog نوشته شده و میخوام قسمت هاییش رو بفهمم و به VHDL تبدیل کنم. آخه با VHDL بیشتر حال میکنم.
اولین سوال اینه که تا اونجا که من فهمیدم reg تو وریلوگ همون wire هستش فقط آخرین مقدار رو تو خودش نگه میداره تا وقتی که مقدار جدیدی توش نوشته بشه. درسته ؟
و اینکه wire همچین حالتی نداره و مقداری رو ذخیره نمیکنه. درسته ؟ میشه برا این دو مورد توضیح بدید ؟
تو VHDL فقط یه Signal داریم و با این حساب reg یا wire یکدومشون باید معادل Signal باشه. خب کدومه ؟
یعنی Signal هم اخرین مقدار رو ذخیره میکنه و مثل reg عمل میکنه یا نه مثل wire ؟ یا به جز سیگنال چیز دیگه ای داریم برای این کار ؟
تو کدی که من دارم اومده یه ماژول نوشته که چند تا ورودی خروجی داره. فقط اومده برای بعضی از خروجی ها اینطوری نوشته :
خب برای چی این کار رو کرده ؟
یه موردش که به نظر خودم رسید اینه که میخواد بعدا از اون خروجی یه چیزی رو بخونه. که تو کد هم دیدم که اینکار رو کرده. اما خب چرا از inout استفاده نکرده ؟
به نظر خودم دلیلش این نیست که میخواد اون خروجی رو بخونه. چون برای همه سیگنالها این کار رو نکرده. فقط تو یه سیگنال مثلا سیگنال rd (همون read از نوع Active Low) اینکار رو کرده :
سوال بعدی اینه که همچین چیزی رو تو VHDL چطور مینویسند :
تو VHDL چی میشه معادلش ؟
یه سوال اساسی. تو وریلوگ چیزی به اسم نوع داده ندیدم. مثلا تو VHDL میگیم STD_LOGIC یا STD_LOGIC_VECTOR یا INTEGER یا ...
خب من حالا بخوام یه سیگنالی رو به VHDL تبدیل کنم چیکار باید بکنم ؟
نوع داده رو چطور میشه تشخیص داد؟ همون STD_LOGIC یا نوع VECTOR میشه و کافیه ؟ یا باید یه روش خاصی داره ؟
همینطور در مورد مشخصه parameter
مثلا parameter GAP=16'hC0A8 رو باید اینطوری بنویسم :
متاسفانه خیلی هم 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 و فقط هم برای اونایی که مقدار اولیه براشون تعریف کرده این کار رو کرده. output reg send_time_out=0;
output reg [31:0]rec_I=0;
output reg finish_led=0;
خب برای چی این کار رو کرده ؟
یه موردش که به نظر خودم رسید اینه که میخواد بعدا از اون خروجی یه چیزی رو بخونه. که تو کد هم دیدم که اینکار رو کرده. اما خب چرا از inout استفاده نکرده ؟
به نظر خودم دلیلش این نیست که میخواد اون خروجی رو بخونه. چون برای همه سیگنالها این کار رو نکرده. فقط تو یه سیگنال مثلا سیگنال rd (همون read از نوع Active Low) اینکار رو کرده :
output reg rd=1;
بعد تو برنامه یه جا برای نوشتن تو رجیسترها اومده سیگنال rd رو چک کرده تا عمل نوشتن و خواندن تداخل پیدا نکنن:// writing process
if(rd)
begin
end
معادلش تو VHDL چی میشه ؟if(rd)
begin
end
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 بلد نیستم .
ممنون میشم یکی از دوستان توضیح کامل بده. خیلی لازم دارم.
دیدگاه