| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разное (электроника) > 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 |
| Убрал РА из списка чувствительности, ничего не изменилось. Нашел тут в книге одной, что значения регистрам из процесса передаются не сразу, а выставляются по окончании процесса. |