Совместное использование ресурсов - это оптимизация области, в которой HDL Coder™ идентифицирует несколько функционально эквивалентных ресурсов и заменяет их одним ресурсом. Данные мультиплексируются во времени по совместно используемому ресурсу для выполнения тех же операций.
Можно указать коэффициент совместного использования
SF для подсистемы или функционального блока MATLAB. Кодер HDL пытается идентифицировать определенное количество идентичных совместно используемых ресурсов N до SF. То, как генератор кода использует эти ресурсы, зависит от N, SF, и Oversampling factor.
По умолчанию Oversampling factor равно 1, и совместное использование ресурсов приводит к перегрузке общих ресурсов с помощью коэффициента оверклокинга (OCF), что зависит от оставшейся части SF и N.
if rem(SF,N) == 0 OCF = N; else OCF = SF; end
При указании Oversampling factor больше 1, ваша конструкция использует более высокую тактовую частоту на целевом оборудовании, поскольку конвейерная передача тактовой частоты включена по умолчанию. Когда вы указываете SharingFactor, оптимизация совместного использования ресурсов пытается предоставить общий доступ к N ресурсам и перекрывает общие ресурсы на коэффициент, заданный:
Коэффициент оверклокинга = (block_rate start DUT_base_rate) × Oversampling
Модель проверки можно использовать для проверки того, что выходные данные оптимизированной DUT являются битово верными по отношению к результатам, полученным исходной DUT. Дополнительные сведения о модели проверки см. в разделах Сгенерированная модель и Модель проверки.
Совместное использование ресурсов может существенно сократить площадь вашего чипа. Например, сгенерированный код может использовать один множитель для выполнения операций нескольких идентично сконфигурированных множителей из исходной модели. Однако совместное использование ресурсов сопряжено со следующими затратами:
Использует больше мультиплексоров и может использовать больше регистров.
Сокращает возможности распределенной конвейерной обработки или ресинхронизации, поскольку кодер HDL не пересекает границы тактовой частоты.
Умножает тактовую частоту целевого аппаратного обеспечения на коэффициент совместного использования.
Если для блока MATLAB Function указан ненулевой коэффициент совместного использования, кодер HDL идентифицирует и совместно использует функционально эквивалентные множители.
Если для подсистемы указан ненулевой коэффициент совместного использования, кодер HDL идентифицирует и совместно использует функционально эквивалентные экземпляры следующих типов блоков:
Выгода
Продукт
Умножение-сложение
Сложение или суммирование с двумя входами
Атомная подсистема
Функция MATLAB
Генератор кода совместно использует функционально эквивалентные функциональные блоки MATLAB с типами с фиксированной точкой. При использовании типов с плавающей запятой или MATLAB Datapath архитектура для функциональных блоков MATLAB с фиксированными типами точек, кодер HDL рассматривает функциональный блок MATLAB как обычную подсистему. Затем можно совместно использовать функционально эквивалентные ресурсы внутри функционального блока MATLAB. Дополнительные сведения см. в разделе Использование архитектуры MATLAB Datapath для совместного использования с функциональными блоками MATLAB.
Чтобы указать общий доступ к ресурсам из пользовательского интерфейса, выполните следующие действия.
На вкладке Приложения выберите Кодер HDL. Появится вкладка Код HDL (HDL Code). Выберите подсистему, ссылку на модель или функциональный блок MATLAB, а затем щелкните Свойства блока HDL (HDL Block Properties). В поле SharingFactor введите количество совместно используемых ресурсов.
Щелкните правой кнопкой мыши подсистему, ссылку на модель или функциональный блок MATLAB и выберите «Код HDL» > «Свойства блока HDL». В поле SharingFactor введите количество совместно используемых ресурсов.
В командной строке установите SharingFactor использование hdlset_param, как в следующем примере.
modelname = 'sfir_fixed' dut = 'sfir_fixed/symmetric_fir'; open_system(modelname) hdlset_param(dut,'SharingFactor', 4);
Совместное использование нескольких скоростей не может совместно использовать ресурсы с разным количеством трубопроводов, вставленных из адаптивного конвейера.
Ссылки на модель не поддерживаются для совместного использования ресурсов.
Блоки, подлежащие совместному использованию, должны иметь следующие требования:
Односкоростной.
Нет бесконечной частоты выборки. DUT не должен содержать блоки, для которых для параметра Sample time установлено значение Inf. Например, блоки констант должны иметь значение «Sample time», равное -1. Чтобы установить время выборки равным -1 для всех постоянных блоков в DUT, используйте следующий код MATLAB:
blks = find_system(dut, 'BlockType', 'Constant'); for i = 1:length(blks) set_param(blks{i}, 'SampleTime', '-1'); end
Отсутствуют входы или выходы шины.
Нет настраиваемых параметров маски. Для совместного использования этих блоков в редакторе масок снимите флажок «Настраиваемый».
Если блок находится в контуре обратной связи, то к каждому выходному порту должен быть подключен по крайней мере один блок задержки блока или блока задержки.
Сведения о специфичных для блоков параметрах и требованиях к совместному использованию ресурсов см. в разделе:
Чтобы просмотреть информацию о совместном использовании ресурсов в отчете, перед созданием кода для каждой подсистемы или ссылки на модель включите отчет оптимизации. Чтобы включить этот отчет, на вкладке Код HDL (HDL Code) выберите Параметры отчета (Report Options), а затем выберите Создать отчет по оптимизации (Generate optimization report).
При создании отчета об оптимизации в разделе Потоковая передача и общий доступ отображается эффект оптимизации совместного использования ресурсов. Если общий доступ к ресурсам не удался, в отчете отображаются диагностические сообщения и блоки-нарушители, которые приводят к сбою общего доступа к ресурсам.
При успешном совместном использовании ресурсов в отчете отображается SharingFactor и таблица, содержащая группы блоков, совместно использующих ресурсы. Таблица содержит:
Идентификатор группы: уникальный идентификатор для группы аналогичных блоков Simulink ®, таких как блоки добавления или блоки продуктов, которые совместно используют ресурсы.
Тип ресурса: тип блока Simulink в группе общего доступа.
Длины слов ввода-вывода: Длины слов на входе и выходе из блока в группе общего доступа.
Размер группы: количество блоков одного типа в группе общего доступа.
Имя блока: имя блока, принадлежащего группе общего доступа.
Легенда цвета: цвет, выделяющий все блоки в группе общего доступа.
Чтобы увидеть общие ресурсы в модели Simulink и в созданной модели, щелкните ссылку Выделить общие ресурсы и диагностику.