aaarrr 63 25 марта, 2020 Опубликовано 25 марта, 2020 · Жалоба 3 hours ago, jenya7 said: после 3 мили тригер поднялся и индекс изменился Да, стормозил. Только к чему вообще такой костыль? Добавьте строб длительностью 1 такт на каждую миллисекунду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 26 марта, 2020 Опубликовано 26 марта, 2020 · Жалоба 11 hours ago, Flip-fl0p said: Вот решение задачи в лоб (код не проверял, но суть думаю ясна) спасибо. но я не могу выставить adc_3ms_valid <= '1'; мне нужно запустить конвертацию и дождаться сигнал готовности данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 26 марта, 2020 Опубликовано 26 марта, 2020 · Жалоба А мне мое решение нравиться вполне себе отработало. милисекунда конечно ужатая, иначе в сигнал тап всё не влезло бы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 26 марта, 2020 Опубликовано 26 марта, 2020 · Жалоба такая проблема. надо просемплировать несколько значений и взять среднее 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 ) ); но я так понимаю можно пойти более коротким путем? двойная конвертация не нужна? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться