FPGA реализует отображаемый в памяти регистр

Я относительно новичок в программировании fpga (vhdl). Поэтому я понятия не имею о стоимости ресурсов для различных решений проблемы ... Поэтому мне было интересно, какой подход имеет наибольший смысл, если я хочу реализовать некоторые регистры с отображением памяти внутри дизайна fpga. Должен ли я разработать 1 адресный декодер, который стробирует все регистры при совпадении адресов, или лучше разработать каждый регистр со своим собственным декодером (или, по крайней мере, каждый подкомпонент, такой как генератор ШИМ, который использует пару регистров в моей реализации).

Заранее спасибо за информацию С уважением Ян


person JakkeFire    schedule 29.01.2016    source источник


Ответы (1)


Критическим ресурсом обычно являются не вентили (LUT), а время разработки, поэтому основная задача состоит в том, чтобы упростить управление проектом и повторное использование модулей.

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

Таким образом, в вашем случае генератор ШИМ должен иметь отдельный декодер адресов для регистров, выделенных в адресном пространстве, отданном модулю ШИМ на следующем более высоком уровне иерархии.

Чтобы узнать об использовании ресурсов, вы можете установить инструмент синтеза FPGA и поэкспериментировать с различными подходами; это хорошее упражнение, которое поможет вам выбрать между различными реализациями.

person Morten Zilmer    schedule 29.01.2016
comment
Это правильный подход. Вы можете увидеть некоторые более старые конструкции FPGA, использующие подход с централизованной шиной, где все декодирование регистров выполняется в одном центральном модуле. Это не обеспечивает переносимости или повторного использования. Создание интерфейса распределенного реестра значительно проще для повторного использования, он хорошо подходит для документирования, а использование ресурсов ниже. - person Russell; 29.01.2016