1 / 134

زبان توصيف سخت افزار VHDL

فصل چهارم. زبان توصيف سخت افزار VHDL. ترم بهاره 85-84 دانشگاه کاشان Lec note 4. مقدمه (تاريخچه). نام VHDL شامل دو بخش V و HDL به معنی VHSIC : V ery H igh Speed I ntegrated C ircuits HDL : H ardware D escription L anguage استاندارد IEEE 1076-1987 استاندارد IEEE 1076-1993

hancockt
Download Presentation

زبان توصيف سخت افزار VHDL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. فصل چهارم زبان توصيف سخت افزارVHDL ترم بهاره 85-84 دانشگاه کاشان Lec note 4

  2. مقدمه(تاريخچه) • نام VHDLشامل دو بخش Vو HDL به معنی VHSIC : Very High Speed Integrated Circuits HDL : Hardware Description Language • استاندارد IEEE 1076-1987 • استاندارد IEEE 1076-1993 • Verilog و ABEL(Advanced Boolean Equation Language )

  3. مقدمه(ویژگی ها) • HDLها ذاتا موازي (همروند)هستند • ترتيب دستورات مهم نيست • مبتني بر رخداد • امكان استفاده از دستورات ترتيبي را نيز دارد • اهداف اساسی • مستند سازي : نگهداری، ارائه، تبادل، استفاده مجدد • شبيه سازي : بررسی نتایج و ارزیابی • سنتز : با هدف پیاده سازیدر FPGA یا بصورت ASIC • اجرا= شبیه سازی

  4. مقدمه(نیازمندی ها) • حداقل نیازمندی ها برای یادگیری زبان VHDL • دانستن جبر بول و آشنایی با مدارات منطقی • داشتن ابزار CADمناسب

  5. سه حوزه رفتاری، ساختاری و هندسی (فیزیکی) داریم VHDL : امکان توصیف طرح بصورت رفتاری و ساختاری توصیف رفتاری و ساختاری

  6. توصیف رفتاری • نکته: توصیف رفتاری نسبت به توصیف ساختاری از سطح انتزاع بالاتری برخوردار است • توصیف رفتاری : • رفتار سیستم چیست؟ • رابطه بین سیگنال های ورودی و خروجی • توصیف رفتاری : • انتقال ثبات یا DataFlow (معمولا بر اساس جملات همروند) • الگوریتمی Algorithmic(با استفاده از دستورات ترتیبی)

  7. توصیف رفتاری (مثال ساده) • مدار هشدار باز بودن کمربند و درب خودرو Warning = Ignition_on AND (Door_open OR Seatbelt_off) • Ignition_on : سویچ در جایش قرار گرفته • Door_open : باز بودن درب خودرو • Seatbelt_off : کمربند بسته نشده • Warning : خروجی هشدار به سرنشین خودرو

  8. توصیف ساختاری • توصیف ساختاری : • مجموعه ای از مولفه ها (دروازه ها) • و اتصالات بین آنها • توصیف ساختاری : • مشابه شماتیک • نزدیک به تحقق فیزیکی سیستم

  9. ساختار كلي يك فايل VHDL • يك توصيف VHDL شامل • Entity declaration • Architecture body • تعريف entity در حقیقت معرفی سیگنالهای ورودی و خروجی است • architecture رابطه بین سیگنالهای ورودی و خروجی است (عملكرد/ساختار)

  10. بخش Entity • NAME_OF_ENTITY : يك شناسه اختياري • signal_names : سيگنالهاي ورودي يا خروجي • mode :یکی از موارد (in،out ،buffer ، Inout )

  11. mode • In :سيگنال ورودي • out : سيگنال خروجي (فقط توسط یک entity دیگر قابل استفاده) • buffer : خروجي كه مي تواند در داخل entity نيز استفاده شود • Inout : سيگنا ل دوطرفه (ورودي / خروجي) in out buffer Inout in in out

  12. Type • نوع سيگنال را مشخص مي كند ( استاندارد يا User Defined) • Bit : مي تواند مقدار صفر يا يك داشته باشد • Bit_vector : برداري از مقادير بيتي است • Boolean : مي تواند مقدار true يا false بگيرد. • Integer : عدد صحيح • Real : عدد حقيقي • Character : هركاراكتر قابل چاپ • Time : برا ی نمايش زمان بكار مي رود.

  13. مثال Entity • تعريف entity برای يك نيم جمع كننده

  14. بخش Architecture • توصیف سیستم بصورت رفتاری یا ساختاری است • قالب كلي تعريف Architecture به شكل زير است

  15. مدل رفتاري (Behavioral model) • مستقل از ساختار داخلی ارتباط بین ورودی ها و خروجی ها بصورت عملیاتی توصیف می شود . • مثال(1): AND دو ورودی

  16. مدل رفتاري (Behavioral model) • مثال(1): XOR دو ورودی

  17. هم روندي • يكي از خصوصيات زبانهاي توصيف سخت افزار • دستورالعملهاي انتساب سيگنال ( <= ) • وقتي اجرا مي شود كه يك سيگنال در سمت راست جمله مقدارش تغييركند • تغيير در مقدار يك سيگنال را يك رخداد مي ناميم • VHDL يك زبان مبتني بررخداد • در مثال(2) ترتيب نوشتن جملات مهم نيست. يعني مي توان جملات x و y و z را بترتيب دلخواه جابجا كرد.

  18. زمانبندي رخداد ها • مكانيزم ايجاد تاخير در انتساب مقدار جديد به سيگنال سمت چپ • با استفاده از كلمه كليدي after • مدل كردن تاخیر های یک مدار واقعی را مدل • اين قابليت شبيه سازي مدار را به واقعيت نزدیک تر مي كند

  19. مثال(3) • توصيف رفتاري مدار Half Adder

  20. توصيف ساختاري نکته: تعریف کامل تمام مولفه ها در ابتدا الزامی است ---------------------------------------------- Entity halfadder is port ( x, y : in bit; S, CO: out bit); end halfadder; ---------------------------------------------- architecture structural of halfadder is -- Declarations component AND2 port (in1, in2: in std_logic; out1: out std_logic); end component; component XOR2 port (in1, in2: in std_logic; out1: out std_logic); end component; ---------------------------------------------- begin -- Component instantiations statements U0: XOR2 port map (x, y, s); U1: AND2 port map (x, y, co); end structural; ---------------------------------------------- std_logic

  21. توصيف ساختاري entity BUZZER is port (DOOR, IGNITION, SBELT: in std_logic; WARNING: out std_logic); end BUZZER; architecture structural of BUZZER is -- Declarations component AND2 port (in1, in2: in std_logic; out1: out std_logic); end component; component OR2 port (in1, in2: in std_logic; out1: out std_logic); end component; component NOT1 port (in1: in std_logic; out1: out std_logic); end component; -- declaration of signals used to interconnect gates signal DOOR_NOT, SBELT_NOT, B1, B2: std_logic; begin -- Component instantiations statements U0: NOT1 port map (DOOR, DOOR_NOT); U1: NOT1 port map (SBELT, SBELT_NOT); U2: AND2 port map (IGNITION, DOOR_NOT, B1); U3: AND2 port map (IGNITION, SBELT_NOT, B2); U4: OR2 port map (B1, B2, WARNING); end structural;

  22. طراحي سلسله مراتبي • در مدلسازي ساختاري • هر Entity می تواند بعنوان يك مولفه در توصيف Entity ديگر بكار رود • اين امر مي تواند در سطوح مختلف تكرار شود • طراحي سلسله مراتبي موجب كاهش پيچيدگي در طراحي مدارات بزرگ مي شود • معمولا در طرح هايی که با تکرار قابل گسترش اند كاربرد دارد

  23. جمع كننده چهار بيتي sum = (A  B)  C carry = AB + C(A  B)

  24. توصيف تمام جمع كننده ----------------------------------------------------- library ieee; use ieee.std_logic_1164.all; ----------------------------------------------------- entity FULLADDER is port (a, b, c: in std_logic; sum, carry: out std_logic); end FULLADDER; ----------------------------------------------------- architecture fulladder_behav of FULLADDER is begin sum <= (a xor b) xor c ; carry <= (a and b) or (c and (a xor b)); end fulladder_behav; -----------------------------------------------------

  25. جمع كننده چهار بيتي(Entity) library ieee; use ieee.std_logic_1164.all; ----------------------------------------------------- entity FOURBITADD is port (a, b : in std_logic_vector(3 downto 0); Cin : in std_logic; Sum : out std_logic_vector (3 downto 0); Cout,V : out std_logic); end FOURBITADD; -----------------------------------------------------

  26. جمع كننده چهار بيتي( Architecture ) architecture fouradder_structure of FOURBITADD is signal c: std_logic_vector (4 downto 0); component FULLADDER port(a, b, c: in std_logic; sum, carry: out std_logic); end component; begin FA0: FULLADDER port map (a(0), b(0), Cin, sum(0), c(1)); FA1: FULLADDER port map (a(1), b(1), C(1), sum(1), c(2)); FA2: FULLADDER port map (a(2), b(2), C(2), sum(2), c(3)); FA3: FULLADDER port map (a(3), b(3), C(3), sum(3), c(4)); V <= c(3) xor c(4); Cout <= c(4); end fouradder_structure; 

  27. چند نکته • استفاده از نام پورت مشترک برای Entity های متداخل مجاز است • چون Cout بصورت خروجی تعریف شده نمیتواند بعنوان ورودی استفاده شود • چون c(4) یک سیگنال داخلی است میتواند بعنوان ورودی استفاده شود. • میتواند بخشی از توصیف طرح ساختاری و بخشی رفتاری باشد مانند Cout و V در مثال قبل

  28. كتابخانهو بسته ها • كتابخانه امكان استفاده مشترك از موارد از پیش تعریف شده را فراهم می کند. مانند data type component Function Procedure • هر کتابخانه شامل تعدادی بسته است • نوع std_logic در بسته ieee.std_logic_1164 در كتابخانه ieeeتعريف شده است library ieee; use ieee.std_logic_1164.all;

  29. عناصر گرامري زبان VHDL • شناسه ها • كلمات كليدي (رزرو شده) • اعداد • كاراكترها رشته ها و رشته هاي بيتي

  30. شناسه ها • كلماتي براي نام گذاري مولفه های مختلف مدل VHDL • نام سيگنال هاي ورودي • نام سیگنال های خروجي • نام entity • نامarchitecture

  31. قوانين نامگذاری شناسه های اصلی • نام شناسه اختياري است • فقط شامل حروف الفبا و ارقام (A..Z و a..z و0..9) و كاراكتر '_' • اولين كاراكتر حتما بايد از حروف الفبا باشد • آخرين كاراكتر نبايد '_' باشد • دو كاراكتر '_' دنبال هم غير مجاز • به حروف بزرگ و كوچك حساس نيست And2) =AND2 = and2) • يك شناسه هر طولي مي تواند داشته باشد مثال شناسه صحیح:X10،x_10،My_gate1 مثال شناسه غلط: _X10 ، my_gate@input،gate-input

  32. قوانين گسترش یافته تعریف شناسه های • بین دو عدد '\' قرار می گیرند • به حروف بزرگ و كوچك حساس • كلمات رزرو شده و شناسه هاي اصلي در شناسه های گسترش مجاز و بعنوان یک شناسه متفاوت در نظر گرفته می شود • بين هر دو '\' استفاده از هر كاراكتري و با هر ترتيبي مجاز است • شناسه اي بنام BUS:\data را بايد بنويسيم \BUS:\\data\ • درنسخه VHDL-93 تعريف شده است ولي درنسخه VHDL-87 شناخته شده نيست مثال صحیح: Input، \Input\ ، \input#1\ ، \Rst\\as\

  33. كلمات كليدي (رزرو شده) • شناسه هاي كه بوسيله سيستم براي کار خاص استفاده می شود • مثل in، out، or، and، port، map،endو غيره • در شناسه توسعه يافته مجاز است(\end\) • مراجعه کنید به جدول 4-1 (كليه كلمات رزرو شدة VHDL)

  34. اعداد • اعداد صحيح : 12 10 256E3 12e+6 • اعداد حقيقي: 1.2 256.24 3.14E-2 • پيش فرض مبناي 10 استوگرنه به صورت base#number# • مثال: معادل عدد 18 در مبناي 2: 2#10010# در مبناي 16: 16#12# در مبناي 8: 8#22# • بمنظور خوانایی 2#1001_1101_1100_0010# 215_123 • مثال: معادل عدد 29 • در مبناي 2:2#11101# • در مبناي 16:16#1D# • در مبناي 8:8#35#

  35. كاراكترها رشته ها و رشته هاي بيتي • كاراكترها (داخل يك جفت گيومه تكي) 'a' 'B' ',‘ • رشته ( داخل يك جفت گيومه دوتايي ( "This is a string“ • هر كاراكتر قابل چاپ مجاز است(حتی خود" ) "This is a ""String""."

  36. رشته بيتي • يك رشته بيتي يك توالي از بيتها است • بمنظور تمایز از رشتة كاراكتري در ابتداي آن B می گذارند B”1001” • رشته بيتي در مبناي 16 يا 8 هم نوشته مي شود Binary:B”1100_1001”, b”1001011” Hexagonal:X”C9”, X”4b” Octal:O”311”, o”113” • توجه كنيد دو مقدار با طول نامساوی نامساویند b”1001011” ≠ X”4b” O”113” ≠ X”4b”

  37. اشياء داده ایData objects • سيگنالها(توصیف سیم های ارتباطی مدار) • ثابت ها • متغيرها • فایل در توصیف رفتاری(پردازه ها، توابع و روالها) (در سنتز مدار وجود خارجی ندارد)

  38. ثابت (constant) • با توجه به نوع مقدار میگیرد و در طول شبیه سازی مقدارش عوض نمی شود constant list_of_name_of_constant: type [:=initial value]; • ثابت در ابتدای architecture تعریف شده و در داخل آن استفاده می شود. • یک ثابت که در داخل یک پردازه تعریف می شود فقط در همان پردازه نیز می تواند استفاده شود. constant RISE_FALL_TME: time := 2 ns; constant DELAY1: time := 4 ns; constant RISE_TIME, FALL_TIME: time:= 1 ns; constant DATA_BUS: integer:= 16;

  39. تعریف ثابت درهر يك از Entity یا Architecture یا Process Declaring Constants entity ent1 is generic (...); port (...); constant loop_number:positive:=4; begin ... end entity ent1;

  40. تعریف ثابت Architecture ent1_arch of Ent1 is CONSTANT t_propagation:time:=10ns; Begin ... End architecture ent1_arch; ------------------------------------------ Declaring Constants p1:process (A,B) constant t_hold:time:=5ns; begin ... end process p1;

  41. متغير(Variable) • مقدارش می تواند با استفاده از جملات انتساب تغییر کند • تغییر به محض اجرای دستور انتساب بدون تاخیر انجام می شود • داخل یک پردازه تعریفمي شود variable list_of_variable_names: type [:= initial value]; variable CNTR_BIT: bit :=0; variable VAR1: boolean :=FALSE; variable SUM: integer range 0 to 256 :=16; variable STS_BIT: bit_vector (7 downto 0); دستور انتساب براي متغيرها Variable_name := expression;

  42. سيگنال (Signal) signal list_of_signal_names: type [ := initial value]; signal SUM, CARRY: std_logic; signal CLOCK: bit; signal TRIGGER: integer :=0; signal DATA_BUS: bit_vector (0 to 7); signal VALUE: integer range 0 to 100; با یک تاخیر مشخص پس از اجرای دستور انتساب به روز می شوند SUM <= (A xor B) after 2 ns; ميتوان با يك توالي از مقادیر، یک شکل موج دلخواه ایجاد کرد signal wavefrm : std_logic; wavefrm <=‘0’,‘1’ after 5ns,‘0’ after 10ns,‘1’ after 20ns;

  43. تفاوت متغير و سيگنال • انتساب متغیر با ':=' و انتساب سیگنال با'<=' • انتساب متغیر بدون تاخیر ولی انتساب سیگنال با تاخیر(دلتا) • انتساب متغیر ترتیبی و انتساب سیگنال همروند دو مثال بعد این موضوع را روشن می کند

  44. ---------------------------------------------------- Example of a process using Variables ---------------------------------------------------- architecture VAR of EXAMPLE is signal TRIGGER, RESULT: integer := 0; begin process variable variable1: integer :=1; variable variable2: integer :=2; variable variable3: integer :=3; begin wait on TRIGGER; variable1 := variable2; variable2 := variable1 + variable3; variable3 := variable2; RESULT <= variable1 + variable2 + variable3; end process; end VAR ---------------- RESULT=2+5+5=12-------------------

  45. --------------------------------------------------- Example of a process using Signals --------------------------------------------------- architecture SIGN of EXAMPLE is signal TRIGGER, RESULT: integer := 0; signal signal1: integer :=1; signal signal2: integer :=2; signal signal3: integer :=3; begin process begin wait on TRIGGER; signal1 <= signal2; --2 signal2 <= signal1 + signal3; --1+3=4 signal3 <= signal2; --2 RESULT <= signal1 + signal2 + signal3; end process; end SIGN; ----------------- RESULT=1+2+3=6------------------

  46. انواع داده • VHDL یک زبان بشدت نوع گرا است • مثلا انتساب یک مقدار integer به یک نوع bit غیر مجاز است • انواع تعریف شده Boolean Integer Character Bit Time Std_ulogic Std_logic Array Vectors Records

  47. Boolean Type Architecture rtl of ex is Begin Process(…) Variable alpha: Boolean; Begin alpha := a<b; If alpha then... ... End process; End;

  48. Integer Type • محدوده آن به تعریف بستگی دارد • اکثر ابزارهای CAD تا 32 بيت پشتیانی می کنند Constant loop_number: integer:=365; Signal my_int: integer range 0 to 255;

  49. Bit Type • فقط مقدار 0 یا 1 به خود می گیرد signal A: bit :=1;

  50. Std_ulogic یک نوع شمارشی است با مقادیر 'U' Un-initialized 'X' Forcing Unknown '0' Forcing 0 '1' Forcing 1 'Z' High Impedance 'W' Weak Unknown 'L' Weak 0 'H' Weak 1 '-' Don't care

More Related