Jump to content

    

jenya7

Участник
  • Content Count

    2670
  • Joined

  • Last visited

Community Reputation

0 Обычный

About jenya7

  • Rank
    Гуру

Recent Profile Visitors

6248 profile views
  1. ааа. там галка есть. круто. спасибо.
  2. O! 2) это самое то. удобненько. спасибо. неее. он компилирует все инстансы вместе в stp файле. у меня места нет. мне надо загружать по одному. 1) нью - а как потом менять между ними? в квартусе нужно стереть и загрузить новый там где Files?
  3. Я отладил в SignalTap модуль. Теперь хочу отладить другой модуль. Но я не хочу терять текущий модуль - я его сохраняю Save As -> module1.stp. И создаю сигналы для другого модуля. Но как вернуть старый модуль? Save As есть а Open нет.
  4. такая проблема. надо просемплировать несколько значений и взять среднее when ST_ADC_AVG => if (adc_idx <= ADC_SAMPLES) then ADC_TRIG <= '1'; if (ADC_READY = '1') then ADC_TRIG <= '0'; adc_average <= adc_average + ADC_VAL_IN; adc_idx := adc_idx + 1; end if; else adc_average <= std_logic_vector( unsigned(adc_average) / unsigned(ADC_SAMPLES) ); adc_average <= std_logic_vector( to_unsigned ( (to_integer( unsigned(adc_average) / unsigned(ADC_SAMPLES) ) ), 32 ) ); ChargeState <= ST_SAMPLE; оба варианта компилируются adc_average <= std_logic_vector( unsigned(adc_average) / unsigned(ADC_SAMPLES) ); adc_average <= std_logic_vector( to_unsigned ( (to_integer( unsigned(adc_average) / unsigned(ADC_SAMPLES) ) ), 32 ) ); но я так понимаю можно пойти более коротким путем? двойная конвертация не нужна?
  5. А мне мое решение нравиться вполне себе отработало. милисекунда конечно ужатая, иначе в сигнал тап всё не влезло бы.
  6. спасибо. но я не могу выставить adc_3ms_valid <= '1'; мне нужно запустить конвертацию и дождаться сигнал готовности данных.
  7. ну никак. после 3 мили тригер поднялся и индекс изменился.
  8. вобщем чтоб синхронизироваться по времени выходит что то такое ADC_CONTROL: process (CLK) variable idx : integer := 0; begin if (rising_edge(CLK)) then case ChargeState is when ST_IDLE => --start if (tuben_3 = '1') then ChargeState <= ST_START; end if; when ST_START => count_reset <= '1'; idx := 0; ChargeState <= ST_SAMPLE; when ST_SAMPLE => count_reset <= '0'; case ms_counter is when X"03" => --3 ms if (idx = 0) then ChargeState <= ST_TRIG; idx := 1; end if; when X"06" => --6 ms if (idx = 1) then idx := 2; ChargeState <= ST_TRIG; end if; when X"0C" => --12 ms if (idx = 2) then idx := 3; ChargeState <= ST_TRIG; end if; when X"0F" => --15 ms if (idx = 3) then idx := 4; ChargeState <= ST_TRIG; end if; when X"14" => --20 ms when others => end case; --end if (tuben_4 = '1') then ChargeState <= ST_IDLE; end if; when ST_TRIG => ADC_TRIG <= '1'; if (ADC_READY = '1') then conv_ready <= '1'; ADC_TRIG <= '0'; case ms_counter is when X"03" => ADC_VAL_3MS <= ADC_VAL_IN; when X"06" => ADC_VAL_6MS <= ADC_VAL_IN; when X"0C" => ADC_VAL_12MS <= ADC_VAL_IN; when X"0F" => ADC_VAL_15MS <= ADC_VAL_IN; when others => end case; ChargeState <= ST_SAMPLE; end if; when others => ChargeState <= ST_IDLE; end case; end if; end process ADC_CONTROL;
  9. Единственная печалька - на CAN нет LL драйвера.
  10. IAR скажем не ругается - Constant value '4294705152' cannot be converted to a 'int' прикольно, супер :).
  11. Оказалось есть бутлодер и к счастью он поддерживает YModem. Скачал Putty, скормил бинарник через YModem.
  12. аааа... верно. тогда так process (CLK) begin if (rising_edge(CLK)) then if (count_reset = '1') then ticks_counter <= (others => '0'); ms_counter <= (others => '0'); else ticks_counter <= ticks_counter + '1'; if (ticks_counter = TICKS_FOR_1MS) then ticks_counter <= (others => '0'); ms_counter <= ms_counter + '1'; end if; end if; end if; end process; а сам процесс, так правильно? CONTROL: process (CLK) variable idx : integer := 0; begin if (rising_edge(CLK)) then case ChargeState is when ST_IDLE => --start if (tuben_3 = '1') then ChargeState <= ST_START; end if; when ST_START => count_reset <= '1'; ChargeState <= ST_SAMPLE; when ST_SAMPLE => count_reset <= '0'; idx := 0; ChargeState <= ST_TRIG; case ms_counter is when X"03" => --3 ms ADC_VAL_3MS <= ADC_DATA; when X"06" => --6 ms ADC_VAL_6MS <= ADC_DATA; when X"0C" => --12 ms ADC_VAL_12MS <= ADC_DATA; when X"0F" => --15 ms ADC_VAL_15MS <= ADC_DATA; when others => end case; --end if (tuben_4 = '1') then ChargeState <= ST_IDLE; end if; when ST_TRIG => TRIG <= '1'; if (READY = '1') then TRIG <= '0'; ChargeState <= ST_SAMPLE; end if; when others => ChargeState <= ST_IDLE; end case; end if; end process CONTROL;
  13. я выставляю count_reset на один такт. этого не достаточно для захвата в другом процессе?