PDA

نسخه کامل مشاهده نسخه کامل : درخواست کمک برای طراحی باس به زبان VHDL



hamidrezap30world
16-05-2012, 22:43
با سلام به همه دوستان
من سال سوم نرم افزار هستم و از اونجای که به الکترونیک و مدار منطقی علاقه شدیدی دارم!!! نمیتونم پروژه ای که استادمون داده رو حل کنم.
از دوستای گلم میخام اگه میتونن من رو تو حل این مسئله کمک کنن.
پروژه:
طراحی باس برای 4 ثبات 3 بیتی به زبان VHDL
الف) استفاده از بافرهای سه حالته
ب) استفاده از مالتی پلکسر

*از الف و ب یکی را از روش همروند و دیگری از روش ترتیبی مدل نمائید.

eleck.edu@gmail.
22-05-2012, 08:30
زبان برنامه نویسی VHDL
مشاوره و انجام پروژه های کارشناسی و کارشناسی ارشد در زمینه VHDL،VERLOG و الکترونیک (توسط متخصصین )

۱.طراحی انواع سیستم هابا استفاده از زبان برنامه نویسی سخت افزاری VHDL و VERLOG

۲.شبیه سازی با استفاده از نرم افزار XILINX ISE Design

۳. تهیه پاورپینت آموزشی و پاورپینت جهت ارائه سمینارهای تخصصی

۴.مشاوره و آموزش شبیه سازی با استفاده از نرم افزار ISE

5.مشاوره و آموزش زبان برنامه نویسی VHDL

6. مشاوره و انجام پایان نامه در زمینه PLC در مقطع کارشناسی
7.مشاوره و انجام پایان نامه در تمام زمینه های الکترونیک
8.مشاوره و آموزش شبیه سازی با نرم افزار matlab

9.مشاوره و انجام پروپوزال برای پایان نامه

10. مشاوره در زمینه ارائه سمینار

11.مشاوره و انجام مقاله های بین المللی و داخلی

12.مشاوره و انجام مقاله در مجله های علمی پزوهشی معتبر


برای اطلاع بیشتر با پست الکترونیکی eleck.edu@gmail.com ارتباط برقرار کنید.

hamidrezap30world
19-07-2012, 13:28
الف:


library ieee;
use ieee.std_logic_1164.all;
entity ss is
port (a,b,c,d:in std_logic_vector(0 to 2); s:in std_logic_vector(0 to 1); f:out std_logic_vector(0 to 2));
end;
architecture mm of ss is
signal e:std_logic_vector(0 to 3);
begin
process (s)
begin
if s= "00" then
e<= "0111" ;
elsif s= "01" then
e <= "1011";
elsif s= "10" then
e <= "1101";
else
e <= "1110";
end if;

end process;
f <= a when e(0)='0' else "ZZZ";
f <= b when e(1)='0' else "ZZZ";
f <= c when e(2)='0' else "ZZZ";
f <= d when e(3)='0' else "ZZZ";

end;
library ieee;
use ieee.std_logic_1164.all;
entity test is
end;

architecture mm_tb of test is
signal a1,a2,a3,a4,f:std_logic_vector (0 to 2) ;
signal s:std_logic_vector(0 to 1);

component ss
port (a,b,c,d: in std_logic_vector(0 to 2):="000"; s:in std_logic_vector(0 to 1):="00"; f: out std_logic_vector(0 to 2));
end component;

begin
u1: ss port map (a => a1 , b => a2 , c => a3 , d =>a4 , s => s, f => f);
a1 <= "000" , "110" after 40 ns , "111" after 70 ns , "010" after 120 ns , "100" after 150 ns;
a2 <= "000" , "101" after 40 ns , "001" after 70 ns , "111" after 120 ns , "001" after 150 ns;
a3 <= "100" , "010" after 40 ns , "111" after 70 ns , "110" after 120 ns , "000" after 150 ns;
a4 <= "110" , "101" after 40 ns , "100" after 70 ns , "000" after 120 ns , "111" after 150 ns;
s <= "00" , "01" after 40 ns , "10" after 70 ns , "11" after 120 ns , "01" after 150 ns;
end;







ب:


library ieee;
use ieee.std_logic_1164.all;
entity bus2 is
port (a,b,c,d:inout std_logic_vector(0 to 2); s:in std_logic_vector(0 to 1);ld0,ld1,ld2,ld3,clk:in std_logic);
end;
architecture mm of bus2 is
signal y:std_logic_vector(0 to 2);
begin
process (clk)
begin
if clk = '1' and clk'event then
if s= "00" then
y <= a;
elsif s= "01" then
y <= b;
elsif s= "10" then
y <= c;
else
y <= d;
end if;
if ld0 = '1' then
a <= y;
else
a<="ZZZ";
end if;
if ld1= '1' then
b <= y;
else
b<="ZZZ";
end if;
if ld2 = '1' then
c <= y;
else
c<="ZZZ";
end if;
if ld3 = '1' then
d <= y;
else
d<="ZZZ";
end if;
end if;

end process;
end;
library ieee;
use ieee.std_logic_1164.all;
entity test2 is
end;

architecture mm_tb of test2 is
signal ld0,ld1,ld2,ld3,clk:std_logic :='0';
signal s:std_logic_vector(0 to 1);
signal a,b,c,d:std_logic_vector(0 to 2);

component bus2
port (a,b,c,d:inout std_logic_vector(0 to 2); s:in std_logic_vector(0 to 1);ld0,ld1,ld2,ld3,clk:in std_logic);
end component;
begin
u1: bus2 port map (a => a , b => b , c => c , d =>d , s => s, ld0 => ld0, ld1 => ld1, ld2 => ld2, ld3 => ld3, clk => clk);
a <= "000" , "110" after 80 ns , "111" after 160 ns , "ZZZ" after 240 ns , "ZZZ" after 320 ns;
b <= "ZZZ" , "101" after 80 ns , "001" after 160 ns , "111" after 240 ns , "001" after 320 ns;
c <= "100" , "ZZZ" after 80 ns , "111" after 160 ns , "110" after 240 ns , "000" after 320 ns;
d <= "110" , "101" after 80 ns , "ZZZ" after 160 ns , "000" after 240 ns , "111" after 320 ns;
s <= "00" , "11" after 80 ns , "10" after 160 ns , "01" after 240 ns , "11" after 320 ns;
ld0<='0','1' after 240 ns,'0' after 320 ns;
ld1<= '1','0' after 80 ns;
ld2<= '0','1' after 80 ns,'0' after 160 ns;
ld3<= '0','1' after 160 ns,'0' after 240 ns;
clk<= not clk after 10 ns;
end;

mad86
22-08-2012, 18:29
عالی بود
-
فقط کاش ی توضیح میذاشتید
که عملکرد برنامتون چطور است و اینکه نیاز به ادیت داره چون اینجا متاسفانه ادیتورش برنامه VHDL رو نمیشناسه و وقتی کپی پیست میکنید بهم میریزه باید قبلش تو word اصلاح کنید که دستورها رنگشون متفاوت باشه از متغیرها و...
-
از فرمان سوئیچ هم اگر بجای اون هم if (قسمت الف) استفاده می کردید بهتر بود و اینکه چرا برنامتون رو ترتیبی کردید ؟ یعنی الزامتون برا process s چی بود ؟

بهرحال ممنون

n.mehr
31-12-2012, 17:42
سلام
کسی میتونه بهم کمک کنه بگه من چطوری باید این تمریناتو حل بکنم؟؟؟بخصوص اخری که اصلا هیچ ایده ای واسش ندارم خواهش یکی برام توضیح بده بگه باید چه کار کنم من زیاد برنامه نویسی vhdl بلد نیستم و جواب اینها رو هم باید برای استادم بفرستم
یکی کمکم کنه لطفا
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

n.mehr
05-01-2013, 21:03
سلام
من برای سوال اول ی برنامه نوشتم اما نمیدونم چرا در برنامه مادل سیم ارور میده میشه منو راهنمایی کنید چرا؟؟؟
میشه در مورد 2 سوال دیگه منو راهنمایی کنید؟؟؟
میگه pachage که استفاده کردم را نمیتونه پیدا کنه میشه منو راهنمایی کنید لطفا


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اینم ارورش
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

n.mehr
06-01-2013, 16:03
کسی نمیتونه منو راهنمایی کنه؟؟

mad86
06-01-2013, 21:45
به هدرتون ایراد گرفته و براش تعریف نشدست

use ieee.numeric_bit_unsigned.all;

بجای لایبری ک نوشتید در اول کدتون.. اینو وارد کنید شاید مشکل رفع شد ...



library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

n.mehr
07-01-2013, 12:13
من یک قسمتی از برنامه اومدم از یک تابع به نام to_integer استفاده کردم که توی این تابع توی پکیج ieee.numeric_bit_unsigned است که میاد bit_vector را به natural تبدیل میکنه
کاری کخ گفتید را کردم اما یک اشکالی پیش اومد که توی یک برنامه دیگه ای که قبلا نوشتم که رخ داده بود
همچین اروری میده که غیر منطقیه
لطفا ملاحظه کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

