Jump to content

    

Nagisa

Свой
  • Content Count

    64
  • Joined

Community Reputation

0 Обычный

About Nagisa

  • Rank
    Участник
  • Birthday February 3

Информация

  • Город
    Array

Recent Profile Visitors

805 profile views
  1. см выше есть код. дребезг устранен. значение work_mode выведено на индикатор. похоже я понял, что именно происходит - вырезка из кода initial begin work_mode <=4'h0; step_key <=0; end // реакция на кнопки reg [3:0] step_key; always @ (posedge CLK10 ) begin if (~KEY[1]) // режимы begin if (step_key ==4'hF) begin work_mode <= work_mode +1; CT [39:36]<= work_mode[3:0]; step_key <=0; end else begin step_key <=step_key+1; end end в этой реализации при старте на индикаторе 1 и при этом согласно if-a в work_mode=0 получается, что участок work_mode <= work_mode +1; CT [39:36]<= work_mode[3:0]; имеет собственное значение work_mode=1, что в принципе логично. иначе говоря work_mode существует одновременно в двух ипостасях - одна с work_mode в чистом виде и другая work_mode+1 вопросу куда будет "прицплен" узел сравнения определяет логика которая в исходном коде у меня была нарушена те чистый work_mode оказался внутри а тот что work_mode+1 - снаружи и поступал на узлы сравнения (if-ы), как следствие и странный результат введение initial - переключило эту логику на правильную
  2. я понимаю, однако есть кнопка с помощью которой я могу изменять значение if (~KEY[1]) // режимы begin if (step_key ==0) begin work_mode <= work_mode +1; CT [39:36]<= work_mode[3:0]; step_key <=1; end else begin step_key <=step_key+1; end end соответственно я проверил, что все проверки "if (work_mode== ' срабатываю как будто там значение на единицу больше условие "if (work_mode==0)" срабатывает при фактическом значении work_mode=4'hF да, если есть возможность дать рекомендацию по литературе, где описано как правильно делать была бы в тему.
  3. походу нашел странный глюк использую связку Quartus 64bit 13.0.1 SP1+ Cyclone II EP2C8Q208C8 код - cделал вырезку, в ней глюк сохранятся // // переключение режимов reg [31:0] div10; reg CLK10; always @ (posedge CLK) begin if (div10 == 2400000) begin CLK10 <= 1; div10 <= 0; end else begin div10 <= div10+1; CLK10 <= 0; end end // reg [3:0] work_mode; // режимы работы комплекса // реакция на кнопки reg [3:0] step_key; always @ (posedge CLK10 ) begin if (~KEY[1]) // режимы begin if (step_key ==0) begin work_mode <= work_mode +1; CT [39:36]<= work_mode[3:0]; step_key <=1; end else begin step_key <=step_key+1; end end if (work_mode==0) begin DOTPOZ <=1; end else begin DOTPOZ <=6; end //CT [39:36] <= work_mode[3:0]; //CT [15:0] <= RD_CHECK[15:0]; //CT [35:16] <= addrramreadstream [19:0]; end // индикатор reg [3:0] DOTPOZ; // позиция точки 1234567890 reg [39:0] CT ; din40 dinamicind ( .CLK(CLK), .DIG(DIG), .SEG(SEG), .CT(CT), .POZ(DOTPOZ) ); проблема связана с переменной work_mode в данном коде, при старте она равна 0, однако, все проверки "if (work_mode==0)" считают что она равна 1 - те любой if обнаруживает значение больше на 1 чем там есть реально. на индикатор значение выводится верно. собака зарыта в месте присвоения CT [39:36]<= work_mode[3:0]; те если это в блоке вверху, то см эффект выше если перенести (раскоментировать/закоментировать) в блок внизу - 0 становится нолем итд итп блок динамического индикатора нужен для проявления глюка - те если его выключить, глюк пропадает. соответственно приложил код динамического индикатора. что там такого неправильного ? с чем связан данный глюк ? (на самом деле я ловил другой глюк и нашел этот случайно) как избежать подобного ? может что-то я делаю не так ? din40.v
  4. да, i2c у DACx3608 портит картину, но думаю стоит рассмотреть и такой вариант нет - MPT57571B добыть не получилось (а колупать мониторы для этого как-то глупо, надо же новые детали для тиража) тестирование показало, что достаточно gain/offset к примеру какой ЦАП и ПЛИС посчитаны ?
  5. в нем нет необходимости, тем более что цвет внутри системы 16bit - те если потом захочется, можно сделать
  6. да я уже предельно четко обозначил - одновременно выводить аналоговую информацию на большое количество каналов, исходник - цифра нужен многоканальный ЦАП типа старых "SOURCE DRIVER FOR COLOR TFT LCD " просто не надо включать режим: "ТС-дурак - я придумаю как это сделать по-другому"
  7. стоимость канала DAC c узлом формирования (1/2 операционника, транзистор, резисторы и конденсаторы) получается $0,080 если посчитать всё включая ПП (cборку,плис, разъемы, обвязку, узел калибровки) то канал стоит $0,1353 ничего подобного. я просто объяснил на пальцах почему ШИМ не катит. не надо додумывать.
  8. можно несколько вопросов - как у него с нолем ? не плавает ? повторяемость - те все каналы Dac60096 идентичны ? а между другими Dac60096 - тоже все сходится или есть девиация ? какие к примеру ? если ставить фильтр то попадем в ловушку разброса параметров фильтров, те будет потеряно основное преимущество цифры - это дешевая повторяемость результатов
  9. рука-лицо вот четко задал вопрос - так нет, только один ответил близко к теме. один вариант реализации уже есть и работает, я прорабатываю альтернативы. для понимания, почему все виды ШИМ-а не прокатят - попробуйте вот на такой игрушке получить полноцветную картинку при помощи ШИМ https://radioskot.ru/forum/9-2183-1 к задаче это отношения не имеет, но для понимания в самый раз
  10. повторю - шим не пригоден. нужен аналог. вот зачем тратить время на агитацию за ШИМ ?
  11. я понимаю, что во многих случаях можно обойтись ШИМ-ом, но этот случай увы исключение. многоканальность только увеличит затраты ибо каналов надо 3000+ соответственно прошу таки подсказать какие современные аналоги MPT57571B доступны на рынке
  12. была такая мысль, но я хочу минимизировать рассыпуху да и два резистора в комплект тк на вход тоже ток, который преобразуется в напряжение резистором собственно вопрос в том, что нутром чую, что есть еще куда минимизировать и хочу проработать все варианты реализации
  13. не прокатит, ШИМ уже обсчитывался. наличие таблички линеаризации никак не решит проблемы частоты я уже писал - для ШИМ надо 14bit минимум а это 257MHz только на один отсчет, тогда как для сглаживания надо с десяток. ну и по ТЗ нужен аналог. про сигмадельту тоже в курсе. все равно не прокатит. давайте закончим с ШИМ-ом, просто надо принять, что в данной задаче только аналог. ST7735 / ILI9341 уже смотрел - не катят, слишком умные, те у них свой буфер ограниченный внутренней памятью, а мне нужна только защелка - поток я сам подам