Jump to content

    

Halfback

Участник
  • Content Count

    375
  • Joined

  • Last visited

Everything posted by Halfback


  1. Всем доброго дня. Скажите пожалуйста, плис 5578ТС084 имеет LVDS ? И еще вопрос в догонку - где можно взять документацию на 5578ТС084 ? Надо платку под эту плис спроектировать...
  2. это не требования а мои личные полежания для удобства работы с моделсим, чтобы каждый раз при вызове моделсим не тратить время на вышеописанные рутинные операции.
  3. есть еще мелкие вопросики по modelsim. Есть файлик с модулем mod.v и его соотв. тесбенч mod_tb.v Что нужно написать в mod_tb.v чтобы 1.График сразу стал ZoomFull 2.Определенные регистры, обьявленные как беззнаковые, показывались как Decimal а не Bin (почему -то так по умолчанию).
  4. Господа, спасибо за помощь!!! Считываю файлы вот так. Проверено, работает.
  5. варантов я так понял два, $readmemh и $readmemb Первому значения в HEX надо скормить, второму в бинари А есть вариант считать и запихать в массив типа вот такого текстового файла? Просто переделывать 16800 точек в другую запись не очень хочется. -2,-1,13,23,16,12,7,0,8,1,-18,-16,-11,-10,-3,6
  6. да, дейтсвительно, пятница.... Тогда вопрос сразу - моделсим начал орать что неправильно декларировал массивы I_value Q_value. А как правильно? И еще вопрос - функция чтения массива из файла, допустим, вот такя $readmemb("dI.txt", I_value); по какому пути будет этот файл искать? Сунул dI.txt туда же где и файл тесбенча -ан нет, пишет * Warning: (vsim-7) Failed to open readmem file "dI.txt" in read mode. # # No such file or directory. (errno = ENOENT)
  7. Всем доброго времени суток Столкнулся с непонятно проблемой Ругается на строку integer i; Пишет вот что Error .... near "integer": syntax error, unexpected integer, expecting ';' or ',' Error .... (vlog-2730) Undefined variable: 'i'. Почему - мне не понятно. Буду благодарен за пояснения
  8. тогда так ;) outdata_reg <= ((indata + (32'd1<<31)) >> 16) - (16'd1<<15)+indata[31];
  9. Да, Вы правы. чтобы был "0" надо прибавить "1". outdata_reg <= ((indata + (32'd1<<31)) >> 16) - (16'd1<<15)+1;
  10. des00 Спасибо, интересно. Посмотрев Ваш код я не понял почему Вы так делаете outdata = indata >>> 8; а не так outdata = indata >> 8;
  11. на все отрицательные числа от -1 до -65355 результат будет "-1" а д.б. "0". кому это не критично - скорее всего так и делают.
  12. Всем доброго дня. Надо по сути 32-разрядное знаковое число сократить до 16-разрядного знакового. по сути это будет outdata_reg <= indata/65536; но поскольку на младших циклонах знак деления штука не экономная то написал так: module conv_sign_32to16 ( input clk, input signed [31:0] indata, output signed [15:0] outdata ); reg [15:0] outdata_reg; always @ (posedge clk) begin outdata_reg <= ((indata + (32'd1<<31)) >> 16) - (16'd1<<15); end //always assign outdata = outdata_reg; endmodule может есть способ элегантнее? Заранее спасибо.
  13. не могу понять следующее. Если я в настройках мегафункции выставляю что это дециматор на 12 то правильно ли я понимаю что никакой НЧ-фильтрации в соответствии с моими коэффициентами присходить не будет? Т.е. если я хочу правильно произвести децимацию сигнала то сначала надо поставить компонент с мегафункцией ФНЧ на часоту среза в два раза меньшей частоты децимации (в моем случает частота среза будет в 24 раза меньше часты семплирования), а затем ставить компонент мегафункции дециматора с коэффициентом децимации = 12 ?
  14. есть еще вопрос по мегафункции DSP FIR Compiler II v13 делаю ФНЧ, коэффициентов в матлабе получаю около сотни и загружаю их через текстовый файл в модуль мегафункции. Генерирую - вроде работает, кушает много умножителей и вентилей. Как только выставляю понадобившуюся децимацию, скажем R=12 то кол-во умножителей сокращается раза в 3, вентилей также. Вопросов два - 1. Почему включение децимации резко сокращает необходимое кол-во ресурсов и как пользоваться децимацией? В чём подвох? 2. При включенной децимации в какой момент считывать данные? Я обратил внимание что относительно тактирования входа каждый 12-й импульс на выходе ast_source_valid возникает импульс.
  15. а можно поподробнее с этого момента?
  16. Прошу помоши в создании файла SDC Читал-перечитывал TimeQuest для чайников но всё равно не могу догнать вроде как простых вещей. В проекте есть блок, который из входной частоты 120МГц делает другую частоту 20Мгц. Блок описан на Verilog, там по сути деление частоты на 6. Далее 20МГц расходиться на несколько других блоков. ВОпрос - как правильно описать эти 20МГЦ в sdc? Вот такую запись не воспринимает и пишет ошибку: create_clock -name "clkD" -period 20MHz -source [get_registers {clkconv:inst50|clkout}]
  17. Nick_K, трудно поспорить с перечисленными Вами пунктами. Пока мне не очень понятно насколько корректно будет работать описание внутри posegde и negedge если их засунуть в один posegde. Надо проверять, т.к. вычисление должно происходить за один такт. Я с плисиной и verilog еще сравнительно мало работаю.
  18. окно на 16 при таком способе худо-бедно но работает, на 32 окно пробовал - не работает. почему?
  19. Оптимизировал. Проверил, работает вроде также. P.S. Бегающий указатель "к" специально не обнуляю, в железе это само собой происходит, т.е. переполнения нет.
  20. stealthisname спасибо большое!!! есть еще идея оптимизировать в части for(i = FIFO_LEN-1; i > 0; i=i-1) begin FIFO[i] <= FIFO[i-1]; end Идея в том чтобы этого не делать сдвиг массива а организовать кольцевой буфер как посоветовал Eddy_Em
  21. Наверное я правильно понял что вот это dataout <= (FIFO[0]+FIFO[1]+FIFO[2]+FIFO[3]+FIFO[4]+FIFO[5]+FIFO[6]+FIFO[7]+FIFO[8]+FIFO[9]+FIFO[10]+FIFO[11]+FIFO[12]+FIFO[13]+FIFO[14]+FIFO[15])>>4; надо заменить на вот это dataout <= (dataout + FIFO[0]-FIFO[15])>>4; Другой вопрос что в Си-подобном языке dataout справа в скобках будет расценено как предыдущее значение а слева - как текущее значение. Так ли это будет в верилоге? (Я всё равно в железе проверю)
  22. Доброго времени суток! Нужна помощь в оптимизации кода на Verilog, среда разработки Quartus II 13.0.1 , плисина Циклон 3. Вход/выход 16-битный, клок 120МГц Размер окна фильтра на 16 точек module MovAverageFilter(clk,datain,dataout); input clk; input [15:0] datain; output reg [15:0] dataout; reg [15:0] FIFO [0:15]; integer i; initial begin for(i = 15; i >= 0; i=i-1) FIFO[i] = 16'd0; end always@(posedge clk) begin dataout <= (FIFO[0]+FIFO[1]+FIFO[2]+FIFO[3]+FIFO[4]+FIFO[5]+FIFO[6]+FIFO[7]+FIFO[8]+FIFO[9]+ FIFO[10]+FIFO[11]+FIFO[12]+FIFO[13]+FIFO[14]+FIFO[15])>>4; end always@(negedge clk) begin for(i = 15; i > 0; i=i-1) FIFO[i] <= FIFO[i-1]; FIFO[0] <= datain; end endmodule Есть желание увеличить размер окна с 16 до 32 или даже до 64 но тогда нужно будет больше сумматоров и я беспокоюсь за обеспечение синхронности схемы. Может есть более изящный вариант брать сумму точек в окне и делить на их кол-во?
  23. точно есть. пикад не показывает via размещенных на паде. далее миландровский АЦП 5101НВ015 я также посчитал что 40МГц (а в планах перейти на ПЧ = 24МГц) это не сильно критично поэтому импеданс не считал. померил. там питание подается через дроссели L21 L22 , суммарный ток примерно 200мА, вроде тут всё сходиться с даташитом.
  24. Спасибо что откликнулись. Вырезку из схемы и PCB прилагаю. Плату паял опытный монтажник, подложка под УПЧ точно пропаяна. В подложке D5 размещено 9 переходных отверстий для отвода тепла на слой на обратной стороне платы. И прогревается это всё добро очень прилично. В НКУ мерил термопарой - прогрев до 60-70С, палец держать очень трудно. Плата 2-слойная. P.S. Платы с сигналами в ВЧ-диапазоне развожу впервые.
  25. Всем доброго дня. Есть проблемы с этим УПЧ. https://www.analog.com/media/en/technical-documentation/data-sheets/ADL5534.pdf Проблема №1: непонятки с даташитом в части подключения неиспльзуемых контактов. На странице 6 в таблице четко написано NC (no connect), а в схеме подключают к общему. Так как правильно? Проблема №2: микросхема очень сильно греется и прогревает через свой Exposed Paddle через полигон GND всю плату. Сигнал на входе имеет частоту 40МГц и амплитуду 100мВ, на выходе раза в 2-2,5 больше. Что тоже странно ведь усиление заявлено на 20дБ, т.е. по амплитуде это в 10 раз. Когда на входе нет полезного сигнала то микросхема также греется. Подключение выполнено по схеме на стр.11. Трансы такие же ADT2-1T-1P+ Что скажете? Микросхеме поплохело или есть нюансы о которых я не знаю?