140 likes | 232 Views
Digitális rendszerek II. Multiplexelés 2009.11.29. Feladat. Az FPGA panel 4 db 7 szegmenses kijelzőjén meg kell jeleníteni az egyenként 2 bites (0,1,2,3) számokat. CLK50 P54. Programozó Kapcsoló LENT kell lennie!. Tolókapcsolók. RESET (P41). RST. digit (3:0). seg (6:0).
E N D
Digitális rendszerek II. Multiplexelés 2009.11.29.
Feladat • Az FPGA panel 4 db 7 szegmenses kijelzőjén meg kell jeleníteni az egyenként 2 bites (0,1,2,3) számokat CLK50 P54 Programozó Kapcsoló LENT kell lennie! Tolókapcsolók RESET (P41)
RST digit(3:0) seg(6:0) kapcsolo(7:0)
Mi a multiplexer? Egy kombinációs áramkör, ahol van több sorszámozható bemenet és egy címbemenet. A címbemenet aktuális értékétől függ, hogy a kimeneten melyik bemeneti érték jelenik meg (olyan mint egy kapcsoló) címbemenet N0 N1 N2 N3 kimenet
Állapotgráf RST F0 1 ms-ot vár 1 ms letelt F1 1 ms-ot vár 1 ms letelt F2 1 ms-ot vár 1 ms letelt F3 1 ms-ot vár
Kijelző multiplexelése aktív „0” jellel Bekapcsoljuk A0-t és kiírjuk a számot a kijelzőre, várunk 1 ms-ot Kikapcsoljuk A0-t és bekapcsoljuk A1-et, várunk 1 ms-ot Stb. Olyan gyorsan villog minden kijelző (4 ms-onként), hogy az emberi szem ezt folyamatos világításként érzékeli
clk50 rst kapcsolok(7:0) digit(3:0) seg(6:0)
Modulok kapcsolok(7:0) N0 Számjegy kiválasztó Állapot generátor Hexa-> 7 seg kódoló clk50 cd(1:0) N1 curr(1:0) seg(6:0) rst N2 engedélyező N3 cim Digit kijelölő engedélyező digit(3:0)
Portok (be- és kimenetek) library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity modul is Port ( clk50 : in STD_LOGIC; rst : in STD_LOGIC; kapcsolok : in STD_LOGIC_VECTOR (7 downto 0); digit : out STD_LOGIC_VECTOR (3 downto 0); seg : out STD_LOGIC_VECTOR (6 downto 0)); end modul;
Signal (változók) architectureBehavioral of modul is constant teszt1ms: std_logic_vector(31 downto 0) := conv_std_logic_vector(50000,32); signalcurr : std_logic_vector(3 downto 0); --akt. multiplexaltdekad signalfrissit_szlo : std_logic_vector(31 downto 0); signal cd: std_logic_vector(1 downto 0); --dekadszamlalo signalbcdint : std_logic_vector(15 downto 0); Begin bcdint <= "00" & kapcsolok(7 downto 6) & "00" & kapcsolok(5 downto 4) & "00" & kapcsolok(3 downto 2) & "00" & kapcsolok(1 downto 0);
Process (minden órajelnél lefut) process (clk50, rst, cd) begin ifrst='1' then cd <= (others => '0'); frissit_szlo <= (others => '0'); elsif clk50'event and clk50 = '1' then frissit_szlo <= frissit_szlo +1; iffrissit_szlo = teszt1ms-1 then frissit_szlo <= (others => '0'); cd <= cd + 1; end if; end if; end process; Érzékenységi lista
Feltételes értékadások curr <= bcdint(3 downto 0) when cd ="00" else bcdint(7 downto 4) when cd ="01" else bcdint(11 downto 8) when cd ="10" else bcdint(15 downto 12); digit <= "1111" whenrst= '1' else "1110" when cd= "00" else "1101" when cd= "01" else "1011" when cd= "10" else "0111"; seg <= "1111111" whenrst= '1' else "1000000" whencurr= "0000" else "1111001" whencurr= "0001" else "0100100" whencurr= "0010" else "0110000"; end Behavioral;
ZH • Konzultáció: 2009.12.2. (szerda) • Jelentkezni az ajtóra kitett papíron lehet majd • ZH: 2009.12.3. (csütörtök) • Honlapot nézni hétvégén! • http://nik.bmf.hu/vigh/