Funt
Свой-
Постов
34 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о Funt
-
Звание
Участник
-
Подскажите, как из verilog описания в Quartus получить графическое представление схемы? Реально ли получить такое представление на регистровом уровне?
-
В чем разница
Funt ответил Funt тема в Языки проектирования на ПЛИС (FPGA)
Спасибо за помощь! Ищу Полякова. -
В чем разница
Funt опубликовал тема в Языки проектирования на ПЛИС (FPGA)
Добрый день. Есть два блока, разные по функциональномк назначению, но одинаковые по структуре. После моделирования в квартусе (в составе схемы), получаем, что один блок работает быстрее (больше clock fmax), другой медленнее. Обьясните, пожалуйста, почему. Вот блоки: Быстрый: module del(clk, data_in1, data_in2, data_in3, data_in4, data_out1, data_out2, data_out3, data_out4); input clk; input [`WIDTH-1:0] data_in1; input [`WIDTH-1:0] data_in2; input [`WIDTH-1:0] data_in3; input [`WIDTH-1:0] data_in4; output [`WIDTH-1:0] data_out1; output [`WIDTH-1:0] data_out2; output [`WIDTH-1:0] data_out3; output [`WIDTH-1:0] data_out4; reg [`WIDTH-1:0] data_buf1=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_buf2=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_buf3=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_buf4=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_out1=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_out2=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_out3=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_out4=32'b00000000000000000000000000000000; //я так понимаю это присвоение здесь не имеет никакого смысла и в аппаратуре все равно не выполняется? always @ (posedge clk) begin data_buf1 = data_in1; data_buf2 = data_in2; data_buf3 = data_in3; data_buf4 = data_in4; end always @ (negedge clk) begin data_out1 = data_buf1; data_out2 = data_buf2; data_out3 = data_buf3; data_out4 = data_buf4; end endmodule Более медленный: module del(clk, data_inx, data_iny, data_outx1, data_outy1, data_outx2, data_outy2, data_outx3, ata_outy3, data_outx4, data_outy4 ); input clk; input [`WIDTH-1:0] data_inx; input [`WIDTH-1:0] data_iny; output [`WIDTH-1:0] data_outx1; output [`WIDTH-1:0] data_outy1; output [`WIDTH-1:0] data_outx2; output [`WIDTH-1:0] data_outy2; output [`WIDTH-1:0] data_outx3; output [`WIDTH-1:0] data_outy3; output [`WIDTH-1:0] data_outx4; output [`WIDTH-1:0] data_outy4; reg [`WIDTH-1:0] data_buf1=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_buf2=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_outx1=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_outy1=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_outx2=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_outy2=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_outx3=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_outy3=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_outx4=32'b00000000000000000000000000000000; reg [`WIDTH-1:0] data_outy4=32'b00000000000000000000000000000000; always @ (posedge clk) begin data_buf1 = data_inx; data_buf2 = data_iny; end always @ (negedge clk) begin data_outx4 = data_outx3; data_outy4 = data_outy3; data_outx3 = data_outx2; data_outy3 = data_outy2; data_outx2 = data_outx1; data_outy2 = data_outy1; data_outx1 = data_buf1; data_outy1 = data_buf2; end endmodule Возможно, что вторая более медленная из-за того что последовательно переносятся значения из одного регистра по цепочке вдругой: data_out1->data_out2->data_out3->data_out4; Но, как я понял такие присвоения с блокировкой, т.е. пока не выполнится одна операция присвоения, следующая не будет выполнятся. Т.е. получается схемы вроде бы должны быть равноценными. Но даже если в первой схеме все операции выполнять с помощью "<=" (как я понял без блокировки, т.е. можно паралельно присвоить нескольким регистрам какие-то значения), то ее скорость не изменится... Где моя ошибка? Или я в корне не прав? P.S. Есть более непонятная для меня ситуация. Схема, по объему в два раза больше другой имеет в два раза больший clock fmax. И в той и в другой схеме используются одни и те же элементарные блоки (умножение и сумма/разнича чисел с плавающей запятой), но в более простой схеме - это просто цепочка из таки умножений сумм, а в более объемной это цепочка блоков, в которых используются другие блоки, в которых выполняется цепочка из умножений и вычетаний. Как в таком случае более обьемная схема может иметь больший clock fmax? -
fmax в Quartus
Funt ответил Funt тема в Среды разработки - обсуждаем САПРы
Большое спасибо за ответ! Насчет функциональности, я имел ввиду, что по проекту выполнен только функциональный анализ, но не временной, т.е. проект не завершен (я новичок в этом деле и вообще незнаю как временной анализ делать). Могут ли сильно изменится характеристики схемы (максимальна тактовая частота) после временного анализа и каких-то корректировок (наверное все зависит какие именно будут корректировки)? И еще по заполняемости. Т.е. ПЛИСы одной линейки с одним спидгрейдом абсолютно одинаковы по скорости? Мне казалось, если ПЛИС выполнена по одной технологии, то чем меньше ее площадь (количество элементов), то тем она должна быть быстрее, и меньшая по объему микросхема но заполненная до упора должна обганять большую по объему, но заполненную на половину....хотя учитывая ваши пояснения, наверно они должны остатся на одном уровне. А учитывая, что на практике получается скорость в меньшей немножечко ниже, чем в большой, то наверное у обоих заготовок номинальные скорости одинаковый... -
A*X[clock-1]+B*X[clock-2]+C*X[clock-3]
Funt опубликовал тема в Языки проектирования на ПЛИС (FPGA)
Есть ряд вопросв, плз, помогите;) 1)В verilog операции присваивания выполняются последовательно? Т.е. если записать a=b; b=c; c=d; То пока а не приравняется к b, то в b небудет писатся c? 2) Как наиболее оптимально реализовать запоминание предыдущих n значений. Сейчас делаю приблизительно так: @always (posedge clk) begin xout3=xout2; xout2=xout1; xout1=buff; buff=x; end Т.е. получается, что из-за 4-х последывательных присваиваний очень замедляется схема. Существует ли более оптимальный способ реализации такого запоминания? 3) Как выполнить операции присвоения одновременно для нескольких "переменных"? Или в любом случае присвоение выполняется побитово последоваетльно? -
fmax в Quartus
Funt опубликовал тема в Среды разработки - обсуждаем САПРы
Есть два проекта аналогичных по выполняемым функциям, но разных по структуре. Как определеить какой из них более эффективный, например по быстродействию, по количеству элементов и др... С элементаи вроде все просто, смотрим сколько занимает LE или ALUT'ов. А по быстродействию как? 1) Достаточно ли прокомпилировать проект и посмотреть internal fmax, у кого она больше тот и быстрее? 2) Влияет ли уровень заполнености ПЛИС? (Т.е. будет ли микросхема, в которой задействованы 90% логических элементов быстрее микросхемы из той же серии, но с большым кол. элементов и заполненостью 40%) 3) Являются ли ПЛИС из одной линейки (например Cyclone 2) сравнимыми? (Т.е. могу ли я сравнивать две схемы в разных ПЛИСах одной линейки)? 4) Можно ли проводить сравнение основываясь только на функциональном моделировании без временного? -
Шаги создания ИС
Funt ответил Funt тема в Цифровые схемы, высокоскоростные ЦС
Думаю будут где-то через год. Вот до какого уровня надо довести схему на верилоге, чтобы через год небыло задержек, хотелось бы узнать сейчас. Спасибо! Темы конкретно по ИС не нашел (возможно слеп:) ), поэтому поместил в самую близкую к ИС, как мне показалось. А что получим в результате синтеза? Какие данные и в каком виде? Существует ли какое-то бесплатное ПО, которое бы позволило сделать только синтез verilog описания? -
Синтез в Quartus для ASIC
Funt ответил Funt тема в Среды разработки - обсуждаем САПРы
И еще по первому вопросу. Как выполнить логический синтез в Квартусе? Это можно сделать только с помощью внешнего синтезатора (EDA Tool)? И что мы получим в результате этого синтеза, будет ли этот результат выражен в каком-то одном портируемом файле? -
Шаги создания ИС
Funt ответил Funt тема в Цифровые схемы, высокоскоростные ЦС
ОК. Что такое gate-level netlist? Достаточно ли будет получить gate-level netlist в Квартусе, чтобы далее его использовать для проектирования СБИС? -
Синтез в Quartus для ASIC
Funt ответил Funt тема в Среды разработки - обсуждаем САПРы
Кто-то встречал отдельно блоки умножения и суммирования/вычетания? -
Синтез в Quartus для ASIC
Funt ответил Funt тема в Среды разработки - обсуждаем САПРы
Спасибо большое! Попробую заменить альтервоские модули умножения и суммирования. Но из всего выше сказаного и из собственных подозрений наверное перейду к числам с фиксированной точкой. Так что, если у кого есть линки на fixed point прошу подсказать. -
Синтез в Quartus для ASIC
Funt ответил Funt тема в Среды разработки - обсуждаем САПРы
Опыта "0". Подсказали, что на первых порах, при отладке verilog описания достаточно и квартуса, а дальше можно будет легко перейти к тому что нужно. Ну и код не совсем платформенно зависимый...старался как можно независимей...но.... Есть проблемка....из мегафункций используется только умножение и суммирование для чисел с плавающей запятой (IEEE-754). Т.е. достаточно эти функции заменить своими. Но где их найти? Я так понимаю написание этих функций самому займет не мало времени. Или все-таки можно как-то вытянуть их с квартуса и этого будет достаточно? -
Шаги создания ИС
Funt опубликовал тема в Цифровые схемы, высокоскоростные ЦС
Есть verilog описание фильтра (в среде Quartus). Какую последовательность шагов нужно выполнить, чтобы перейти от этого описания к какому-то подобию "схемы электрической принципиальной" и выполнить ее размещениее на кристалле. Какие программы для этого обычно используются. Как наиболее просто сделать переход от Quartus'а к этим программам (в проекте используются мегафункции Quartus'a :( ) -
Синтез в Quartus для ASIC
Funt ответил Funt тема в Среды разработки - обсуждаем САПРы
Quartus использовался только для отладки verilog кода. А далее интересует ASIC. Поэтому казалось, что оптимальным вариантом перехода с квартуса на что-то более предназначенное для ASIC будет сощдание нетлиста и в другом пакете начинать работать с нет листом. Я так понимаю теперь, что квартусовский нетлист - это не тот нет лист, который можно впихнуть в программу для ASIC. Но код содержит мегафункции Quartus, можно ли будет его использовать в других ASIC-ориентированных приложениях??? Наверное нет :( И есть ли вариант создания какого-то универсального нетлиста (если это то слово) из квартуса, чтобы его восприняла программа проектирования ASIC как принципиальную схему (не логическую как verilog, а схему на какой-то элементной базе). Т.е. те данные по которым можно делать размещение этой элементной базы на кристалле. P.S. Прошу прощения за путаницу с терминологией и возможно неграмотное описание задачи :rolleyes: -
Синтез в Quartus для ASIC
Funt ответил Funt тема в Среды разработки - обсуждаем САПРы
Т.е. после синтеза в квартусе и получения .edf нетлиста, этот edf файл можно использовать в другой программе для размещения на кристалле (он и есть та "электрическая принципиальная схема"?). Ведь quartus создан только для FPGA, а нужно на основе verilog кода создать свой чип. Я закончил на этапе "Functional Simulation" в Quartus'e. Fitting немогу выполнить, так как устройство невлазит ни в один чип :)