n.mehr
07-01-2013, 13:42
این برنامه ایی هست که برای سوال دوم نوشتم اما این همه کلی ارور میده که نمیفهمم چرا


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این هم ارور های مربوط به مسله دوم منو راهنمایی کنه چرا این ارور ها رو میده
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] buffer_1.png
نمیفهمم چرا خطهای 47-50 و61-64و80-82و90-95 ارور میده من که این متغرهارا به صورت پورت ورودی تعریف کردم

mad86
08-01-2013, 07:02
من فقط بصورت گذرا برنامه اولی رو دیدم
بنظرم یک سری اشتباهات داره :

مثلا هدر برنامه بجای ieee.numeric_bit_unsigned از USE ieee.numeric_std.ALL; استفاده کنید (در نرم افزار ISE )

قسمت تبدیل to_integer هم خطا syntax دارید بدین معنا که شما از یک طرف آرایه ram رو از جنس bit_vector گذاشتید تو این خط :

type memory_type is array (15 downto 0) of bit_vector (7 downto 0) ;
signal ram :memory_type ;

اما از طرف دیگه وقتی فراخوانی میکنید برای ریختن داده به خروجی باس رم...اون رو به صورت integer مقدار میدید مثل این خط:

d_out <= ram(to_integer(rd_addr));


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

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;


entity conv_test is
Port ( a : in STD_LOGIC_VECTOR (7 downto 0);
b : out integer);
end conv_test;

architecture Behavioral of conv_test is

begin

b <= to_integer(signed(a));

end Behavioral;





برنامه رو هم اگر لطف میکردید توضیح میدادید ...منظورم الگوریتم ویا فلوچارتی ساده ازش قرار میدادید....و هر قسمت برنامه هم جدا بالاش توضیحاتشو میذاشتید.. هم برای شما دیباگ کردنش راحتر میشه و هم برای ما قابل استفاده بشه...
مثلا میگفتید دوتا پروسس داره یکی برای read کردن یکی برای write و هرکدوم رو توضیح میدادید و...

n.mehr
08-01-2013, 16:02
خیلی ممنون از راهنمایی هاتون:n01:
من از نرم افزار مادل سیم استفاده میکنم
در خط تعریف ارایه
من گفتم که تعداد خانه های اریه من 16 خانه باشه و این اندیس ها از جنس اینتریجر باشه و چیزی که درون این خانه ها قرار میگره بیت وکتور باشه
برای دسترسی به یک از خانه های این ارایه اسم اریاه +اندیس اون خونه مورد استفاده قرار میگیره
ram(andis)
من در برنامه اندیس را یک بیت وگتور 4 بیتی در نظر گرفتم حالا واسه درسترسی به یک خونه از اون ارایه احتیاج دارم اون ادرس لازم را تبدیل به اینتجر کنم که وقتی توی پکیچ ها گشتم دیدم این پکیج یک تابع داره که بیت ئکتور را تبدیل به انتجر میکنه
من سوالهایی که باید براشون برنامه بنویسم را در پست اول اپلود کردم
میشه ازتون خواهش کنم که برای سوال های دوم و سوم هم منو راهنمایی کنید؟؟
مخصوصا سوال سوم :n28:
من میدونم این سوال توی امتحان میاد و من بلد نیستم اصلا باید چه کارش کنم
ایا نیازی به for generator داره؟؟؟؟؟؟؟؟؟؟
منو راهنمایی کنید لطفا

n.mehr
08-01-2013, 16:48
خوب مشکل برنامه اول را با نوشتن یک تابع که تبدیل بیت وکتور به اینتجر را انجام میده حل کردم
منو برای سوال دو و سه راهنمایی کنید

n.mehr
09-01-2013, 18:02
کسی نیست منو راهنمایی کنه؟

n.mehr
11-01-2013, 19:43
سلام
من برنامه شماره 2 رو کمی تغییر دادم اما باز ارور های نا مفهوم زیاد میده
این کد برنامه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اینم عکس ارور هاش
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
من نمیدونم چرا برای خط 53-72 ارور میده من که از یک تابع برای تبدیل بیت وکتور به نچرال استفاده کردم
چرا به خطوط 7-8-9-10 و...... ارور های nonresolved میده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
یکی منو راهنمایی کنه لطفا

n.mehr
12-01-2013, 18:19
سلام
کسی نبود منو راهنمایی کنه؟؟؟؟؟؟؟؟؟؟؟؟؟