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

Если писать на AHDL, то этот OR будет скорей всего реализован за счет LUT Chain & Register Chain, т.е. без увеличения количества задействованных LE. Поэтому ваше замечание непринципиально.

 

Тоже непринципиально, поскольку на AHDL завести сброс на clrn триггера не составляет труда и главное, не приводит к увеличению числа задействованных LE.

 

Делать выводы на основе непринципиальных замечаний представляется некорректным.

 

Некорректно это не подкрепить свои тезисы результатами и документами. В нашем случае отчетом синтезатора. В моем посте эти отчеты были, в вашем же только философские рассуждения о том, как может быть поступит синтезатор.

 

Вы принципиальный человек и как я понимаю профессионал в AHDL. Не вижу проблем, почему бы вам не уделить 5 минут своего времени и не подкрепить свои слова делом. Создайте полный функциональный аналог приведенного вами кода на языке AHDL и приведите результаты его синтеза.

 

Вот это будет дело, а не пустой треп.

 

После испытаний того текста на верилоге, что я привел ранее, у меня закралось подозрение- а были ли вообще использованы регистры компилятором? Именно по причине дикой разности времен распространения сигнала в одноименной шине.

 

Странный вы человек, вы сделали умозаключение, не прочитав отчет синтезатора и не посмотрев что же получилось в Chip Editore. Вы так и не сказали где, как и в каких условиях вы видели дикую разницу во времени.

 

Хочу только напомнить, что меня, как неспециалиста, интересует возможность использования готовых кусков без влезания к ним в нутро и без доработок. Потыркавшись пару раз с готовыми модулями на верилоге я каждый раз убеждался, что без влезания внутрь и без адаптации текстов под конкретный пакет разработки,- ничего путного сделать невозможно. Отсюда сразу следует, что тезис о якобы великолепной переносимости проектов, написанных на Verilog или VHDL - это академический миф.

 

 

Вы очень интересный человек, вы хотите использовать бесплатный, открытый код и при этом требуете от него эффективности коммерческих продуктов. Похоже что вы пропустили мой пост про смысл opencores, или же совершенно не вдумывались в него.

 

Вы очень оригинальный человек, непонятно где, нашли, непонятно кем разработанный верилог код. вероятно даже не читая документацию к этому коду (если есть). увидели что он вам не подходит и сразу же делаете выводы что это виноват именно язык, а не человек который на нем пишет.

 

Что касается переносимости в не зависимости от языка, мои проекты работают на разных альтерах и ксайлинксах, я использую чужие проекты, как блек-боксы и как примеры систем и при этом у меня почему то все работает и я не сталкиваюсь с проблемами, которые вы описываете.

 

Вы просто не умеете на Verilog/VHDL готовить и похоже не сильно к этому и стремитесь.

 

 

И на последок о высокоуровневости языка, будте так добры дайте ответ на простой вопрос.

 

Вам как профессиональному AHDL шику, сколько времени потребуется что бы модифицировать ваш CRC32_data8 ну скажем в CRC32_data12 или сменить полином. Спасибо.

 

Для справки, используя приведенный мной код первое будет сделано секунд за 10-20, втрое чуть дольше где то минута.

 

Если чем вас обидел приношу свои извинения. :beer:

 

Дык clrn - это же потенциальный вход. А в коде на Verilog у вас требуется спад сигнала. Вот тут и грабли.

 

Вы неправы, это классическое описание регистра с сигналом асинхронного сброса с активным нулем/единицей (negedge/posedge).

 

А что касается вопроса почему я остановился на этом моменте, тут все просто. В коде сигнал init используется как синхронный сигнал установки и в зависимости от семейства фпга сие может быть синтезировано по разному в случае наличия/отсутствия асинхронного сброса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SUBDESIGN CRC32_data8
(    clk, D[7..0], enable, init : INPUT= GND;
    CRC[31..0]: OUTPUT;
)
VARIABLE
NewCRC[31..0]: node;
CRC[31..0]: dffe;

BEGIN
CRC[].clk=clk;
IF init THEN CRC[]=H"FFFFFFFF"; CRC[].ena=VCC;
ELSE CRC[]=NewCRC[]; CRC[].ena=enable;
END IF;

Как видите, ничем не отличается даже на уровне операторов. А занимает ячеек в FPGA в 1.5 раза меньше! Быстродействие в 2 раза выше.! И никакой "разбежки" на фронтах!

С нетерпением жду ваших комментариев. :)

 

Сгенерировал dffe. На 5 логических элементов больше Вашего получилось.

 

wire [31:0] NewCRC;
wire [31:0] data;
wire        ena;

assign ena = init ? 1'b1 : enable;
assign data = init ? 32'hffffffff : NewCRC;

    
dffe_a     dffe_a (
                .clock            (clk),
                .data             (data),
                .enable           (ena),
                .q                (CRC)
                );

 

По мне что графический редактор, что AHDL. Но редактор лучше. Не надо помнить имена пинов примитивов.

А поведенческого описания регистров от AHDL Вы не получите. Потому как нет понятия рабоы по фронту сигнала. Приходиться влоб на пин клока сигнал заводить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Некорректно это не подкрепить свои тезисы результатами и документами. В нашем случае отчетом синтезатора. В моем посте эти отчеты были, в вашем же только философские рассуждения о том, как может быть поступит синтезатор.

С вашей стороны я увидел подробный анализ синтеза простейшего реверсивного счетчика, в то время как я жаловался на неудовлетворительную работу синтезатора на верилоговском примере CRC32. По этому примеру вы никаких изысканий с отчетами синтезатора не проводили, но высказали сомнения, что мой AHDL текст не полный эквивалент верилоговского исходника. Я высказал практические соображения, что отклонения в функциональности непринципиальны и никак не влияют на значительные преимущества в эффективности разводки FPGA с языка AHDL над Verilog. Вот, собственно, и вся философия.

Вы принципиальный человек и как я понимаю профессионал в AHDL. Не вижу проблем, почему бы вам не уделить 5 минут своего времени и не подкрепить свои слова делом. Создайте полный функциональный аналог приведенного вами кода на языке AHDL и приведите результаты его синтеза. Вот это будет дело, а не пустой треп.

Зачем мне на это тратить время? Я уже потыркался с верилогом, получил неудовлетворительные результаты, и забыл. Зачем возвращаться?

Странный вы человек, вы сделали умозаключение, не прочитав отчет синтезатора и не посмотрев что же получилось в Chip Editore. Вы так и не сказали где, как и в каких условиях вы видели дикую разницу во времени.

Вы невнимательны. В начале этого треда представлено достаточно на примере готового модуля на верилоге CRC32.

Вы очень интересный человек, вы хотите использовать бесплатный, открытый код и при этом требуете от него эффективности коммерческих продуктов. Похоже что вы пропустили мой пост про смысл opencores, или же совершенно не вдумывались в него.

Я не пропустил ваше скептическое замечание относительно открытых проектов. Просто считаю его необоснованным. Так например, открытый проект GNU C-компиляторов с течением времени стал очень приличным и производит эффективные коды, например для ARM-ов. В чем-то даже лучше хваленых коммерческих продуктов. Можно ли ждать с течением времени подобного качества от открытых проектов на Verilog или VHDL для FPGA- я сильно сомневаюсь.

Вы очень оригинальный человек, непонятно где, нашли, непонятно кем разработанный верилог код. вероятно даже не читая документацию к этому коду (если есть). увидели что он вам не подходит и сразу же делаете выводы что это виноват именно язык, а не человек который на нем пишет.

Мой пример CRC32 на верилоге писал не человек, а робот. И написал его в стандартном академическом стиле, абсолютно не привязываясь к устройству, на котором будет реализован данный алгоритм. В этом-то и беда языков Verilog и VHDL, что это языки описания поведения некоей абстрактной системы. А юзеру остается только уповать на смышленость компилятора, который сообразит эффективную разводку именно для данной конкретной модели FPGA. Мне не повезло, ква-7.2 выдал неудобоваримую разводку для простейшего академического примера CRC32. Или есть второй вариант,- стать супер профессионалом и погрузится в дебри управления компилятором данного конкретного пакета разработки. О столь разрекламированной переносимости проектов тогда можно смело забыть.

Что касается переносимости в не зависимости от языка, мои проекты работают на разных альтерах и ксайлинксах, я использую чужие проекты, как блек-боксы и как примеры систем и при этом у меня почему то все работает и я не сталкиваюсь с проблемами, которые вы описываете.

Значит, Вы супер профессионал управления компиляторами с верилога. А я нет, что и не скрывалось с самого начала.

Если чем вас обидел приношу свои извинения. :beer:

Все нормально. С моей стороны также прошу не счесть все написанное за оскорбление. :beer:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем мне на это тратить время? Я уже потыркался с верилогом, получил неудовлетворительные результаты, и забыл. Зачем возвращаться?
AHDL de facto мёртв. Когда вы это поймёте, возможно, будет поздно. В том смысле, что время на изучение другого языка потратить-таки придётся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AHDL de facto мёртв. Когда вы это поймёте, возможно, будет поздно. В том смысле, что время на изучение другого языка потратить-таки придётся.

Mертвый ADHL, мертвый графический редактор, мертвый редактор векторных диаграмм- это миф из серии "как дурят нашего брата". Эти способы проектирования будут на равных существовать всегда, пока есть FPGA.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С вашей стороны я увидел подробный анализ синтеза простейшего реверсивного счетчика, в то время как я жаловался на неудовлетворительную работу синтезатора на верилоговском примере CRC32. По этому примеру вы никаких изысканий с отчетами синтезатора не проводили, но высказали сомнения, что мой AHDL текст не полный эквивалент верилоговского исходника.

очень интересно, ну что же повторю то, что было написано в посте #10.

Top-level Entity Name : crc32

Family : Cyclone II

Total logic elements : 50

Total combinational functions : 50

Dedicated logic registers : 32

 

Top-level Entity Name : CRC32_data8

Family : Cyclone II

Total logic elements : 55

Total combinational functions : 55

Dedicated logic registers : 32

Total registers : 32

Поясню немного, ваш модуль CRC32_data8 написанный на "пацанском" AHDL, занимает на 5 LE больше, чем мой модуль crc32, написанный на "отстойном" Verilog. Т.е. следуя вашей терминологии, по ресурсам FPGA ваш модуль в 1.1 раза хуже

 

Я высказал практические соображения, что отклонения в функциональности непринципиальны и никак не влияют на значительные преимущества в эффективности разводки FPGA с языка AHDL над Verilog. Вот, собственно, и вся философия.

 

Вот именно что к практическим соображениям ваши слова отнести нельзя, т.к. это сплошное словоблудие. Даже ваша фраза

Тоже непринципиально, поскольку на AHDL завести сброс на clrn триггера не составляет труда и главное, не приводит к увеличению числа задействованных LE.

 

Ярко показывает одну из возможных ситуаций :

 

1. мало смотрели Techology Mapper/Chip Editor, либо не смотрели его вообще

2. работали только с одной целевой фпга и вам везло

3. не представляете как ваш AHDL код, отображается на примитивы целевой фпга.

 

Зачем мне на это тратить время? Я уже потыркался с верилогом, получил неудовлетворительные результаты, и забыл. Зачем возвращаться?

 

Что бы заключить что одна реализация лучше другой, нужно сравнивать функционально эквивалентные блоки. Во всех остальных случаях сравнение некорректно. Я предложил вам, реализовать модуль на вашем любимом AHDL и сравнить результаты его синтеза с тем, что вы слили из интернета.

 

Я не пропустил ваше скептическое замечание относительно открытых проектов. Просто считаю его необоснованным. Так например, открытый проект GNU C-компиляторов с течением времени стал очень приличным и производит эффективные коды, например для ARM-ов. В чем-то даже лучше хваленых коммерческих продуктов. Можно ли ждать с течением времени подобного качества от открытых проектов на Verilog или VHDL для FPGA- я сильно сомневаюсь

 

забавно это слышать, являясь автором опенсорсного проекта и участником еще одного. Не хотите использовать опенсорс, не пользуйте. Хотите сделать его лучше, делайте.

 

Мой пример CRC32 на верилоге писал не человек, а робот. И написал его в стандартном академическом стиле, абсолютно не привязываясь к устройству, на котором будет реализован данный алгоритм. В этом-то и беда языков Verilog и VHDL, что это языки описания поведения некоей абстрактной системы. А юзеру остается только уповать на смышленость компилятора, который сообразит эффективную разводку именно для данной конкретной модели FPGA. Мне не повезло, ква-7.2 выдал неудобоваримую разводку для простейшего академического примера CRC32. Или есть второй вариант,- стать супер профессионалом и погрузится в дебри управления компилятором данного конкретного пакета разработки. О столь разрекламированной переносимости проектов тогда можно смело забыть
.

 

Пастернака не читал, но осуждаю. (с)

 

Других слов просто нет, почему то у всех, кого я знаю из FPGAшников, работающих на языках Verilog/VHDL проекты легко переносятся на разные платформы, а вот у всех знакомых AHDL шиков при слове Xilinx/Lattice начинается истерика. (SM не в счет).

 

 

Значит, Вы супер профессионал управления компиляторами с верилога. А я нет, что и не скрывалось с самого начала.

 

В кругу моих коллег и друзей человек 20-25 фпгашников и ни у кого нет проблем, только у вас они почему то выплыли. Может дело не в языке, а в драйверах ? %)

 

 

ЗЫ.

 

