Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VHDL problem z tablica stałych

piotruss 03 Wrz 2008 16:26 2073 2
  • #1 03 Wrz 2008 16:26
    piotruss
    Poziom 12  

    Code:
    library IEEE;
    
    use IEEE.STD_LOGIC_1164.ALL;

    entity LCDINIT is
    port (
    clock : in bit;
    res : in bit;
    wr : out bit;
    dout : out std_logic_vector (7 downto 0));
    end LCDINIT;

    architecture arch_LCDINIT of LCDINIT is
    type moj_wektor is array (integer range <>) of std_logic_vector(7 downto 0);
    constant stala : moj_wektor(0 to 1):= ("11111111","00000000");
    begin
    dout <= stala(1);
    wr <= res;
    end architecture arch_LCDINIT;


    Witam, nie mogę dojść do tego co zrobić aby przepisywanie stałych z tablicy działało. Tu akurat chcę przypisać element o indeksie 1 na wyjście (Oczywiście w przyszłości indeks będzie na zmiennej), ale kompilator nie potrafi zrozumieć tego i krzyczy:

    Code:
    Aggregates are supported only for types that map to an array of bits


    Czy ktoś może napisać jak sprawić aby ten kod działał?

    0 2
  • Pomocny post
    #2 03 Wrz 2008 23:04
    Dr.Vee
    VIP Zasłużony dla elektroda

    Witam,

    U mnie działa (w xilinx xst 8.2i). Jaki masz kompilator?

    Komunikat o błędzie dotyczy punktu 7.3.2 standardu VHDL ("agregaty") - z tego co rozumiem, to Twój kompilator wspiera je tylko dla tablic jednowymiarowych zawierających bity (a u Ciebie jest to tablica dwuwymiarowa, bo std_logic_vector też jest typem tablicowym).

    Spróbuj napisać tak, może zadziała:

    Code:
    constant stala : moj_wektor(0 to 1) := (
    
        0 => "11111111",
        1 => "00000000");

    Pozdrawiam,
    Dr.Vee

    0
  • #3 04 Wrz 2008 17:28
    piotruss
    Poziom 12  

    Wygląda na to, iż kompilator jest winny, posiadam MAX + PLUS II z 2002r. Niestety program pisze na FLEX-a Altery, więc spróbuje znaleźć nowszą wersje.
    Próbowałem jeszcze zamiast constant użyć signal, wtedy bloczek z kodem VHDL kompiluje się, ale kompilator czepia się pinów które są podłączone do portu dout:

    VHDL problem z tablica stałych

    Błąd kompilatora:

    Code:
    Node dane[7..0] missing source


    Przy przypisaniu np:
    Code:
    dout <= "11111111"

    wszystko oczywiście działa ładnie.

    0