Prioritetni Koder

  • July 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Prioritetni Koder as PDF for free.

More details

  • Words: 1,120
  • Pages: 11
Приоритетни кодер – Рачунарски VLSI

Приоритетни кодер Приоритетна мрежа Приоритетни кодер ка о што само име каже додјељује различит приоритет сваком од битова који се реализује помоћу приоритетне мреже, а затим их прослјеђује у кодер. О чему се заправо ради, додјељивање приоритета се кристи у мрежама које имају раличите значаје приступа неком уређају, тј. линија која има највећи приоритет блокира све остале приступе ( n-1 линија). Линија која има за један мањи приоритет од линије која има највећи приоритет може да блокира приступе испод себе (n-2 линија). Следећа слика приказује ред приоритета.

W7 1 0 0 0 0 0 0 0

W6 x 1 0 0 0 0 0 0

W5 x x 1 0 0 0 0 0

W4 x x x 1 0 0 0 0

W3 x x x x 1 0 0 0

W2 x x x x x 1 0 0

W1 x x x x x x 1 0

W0 x x x x x x x 1

Приоритет X7 X6 X5 X4 X3 X2 X1 X0

Слика 1 Табела која приказује приоритет бита 1,0 лотички нивои; x може бити лог. јединица или лог. нула

Слика 2 Паралелни и серијски начин реализације приоритетне мреже -1-

Студент: Ђорђе Гарић

Приоритетни кодер – Рачунарски VLSI Приоритетне мреже се обично реализују као паралелне које захтјевају вишеулазна «и» кола или, серијски начин који захтјева коришћење двоулазних «и» кола и коришћење (n-2) «или» кола. У реализацији приоритетне мреже одлучио сам се за коришћење паралелне приоритетне мреже.

Слика3 Шематски приказ приоритетне мреже реализоване у VHDL језику

-2-

Студент: Ђорђе Гарић

Приоритетни кодер – Рачунарски VLSI Следћи код је написан у језику за описивање хардвера тј. у VHDL језику и представља код приоритетне мреже. Прво ћемо поћи од основних елемената а то су: -- Четвороулазно И коло entity I_4 is port ( inp0,inp1,inp2,inp3: in BIT; Y: out BIT ); end I_4; architecture I_4 of I_4 is begin -- POCETAK KODA process begin Y <= inp0 and inp1 and inp2 and inp3; wait on inp0,inp1,inp2,inp3; end process;

end I_4;

-- Деветоулазно и коло entity I_9 is port ( inp0,inp1,inp2,inp3,inp4,inp5,inp6,inp7,inp8: in BIT; Y: out BIT ); end I_9; architecture I_9 of I_9 is begin --Pocetak koda process begin

Y <= inp0 and inp1 and inp2 and inp3 and inp4 and inp5 and inp6 and inp7 and inp8; wait on inp0,inp1,inp2,inp3,inp4,inp5,inp6,inp7,inp8; end process; end I_9; --Не коло --Теба нам 8.улаѕно не коло, нулти бит не инвертујемо. entity NEG is port ( ULAZ: in BIT_vector(7 downto 0);

-3-

Студент: Ђорђе Гарић

Приоритетни кодер – Рачунарски VLSI Y: out BIT_vector(7 downto 0) ); end NEG; architecture NEG of NEG is begin -- Pocetak koda process begin

Y <= not(ulaz); Y(0)<=ulaz(0); wait on ulaz; end process;

end NEG; --Приоритетна мрежа entity PR_MREZA is port ( Upm: in BIT_VECTOR (7 downto 0); E:in bit; Ipm: out BIT_VECTOR (7 downto 0) ); end PR_MREZA; architecture PR_MREZA of PR_MREZA is --Deklaracija signala --Inverujemo 7 bitova signal negU:bit_vector(7 downto 0); --Deklaracija komonenti component I_4 port( inp0,inp1,inp2,inp3: in BIT; Y: out BIT ); end component;

component I_9 port( inp0,inp1,inp2,inp3,inp4,inp5,inp6,inp7,inp8: in BIT; Y: out BIT ); end component; component NEG port ( ULAZ: in BIT_vector(7 downto 0); Y: out BIT_vector(7 downto 0)

-4-

Студент: Ђорђе Гарић

Приоритетни кодер – Рачунарски VLSI ); end component ; begin --Pocetak glavnog koda Invertor:NEG port map( ULAZ=>Upm, Y=>negU ); K7:I_4 port map( inp0=>Upm(7), inp1=>E, inp2=>'1', inp3=>'1',

);

Y=>Ipm(7)

K6:I_4 port map( inp0=>Upm(6), inp1=>negU(7), inp2=>E, inp3=>'1', Y=>Ipm(6) ); K5:I_4 port map( inp0=>Upm(5), inp1=>negU(6), inp2=>negU(7), inp3=>E, Y=>Ipm(5) ); K4:I_9 port map( inp0=>Upm(4), inp1=>negU(5), inp2=>negU(6), inp3=>negU(7), inp4=>E, inp5=>'1', inp6=>'1', inp7=>'1', inp8=>'1', Y=>Ipm(4) ); K3:I_9 port map(

-5-

Студент: Ђорђе Гарић

Приоритетни кодер – Рачунарски VLSI

);

