gibson1980 0 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Приветствую. Есть задачка с не целочисленным делением, которую я не могу реализовать в ISE, поэтому решил воспользоваться Vivado HLS. Реализация в HLS довольно простая, умножить, сложить, разделить, проблем вроде нет, но как все это перенести в мой проект на ISE? Дело в том, что в HLS в каталоге impl генерируется HDL файл верхнего уровня с несколькими дополнительными HDL файлами, в которых как я понял описывается подключение модулей с AXI шиной и т. д., но я с ней ни разу не работал и тут у меня ступор. Может я в Vivado экспорт RTL делаю не верно? Или можно сгенерировать какой нибудь NGC файл, что бы я его как отдельный модуль подключил в своем проекте? Не могли бы вы подсказать в общих чертах, как это сделать более правильно и безболезненно, или может мануал какой подскажете что бы почитать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 33 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Приветствую! ... Есть задачка с не целочисленным делением, которую я не могу реализовать в ISE, поэтому решил воспользоваться Vivado HLS. ... Для какого семейства Вам надо получить код? Если под "не целочисленным делением" имеете ввиду float то может быть малой кровю не получится отделатся. Для начала можете попробовать задать в качестве целевой FPGA virtex4 или virtex5 и посмотреть что скомпилирует. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gibson1980 0 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Kintex7 160. Задача такая, необходимо рассчитать поправку на доплер в виде 48 разрядного числа для гетеродина. Примерная последовательность действий: a = dop * 10 кГц - dop - число -240...+240 b = a + f - f - частота 7...8 ГГц (несколько фиксированных, можно сказать константа) c = b*0.00000005 - сама поправка на доплер d = (c/192 МГц)*2y48 - 2y48 2 в степени 48 (тоже можно сказать константа c * 1466015) Понятно что некоторые операции можно сократить и использовать как константы. Тут главная проблема в операции "с" (~7000000000 * 0,00000005). Сперва думал заменить ее на умножение (ведь так в VHDL делается?), но результат получается где то 62 разряда, а я не знаю как с таким числом работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Ivan_ 0 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Умножитель больших чисел это не проблема, просто нужно попарно разбивать числа на многочлен и умножать https://www.xilinx.com/support/documentatio...tes/xapp467.pdf - 6 страница Или же проблема в 62 битах в HLS? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 33 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Приветствую! Да тут просто надо для начала посокращать константы и в один из множителей вынести только результат сокращения. Ну а потм и выбрать масштабирующий коэффициент степени 2 чтобы была требуемая точность этого коэффициента после точки. Соответственно результат умножения потом "поделить" на этот масштабирующий коэффициент. Да и разбивать руками тут ничего не надо. Coregen-ом сгенерировать нужную разрядность умножителя и все. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gibson1980 0 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Rob То есть в Coregen-ом умножителе можно задать разрядность больше 48 и обойтись малой кровью без HLS? _Ivan_33 В HLS как раз получается то что надо, проблема перекинуть все это в ISE. С этим тоже бы хотелось разобраться, либо рано или поздно пригодится. Благодарю за ответы, завтра на работе займусь. Up Пока что решил проблему с HLS, в настройках Solution надо было выбрать ISE, чего я ранее не видел, так как в версии 2017.3 нет этой настройки. Помогла версия 2015.x. Все вышло как я и предполагал, наряду с HDL появились XCO и NGC файлы, которые благополучно подтянулись в ISE. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться