Перейти к содержанию
    

ViKo

Модератор
  • Постов

    12 216
  • Зарегистрирован

Весь контент ViKo


  1. Вопрос. Где проходит та грань, когда нужно применять generate for, а когда можно обойтись одним for? Не могу осознать точное правило.
  2. Я когда-то писал и для 8085. Потом уже 8051, PIC, дальше - больше. Хотя тоже, не программист. Теперь же именно благодаря C можно смелее осваивать новые процессоры. Да и ПЛИС на SystemVerilog описывать - близко к C. Так что - C - это как раз то, что нужно.
  3. "Скованные одной цепью" :) Пора вам осваивать программирование. Поддерживаю метод Aprox
  4. module TestFor(input wire clk, input wire [7:0] din, output logic [7:0] dout); bit[7:0] ff[0:4]; always_ff @(posedge clk) begin ff[0] <= din; for (byte k = 0; k < 4; k++) ff[k+1] <= ff[k]; dout <= ff[4]; end endmodule
  5. В Handbook на Quartus есть внушительный список поддерживаемых конструкций SV. На мой взгляд, этого достаточно, чтобы перейти на SV. По поводу assert там же написано так: "Quartus II integrated synthesis also parses, but otherwise ignores the SystemVerilog assertions".
  6. В SystemVerilog тоже есть assert, и, вроде, Quartus его поддерживает. Попробуйте.
  7. А на сайте Altera можно найти не последние версии Quartus и ModelSim?
  8. Нечто подобное я уже пробовал, лучше не становилось. Наверное, Quartus сам до этого додумался. Там 6 листов. Как а анекдоте - "проще нового родить, чем этого отмыть".
  9. Для начала скажу, что я сделал в приведенном коде. Нулевая ступень - суммируем группы по 4 бита, каждому такому сумматору должно потребоваться 3 LUT и никаких переносов. Дальше суммируем обычным деревом сумматоров. Но - старшие биты в каждом из сумматоров обладают свойством, назовем, "исключительности". То есть, если этот бит в 1, то все остальные младшие биты в 0 (максимальные числа в ступенях s0, s1, s2, s3 будут 4, 8, 16 и 32). Поэтому для вычисления старшего бита не нужны переносы из младших. Вот на этих переносах задержки и экономятся. Дальше - нужно применить схемы параллельных переносов, когда для их формирования используются только входные сигналы. Только нужно еще определить, в каком случае параллельные переносы будут эффективнее последовательных. Надеюсь, если правильно все написать, то быстродействие будет не меньше, чем при игнорировании carry. P.S. Частоты у меня снова слегка упали - 121 MHz и 158 MHz, устал подкручивать в настройках.
  10. Господа и товарищи! Попробуйте этот код. Вчера были результаты быстродействия чуть лучше, чем у приведенных выше образцов. А сегодня почему-то намного хуже. Весь в недоумении. Компилировал в Quartus 9.1 SP2. module CountOnes64 (input wire clk, input wire [63:0] d, output logic [6:0] sum); bit [63:0] dc; bit [6:0] sumc; always @(posedge clk) begin dc <= d; sum = sumc; end bit [0:15][2:0] s0; bit [0:7][3:0] s1; bit [0:3][4:0] s2; bit [0:1][5:0] s3; always_comb begin for (int i=0; i<16; i++) s0[i] = dc[4*i] + dc[4*i +1] + dc[4*i +2] + dc[4*i +3]; for (int j=0; j<8; j++) begin s1[j][2:0] = s0[2*j] + s0[2*j +1]; s1[j][3] = s0[2*j][2] & s0[2*j +1][2]; end for (int k=0; k<4; k++) begin s2[k][3:0] = s1[2*k] + s1[2*k +1]; s2[k][4] = s1[2*k][3] & s1[2*k +1][3]; end for (int m=0; m<2; m++) begin s3[m][4:0] = s2[2*m] + s2[2*m +1]; s3[m][5] = s2[2*m][4] & s2[2*m +1][4]; end sumc[5:0] = s3[0] + s3[1]; sumc[6] = s3[0][5] & s3[1][5]; end endmodule Upd. Ох, ексель-моксель! Выбрал не ту микросхему. Вместо EP3C5F256C8 была выбрана EP2C5... А с EP3C5 дает частоты 123 MHz и 158 MHz при Ignore Carry Buffers Off и On, соответственно. Есть еще мысли, продолжу...
  11. ModelSim потребовал tx_intfir, которого нет в приложенном архиве :(
  12. У вас 2 фильтра? Типа квадратурной модуляции? Может быть, составляющие складываются не вовремя? Или биты сдвинуты?
  13. Наверное, у вас где-то есть обратная связь, охватывающая фильтр, и FIR фильтр превратился в IIR. И разрядности не хватило. По каскадным интеграторам-гребенчатым фильтрам добавлю - книга Ричард Лайонс. Цифровая обработка сигналов, раздел 10.5. Там им уделено столько места, сколько они заслуживают :) P.S. Обнаружил, что в книге повторяется то же, что в одной из приведенных выше ссылок, только на "великом и могучем". Оно и неудивительно, автор-то тот же.
  14. Есть, подтверждаю! :) Я даже распечатал обе на принтере, отдал сшить в мягкий переплет, обложку там мне распечатали (отдельно нашел), обрезали - получились настоящие книги. По сравнению с их официальной ценой - даром.
  15. "Хитрости". Еще логичнее - "Искусство схемотехники для ПЛИСоводов" - более популярная книга :)
  16. Да, похоже. TQ2 выпускается Matsushita, она же Panasonic.
  17. Я ставил когда-то в PIC 100 Ом, но никаких особых расчетов при этом не делал. Управлял IRFZ34, а они - шаговым двигателем. Вопросы тока через PIC не сильно тревожили, там другие токи побольше были. Больше резистор - меньше ток - позже переключится. Так, вроде. Переключаю поляризованные реле TQ2 микросхемой 74ACT373, она выдает токи 24 mA в нуле и в единице. Между двумя выходами микросхемы цепляю реле. На защитные диоды микросхемы надеюсь. И конденсатором катушку реле зашунтировал. Пока на стадии экспериментов.
  18. удалил плохой код, написал новый. Оцените. module CC(input bit clkrc, dattr, output bit datrc); bit ff1, ff2; always @(posedge dattr, posedge datrc) if(datrc) ff1 = 0; else ff1 = 1; always @(posedge clkrc) begin ff2 <= ff1; datrc <= ff2 & ff1; end endmodule
  19. Нужно учитывать эффект Миллера. При малом изменении сигнала на затворе, когда включается-выключается транзистор, на стоке напряжение меняется сильно. Таким образом, нужно считать, что емкость затвор-сток увеличивается в коэффициент усиления раз. Оттого и броски тока.
  20. А форма сигнала на ней - не синус? Наверное, на резонансной частоте работает. Там еще конденсатора рядом не видать?
  21. FreeRTOS + STM32

    А можете высказаться по поводу других OS. scmRTOS? ... Что взять, как наиболее простое? Может быть, именно, как пример для создания своей. Сам думаю о FreeRTOS, потому как часто звучит. Но пока конкретно не приступал.
  22. Это точно - паять SOD80 неудобно. И зачем такой корпус изобрели? А в SOT23 одна нога лишняя - тоже непорядок :)
  23. Идея хорошая. Потому, что найти что-то, промелькнувшее в форуме, потом трудно. Хоть листай страницы, хоть поиском... Что успел скопировать в свой файл, то имею. Поэтому в новом разделе со временем будет то же самое - ни за что не найдешь того, что надо. Значит, нужна какая-то другая форма хранилища. Но тогда невозможно будет комментировать. Вот des00 в своем блоге, например, мог бы выкладывать, сам же и оценивать качество. :) Я думаю, не доверять гуру ни у кого причин нет. Только смущает фраза "не для всех". А для кого?
×
×
  • Создать...