Вы невнимательны. В начале этого треда представлено достаточно на примере готового модуля на верилоге CRC32.

 

в начале треда есть только ваша фраза

 

-3. Возникала очень несимпатичная "разбежка" фронтов на шинах данных.

 

Вы ее видели в симуляторе квартуса ? если да, то спрашивать больше не о чем

 

ЗЗЫ.

 

Прав был Postoroniy_V повеяло темой "Не дурят ли нашего брата".

 

 

Тема меня утомила, упертых AHDL шиков мне и на работе хватает. Для них круче AHDL и квартусовского симулятора ничего быть не может, но почему то те, кого я пересадил на Verilog/System Verilog и нормальный Design Flow не только повысили свою производительность труда в разы, но и обратно откатываться не желают.

 

Желаю вам удачи в процессе заката солнца в ручную!!!

 

Ушел из темы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тема меня утомила, упертых AHDL шиков мне и на работе хватает. Для них круче AHDL и квартусовского симулятора ничего быть не может, но почему то те, кого я пересадил на Verilog/System Verilog и нормальный Design Flow не только повысили свою производительность труда в разы, но и обратно откатываться не желают.

 

Желаю вам удачи в процессе заката солнца в ручную!!!

 

Ушел из темы.

Мне тоже теперь все понятно с техникой проектирования FPGA на языках Verilog и VHDL. Больше вопросов не имею.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне тоже теперь все понятно с техникой проектирования FPGA на языках Verilog и VHDL. Больше вопросов не имею.

 

Странно, что у Вас нет вопросов по технике проектирования. Был приведен простой пример.

Полином G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + 1

реализован функцией crc_32x1, который средствами синтезатора размножен функцией crc_32x8.

Все просто и понятно.

Естественно, такое может и AHDL. Но я не умею. Наверно Вы нам покажете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне тоже теперь все понятно с техникой проектирования FPGA на языках Verilog и VHDL. Больше вопросов не имею.

Завидую :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про Altera Cyc3 и Stratix3 и Verilog:

Как записать регистр с синхронной загрузкой, чтобы получился не просто DFFE с мультиплексором, а DFFEAS? Но при этом нестандартные библиотеки (или что есть DFFEAS в верилоге) не использовать.

 

Вручную я могу создать этот регистр, но интереснее было бы средствами самого синтезатора с верилога.

 

 

 

что-то типа

module dffeas1 (clock, set_primary, set_secondary, data_primary, data_secondary, out);

input clock;

input set_primary, set_secondary;

input data_primary, data_secondary;

output out;

 

wire out1;

 

 

DFFEAS aa ( .d(data_secondary),

.clk(clock),

.clrn(1'b1),

.prn(1'b1),

.ena(set_primary | set_secondary),

.asdata(data_primary),

.aload(1'b0),

.sclr(1'b0),

.sload(set_primary),

.q(out1)

);

 

DFFEAS bb ( .d(out1),

.clk(clock),

.clrn(1'b1),

.prn(1'b1),

.ena(set_primary | set_secondary),

.asdata(!out1),

.aload(1'b0),

.sclr(1'b0),

.sload(set_primary),

.q(out)

);

 

endmodule

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этот вопрос надо адресовать суппорту альтеры :)

У них в поваренной книге прямо сказано, что использование асинхронной загрузки может привести к неверной интерпретации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В ISE q1 и q2 получаются не эквивалентными:

module tst(output [7:0] q1, q2, input d);
assign q1 = -4 ^ d;
assign q2 = -4 + d;
endmodule

А в Квартусе что получится?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>Этот вопрос надо адресовать суппорту альтеры

Я адресовал его сюда. Все же это хорошая фича - экономит лишний мультиплексор и увеличивает fmax.

 

>У них в поваренной книге прямо сказано, что использование асинхронной загрузки может привести к неверной интерпретации.

 

Почему асинхронной загрузки?

Все, что я привел, синхронно, что можно увидеть в описании DFFEAS и в отчете Квартуса.

 

 

>А в Квартусе что получится?

q1 и q2 одинаковы.

post-827-1221328462_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>А в Квартусе что получится?

q1 и q2 одинаковы.

А по стандарту как должно быть? :07:

 

В ISE получается так:

"q1 = -4 ^ d" эквивалентно "q1 = 8'b00000100 ^ d",

"q2 = -4 + d" эквивалентно "q2 = 8'b11111100 + d".

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему асинхронной загрузки?

Все, что я привел, синхронно, что можно увидеть в описании DFFEAS и в отчете Квартуса.

Примитив такой указали- с синхронной и асинхронной загрузкой :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...