Jump to content

    

тема для Aprox и любителей AHDL

2Aprox: а где running disparity? Вы функциональность Вашего модуля вообще проверяли? Хотя бы по сравнению с альтеровской моделью?
Мой соперник des00 тоже не анализирует Running disparity error. У нас честное соревнование "AHDL против SV".

Share this post


Link to post
Share on other sites
Мой соперник des00 тоже не анализирует Running disparity error...

 

Вам нужно почитать побольше про 8b/10b

Share this post


Link to post
Share on other sites
Aprox:

А как Вы думаете, можно ли использовать мегафункцию lpm_rom в модули, написанном на Verilog? :)

Скорей всего можно. Но почему-то не используют в программах на Verilog! Факт налицо.

Share this post


Link to post
Share on other sites
Скорей всего можно. Но почему-то не используют в программах на Verilog! Факт налицо.
Да просто никто не ждал такого фортеля. Ждали реального сравнения кода, а Вы выкручиваетесь. Так даже не интересно.

Столько говорили про эффективность кода, а тут...

Вы и в самом деле думаете что проблема вызвать функцию памяти из Verilog?

Share this post


Link to post
Share on other sites
Извольте:

очень хорошо, ну наконец то. А теперь, для того что бы собрать и портировать в моделсим ваш код на моей машине мне нужны недостающие файлы. Прошу вас их выложить.

 

Второе ваш код не является 8b10b кодером, вы не обрабатываете Running Disparity, чем это чревато, смотрите в описании 8b10b кодирования. В моем коде есть полная обработка RD, в том числе обработка исключений RD. Причем хочу заметить, вы не в первый раз упрощаете чужие корки, а потом заявляете что языки VHDL/Verilog мастдай. Сравните выходы альтеровского кодера и вашего, увидите в чем разница. Мой кодер совпадает с альтеровским один в один ( о чем говорит альтеровский же тестбенч), единственное исключение я не стал описывать выход kerr, который описывает появление некорректного слова управления, а не RD Error;

 

Почему вы мне отказываете в таком же подходе? Может потому, что des00 непрерывно вычисляет в реальном времени значения перекодировки, а я просто заранее записал их в ROM и не заставляю FPGA трудиться в поте лица?

Если бы вы хоть немного владели Verilog, то знали бы что localparam и assign wire = some_constsant вычисляются на этапе предварительного разбора файла. Никаких вычислений в реальном времени нет и быть не может.

 

Да просто никто не ждал такого фортеля. Ждали реального сравнения кода, а Вы выкручиваетесь. Так даже не интересно.

+1, не серьезно все это %)

Share this post


Link to post
Share on other sites
Я же представил в студию, как просили, чемпиона по скорострельности на языке AHDL. В чем же вы увидели мое якобы непонимание сути дела?
От вас просили в первую очередь АНАЛОГ того, что написал des00. А такого 'чемпиона' можно и на Verilog'е сделать:

module champion(input wire clk, output reg qqq);
always @(posedge clk) qqq <= ~qqq;
endmodule

Явно чемпион. А то, что он делает нечто совсем к делу не относящееся никого волновать не должно, так по вашему?

Добавление одного входа и выхода в схему на ROM никоим образом не изменит результат ее скорострельности. Алаверды: советую учить матчасть.
Ох уж эти советчики :rolleyes:

Проверьте скорострельность:

module c8b10b(input wire clk, input wire [7:0] code, output wire [9:0] out_code);

reg [10:0] mem [0:511];
reg [10:0 ] r;

always @(posedge clk)
r <= mem[{r[10],code}];

assign out_code = r[9:0];

initial $readmemh("table.txt",mem);

endmodule

Вот ЭТО является аналогом вашего творчества на AHDL (но с добавлением running parity), а не то, что предлагал des00

Share this post


Link to post
Share on other sites
Вам нужно почитать побольше про 8b/10b
Нет. В контексте сравнения одинаковых алгоритмов, ваше предложение представляется совершенно излишним.

 

 

