Сейчас задействовано 32/72 макроячеек, 251/360 product terms (кстати, как это называется по-русски?) и 27/72 регистров. Если увеличить разрядность регистра cnt с 15 до 17 бит, будет задействовано на 2 регистра больше и на 6 термов меньше, а если поднять до 19 бит, то для синтеза внезапно не будет хватать 234 термов! Где здесь логичная и понятная закономерность? Подобное происходит при минимальном изменении условия в конструкции if или замене цепочки if на case (вроде как и то, и то другое в последовательность мультиплексоров должно синтезироваться, но не прокатывает). В общем, я запутался и не знаю, как тут оптимизировать.
Оптимизация кода для CPLD
Собственно, пишу код для XC9572XL. Сначала тренировался на XC6SLX9 - все работало и занимало меньше макроячеек, чем есть в упомянутом CPLD. В процессе переноса выяснилось, что ресурсов все-таки не хватает. Путем сокращения функционала удалось разместить код, однако любой шаг в сторону приводит к невозможности синтеза схемы.
Сейчас задействовано 32/72 макроячеек, 251/360 product terms (кстати, как это называется по-русски?) и 27/72 регистров. Если увеличить разрядность регистра cnt с 15 до 17 бит, будет задействовано на 2 регистра больше и на 6 термов меньше, а если поднять до 19 бит, то для синтеза внезапно не будет хватать 234 термов! Где здесь логичная и понятная закономерность? Подобное происходит при минимальном изменении условия в конструкции if или замене цепочки if на case (вроде как и то, и то другое в последовательность мультиплексоров должно синтезироваться, но не прокатывает). В общем, я запутался и не знаю, как тут оптимизировать.
Сейчас задействовано 32/72 макроячеек, 251/360 product terms (кстати, как это называется по-русски?) и 27/72 регистров. Если увеличить разрядность регистра cnt с 15 до 17 бит, будет задействовано на 2 регистра больше и на 6 термов меньше, а если поднять до 19 бит, то для синтеза внезапно не будет хватать 234 термов! Где здесь логичная и понятная закономерность? Подобное происходит при минимальном изменении условия в конструкции if или замене цепочки if на case (вроде как и то, и то другое в последовательность мультиплексоров должно синтезироваться, но не прокатывает). В общем, я запутался и не знаю, как тут оптимизировать.
- iEugene0x7CA
- Адепт
- Сообщения: 1570
- Откуда: Киев
Хм, не подскажу насчет термов — Xilinx'ы не прогал ни разу, но насчет XC9572 — это мега-крохотная и супер-древняя(1998-й год ) микрушка, я бы не использовал их для новых дизайнов или даже обучения.
Мы сейчас на EPM240 перешли, даже есть мысли поставить её в SimpleDriver, в одной из следующих версий.
Мы сейчас на EPM240 перешли, даже есть мысли поставить её в SimpleDriver, в одной из следующих версий.
Хм, XC9572 действительно старая, но проектов на ней в сети мало. Видать, их только как замену нескольким корпусам комбинаторной логики юзать можно. Ну ладно, попробую домучить хильку, а в следующий раз буду делать контроллер для теслы на EPM240, благо уже затарился ими .
- iEugene0x7CA
- Адепт
- Сообщения: 1570
- Откуда: Киев
R2R писал(а):только как замену нескольким корпусам комбинаторной логики
Вроде, CPLD и не претендуют ни на что большее.
Это не замена микроконтроллеру, как многим иногда кажется, её цели — экономия пространства на платке(помещение логики в один чип) и обработка быстрых процессов, с которыми простой микроконтроллер не справится.
В жирные FPGA да, можно залить софткорный процессор, но на практике большие FPGA дороги и всегда дешевле поставить мелкую CPLD в связке с железным MCU. Менее гемморней, тоже.
Вернуться в «Микроконтроллеры и ПЛИС»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей