سلام. میخوام یک فایل text که مقادیر عددی fixed-point داخلش ذخیره شدن رو به عنوان ورودی به یکی از سیگنالهای ورودی شبیه سازی ModelSim بدم ولی نمیدونم چطوری این کار انجام میشه. ظاهراً یک راه کدنویسی VHDL و استفاده از TEXTIO و راه دیگه استفاده از مقادیر STD_INPUT و STD_OUTPUT در تب VHDL در پنجره ...Start Simulation هست ولی کار با هیچ کدوم رو بلد نیستم و متأسفانه عجله هم دارم. امیدوارم توی این روز سیزدهی یه نفر جواب بده.
اطلاعیه
Collapse
No announcement yet.
دادن فایل text به عنوان سیگنال ورودی در ModelSim
Collapse
X
-
دادن فایل text به عنوان سیگنال ورودی در ModelSim
لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.با تمام وجود گناه کردیم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنیم چه می کند؟"دکتر شریعتی"
لطفاً سوالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
اگر جایی که ایستاده اید را نمی پسندید، عوضش کنید شما درخت نیستید!! "پاسکال"
یا به اندازه ی آرزوهایت تلاش کن یا به اندازه تلاشت آرزو کن. "شکسپیر" -
پاسخ : دادن فایل text به عنوان سیگنال ورودی در ModelSim
سلام تو این لینک ظاهرا این کار رو کرده:
برنامه رو ببینید
http://www.alteraforum.com/forum/showthread.php?t=37547
کد:-- read input stimulus process(reset,clk) file file_in : text open read_mode is "filename.txt"; variable line_in : line; variable input_tmp : integer := 0; begin if(reset = '1')then data_in <= (others => '0'); elsif(rising_edge(clk))then if not endfile(file_in)then readline(file_in,line_in); read(line_in,input_tmp); data_in <= std_logic_vector(to_signed(input_tmp,16)); end if; end if; end process;
-
پاسخ : دادن فایل text به عنوان سیگنال ورودی در ModelSim
خیلی ممنون. این روش رو توی کتاب پیدا کردم ولی هنوز وقت نکردم امتحان کنم، اون روش دیگه چی؟ کسی میدونه این STD_INPUT و STD_OUTPUT توی ModelSim چطوریه؟لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.با تمام وجود گناه کردیم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنیم چه می کند؟"دکتر شریعتی"
لطفاً سوالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
اگر جایی که ایستاده اید را نمی پسندید، عوضش کنید شما درخت نیستید!! "پاسکال"
یا به اندازه ی آرزوهایت تلاش کن یا به اندازه تلاشت آرزو کن. "شکسپیر"
دیدگاه
-
پاسخ : دادن فایل text به عنوان سیگنال ورودی در ModelSim
من از این کد که استفاده می کنم ModelSim یک Warning میده و میگه Warning: NUMERIC_STD.TO_INTEGER: metavalue detected, returning 0، فکر می کنم مشکل از فرمت فایل متنی ورودیه که نمیدونم چطوری باید باشه. به همون فرمت اعشاری علامت دار / به صورت fixed-point و دسیمال / fixed-point و هگز یا باینری؟لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.با تمام وجود گناه کردیم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنیم چه می کند؟"دکتر شریعتی"
لطفاً سوالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
اگر جایی که ایستاده اید را نمی پسندید، عوضش کنید شما درخت نیستید!! "پاسکال"
یا به اندازه ی آرزوهایت تلاش کن یا به اندازه تلاشت آرزو کن. "شکسپیر"
دیدگاه
-
پاسخ : دادن فایل text به عنوان سیگنال ورودی در ModelSim
دوستان یعنی کسی ModelSim کار نکرده جواب بده؟
اون مشکل حل شد و الان فایل متنی که اعداد صحیح نامنفی هستن میتونه بخونه ولی فقط آخرین مقدار رو نشون میده یعنی از ثانیه 0 تا 1000 نانوثانیه که میره فقط یک مقدار نشون میده در حالی که 200 تا مقدار رو میخونه پس بقیه چی شده؟
یه سوال دیگه: کلاک داخلی توی VHDL چطوری میشه تعریف کرد؟لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.با تمام وجود گناه کردیم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنیم چه می کند؟"دکتر شریعتی"
لطفاً سوالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
اگر جایی که ایستاده اید را نمی پسندید، عوضش کنید شما درخت نیستید!! "پاسکال"
یا به اندازه ی آرزوهایت تلاش کن یا به اندازه تلاشت آرزو کن. "شکسپیر"
دیدگاه
-
پاسخ : دادن فایل text به عنوان سیگنال ورودی در ModelSim
با سلام
اون مشکل حل شد
میخوام یک فایل text که مقادیر عددی fixed-point داخلش ذخیره شدن رو به عنوان ورودی به یکی از سیگنالهای ورودی شبیه سازی ModelSim بدم ولی نمیدونم چطوری این کار انجام میشه.
یه سوال دیگه: کلاک داخلی توی VHDL چطوری میشه تعریف کرد؟
اگه درست فهمیده باشم منظورتون رو به این شکل میشه :
clock_generator:process
variable clock:std_logic:='0';
begin
clock:= not clock;
clk<=clock;
wait for 100 ns;
end process clock_generator;
دیدگاه
-
پاسخ : دادن فایل text به عنوان سیگنال ورودی در ModelSim
نوشته اصلی توسط هـادیدوستان یعنی کسی ModelSim کار نکرده جواب بده؟
هرچند modelsim هم دستوراتی اضافه بر دستورات خود زبان داره ، اما نمیشه از scriptهای modelsim تو توصیف مدار استفاده کرد و باید تو خط فرمان modelsim اجرا بشه.
مثلا verilog دستور خوندن فایل برای پر کردن حافظه داره و از طرفی modelsim هم دستورات خاص خودش رو برای این کار داره که میشه تو خط فرمان اجرا کرد.
در مورد سوال این تاپیک بنظرم دستورات زبان راحتر باشه. تو وریلاگ که راحت میشه این کارو کرد. دستورات modelsim هم تو هلپش کامل هستhttps://www.linkedin.com/in/mohammadhosseini69
http://zakhar.blog.ir
دیدگاه
-
پاسخ : دادن فایل text به عنوان سیگنال ورودی در ModelSim
نوشته اصلی توسط mojtaba_ledبا سلام منظور شما این مشکله : ممنون میشم بفرمایید چطور حل شد، احتمالا در آینده نچندان دور بدرد بنده هم بخوره.
[/ltr]لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.با تمام وجود گناه کردیم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنیم چه می کند؟"دکتر شریعتی"
لطفاً سوالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
اگر جایی که ایستاده اید را نمی پسندید، عوضش کنید شما درخت نیستید!! "پاسکال"
یا به اندازه ی آرزوهایت تلاش کن یا به اندازه تلاشت آرزو کن. "شکسپیر"
دیدگاه
-
پاسخ : دادن فایل text به عنوان سیگنال ورودی در ModelSim
سلام مجدد. بابت تأخیر نسبتاً زیاد شرمنده چند مدتیه خیلی درگیرم.
برای دادن سیگنال ورودی برای شبیه سازی و یا ذخیره سیگنال خروجی در VHDL لازمه که از بسته textio کتابخانه std استفاده کرد.
کد PHP:USE std.textil.ALL
فایل ورودی به صورت زیر پروسس و قبل از begin معرفی میشه:
کد PHP:file input_file : text is in "filter_input.txt";
که فایل filter_input.txt در محل Working Directory قرار داره، در غیر این صورت باید آدرس نسبی یا کامل فایل رو نوشت.
کلمه in در کد بالا مربوط به استاندارد VHDL-87 هست ولی میشه در VHDL-93 هم استفاده کرد در استاندارد VHDL-93 میشه این کلمه رو حذف کرد.
فایل خروجی هم به صورت زیر:
کد PHP:file output_file : text is out "filter_output.txt";
یک متغیر از نوع line هم برای خواندن خطوط فایل ورودی یا نوشتن یک خط در فایل خروجی لازمه:
کد PHP:variable in_line,out_line : line;
به ازای هر فایلی که قصد خواندن یا نوشتن از/در اون رو دارید باید یک متغیر تعریف بشه.
متغیری که از فایل خوانده میشه یا در فایل نوشته میشه از نوع integer تعریف کنید:
کد PHP:variable input_value,output_value : integer;
بقیه برنامه هم به این شکل میتونه باشه:
کد:if clk'event and clk = '1' then if not endfile(input_file) then readline(input_file,in_line); read(in_line,input_value); -- D_IN <= conv_std_logic_vector(input_value,16); D_IN <= std_logic_vector(to_signed(input_value,16)); -- output_value := conv_integer(D_OUT); output_value := to_integer(signed(D_OUT)); write(out_line,output_value); writeline(output_file,out_line); end if; end if;
این هم یک مثال که در اون یک فیلتر FIR پایین گذر طراحی شده(با fdatool متلب) و برای تست یک سیگنال chirp داده شده و خروجی در فایل متنی filter_output.txt ذخیره میشه. یکی از مزایای استفاده از textio اینه که در صورت استفاده از شبیه ساز ISim که قادر به رسم شکل آنالوگ سیگنالها نیست، میشه فایل خروجی رو با متلب خوند و پلات کرد.لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.با تمام وجود گناه کردیم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنیم چه می کند؟"دکتر شریعتی"
لطفاً سوالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
اگر جایی که ایستاده اید را نمی پسندید، عوضش کنید شما درخت نیستید!! "پاسکال"
یا به اندازه ی آرزوهایت تلاش کن یا به اندازه تلاشت آرزو کن. "شکسپیر"
دیدگاه
-
پاسخ : دادن فایل text به عنوان سیگنال ورودی در ModelSim
من این برنامه vhdl رو طبق توضیحات بالا نوشتم ولی synthesize نمیشه :angry:
تازه بعد از نوشتن میخوام test bench رو بویسم و بعد ببرمش توی شبیه ساز isim
اگه میشه کمک کنید خیلی مهمه واسم
ممنون
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use std_logic_textio.ALL
use IEEE.NUMERIC_STD.ALL;
use IEEE.std_logic_signed.all;
entity fir is
Port ( Din : buffer STD_LOGIC_VECTOR (15 downto 0);
Dout : buffer STD_LOGIC_VECTOR (36 downto 0);
clk : in STD_LOGIC;
reset : in STD_LOGIC);
end fir;
architecture Behavioral of fir is
variable input_value,output_value : integer;
type signed_array_type is array (natural range <>of signed(15 downto 0);
signal delayed_input : signed_array_type(0 to 40);
constant coefs : signed_array_type(0 to 40) := (
to_signed(-32,16),to_signed(519,16),to_signed(131,16),to_sign ed(-412,16),to_signed(-330,16),to_signed(473,16),to_signed(644,16),to_sig ned(-427,16),
to_signed(-1055,16),to_signed(203,16),to_signed(1537,16),to_s igned(285,16),to_signed(-2045,16),to_signed(-1169,16),to_signed(2526,16),to_signed(2741,16),
to_signed(-2923,16),to_signed(-6035,16),to_signed(3185,16),to_signed(20544,16),to _signed(29492,16),to_signed(20544,16),to_signed(31 85,16),to_signed(-6035,16),to_signed(-2923,16),
to_signed(2741,16),to_signed(2526,16),to_signed(-1169,16),to_signed(-2045,16),to_signed(285,16),to_signed(1537,16),to_s igned(203,16),to_signed(-1055,16),
to_signed(-427,16),to_signed(644,16),to_signed(473,16),to_sig ned(-330,16),to_signed(-412,16),to_signed(131,16),to_signed(519,16),to_sig ned(-32,16));
-- FIR Filter Fixed-Point Coefficients:
-- -32,519,131,-412,-330,473,644,-427,
-- -1055,203,1537,285,-2045,-1169,2526,2741,
-- -2923,-6035,3185,20544,29492,20544,3185,-6035,-2923,
-- 2741,2526,-1169,-2045,285,1537,203,-1055,
-- -427,644,473,-330,-412,131,519,-32
begin
delay_proc: process(clk,reset)
file input_file : text is in "filter_input.txt";
variable in_line : line;
begin
--------------------------------------------------
if not endfile(input_file) then
--************************************
readline(input_file,in_line);
read(in_line,input_value);
--************************************
DIN <= std_logic_vector(to_signed(input_value,16));
-----------------------------------------------
if reset = '1' then
for i in 0 to 40 loop
delayed_input(i) <= to_signed(0,16);
end loop;
elsif clk'event and clk = '1' then
delayed_input(1 to 40) <= delayed_input(0 to 39);
delayed_input(0) <= signed(Din);
end if;
end if;
end process;
--**************************************
mul_proc: process(clk)
file output_file : text is out "filter_output.txt";
variable out_line : line;
variable tmp_mul : signed(30 downto 0);
variable result : signed(36 downto 0);
begin
if not endfile(input_file) then
result := to_signed(0,37);
if clk'event and clk = '1' then
for i in 0 to 40 loop
tmp_mul := coefs(i) * delayed_input(i);
result := result + resize(tmp_mul,37);
end loop;
Dout <= std_logic_vector(result);
output_value := to_integer(signed(Dout));
--*********************************
write(out_line,output_value);
writeline(output_file,out_line);
--************************************
end if;
end if;
end process;
end Behavioral;
دیدگاه
-
پاسخ : دادن فایل text به عنوان سیگنال ورودی در ModelSim
کتابخانه TextIO برای شبیه سازی هست و دستورات این کتابخانه قابل سنتز نیست.لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.با تمام وجود گناه کردیم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنیم چه می کند؟"دکتر شریعتی"
لطفاً سوالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
اگر جایی که ایستاده اید را نمی پسندید، عوضش کنید شما درخت نیستید!! "پاسکال"
یا به اندازه ی آرزوهایت تلاش کن یا به اندازه تلاشت آرزو کن. "شکسپیر"
دیدگاه
دیدگاه