Jump to content

    

nameless

Свой
  • Content Count

    177
  • Joined

  • Last visited

Community Reputation

0 Обычный

About nameless

  • Rank
    Частый гость

Контакты

  • Сайт
    Array

Recent Profile Visitors

1494 profile views
  1. Большое спасибо всем откликнувшимся! Я осознаю, что являюсь заложником мощной традиции процедурного программирования. Однако налицо ограничения синтезатора. Отсюда другой вопрос: есть ли альтернатива ISE для работы со "старыми" приборами?
  2. Ну хорошо. Отдельные процессы. А если я делаю очередь из того, что делается в процессах? Счетчик в одном процессе досчитал до нужного значения и сообщил тем самым другому процессу о начале счета другого. Как при этом сбрасывать счетчики? В третьем процессе? Так синтезатор не дает делать.
  3. Я как-бы начинающий. И не очень понимаю что значит разбить на счетчики и автомат. Сигналы SHIFT_cntr, nestd_SH_cntr и nestd_SH2_cntr - это разве не счетчики?
  4. type ac_array is array (0 to (slide_len - 1)) of std_logic_vector(9 downto 0); signal A_ac_buff : ac_array; attribute ram_style of A_ac_buff : signal is "bram"; --------------------------------- COMPONENT SR1024 PORT ( d : IN STD_LOGIC; clk : IN STD_LOGIC; ce : IN STD_LOGIC; q : OUT STD_LOGIC );END COMPONENT; ----------------------------------- begin SR1024_0 : SR1024 PORT MAP (d => sr1k_0_in, clk => clk50, ce => sr1k_0_en, q => sr1k_0_out); SR1024_1 : SR1024 PORT MAP (d => sr1k_1_in, clk => clk50, ce => sr1k_1_en, q => sr1k_1_out); ----------------------------------- process(clk50) begin if rising_edge(clk50) then if(...) then sampl_cntr <= 0; AQ1_cntr <= 0; AQ2_cntr <= 0; SHIFT_cntr <= 0; nestd_SH_cntr <= 0; nestd_SH2_cntr <= 0; end if if(sampl_cntr /= sampl) then A_buff(sampl_cntr) <= DA; sampl_cntr <= sampl_cntr + 1; elsif((sampl_cntr=sampl) AND (SHIFT_cntr /= slide_len)) then if(nestd_SH_cntr /= slide_len) then if((sr1k_0_out xor sr1k_1_out) = '1') then ACC0 <= ACC0 + 1; end if; nestd_SH_cntr <= nestd_SH_cntr + 1; elsif((nestd_SH_cntr = slide_len) AND (nestd_SH2_cntr /= 1)) then -- здесь +1 такт для дополнительного сдвига (не описано) buff_10bit_std <= conv_std_logic_vector(ACC0,16)(11 downto 2); nestd_SH2_cntr <= nestd_SH2_cntr + 1; elsif((nestd_SH_cntr = slide_len) AND (nestd_SH2_cntr = 1)) then nestd_SH_cntr <= 0; nestd_SH2_cntr <= 0; ACC0 <= 0; SHIFT_cntr <= SHIFT_cntr + 1; end if; A_ac_buff(SHIFT_cntr) <= buff_10bit_std; --conv_std_logic_vector(SHIFT_cntr,16)(9 downto 0);-- ВОТ ЗДЕСЬ!!!!!!!!!!!!!!!!!!!!!!!!!!!! elsif(...)then divider <= divider + 1; if(...) then if(...) then Tx_data_int <= A_ac_buff(...); end if; end if; end if; end if; end process; Прошу прощения за длинные имена. Почему синтезатор "внешний" счетчик (SHIFT_cntr) писать в память A_ac_buff() позволяет а buff_10bit_std - нет? Не позволяет - это значит синтезирует бесконечно. sr1k_0_out и sr1k_1_out - выходы сдвиговых регистров. Длина сдвиговых регистров не влияет на собираемость проекта. Может быть что-то не так с моим сдвиговым? library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity SR1024 is -------------------------------------------------------------------------- generic ( n : integer := 1024 ); port ( d : in std_logic; clk : in std_logic; ce : in std_logic; q : out std_logic); end SR1024; architecture Behavioral of SR1024 is signal tmp: std_logic_vector(n-1 downto 0) := (Others => '0'); begin process (clk) begin if (clk'event and clk = '1') then if (ce = '1') then tmp(0) <= d; for idx in 1 to n-1 loop tmp(idx) <= tmp(idx-1); end loop; end if; end if; end process; q <= tmp(n-1); end Behavioral;
  5. Уважаемые коллеги! Есть ли в студии специалисты, умеющие "вырвать" HDL-код из под Labview FPGA module? Или хотя-бы сузить диапазон поисков. Заранее благодарен.
  6. http://www.electronshik.ru/card/peremichki...wires-ff-114974
  7. STM3240G-EVAL

    Куплю. Новосибирск. На eFind не посылать. Там либо цены нереальные, либо сроки, либо просто нет.
  8. Так в чем же, тогда, вопрос? Стартовый ток большой? Да. Вышли на режим - потребляем столько, сколько надо нагрузке плюс потери. Хотите меньшим током разгоняться? Векторное управление решает этот вопрос. Но имхо овчинка не стоит выделки. PhX опередил слегка. Не силен асинхронник в условиях частых старт-стопов. Там синхронные приводы рулят. И управление соответствующее.
  9. Почитайте рекламные проспекты и прочую документацию от производителей всякого рода частотных преобразователей, систем бесперебойного многофазного питания, трехфазных стабилизаторов/регуляторов и т.п. Благо на русском этого добра даже больше, чем конкретики по технической части. Когда я делал обзор такого рода решений часто встречал заявления относительно выигрыша использования преобразователей в плане экономии электроэнергии. Методику расчета, ясное дело, эти ребята не показывают. В одном только месте видел как обосновывают (аж) 15%-й выигрыш. Идея там такая. Вот мол привод из-за конечно малого сопротивления шин питания не обеспечивает момента. Давайте увеличим габаритную мощность привода и компенсируем провалы. Оппа - стоимость увеличилась. А теперь вернемся к номинальной мощности, но поставим частотник (или стабилизатор). И вуаля - экономия 15%. Или что-то в том-же духе. Естественно, при проектировании и производстве асинхронников закладывается некий процент запаса, рассчитанный на нестабильность сети. Думаю асины проектируют не дураки и делают этот процент не намного больше, чем процент нестабильности промышленных сетей. Отсюда и цифры.
  10. А мне вот интуитивно понятно - чего хочет автор поста. Не понятно только - что с этими процентами потом делать? Обосновать использование частотного привода с возможностью понижения напряжения/тока? Так эту работу уже проделали. И цифры там не шокируют.
  11. Y2 - это максимум в спектре? Я правильно понял?
  12. Прошу сильно не пинать. Есть вектор отсчетов, полученных на интервале, в который укладывается пусть 0.1 - 10 периодов гармонического сигнала. То есть некратная (вещественная) частота (вернее оценка частоты) нас интересует. После дискретного преобразования Фурье ищем центр тяжести: Ц = (SUMM(i=0 to [N/2]-1) of i*W(i)^2] / SUMM(i=0 to [N/2]-1) of W(i)^2] (у Гоноровского подсмотрел такой способ нахождения центра тяжести). Здесь W = sqrt(A^2 + B^2), A = SUMM(i=0 to N/2 - 1) of X(i)*sin(2*pi*i*K/N) B = ... понятное дело с косинусом. К = 0, 1, 2 ... N/2 - 1 целочисленный(!) Так вот ошибка при моделировании в районе Ц меньше 2 достигает 100%. Дальше - меньше, но не устраивает никак. Ткните носом пожалуйста.
  13. А вот такой вопрос: Если я спалил 510 эмулятор (высокое между целевой платой и компьютером) отремонтировать его с вашей помощью реально? Или поменять на ваших условиях? Заранее спасибо.
  14. Ого. Да тут чисто схемотехнические просчеты. Либо с питанием что-то, либо - выход формирователя входного напряжения имеет высокое выходное сопротивление. Схему (с номиналами) в студию. Да и код не помешает. Я работал с этими АЦП. 200 емр - это перебор. Вход АЦП никуда не подключать не правильно. В момент выборки имеет место довольно большой ток.