logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Kod VHDL do dzielenia liczb 8-bitowych - prośba o przykład

Piotreks 01 Cze 2007 14:14 4596 7
REKLAMA
  • #1 3942632
    Piotreks
    Poziom 10  
    Posty: 36
    Witam!!!
    Proszę o umieszczenie kodu układu dzielenia dwóch liczb 8 bitowych w języku vhdl.
    Z góry dziękuję.
    Pozdrawiam!!
  • REKLAMA
  • #2 3942957
    hefid
    Spoczywaj w Pokoju
    Posty: 15878
    Pomógł: 546
    Ocena: 6165
    Post był raportowany.
    Przeniosłem z: Programowanie ogólne
  • REKLAMA
  • #3 3943871
    Piotreks
    Poziom 10  
    Posty: 36
    Piotreks napisał:
    Witam!!!
    Proszę o umieszczenie kodu układu dzielenia dwóch liczb 8 bitowych w języku vhdl.
    Z góry dziękuję.
    Pozdrawiam!!


    Proszę o pomoc.
  • #4 3956078
    Magda1207
    Poziom 1  
    Posty: 1
    Mam bardzo podobny problem: Układ sekwencyjny dzielenia X/D=Q+R liczb zapisanych w układzie U2. Mam juz pewne materiały ale to wciąż za mało... Jeśli ktoś byłby w stanie mi pomóc jak najszybciej i chciał zarobić proszę o kontakt, pozdrawiam
  • REKLAMA
  • #5 3958058
    griva
    Poziom 17  
    Posty: 203
    Pomógł: 12
    Ocena: 1
    Magda1207 napisał:
    Mam bardzo podobny problem: Układ sekwencyjny dzielenia X/D=Q+R liczb zapisanych w układzie U2. Mam juz pewne materiały ale to wciąż za mało... Jeśli ktoś byłby w stanie mi pomóc jak najszybciej i chciał zarobić proszę o kontakt, pozdrawiam



    a coregena ogladaliscie??

    Magda1207 napisał:
    Jeśli ktoś byłby w stanie mi pomóc jak najszybciej i chciał zarobić proszę o kontakt, pozdrawiam


    jestes moze z okolic Sosnowca/Gliwic??
  • REKLAMA
  • #6 3959607
    pndemon
    Poziom 19  
    Posty: 444
    Pomógł: 35
    Ocena: 18
    najłatwiej tak jak kolega polecał, np. w ISE jest CORE generator, szukasz gotowego IP, ustalasz tylko jego parametry i masz :) Nic prostszego. A jeśli sam chcesz się pobawić, to z tego co wiem(nigdy tego nie robiłem) nie jest to takie proste, no chyba że chcesz dzielić tylko przez potęgi 2
  • #7 3982411
    maciej5791
    Poziom 11  
    Posty: 7
    Pomógł: 1
    poniżej załączam kod który, dzieli sekwencyjnie dwie liczby w kodzie NB. Przerobienie tego na układ dzielący liczby w kodzie U2 nie powinno być problemem. Kod "parametryzuje" długości dzielnika i dzielnej za pomocą generic LENGTH.

    pozdrawiam

    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.numeric_std.all;

    entity sequentialDivider is
    generic(
    LENGTH : integer := 16
    );
    port(
    arst_i : in std_logic;
    clk_i : in std_logic;
    load_i : in std_logic;
    dividend_i : in std_logic_vector(LENGTH-1 downto 0);
    divisor_i : in std_logic_vector(LENGTH-1 downto 0);
    ready_o : out std_logic;
    quotient_o : out std_logic_vector(LENGTH-1 downto 0);
    reminder_o : out std_logic_vector(LENGTH-1 downto 0)
    );
    end entity;

    architecture rtl of sequentialDivider is

    signal M, A, Q : unsigned(LENGTH downto 0);
    signal ready : std_logic;
    signal difference : unsigned(LENGTH downto 0);
    signal cnt : integer range 0 to (2**LENGTH)-1;

    begin

    SUBTRACT:
    difference <= A - M;

    START_LOAD_SHIFT_UPDATE:
    process(arst_i, clk_i)
    begin
    if arst_i = '1' then
    M <= (others => '0');
    A <= (others => '0');
    Q <= (others => '0');
    cnt <= 0;
    ready_o <= '1';
    elsif rising_edge(clk_i) then
    ready_o <= '1';
    if (load_i = '1') and (cnt = 0) then
    M <= unsigned('0' & divisor_i);
    Q <= unsigned('0' & dividend_i);
    A <= (others => '0');
    cnt <= (LENGTH + 2);
    ready_o <= '0';
    elsif cnt /= 0 then
    if cnt /= 1 then
    ready_o <= '0';
    end if;
    cnt <= cnt - 1;
    if difference(difference'left) = '0' then
    A <= difference(difference'left-1 downto 0) & Q(Q'left);
    Q <= Q(Q'left-1 downto 0) & '1';
    else
    A <= A(A'left-1 downto 0) & Q(Q'left);
    Q <= Q(Q'left-1 downto 0) & '0';
    end if;
    end if;
    end if;
    end process;

    REMINDER:
    reminder_o <= std_logic_vector(A(A'left downto 1));

    QUOTIENT:
    quotient_o <= std_logic_vector(Q(Q'left-1 downto 0));

    end rtl;

Podsumowanie tematu

✨ Dyskusja dotyczy prośby o przykład kodu VHDL realizującego dzielenie dwóch liczb 8-bitowych. Uczestnicy sugerują wykorzystanie gotowych rozwiązań, takich jak CORE Generator dostępny w środowisku ISE, który umożliwia generowanie IP do dzielenia liczb z parametryzacją. Wskazano, że implementacja dzielenia sekwencyjnego jest możliwa, a jeden z użytkowników załączył fragment kodu VHDL realizującego sekwencyjne dzielenie liczb w kodzie naturalnym (NB) z możliwością parametryzacji długości operandów. Przerobienie tego kodu na dzielenie liczb w kodzie U2 (uzupełnień do dwóch) nie powinno stanowić problemu. Poruszono także kwestię dzielenia liczb stałoprzecinkowych i zmiennoprzecinkowych oraz wskazano na pakiety VHDL 200x, które mogą ułatwić operacje arytmetyczne i mają wejść do standardu VHDL.
Wygenerowane przez model językowy.
REKLAMA