1 / 15

Curs 02 Sinte za logică a circuitelor combinaţionale

Curs 02 Sinte za logică a circuitelor combinaţionale. Descrierea R egister T ransfer L evel (RTL) a sistemelor. Sistemul este descris ierarhic prin diviza rea acestuia în blocuri  subblocuri  componente fundamentale ;

twila
Download Presentation

Curs 02 Sinte za logică a circuitelor combinaţionale

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. Curs 02Sinteza logică acircuitelor combinaţionale

  2. Descrierea Register Transfer Level (RTL) a sistemelor • Sistemul este descris ierarhic prin divizarea acestuia în blocuri  subblocuri  componente fundamentale; • Blocurile sunt descrise structural (instanţieri de componente reprezentate de subblocuri); • Subblocurile sunt descrise structural (instanţieri de componente reprezentate de componentele fundamentale) sau comportamental; • Componentele fundamentale sunt descrise comportamental (procese).

  3. CASE semnal_selectie IS WHEN valoare_1  instrucţiuni_1; WHEN valoare_2  instrucţiuni_2; ....... WHEN valoare_n  instrucţiuni_n; END CASE; WITH semnal_selectie SELECT semnal_tinta  optiune_1 WHEN valoare_1_semnal_selectie, optiune_2 WHEN valoare_2_semnal_selectie, ... optiune_n WHEN valoare_n_semnal_selectie; IF conditie_1 THEN instrucţiuni_1; ELSIF conditie_2 THEN instrucţiuni_2; ... ELSE instrucţiuni_n; END IF; semnal_tinta  optiune_1 WHEN conditie_1 ELSE optiune_2 WHEN conditie_2 ELSE ... optiune_n; Specificaţii selecţie vs. condiţionale se introduc numai în interiorul proceselor se introduc numai în exteriorul proceselor

  4. Specificaţii condiţionale se recomandă utilizarea acestora NUMAI pentru descrierea sistemelor digitale a căror comportament depinde de semnale de intrare care influenţează sistemul după grade de prioritate diferită.

  5. Specificaţii de selecţie se utilizează pentru descrierea sistemelor digitale la care semnalele de intrare se monitorizează simultan (în paralel) – nu au grad de prioritate.

  6. Inferarea (generarea) latch-urilor pentru toate combinaţiile posibile dintre stările (valorile) semnalelor de intrare, tuturor semnalelor de ieşire ale sistemului combinaţional trebuie să li se asigure în descrierea HDL a sistemului câte o cale logică, care să permită atribuirea unei valori acestora.

  7. În cazul sistemelor combinaţionale, toate semnalele de intrare ale acestora trebuie introduse în lista de senzitivităţi a procesului care descrie comportamentul sistemului respectiv.

  8. Exemplu de generare a latch-urilor library ieee; use ieee.std_logic_1164.all; entity DCD is port( X : in std_logic; Y : out std_logic_vector(1 downto 0)); end; architecture GRESIT of DCD is begin comb:process(X) begin Y <= “00”’; case X is when ‘0’ => Y(0) <= ’1’; when ‘1’ => Y(1) <= ’1’; when others => Y <= (others=>'0'); end case; end process; end GRESIT;

  9. Exemplu de generare a latch-urilor library ieee; use ieee.std_logic_1164.all; entity DPAR is port( EN : instd_logic; X : in std_logic_vector(1 downto 0); Y : out std_logic); end; architecture GRESIT of DPAR is begin comb:process(X, EN) begin if EN=‘0’ then if (X=“00”) or (X=“11”) then y<=‘0’; elsif (X=“01”) or (X=“10”) then y<=‘1’; end if; end if; end process; end GRESIT; WARNING:Xst:737 - Found 1-bit latch for signal <Y>.

  10. entity MUX is port ( di_mux : in std_logic_vector(3 donto 0); sel_mux: in std_logic_vector (1 downto 0); do_mux : out std_logic); end MUX; architecture beh of MUX is begin comb:process (di_mux, sel_mux)begin case sel_mux is when "00" => do_mux <= di_mux(0); when "01 " => do_mux <= di_mux(1); when "10 " => do_mux <= di_mux(2); when "11 " => do_mux <= di_mux(3); when others => do_mux <= ‘-’; end case; end process; end beh; entity MUX is port ( di_mux : in std_logic_vector(3 donto 0); sel_mux : in std_logic_vector (1 downto 0); do_mux : out std_logic); end MUX; architecture beh of MUX is begin with sel_mux select do_mux<= di_mux(0) when "00", di_mux(1) when "01", di_mux(2) when “10", di_mux(3) when “11", ‘-’ when others; end beh; Descrierea comportamentală a multiplexoarelor

  11. entity COD isport ( di_cod : in std_logic_vector (7 downto 0); do_cod : out std_logic_vector (2 downto 0)); end COD; architecture beh of COD is begin process(di_cod) begin do_cod < ="000"; if di_cod(0)='1'then do_cod <="000"; elsif di_cod(1)='1'then do_cod <="001"; elsif di_cod(2)='1'then do_cod <="010"; elsif di_cod(3)='1'then do_cod <="011"; elsif di_cod(4)='1'then do_cod <="100"; elsif di_cod(5)='1'then do_cod <="101"; elsif di_cod(6)='1'then do_cod <="110"; elsif di_cod(7)='1'then do_cod <="111"; end if; end process; end beh; entity COD isport ( di_cod : in std_logic_vector (7 downto 0); do_cod : out std_logic_vector (2 downto 0)); end COD; architecture beh of COD isbegin do_cod <= "000" when di_cod(0)='1‘else "001" when di_cod(1)='1‘else "010" when di_cod(2)='1‘else "011" when di_cod(3)='1‘else “100" when di_cod(4)='1‘else “101" when di_cod(5)='1‘else “110" when di_cod(6)='1‘else “111" when di_cod(7)='1‘else "000"; end beh; Descrierea comportamentală a codificatoarelor prioritare

  12. Descrierea comportamentală a decodificatoarelor entity DEC is port( di_dcd : in std_logic_vector(1 downto 0); en_dcd: in std_logic; do_dcd : out std_logic_vector(3 downto 0)); end DEC; architecture beh of DEC isbegin comb:process(di_dcd,en_dcd)begin if en_dcd ='1' then do_dcd <= "0000"; -- initializare! case di_dcd is when "00" => do_dcd(0) <= '1'; when "01" => do_dcd(1) <= '1';when "10" => do_dcd(2) <= '1'; when "11" => do_dcd(3) <= '1'; when others => do_dcd <= (others=>’0’); end case; else do_dcd <= "0000"; end if; end process; end beh;

  13. Descrierea comportamentală a bufferelor TS entity MUX is port ( di_mux : in std_logic_vector(1 downto 0); sel_mux : in std_logic; oe_mux : in std_logic; do_mux : out std_logic); end MUX; architecture beh of MUX is signal tmp_mux: std_logic; begin comb:process (di_mux, sel_mux) begin case sel_mux is when ‘0’=> tmp_mux <= di_mux(0); when ‘1’=> tmp_mux <= di_mux(1); when others=> tmp_mux <= ‘-’; end case; end process; do_mux<= tmp_mux WHEN (oe_mux=’1’) ELSE ‘Z’; iesire: process (oe_mux,tmp_mux)begin if (oe_mux=’1’) then do_mux <= tmp_mux; else do_mux <= ’Z’; end if; end process; end BEH;

More Related