Jump to content

    
yes

модем ~100Mb/s : нужно из С-шной модели сделать FPGA реализацию

Recommended Posts

15 минут назад, petrov сказал:

looser

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

Только модель эту писали не вы, алгоритмы из неё понять невозможно, формальную битэкзатную реализацию из неё не сделать, потому как никаких битов там нет, сделано человеком, который не делал модемы на FPGA, а абстрактной теорией на С развлекался.

Именно этот момент несколько и напрягает.

Share this post


Link to post
Share on other sites

 

4 часа назад, Lmx2315 сказал:

а что тут не так?

 

Во втором случае else if. Или Switch-case, если вариантов целочисленных больше двух.  

Если значение a=9, программе будет жарко :-)

А в первом abs оператор.

Share this post


Link to post
Share on other sites
12 часов назад, baumanets сказал:

 

 

Во втором случае else if. Или Switch-case, если вариантов целочисленных больше двух.  

Если значение a=9, программе будет жарко :-)

А в первом abs оператор.

В 1-м случае abs не оператор. Так что никакого криминала.  Во втором - всяко может быть.

Share this post


Link to post
Share on other sites
08.08.2021 в 23:39, baumanets сказал:

Если значение a=9, программе будет жарко :-)

 

09.08.2021 в 12:00, looser сказал:

Во втором - всяко может быть.

 

Там всё однозначно, будет работать условие (a<10).

Скорей всего, коллега misyachniy привёл какой-то учебный код, подробно расписывающий действие оператора abs в первом случае, и во втором случае то, что скрывается за альтернативой else.

Share this post


Link to post
Share on other sites
28 minutes ago, MrGalaxy said:

Там всё однозначно, будет работать условие (a<10).

А из чего следует, что переменная "a" имеет целочисленный тип? Что будет, если a = 9.5 ?

 

И второй вопрос: из чего следует, что значение "a" не меняется в первом операторе ?

 

Как будет работать такой код:

if (a < 10) {a = a + b;}

if (a > 9) {}

 

Share this post


Link to post
Share on other sites
38 минут назад, blackfin сказал:

А из чего следует, что переменная "a" имеет целочисленный тип? Что будет, если a = 9.5 ?

 

 

Да, я предположил, что целое, тут можно только гадать.

Замечание было про a=9.

 

 

42 минуты назад, blackfin сказал:

 из чего следует, что значение "a" не меняется в первом операторе ?

 

Как будет работать такой код:


if (a < 10) {a = a + b;}

if (a > 9) {}

 

Это уже будет грубая ошибка, тут else необходим. Но судя по контексту, имелось в виду другое.

Share this post


Link to post
Share on other sites

простите, но здесь никогда не угадать с производительностью

одно дело когда на компе на С при помоши SSE4 double операция процом нативно за 8 тактов выполняется, а другое дело вам тригонометрию на FPGA считать. и обойдётесь ли вы генерируемым более-менее стандартным кордиком или придется широченную четырехтактную реализацию на полиномах Чебышева под требуемый динамический диапазон писать

и таки-да, double и bit-exact в одном предложении, это очень мило

Share this post


Link to post
Share on other sites
On 8/22/2021 at 3:40 PM, C250 said:

Задача ещё актуальна или нет?

Есть опыт реализации очень нестандартного модема на ПЛИС.

похоже, что нет - меня больше не спрашивали

 

Share this post


Link to post
Share on other sites

В принципе любой СИшный код можно перевести в блок-схему, а блок схему перевести в конечный автомат, ну а конечный автомат любой сложности реализовать в ПЛИС...

Edited by PCBCollider

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.