eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaVHDL - typy. Problem :(VHDL - typy. Problem :(
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.man.lodz.pl
    !news.nask.pl!news.nask.org.pl!newsfeed2.atman.pl!newsfeed.atman.pl!newsfeed.ne
    ostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neo
    strada.pl.POSTED!not-for-mail
    Date: Thu, 26 May 2011 21:20:54 +0200
    From: Piotr <b...@b...pl>
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.17) Gecko/20110414
    Thunderbird/3.1.10
    MIME-Version: 1.0
    Newsgroups: pl.misc.elektronika
    Subject: VHDL - typy. Problem :(
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    Lines: 130
    Message-ID: <4ddea817$0$2450$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 83.27.148.7
    X-Trace: 1306437655 unt-rea-a-01.news.neostrada.pl 2450 83.27.148.7:2190
    X-Complaints-To: a...@n...neostrada.pl
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:611076
    [ ukryj nagłówki ]

    Witam!

    Mam straszny problem z VHDL'em. Potrzebuje połączyć pewne klocki.
    Już na samym początku nie wiem o co chodzi z tym:

    -- ***************************************************8

    PACKAGE eight_bit_int IS
    SUBTYPE BYTE IS INTEGER RANGE -128 TO 127;
    TYPE ARRAY_BYTE IS ARRAY (0 TO 3) OF BYTE;
    END eight_bit_int;

    LIBRARY work;
    USE work.eight_bit_int.ALL;

    LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;
    USE ieee.std_logic_arith.ALL;

    ENTITY CORDIC IS
    PORT (Clk_50MHz : IN STD_LOGIC;
    x_in, y_in : IN BYTE;
    r, phi, eps : OUT BYTE);
    END CORDIC;


    -- **************************************************


    Niby rozumiem, ale dlaczego jak zamieniam to na schemat to wejście i
    wyjście to np: x_in(0:6). Dlaczego skoro jest od -128 do 127 to ma tylko
    7 bitów, a nie 8???! Przecież to jest 255 wartości...


    Czy mógłby mi ktoś podpowiedzieć jak to zrobić by połączyć to z układem,
    który ma na wyjściu STD_LOGIC_VECTOR(7 DOWNTO 0).? Mogę zmienić wyjście
    ewentualnie w tamtym układzie.

    Jednak ten układ łączy się z układem który na wejściu ma IN(7:0). Mam
    problem z tym typem BYTE. Najchętniej bym go zamienił na
    STD_LOGIC_VECTOR. Gdy próbuje zamienić i zamiast BYTE dać
    STD_VECTOR_LOGIC(0 TO 7) dla wejść i wyjść. Następnie sygnały dać
    STD_VECTOR_LOGIC (0 TO 3). To mam masę błędów np. r <= x(3) jest zle.


    Proszę o jakas podpowiedź, bo jestem początkujący. Nie idę na łatwiznę.
    Już trochę zrobiłem, najgorzej, że muszę to co sam napisałem połączyć z
    tym kodem.

    Prosze o pomoc.


    Wklejam cały kod tego układu, jeśli ma to znaczenie:


    PACKAGE eight_bit_int IS
    SUBTYPE BYTE IS INTEGER RANGE -128 TO 127;
    TYPE ARRAY_BYTE IS ARRAY (0 TO 3) OF BYTE;
    END eight_bit_int;

    LIBRARY work;
    USE work.eight_bit_int.ALL;

    LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;
    USE ieee.std_logic_arith.ALL;

    ENTITY CORDIC IS
    PORT (Clk_50MHz : IN STD_LOGIC;
    x_in, y_in : IN BYTE;
    r, phi, eps : OUT BYTE);
    END CORDIC;

    ARCHITECTURE Behavioral OF CORDIC IS
    SIGNAL x, y, z : ARRAY_BYTE;
    BEGIN

    PROCESS
    BEGIN
    WAIT UNTIL Clk_50MHz = '1';
    r <= x(3);
    phi <= z(3);
    eps <= y(3);

    IF y(2) > 0 THEN
    x(3) <= x(2) + y(2) /4;
    y(3) <= y(2) - x(2) /4;
    z(3) <= z(2) + 14;
    ELSE
    x(3) <= x(2) - y(2) /4;
    y(3) <= y(2) + x(2) /4;
    z(3) <= z(2) - 14;
    END IF;

    IF y(1) > 0 THEN
    x(2) <= x(1) + y(1) /2;
    y(2) <= y(1) - x(1) /2;
    z(2) <= z(1) + 26;
    ELSE
    x(2) <= x(1) - y(1) /2;
    y(2) <= y(1) + x(1) /2;
    z(2) <= z(1) - 26;
    END IF;

    IF y(0) > 0 THEN
    x(1) <= x(0) + y(0);
    y(1) <= y(0) - x(0);
    z(1) <= z(0) + 45;
    ELSE
    x(1) <= x(0) - y(0);
    y(1) <= y(0) + x(0);
    z(1) <= z(0) - 45;
    END IF;

    IF x_in > 0 THEN
    x(0) <= x_in;
    y(0) <= y_in;
    z(0) <= 0;
    ELSIF y_in > 0 THEN
    x(0) <= y_in;
    y(0) <= - x_in;
    z(0) <= 90;
    ELSE
    x(0) <= - y_in;
    y(0) <= x_in;
    z(0) <= - 90;
    END IF;
    END PROCESS;

    END Behavioral;

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: