Jump to content

    

des00

Модераторы
  • Content Count

    7998
  • Joined

Everything posted by des00


  1. главное что бы до "students lives matter" не дошло А если без шуток, читаю на форуме только раздел ПЛИС и ЦОС, так что по плисам, думаю в этом разделе мало кто из ПЛИСоводов будет болтаться, разве что @ViKo и @iosifk, поэтому, ИМХО студенты все равно все пойдут в тематический форум) ЗЫ. Голосовал против
  2. более того, если гранулярность логики не оптимальна базовому размеру блока логических элементов, то для частей одного и того же регистра, может использоваться разная техника, это увеличивает упаковку проекта)
  3. Вы аккуратнее вот в каком вопросе. Был проект, который использовал хитрое тактирование трансиверов(ошибка в плате), по документации, актуальной на тот момент, было сделано решение. Квартус старой версии его разводил, но работало так себе. В более старших версиях, проект не разводился в принципе и апргейт документации, уже не содержал того решения)
  4. от архитектуры плис зависит, в документах на старые плис еще сохранились вот такие картинки)
  5. Тема почищена. Любителям острословия, предупреждение Модератор
  6. Человек заказывает разработку. Электроника - да, заказ - да, правила соблюдаются - да, поэтому ничего противоправного нет. Возможен вариант, что местные троли набегут и загадят тему, тогда получат по пилюле и тема будет почищена)
  7. Как безнадежно устарела, ваша бинарная логика в наш, прогрессивный, 21 век (с) Ералаш, модифицированный А по делу, подобное управление во многих игрушках с алиэкспреса, может вам лучше с китайцем списаться и он продаст вам модули управления?
  8. как раз про это я и указал "Если задача последовательных вычислений, реализуется на сдвиговых регистрах". Подобное сплошь и рядом в многоканальных фильтрах, FEC кодах и т.д.. Резюмирую, чтение элемента со сдвигового регистра всегда оптимальнее чем чтение с него же через мультиплексор, если нужно последовательное чтение элементов)
  9. вообще в ЦОС делах сдвиговые регистры сила) Если задача последовательных вычислений, реализуется на сдвиговых регистрах, то экономим 1 такт на мультиплексировании (берем уже с регистра) и нет затыка по времянке (минимальное количество слоев логики в регистре). Да, есть перерасход регистров, но на современных архитектурах это не проблема)
  10. Добавлю, нужно помнить, при работе с этим сигналом, что, в современных ПЛИС, он является групповым для логического блока. Это может привезти к перерасходу ресурса ПЛИС при его использовании)
  11. если только последнее слово плавающего размера, то тоже работать будет. размеры пакетов согласованы, флаги будут корректно сформированны, в LSB слова тоже корректно отобразятся, нужно будет только сброс добавить между входным пакетами(ну или маркер первого слова в пакете, который установит счетчик в начальное положение). А вот если внутри пакета плавающий размер, тогда да, нужен будет произвольный сдвигатель)
  12. Если эта парадигма верная, запись всегда 8 байт, а чтение произвольно от 1 до 10, то module pipa (input iclk, iwrite, iread, bit [3 : 0] iread_num, bit [7 : 0] idat [8], output bit [7 : 0] odat[10], bit oval, ofull, oempty); wire write = iwrite & !ofull; wire read = iread & !oempty; bit [4 : 0] cnt; // 24 used bit [7 : 0] buffer [24]; assign ofull = (cnt >= 16); assign oempty = (cnt < iread_num); always_ff @(posedge iclk) begin case ({write, read}) 2'b10 : cnt <= cnt + 8; 2'b01 : cnt <= cnt - iread_num; 2'b11 : cnt <= cnt + 8 - iread_num; endcase // if (write) begin for (int i = 0; i < 8; i++) buffer[i] <= idat[7-i]; // reverse order LSB first buffer[8 : 15] <= buffer[0 : 7]; buffer[16 : 23] <= buffer[8 : 15]; end // odat <= '{default : '1}; if (read) begin for (int i = 0; i < iread_num; i++) begin odat[i] <= buffer[cnt-1-i]; end end // oval <= read; end endmodule module tb; bit iclk, iwrite, iread; bit [3 : 0] iread_num; bit [7 : 0] idat [8]; bit [7 : 0] odat[10]; bit oval, ofull, oempty; pipa popa(.*); initial begin iclk <= 1'b0; #5ns forever #5ns iclk = !iclk; end initial begin int tmp, tmpr; // iwrite <= 1'b0; iread <= 1'b0; // tmp = 0; tmpr = 1; iread_num <= tmpr; fork repeat (9) begin @(posedge iclk iff !ofull); iwrite <= 1'b1; for (int i = 0; i < 8; i++) begin idat[i] <= tmp + i; end tmp += 8; @(posedge iclk); iwrite <= 1'b0; end // forever begin repeat (4) @(posedge iclk); @(posedge iclk iff !oempty) iread <= 1'b1; iread_num <= tmpr; @(posedge iclk); iread <= 1'b0; tmpr++; if (tmpr > 10) tmpr = 1; end join end endmodule от мультиплексоров вы конечно никуда не уйдете, да и от задержек, но по записи - обычный сдвиговый регистр) ЗЫ. маскирование выходных байт сделано для простоты наблюдения вейвформ. в итоговом коде можно убрать)
  13. чего не знаю, того не знаю) такие вещи я руками обычно пишу)
  14. а что-то не работает или как ? но вообще, судя по тому что вы описываете, вам нужно маленький shared bus описать, латентность и регистровые слои которого, по вашему выбору)
  15. длительность важна, но еще более важен момент снятия асинхронного сброса. для этого используют генераторы и синхронизаторы сброса)
  16. да там копипастом с xapp1168 порты заменить и все, шины то близкие, отличия, для типовых применений минимальные. ИМХО лучше переписать)
  17. Но вообще, в свое время носились у меня мысли сделать передатчик по классическому найквисту: проще фильтр на 2sps, уже полоса можно символьную в маску вписать, меньше пикфактор, а вот в приемнике, для согласования полосы использовался такойже фильтр, но рассчитанный на большее скругление + эквалайзер) но до аппаратной реализации не довел)
  18. на форуме раза 4 это обсуждалось, со ссылками и документами. Ищите)
  19. скорее всего frame based формат используется
  20. вот, разобрались, теперь по вот этому созвездию у вас ошибки есть или нет? именно так.
  21. созведие, это когда у вас точки без переходов. А у вас картина, в обоих вариантах, в домене как минимум 2 отсчета на символ, поэтому и переходы видны. Вам надо смотреть что у вас на Constallation Square Root1. Там должны быть QPSK точки. По поводу цвета, Sample Time Colors надо включить. Не уверен что они у вас включены, фильтры должны быть в интерполированном домене, а цвета линий у вас одинаковые. В общем, сначала без шума получите нужную картину, потом уже шум добавляйте.
  22. Ну вы же видите что это не созвездие, это похоже на диаграмму переходов точек созвезия, при скруглении 1. А там в теории связи что-то про момент взятия отсчетов есть) ЗЫ. Включите раскраску временных доменов, поможет в понятии где у вас какой sample time)