kramann.info
© Guido Kramann

Login: Passwort:










5.2 2. Beispiel: 4-Bit-Binärzähler

5.2 (EN google-translate)

5.2 (PL google-translate)


Statt einer einzelnen LED soll nun ein 4-Bit-Binärzähler realisiert werden.

Die physikalische Zuordnung der 4 Bits soll sein:

Bit 3: IO20    P126  (msb most significant bit 2 hoch 3)
Bit 2: IO30    P130
Bit 1: IO31    P131
Bit 0: IO32    P132  (lsb least significant bit 2 hoch 0)

Code 5.2-1: Pinzuordnung

Projekt-Download

binaerzaehler.zip - Download des Beispiels als ISE-Projekt.

Beschaltung

Beschaltung des DLP-FPGA-Boards.

Bild 5.2-1: Beschaltung des DLP-FPGA-Boards.

Das Programm wird aus dem vorangegangenen heraus weiter entwickelt.

Grundidee für die Realisierung:

  • Definition einer 4-Bit-Logik-Variablen VIERBIT als Output im Port-Bereich.
  • Definition einer Integervariable VIERBITZAEHLER mit Range von 0..3 architecture-Bereich
  • Mapping von VIERBITZAEHLER auf VIERBIT.

Quelltext

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity binaerzaehler is
    Port ( MEINECLOCK : in  STD_LOGIC;
           VIERBIT : out  STD_LOGIC_VECTOR (3 downto 0));
end binaerzaehler;

architecture Behavioral of binaerzaehler is
    signal zaehler           : integer range 0 to 2999999 := 0;
    signal VIERBITZAEHLER    : integer range 0 to 15 := 0;
    begin
        process begin
            wait until rising_edge(MEINECLOCK);
            if (zaehler<2999999) then
                zaehler <= zaehler+1;
            else
                zaehler <= 0;
                if(VIERBITZAEHLER<15) then
                    VIERBITZAEHLER <= VIERBITZAEHLER+1;
                else
                    VIERBITZAEHLER <= 0;
                end if;
            end if;
        end process;
        -- Typumwandlung erforderlich, da Mapping zwischen unterschiedlichen Datentypen:
        VIERBIT <= conv_std_logic_vector(VIERBITZAEHLER,VIERBIT'length);
end Behavioral;

Code 5.2-2: VHDL-Quelltext in Datei binaerzaehler.vhd

## GCLK6 ist auf FPGA-Chip Pin 56
NET "MEINECLOCK" LOC = "P56";
## Mapping muss bitweise erfolgen:
NET "VIERBIT<3>"   LOC = "P126";
NET "VIERBIT<2>"   LOC = "P130";
NET "VIERBIT<1>"   LOC = "P131";
NET "VIERBIT<0>"   LOC = "P132";

NET "MEINECLOCK" IOSTANDARD = LVCMOS25;
NET "VIERBIT<3>" IOSTANDARD = LVCMOS33; 
NET "VIERBIT<2>" IOSTANDARD = LVCMOS33; 
NET "VIERBIT<1>" IOSTANDARD = LVCMOS33; 
NET "VIERBIT<0>" IOSTANDARD = LVCMOS33; 

Code 5.2-3: Festlegung der Pinzuordnung und Pinkonfiguration in der Konfigurationsdatei binaerzaehler.ucf