Я лишь вижу следующее - реализация корки на опенкорсес оставляет желать лучшего. Это как на любом языке программирования высокого уровня - можно написать хороший код, который будет оптимально собираться на большинстве платформ, а можно написать через одно место, а потом хаять язык.
Реализация корки на опенкор есть жертва академической переносимости проектов. И больше ничего. Если бы писали под конкретную FPGA было бы много лучше.

 

 

Вы и в самом деле думаете что проблема вызвать функцию памяти из Verilog?
Но ведь des00 не вызывал, правда? А почему? Потому, что над ним довлеет академический Verilog и заставляет идти по проторенной дорожке мэйнстрима.

 

 

 

Вот ЭТО является аналогом вашего творчества на AHDL (но с добавлением running parity), а не то, что предлагал des00
Hе совсем, тут я не вижу возможности посылать служебные символы. А без них никак невозможно пересылать пакеты.

 

 

очень хорошо, ну наконец то. А теперь, для того что бы собрать и портировать в моделсим ваш код на моей машине мне нужны недостающие файлы. Прошу вас их выложить.
Имеете в виду .mif файл? Он не имеет ровным счетом никакого значения. Возьмите любой для оценки скорострельности.
Второе ваш код не является 8b10b кодером, вы не обрабатываете Running Disparity, чем это чревато, смотрите в описании 8b10b кодирования.
А вы, значит, обрабатываете? И что, какой вклад в замедление процесса вносит эта параллельная ветка, никак не относящаяся непосредственно к преобразованию 8b/10b?

Мой кодер совпадает с альтеровским один в один ( о чем говорит альтеровский же тестбенч), единственное исключение я не стал описывать выход kerr, который описывает появление некорректного слова управления, а не RD Error;
Все это непринципиально, поскольку находится в стороне от непосредственного преобразования 8b/10b.
Если бы вы хоть немного владели Verilog, то знали бы что localparam и assign wire = some_constsant вычисляются на этапе предварительного разбора файла. Никаких вычислений в реальном времени нет и быть не может.
Вы хотите сказать, что синтезатор с Verilog сумел разглядеть в вашем тексте кучу констант? Почему же тогда он не оформил их в виде простого ПЗУ? Отчего же тогда произошло отставание в скорости на SV?

Share this post


Link to post
Share on other sites

Aprox:

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

 

А иначе это всего лишь слова. А сказать можно все, что угодно.

Я могу сказать, что не принципиально, какой разрядности числа умножать, 8-битные или 64-битные.

И что? Мир от этого, все равно, не изменится.

 

Цель темы была получить несколько реализаций одного алгоритма и сравнить их между собой.

des00 свою реализацию предоставил.

Вы - не предоставили. Реализацию чего-то другого предоставили, но в контексте данной темы она не интересна.

Предоставьте реализацию того же алгоритма. Не можете? Не хотите?

 

Тогда Вам следует признать Ваше "поражение".

Share this post


Link to post
Share on other sites
Aprox:

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

Как я понимаю, оценку полного совпадения функциональности вы берете на себя? Hеужели не видите, что не в функциональности дело и не в разбирательстве, кто лучше воспроизведет стандарт кодера 8b/10b?
Цель темы была получить несколько реализаций одного алгоритма и сравнить их между собой.des00 свою реализацию предоставил.

Вы - не предоставили. Реализацию чего-то другого предоставили, но в контексте данной темы она не интересна.

Предоставьте реализацию того же алгоритма. Не можете? Не хотите? Тогда Вам следует признать Ваше "поражение".

Пытаетесь утопить диспут в несущественных деталях? Я в такое не играю. Вот вам кодер на AHDL. Как просили- чемпион скорострельности. Не нравится? - Ваши проблемы!

Share this post


Link to post
Share on other sites

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

 

Device : EP3C5E144C8
Timing Models : Final
Total logic elements : 129 / 5,136 ( 3 % )
    Total combinational functions : 115 / 5,136 ( 2 % )
    Dedicated logic registers : 38 / 5,136 ( < 1 % )

Info: Fmax Summary
    Info:                Restricted
    Info:         Fmax         Fmax      Clock Note
    Info: ============ ============ ========== =====================
    Info:   201.69 MHz   201.69 MHz        clk

 

