e-book ΛΟΓΙΚΗ ΥΔΓΙΑΗ Άζκηζη 7: Μεηπηηήρ ΘΔΩΡΗΣΙΚΟ ΤΠΟΒΑΘΡΟ Η γιώζζα VHDL είλαη κία πςεινύ επηπέδνπ γιώζζα πνπ πεξηγξάθεη ςεθηαθά θπθιώκαηα. Σα θπξηόηεξα ραξαθηεξηζηηθά ηεο είλαη: πεξηγξάθεη θπθιώκαηα ςεθηαθώλ ζπζηεκάησλ ζε κνξθή θεηκέλνπ κπνξεί λα δηαβαζηεί εύθνια ηόζν από αλζξώπνπο όζν θαη από π/π. επθνιε απνζεθεπζε, αλαθηεζε θαη επεμεξγαζηα Η κεζνδνινγία ηεο ζρεδίαζεο θαίλεηαη ζην παξαθάησ ζρήκα: Requirements RTL Model Simulate Synthesize Gate-level Model Simulate Test Bench ASIC or FPGA Place & Route Timing Model Simulate σήμα 1: Ροή ζσεδίαζηρ Οη απαηηήζεηο (requirements) πξνδηαγξάθνπλ ηελ επηζπκεηή ιεηηνπξγία ηνπ θπθιώκαηνο. ηε ζπλέρεηα αλαπηύζζεηαη ην RTL κνληέιν ρξεζηκνπνηώληαο ηελ γιώζζα VHDL. Η ιεηηνπξγία ηνπ κνληέινπ επαιεζεύεηαη κε ρξήζε πξνζνκνησηώλ (πξνγξάκκαηα ινγηζκηθνύ) νη νπνίνη επηηξέπνπλ ηελ πξνζνκνίσζε (simulation) ηεο ιεηηνπξγίαο ηνπ θπθιώκαηνο. ηε ζπλέρεηα ην κνληέιν κεηαηξέπεηαη ζε θύθισκα κε πύιεο θαη flip-flop κε ηε δηαδηθαζία ηεο ζύλζεζεο (synthesize), νπόηε πξνθύπηεη ην κνληέιν ηνπ θπθιώκαηνο ζε επίπεδν ππιώλ (gate-level model). (Είλαη ζηε δηαθξηηηθή επρέξεηα ηνπ ΑΗΜΑΚΗ-ΒΟΤΡΒΟΤΛΑΚΗ-ΚΑΚΡΟΤΝΣΑ-ΛΕΛΙΓΚΟΤ 1
ζρεδηαζηή αλ ζέιεη λα επαιεζεύζεη ηε ιεηηνπξγία ζε απηό ην επίπεδν.) ηε ζπλέρεηα ζρεδηάδεηαη ην θύθισκα κε ρξνληθή αθξίβεηα (ππνινγίδνληαη νη δηαδξνκέο θαη νη θαζπηεξήζεηο ησλ ζεκάησλ) κε ηε δηαδηθαζία place and route θαη παξάγνληαη ηόζν έλα αξρείν πξνγξακκαηηζκνύ ηνπ chip (ASIC or FPGA) όζν θαη έλα κνληέιν γηα πξνζνκνίσζε (timing model). Η ρξήζε ηεο γιώζζαο ελδείθλπηαη γηα ηελ αλάπηπμε πνιύπινθσλ θπθισκάησλ πνπ απνηεινύληαη από πνιιέο κηθξέο νληόηεηεο. σήμα 2 Σν ηειηθό ζύζηεκα απνηειείηαη από ηα Leaf blocks πνπ ηξέρνπλ όια παξάιιεια. Ανάπηςξη απλού κςκλώμαηορ (ενόρ επιπέδος) ζηη VHDL Γηα λα πεξηγξάςνπκε έλα θύθισκα, θηηάρλνπκε έλα αξρείν (ζην νπνίν δίλνπκε έλα όλνκα κε θαηάιεμε.vhd). Σν αξρείν απηό νξγαλώλεηαη ζπλήζσο ζε ηξία ηκήκαηα: 1. Σν ηκήκα δήισζεο ησλ βηβιηνζεθώλ (library). 2. Σν ηκήκα δήισζεο ηεο εμσηεξηθήο κνξθήο ηνπ θπθιώκαηνο - νληόηεηαο (entity) όπνπ νξίδνληαη ην όλνκά ηνπ θαη νη δηαπεθέο ηνπ (ζήκαηα εηζόδσλ θαη εμόδσλ) ηνπ θπθιώκαηνο 3. ε πεξηγξαθή ηεο αξρηηεθηνληθήο ηεο νληόηεηαο (architecture) όπνπ πεξηγξάθεηαη ε ιεηηνπξγία θαη ζπκπεξηθνξά ηνπ ΑΗΜΑΚΗ-ΒΟΤΡΒΟΤΛΑΚΗ-ΚΑΚΡΟΤΝΣΑ-ΛΕΛΙΓΚΟΤ 2
Η πεξηγξαθή ηεο ονηόηηηαρ πεξηιακβάλεη ην όλνκα απηήο θαη ηα ζήκαηα εηζόδνπ θαη εμόδνπ. Η γεληθε κνξθε ηεο δεισζεο κηαο νληνηεηαο είλαη: Πεξηνρή δήισζεο νληόηεηαο (entity) ύνηαξη ENTITY entity_name IS PORT ([SIGNAL] signal_name {,signal,name}:[mode] type_name {; SIGNAL] signal_name {,signal_name }: [mode] type_name}); Παπάδειγμα ENTITY counter IS port ( rst: in std_logic; clk: in std_logic; z : out integer); END counter; END entity_name ηνλ παξαπάλσ πίλαθα νη ηνληζκέλεο ιέμεηο απνηεινύλ δεζκεπκέλεο ιέμεηο ηεο γιώζζαο. Ερώτηση: Πόζα ζήκαηα εηζόδνπ θαη πόζα ζήκαηα εμόδνπ έρεη ην θύθισκα ηνπ παξαδείγκαηνο; Η αξρηηεθηνληθή (architecture) παξέρεη ηηο ιεπηνκέξεηεο ηνπ θπθιώκαηνο. Η πεξηγξαθή ηεο απσιηεκηονικήρ κπνξεί λα γίλεη κε ηνπο εμήο ηξόπνπο: behavioral ή κνληέιν ζπκπεξηθνξάο ην νπνίν είλαη πηην θνληά ζηελ αλζξώπηλε ινγηθή structural/gate level, ή δνκηθό πνπ είλαη πην θνληά ζην hardware Απνηειείηαη από 2 θύξηα κέξε: ηελ πεξηνρή δήισζεο ησλ ζεκάησλ ε νπνία εκθαλίδεηαη πξηλ ηε ιέμε θιεηδί θαη ην ζώκα ηεο αξρηηεθηνληθήο (architecture body) ΑΗΜΑΚΗ-ΒΟΤΡΒΟΤΛΑΚΗ-ΚΑΚΡΟΤΝΣΑ-ΛΕΛΙΓΚΟΤ 3
Η γεληθε κνξθε κηαο αξρηηεθηνληθεο είλαη: Πεξηνρή δήισζεο αξρηηεθηνληθήο (architecture) ύνηαξη Παπάδειγμα architecture rtl of counter is ARCHITECTURE architecture_name OF entity_name IS [SIGNAL declarations] [CONSTANT declarations] [TYPE declarations] [ATTRIBUTE specifications] BEGIN {COMPONENT instantiation statement ;} {CONCURENT ASSINGMENT statement ;} {PROCESS statement ;} {GENERATE statement ; } signal z_int: integer; z<=z_int; process (rst, clk) if rst='0' then z_int<=0; elsif clk='1' and clk'event then z_int<=z_int+1; end if; end process; END [architecture_name] ; end rtl ; Ερώτηση: Μπνξείηε λα ζρεδηάζεηε ην θύθισκα πνπ πεξηγξάθεη ην παξάδεηγκα; Δπαλήθεςζη οπθήρ λειηοςπγίαρ κςκλώμαηορ Γηα λα επαιεζεύζνπκε ηε ιεηηνπξγία ελόο θπθιώκαηνο ρξεζηκνπνηνύκε έλα αξρείν δνθηκώλ πνπ νλνκάδεηαη test-bench. (Σν αξρείν δνθηκώλ ζπλήζσο νλνκάδεηαη όπσο θαη ην αξρείν πνπ δειώλεη ην θύθισκα πξνζζέηνληαο ηελ έλδεημε _ΣΒ ζην ηέινο. Παξάδεηγκα: counter_tb.vhd). Σν αξρείν δνθηκώλ δίλεη ηηκή ζηηο εηζόδνπο ηνπ θπθιώκαηνο (όπσο θάλαηε ζηνλ πάγθν κε ηνπο δηαθόπηεο) πξνθεηκέλνπ κε ηελ πξνζνκνίσζε λα ειεγρζεί ε νξζή ιεηηνπξγία ηνπ θπθιώκαηνο (όπσο ζηνλ πάγθν κε ηα led). Η γεληθή κνξθή ελόο αξρείνπ δνθηκώλ είλαη: library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; use ieee.std_logic_arith.all; use IEEE.std_logic_textio.all; use ieee.std_logic_arith.all; library work; use work.all; entity counter_tb is ΑΗΜΑΚΗ-ΒΟΤΡΒΟΤΛΑΚΗ-ΚΑΚΡΟΤΝΣΑ-ΛΕΛΙΓΚΟΤ 4
end counter_tb; architecture counter_tb_a of counter_tb is component counter is port ( rst: in std_logic; clk: in std_logic; z : out integer ); end component; constant clk_hp : time := 3000 ps; signal rst : std_logic; signal clk : std_logic; signal Z : INTEGER ; counterinst: counter port map (rst, clk, z ); --------------------------------------------------------------------- clock_gen_proc : process is clk <= '1'; wait for clk_hp; clk <= '0'; wait for clk_hp; end process clock_gen_proc; ---------------------------------------------------------------------- stimulus_proc : process is rst<='0'; wait for 2* clk_hp; wait for 0.5 ns ; rst<='1'; wait for 60* clk_hp; rst<='0'; wait for 2* clk_hp; rst<='1'; wait for 2* clk_hp; wait for 20* clk_hp; wait; end process stimulus_proc; ΑΗΜΑΚΗ-ΒΟΤΡΒΟΤΛΑΚΗ-ΚΑΚΡΟΤΝΣΑ-ΛΕΛΙΓΚΟΤ 5
ΠΔΙΡΑΜΑΣΙΚΟ ΜΔΡΟ 1. Αλαπηύμηε θώδηθα πνπ λα πεξηγξάθεη θύθισκα κεηξεηή πνπ κεηξάεη από 1 σο 9 θπθιηθά θαη επαιεζεύζηε ηε ιεηηνπξγία ηνπ. 2. Αλαπηύμηε θώδηθα πνπ λα πεξηγξάθεη θύθισκα 4bit κεηξεηή πνπ κεηξάεη άξηηνπο αξηζκνύο θπθιηθά θαη επαιεζεύζηε ηε ιεηηνπξγία ηνπ. Άζκηζη για παπάδοζη 1. Αλαπηύμηε θώδηθα πνπ λα πεξηγξάθεη θύθισκα κεηξεηή πνπ κεηξάεη από 3 σο 53 θπθιηθά θαη επαιεζεύζηε ηε ιεηηνπξγία ηνπ. 2. ρεδηάζηε ην θύθισκα πνπ αληίζηνηρεί ζην δήηεκα 2 ηνπ πεηξακαηηθνύ κέξνπο κε JK- Flip-flop. 3. ρεδηάζηε ην θύθισκα πνπ αληίζηνηρεί ζην δήηεκα 1 ηεο άζθεζεο γηα παξάδνζε. ΑΗΜΑΚΗ-ΒΟΤΡΒΟΤΛΑΚΗ-ΚΑΚΡΟΤΝΣΑ-ΛΕΛΙΓΚΟΤ 6