Total logic elements: 48 а было 38
что-то квартусу легче не стало

да и читаемость кода упала
про blank не понял, вроде же достаточно просто в этот момент черный выставить?
Moderator: Shaos
Когда баловался с FPGA отсчитывал каунтер для строчных и кадровых отдельно. И кейсом (case) взводил нужный сигнал. Бланком не пользовался (он, конечно, считался и рулил синхрой и RGB). Да и зачем Бланк нужен отдельно, когда у меня в руках целая FPGA, что захочу то и сделаю. Бывало, ловил спец эффекты (уникальные сочетания цветов из-за не правильного положения уровня черного) по ошибкам в коде.Sorgelig wrote:Для видео генератора есть еще два важных сигнала - это HBlank и VBlank - сигналы гашения. Они тут неявно присутствуют, но лучше их выделить отдельно на выход.
Ого, HDMI. Там вроде витая пара, функционал у FPGA присутствует. Не, я туда не ходил, покаSorgelig wrote:Ксли выводить по старинке на TV или VGA то отдельно blank не нужен. Если выводить на HDMI, то blank необходим. Я говорил про универсальный видео генератор.
А вот тут я сильно сумлеваюсь - верилогу человек пришет примерно чего хочет получить при синтезе, а тулза синтезирует эту "хотелку" самым оптимальным образом - т.е. никакие цепочки дословно не реализуются, а конвертятся через BDD или SAT в оптимальное представление, наложенное на луты выбранной микрухи - выходит что пиши хоть через casex, хоть через таблицу перекодирования, хочть через цепочку ифов-елсов - сконвертится всё в одно и тожеSorgelig wrote:... не прибегая к приоритетному селектору if else if else if else добавляющего нехилую задержку при длинной if цепочке. casex позволяет сильно сократить такие задержки при синтезе!
Аналогично. Мой опыт с верилогом успешен, но скромен, поэтому за все случаи не скажу, а у меня такая конструкция есть в описании синхронной части. Синтезируется в одну комбинационную логическую схему на входе регистров. То есть, классический тактируемый автомат: регистры, обратная связь через комбинационную схему, в которую дополнительно входят сторонние сигналы.Shaos wrote:А вот тут я сильно сумлеваюсьSorgelig wrote:... не прибегая к приоритетному селектору if else if else if else добавляющего нехилую задержку при длинной if цепочке. casex позволяет сильно сократить такие задержки при синтезе!
потому что считает что обращение к памяти асинхронное.Icer wrote: Почему квартус память синтезировал логикой, а не m9k?
Code: Select all
(* ramstyle="M9K" *) reg [7:0] vbuf [0:4799];
(если не вырываю из контекста, бо про очень тяжелая звучит странно) Для логики это один-единственный сумматор. На его входах множимое без двух младших разрядов и множимое, сдвинутое на два, к сумме снизу проводами приписываются те два младших разряда и ниже 4 нуля земляными (или какими другими с нужным потенциалом) проводами.Sorgelig wrote: представьте, что вы собираете плату видеогенератора на чипах. Что поставите в качетсве умножителя на 80? Это очень тяжелая функция.
Code: Select all
(* ramstyle="M9K" *)
Code: Select all
[spoiler=КОД ПРОГРАММЫ][code]module vga(clk,color,h,v);
input clk;
...
endmodule