Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разное (электроника) > HDL помогите разобраться


Автор: SantFather 13.5.2014, 16:56
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity float_to_int is
    port(      
    clk : in std_logic;
    in_port: in std_logic_vector(31 downto 0);
    out_port: out std_logic_vector(31 downto 0)
    );
end entity float_to_int;

architecture Behavioral of float_to_int is 
signal MA:std_logic_vector(22 downto 0);
signal PA:std_logic_vector(7 downto 0);
signal ZN:std_logic;
signal ZeroP:std_logic;
begin                        
    ZeroP <= PA(0) or PA(1) or PA(2) or PA(3) or PA(4) or PA(5) or PA(6) or PA(7);
    process    (in_port,clk,PA) begin
    MA(22 downto 0)<= in_port(22 downto 0);
    PA(7 downto 0)<= in_port(30 downto 23);
    ZN<= in_port(31);                 
        if((clk'event)and (clk='1')) then
            while (ZeroP='1') loop
                PA(7 downto 0) <= (others=>'0');        
            end loop;
        end if;
    end process;
end Behavioral;


Почему не получается обнулить PA в цикле? Возможно я не так понимаю суть процесса, ведь по идее команды в процессе выполняются последовательно.

Автор: tzirechnoy 13.5.2014, 18:24
Так он от PA зависит -- потому сразу и ещё раз выполняется. clk'event у нас ужэ не будет, потому PA опять станет in_port.

Автор: SantFather 14.5.2014, 14:35
Убрал РА из списка чувствительности, ничего не изменилось. Нашел тут в книге одной, что значения регистрам из процесса передаются не сразу, а выставляются по окончании процесса.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)