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

VHDL programowanie XOR with 8 inputs on LOOP FOR

25 Mar 2020 18:46 135 5
  • Poziom 2  
    Witam wszystkich serdecznie !
    Mam problem z opisaniem pewnego układu w języku VHDL. Otóż muszę opisać bramkę XOR z 8 wejściami używająć pętli for.
    Niezbyt wiem jak się do tego zabrać. Moje podstawowe umiejętności nie wystarczają do wykonania tego zadania.
    Mam coś takiego w części architecture ale niestety to chyba nie jest poprawnie.

    architecture xorgate8 of test is
    signal INP : std_logic_vector(0 to 8);
    begin
    process (A)
    variable TMP : std_logic;
    begin
    TMP := '0';
    for I in 0 to 8 loop
    TMP := TMP xor A(I);
    end loop;
    INP <= TMP;
    end process;
    end xorgate8;
  • Poziom 2  
    Zacytuj cały plik VHDL wraz z deklaracją portów wejściowych i wyjściowych. Próbowałes to kompilować i symulować?
  • Poziom 2  
    Zly Wirus napisał:
    Zacytuj cały plik VHDL wraz z deklaracją portów wejściowych i wyjściowych. Próbowałes to kompilować i symulować?

    library ieee;
    use ieee.std_logic_1164.all;

    entity test is
    port ( A : in std_logic;
    I : in std_logic;
    );
    end entity;

    architecture xorgate8 of test is

    signal INP : std_logic_vector(0 to 8);

    begin

    process (A)
    variable TMP : std_logic;
    begin
    TMP := '0';
    for I in 0 to 8 loop
    TMP := TMP xor A(I);
    end loop;
    INP <= TMP;
    end process;
    end xorgate8;

    Dodano po 37 [minuty]:

    Tak napisałem tego xora ale bez użycia pętli

    library ieee;
    use ieee.std_logic_1164.all;

    entity test is
    port ( a : in std_logic;
    b : in std_logic;
    c : in std_logic;
    d : in std_logic;
    e : in std_logic;
    f : in std_logic;
    g : in std_logic;
    h : in std_logic;
    y : out std_logic;
    );
    end entity;

    architecture xorgate8 of test is
    y <= (a xor b) and (b xor c) and (c xor d) and (d xor e) and(e xor f) and (f xor g) and (g xor h) and (h xor a);

    end xorgate8;
  • Poziom 6  
    Ja bym zaczął od napisania tablicy prawdy dla tego xorgate8 ;-)

    Który wykładowca daje takie zadania?
  • Pomocny post
    Poziom 28  
    emias5 napisał:

    Mam coś takiego w części architecture ale niestety to chyba nie jest poprawnie.


    na pierwszy rzut oka wyglada poprawnie, jestem w robocie i nie mam czasu na drugi rzut oka, ale wieczorem moge popatrzec dokladniej;

    Cytat:

    y <= (a xor b) and (b xor c) and (c xor d) and (d xor e) and(e xor f) and (f xor g) and (g xor h) and (h xor a);


    to jest inna funkcja niz w wymaganiach, jakby zmienic 'and' na 'xor'
    to moze by sie nadawalo :)


    ale lepiej by bylo:
    y <= (((a xor b) xor c) xor d) ...

    J.


    na drugi rzut oka:
    Kod: vhdl
    Zaloguj się, aby zobaczyć kod


    co to ma byc 'INP'?
    A(8 downto 0) wyglada na wejscie (port IN)
    zamiast INP <= TMP; powinno byc y <= TMP;
    gdzie 'y' jest wyjsciem (port OUT);

    poza tym calkiem dobrze;

    J.
  • Pomocny post
    Poziom 29  
    Kod: vhdl
    Zaloguj się, aby zobaczyć kod


    Należałoby zacząć od poprawienia deklaracji portów.
    Bramka ma być 8-wejściowa więc jako wejście potrzebujemy nie pojedynczy sygnał a wektor i jedno wyjście.

    Kod: vhdl
    Zaloguj się, aby zobaczyć kod


    Jak budować wielowejściowe bramki przy pomocy "for" znajdziesz w tym filmiku
    https://www.youtube.com/watch?v=Kd-QyX1OPiU

    Ponieważ wygląda to na zadanie domowe to gotowca nie dostaniesz.
    Ewentualny kod do oceny wstawiaj w znacznikach SYNTAX.