inp0=>Upm(3), inp1=>negU(4), inp2=>negU(5), inp3=>negU(6), inp4=>negU(7), inp5=>E, inp6=>'1', inp7=>'1', inp8=>'1', Y=>Ipm(3)

K2:I_9 port map( inp0=>Upm(2), inp1=>negU(3), inp2=>negU(4), inp3=>negU(5), inp4=>negU(6), inp5=>negU(7), inp6=>E, inp7=>'1', inp8=>'1', Y=>Ipm(2) ); K1:I_9 port map( inp0=>Upm(1), inp1=>negU(2), inp2=>negU(3), inp3=>negU(4), inp4=>negU(5), inp5=>negU(6), inp6=>negU(7), inp7=>E, inp8=>'1', Y=>Ipm(1) ); K0:I_9 port map( inp0=>Upm(0), inp1=>negU(1), inp2=>negU(2), inp3=>negU(3), inp4=>negU(4), inp5=>negU(5), inp6=>negU(6), inp7=>negU(7), inp8=>E, Y=>Ipm(0) ); end PR_MREZA;

-6-

Студент: Ђорђе Гарић

Приоритетни кодер – Рачунарски VLSI Изглед временског дијаграма сигнала приоритетне мреже у VHDL језику:

Слика 4 Улази (Upm(0..7)) и излази (Ipm(0..7)) приоритетне мреже Са слике 4, се види да приоритет имају битови веће тежине. Симулација је извршена у периодима од 100nS, додјељујући битовима приоритет од навећег ка најмањем.

-7-

Студент: Ђорђе Гарић

Приоритетни кодер – Рачунарски VLSI

Кодер Кодер има задатак да од одабраног улаза, на излазу преслика његову бинарну вриједност. Такав кодер називамо BCD кодер.Кодер има 2ⁿ улаза, и n излаза. Код кодера само један улаз може имат вриједност 1. Његова табела кодирања приказана је на слици 4: Uk: in BIT_VECTOR (7 downto 0); 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000 остале комбинације

Ik: out STD_LOGIC_VECTOR (2 downto 0) 000 001 010 011 100 101 110 111 zzz

Слика 5 Табела кодирања Реализација кодера у VHDL језику може се реализовати на следећи начин: --- Кодер library IEEE; use IEEE.std_logic_1164.all; entity KODER is port ( Uk: in BIT_VECTOR (7 downto 0); Ik: out STD_LOGIC_VECTOR (2 downto 0) ); end KODER; architecture KODER of KODER is begin process(Uk) begin case Uk is when "00000001" => Ik <="000"; when "00000010" => Ik <="001"; when "00000100" => Ik <="010"; when "00001000" => Ik <="011"; when "00010000" => Ik <="100"; when "00100000" => Ik <="101"; when "01000000" => Ik <="110"; when "10000000" => Ik <="111"; when OTHERS => Ik <="ZZZ"; end case;

-8-

-- За сва остала стања излазна ипеданса ће бити висока

Студент: Ђорђе Гарић

Приоритетни кодер – Рачунарски VLSI end process; end KODER;

Временски дијаграм сигнала кодера:

Слика 6 Временски дијаграм кодера, када је на улазу више од једног сигнала активно, или су сви сигнали лог. нуле, кодер прелази у стање високе импедансе.

Приоритетни кодер Приоритетни кодер реализујемо спајањем приоритетне мреже и кодера, приказаног као на слици:

Слика 7 Реализација приоритетног кодера спајањем приоритетне мрже и кодера -9-

Студент: Ђорђе Гарић

Приоритетни кодер – Рачунарски VLSI

Код: -- Приоритетни кодер -library IEEE; use IEEE.std_logic_1164.all; entity PRIORITETNI_KODER is port ( UL: in BIT_VECTOR (7 downto 0); DOZVOLA: in BIT; IZ: out STD_LOGIC_VECTOR (2 downto 0) ); end PRIORITETNI_KODER; architecture PRIORITETNI_KODER of PRIORITETNI_KODER is signal pomocni:bit_vector(7 downto 0) ; component pr_mreza port( Upm: in BIT_VECTOR (7 downto 0); E:in bit; Ipm: out BIT_VECTOR (7 downto 0) ); end component; component KODER port( Uk: in BIT_VECTOR (7 downto 0); Ik: out STD_LOGIC_VECTOR (2 downto 0) ); end component; begin PM: pr_mreza port map ( Upm=>UL, E=>DOZVOLA, Ipm=>pomocni ); KO: KODER port map ( Uk=>pomocni, Ik=>IZ ); end PRIORITETNI_KODER;

-10-

Студент: Ђорђе Гарић

Приоритетни кодер – Рачунарски VLSI

Времески дијаграм сигнала приоритетног кодера:

Слика 8 Код приоритетног кодера може бити активно више улаза истовремено, он бира највећи бит и њега просјеђује кодеру, који даје његову бинарну врједност

-11-

Студент: Ђорђе Гарић

Related Documents