Остался последний шаг оптимизации :

1. слияние двух таблиц в одну.

2. отказ от комбинационного выхода rdcascade и указание квартусу мапить таблицу в ROM (именно комбинационный rdcascade не дает положить таблицы в ROM. По поставленным мной условиям, я остаюсь в рамках интерфейсов альтеровского кодера)

 

В итоге иерархически, с максимальной открытостью приводим проект в финальную точку и собираем его на любой ПЛИС. To be continue

 

UDP. Забыл добавить еще и шаг

3. Отказ от входа rdforce, который также не дает положить таблицу в ROM.

enc8b10b_3.v

Share this post


Link to post
Share on other sites
Пытаетесь утопить диспут в несущественных деталях?
То есть подмена условий конкурса на свои собственные (к своей выгоде) и предоставление недоделанной корки - это 'несущественные детали'? :blink:
Я в такое не играю.
Во что вы играете мы уже поняли - в демагогию :)
Вот вам кодер на AHDL.
Это не 'кодер на AHDL', а недоделанное 'нечто'.
Как просили- чемпион скорострельности.
Вы мой код (на Verilog) проверили на скорострельность? Видимо нет. Так что ваш 'кодер' пока не чемпион.

Share this post


Link to post
Share on other sites
Не могли бы Вы, des00, выдать пошаговую инструкцию, как создавать и отлаживать проект. Начиная с поиска алгоритмов и заканчивая тестбенчами и выкладыванием кода на сайт. Какими программами пользуетесь, какие цели преследуете при оптимизации, и т.п. Да еще бы со скриншотами... В блоге своем, например. Я думаю, от этого была бы бОльшая польза всем.

Думаю поставлю точку в вопросе кодера 8b10b и на его основе сделаю статью, вида "Пошаговая разработка алгоритмических модулей или как съесть слона" %)

Share this post


Link to post
Share on other sites
Думаю поставлю точку в вопросе кодера 8b10b и на его основе сделаю статью, вида "Пошаговая разработка алгоритмических модулей или как съесть слона" %)

Очень интересно будет прочитать!

 

P.S. Жаль только, что Aprox вместо честной дискуссии ударился в демагогию и реализацию алгоритна на SV и AHDL сравнить (пока) не удалось.

Share this post


Link to post
Share on other sites

Мой совет - лучше признайте свое поражение.

 

Или давайте более весомые аргументы!!!

 

PS. Мое мнение Вы не правы.

Share this post


Link to post
Share on other sites
Info: Fmax Fmax Clock Note

Info: ============ ============ ========== =====================

Info: 201.69 MHz 201.69 MHz clk[/code]

 

Остался последний шаг оптимизации :

1. слияние двух таблиц в одну.

2. отказ от комбинационного выхода rdcascade и указание квартусу мапить таблицу в ROM (именно комбинационный rdcascade не дает положить таблицы в ROM. По поставленным мной условиям, я остаюсь в рамках интерфейсов альтеровского кодера)

Давайте, давайте - обрезайте функциональность. Не огорчите только любителей точного соблюдения стандарта en8b/10b.
В итоге иерархически, с максимальной открытостью приводим проект в финальную точку и собираем его на любой ПЛИС. To be continue
Вынужден предостеречь- ваш вылизанный по быстродействию SV проект для кристаллов Altera скорей всего будет давать крайне неудовлетворительные результаты для кристаллов Xilinx. Потребуется солидная переработка исходников. Поэтому советую отказаться от слов "для любой ПЛИС".
UDP. Забыл добавить еще и шаг

3. Отказ от входа rdforce, который также не дает положить таблицу в ROM.

Я очень доволен, что направил ваши поиски оптимальности в правильном направлении. И считаю это лучшим доказательством свой правоты в споре AHDL <-> VHDL\V\SV . Ведь, увязший в академических языках вряд-ли догадается использовать ROM для перекодировки символов. Ему надо про это специально напоминать. А вот пишущему на AHDL практику ROM - первое, что приходит в голову. Я думаю, мы остались довольны друг другом и результатом дурацкой дуэли.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this