Перейти к содержанию
    

Как осуществляется разворот сложной комбинационной схемы в последовательные вычисления во времени? Автоматически с генерацией управляющей логики и автоматов, c указанием на сколько тактов разбить вычисления?

ЕМНИП там есть параметры Sharing Factor, Streaming Factor, Pipelining они определяеют уровень конвейризации, уровень многотактовости и зашаривание модуля между разными операциями.

 

У меня в планах тоже полноценный модем сделать, точнее всю дспешную часть %) скоро начну копать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня в планах тоже полноценный модем сделать, точнее всю дспешную часть %) скоро начну копать

 

Отпишите пожалуйста в чём там соль, пока непонятно. Взять например FFT, в симулинке это просто большая комбинационная схема, что за искусственный интеллект автоматически разобьёт это на оптимальное количество последовательных бабочек и блоков памяти. Если всё это вручную детально рисовать в симулинке, то в чём отличие от разработки цифровой схемы в схематике?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если всё это вручную детально рисовать в симулинке, то в чём отличие от разработки цифровой схемы в схематике?

Исключительно правильный вопрос.

По большей части проектирование в Simulink, при условии, что Вы опускаетесь на "вентильный" уровень мало чем отличается от схематика.

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

И тем не менее.

 

1. Появляется вся мощь матлаба с точки зрения окружения, моделирования физических процессов, эквивалентных трасс, каналов, и всего многообразия методов и средств моделирования. Нечто похожее пришлось бы творить на си и интегрировать через PLI и т. п. Или я чего-то не знаю.

Например, у Вас готов модем, но нет помехозащиты, необходимой для проверки или предполагаемой в будущем. Цепляете ее и всё. Даже не перечислишь всех достоинств. Матлаб он и есть матлаб.

 

2. Появляется возможность избежать двойной работы, ибо моделирование Вы, насколько я понимаю, все равно проводите в матлабе.

Например, изменили модель, лезем искать в код, меняем код. Потом еще подправили модель, что-то в ней уточнили, переписываем значительный участок кода. Работа x2.

 

3. Приобретаем возможность трассировать требования на Вашу модель.

 

4. Если требуется сертификация по разным авиационным стандартам (KT, DO), то с инструментами матлаба пройти сертификацию будет легче. Имеется в виду генерация отчетов, трассировка требований к модели и обратно, кодогенератор, не требующий сертификации (только квалификация). Могу ошибаться, но и код, созданный кодогенератором не требует сертификации (только сама модель).

 

5. Наконец, никто Вам не мешает тонкие вещи вынести в чистый hdl и подключить тонко настроенный и отлаженный модуль к своей модели. При этом сохранятся все достоинства модельно-ориентированного проектирования, о которых сказал выше.

Более того, интерфейсные ядра, процессоры и т.п. имхо должны проектироваться так, как и проектируются.

В Симулинк лучше выносить обработку сигналов. Это очевидные вещи выше кто-то уже писал.

 

Мы только встали на этот путь ~три месяца назад, но уже готовы значительные части демодулятора, закончен модулятор. В железе проверим, тогда будет понятно.

Изменено пользователем x736C

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отпишите пожалуйста в чём там соль, пока непонятно. Взять например FFT, в симулинке это просто большая комбинационная схема, что за искусственный интеллект автоматически разобьёт это на оптимальное количество последовательных бабочек и блоков памяти. Если всё это вручную детально рисовать в симулинке, то в чём отличие от разработки цифровой схемы в схематике?

Пока я крутил только 2 вещи : Digital Filter и Viterbi Decoder. Могу ответить за них :

 

1. Когда крутил Digital Filter, поставил ему реализацию на цепи сумматоров (вроде инверсная реализация называется) и использование константных умножителей. Когда полез смотреть код, то увидел вполне читаемый код, в котором регистры были на своем месте, логика на своем. При этом производиться реализация умножения на битовом уровне (в столбик) и оптимизация умножения на константы (например вместо умножения на 7, он делает сдвиг на 3 и -1).

При этом в параметрах генерации этого фильтра есть настройки : конвейризация входа/выхода/логики. Когда конвейризируем вход/выход он добавляет туда регистры, когда логику, он, ЕМНИП вставляет регистры в умножители, дробя на равномерные слайсы.

Если же этот фильтр поставить в систему и задействовать Sharing Factor, задав например что тактовая в 2 раза выше символьной, то он начнет делать многотактный фильтр, если Streaming Factor, то начнет на вход одного филтьра мультиплексировать 2 разных потока (канала).

Задержку же фильтра можно учесть в модели, сделав что-то вроде back annotation, который сам генерит фильтр и добавляет нужное кол-во регистров.

 

2. Когда крутил Viterbi Decoder, то сначала крутил demos в 2007, он там сделан на рассыпухе и на m файлах. В этих демках все в ручную : нужна конвейризация - ставим ручками регистр. Но большой плюс, что в матлабе размерность и типы данных могут быть легко изменены, что в витерби, с его обработкой массивов сплошь и рядом.

Сравнивал его с параметрами Altera Viterbi Decoder. Корректного сравнения не получилось, т.к. в моделях реализован Register Traceback, а у Altera RAM Traceback. Но в 2012b есть компонент Viterbi Decoder HDL optimized. Когда я взял его и собрал, то он оказался по ресурсу меньше альтеровского, при этом выдает нормальный читаемый код, сам подбирает разрядности и т.д. и т.п.

 

На этом отложил изучение. Не до конца понял как он делает многотактную обработку и какие handshake использует. Обработку по clockenable не проверял, т.к. не всегда есть возможность делать clockenable дерево, а хотелось бы пропустить его через цепочку регистров. Но код после него, абсолютно читаемый, иерархия сохраняется. Можно загнать в симулятор и посмотреть что к чему.

 

ЗЫ. Открытие для меня было в 2012б наличие demos где показан синтез HDL кода с использованием multicycle paths. Как бы где матлаб, а где плисоводная времянка ...... %)

 

ЗЗЫ. Много примеров по генерации сделано на m языке, что у меня привело к ощущению того, что mathworks просто с xilinx/altera не договорились в свое время, плюнули на их нежелание делать высокоуровневый синтез, набрали хорошую команду и сделали свой синтезатор. Как говорилось в одном старом фильме "Чувствуется рука создателя", когда смотришь на сгенерированный код %))

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока я крутил только 2 вещи : Digital Filter и Viterbi Decoder. Могу ответить за них :

 

Т. е. это просто корки параметризируемые которые можно к симулинк модели подключить?

Меня интересует разработка произвольной сложной цифровой схемы, которая ни в какие корки не вписывается, есть ли там нечто, что позволяет уйти от написания ручками RTL или это будет тот же схематик вид сбоку?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т. е. это просто корки параметризируемые которые можно к симулинк модели подключить?

Меня интересует разработка произвольной сложной цифровой схемы, которая ни в какие корки не вписывается, есть ли там нечто, что позволяет уйти от написания ручками RTL или это будет тот же схематик вид сбоку?

хмм, толи я объясняю не так, то ли одно из двух. найдите файл

..\toolbox\hdlcoder\hdlcoderdemos\hdlcoderviterbi.mdl

в 2007а он точно был, вот это дает синтезируемый рабочий вариант. по вашему это достаточно произвольная сложная цифровая схема?

 

а вот краткий список того что есть синтезируемого в демках 2012б

AES.mdl
dct8_fixed.mdl
hdlArcCosine.mdl
hdlArcCosineSetting.m
hdlArcSine.mdl
hdlArcSineSetting.m
hdlCartesian2Polar.mdl
hdlcodercfir.mdl
hdlcodercpu.mdl
hdlcoderfdtd.mdl
hdlcoderfft.mdl
hdlcoderfftdit.mdl
hdlcoderfirram.mdl
hdlcodergcd.mdl
hdlcoderlms.mdl
hdlcodermimo.mdl
hdlcoderramrom.m
hdlcoderrecon.mdl
hdlcoderrecon2.mdl
hdlcoderrecon2_m.m
hdlcoderreconcmds.m
hdlcoderrecon_m.m
hdlcoderrom.slx
hdlcodervectorlms.mdl
hdlcoderviterbi.mdl
hdlcoderviterbi2.mdl
hdlcoder_aes.m
hdlcoder_agc.mdl
hdlcoder_audiofiltering.mdl
hdlcoder_bitops_eml.mdl
hdlcoder_byte2tuple_eml.mdl
hdlcoder_clockdemo.mdl
hdlcoder_counters_eml.mdl
hdlcoder_delays_eml.mdl
hdlcoder_delay_balancing.m
hdlcoder_distributed_pipelining.m
hdlcoder_dspddc.mdl
hdlcoder_edalinks_cosimulation.m
hdlcoder_eml_design_patterns.m
hdlcoder_fft32_eml.mdl
hdlcoder_fsm_eml.mdl
hdlcoder_int2bits_eml.mdl
hdlcoder_multiclock.m
hdlcoder_nibbleswap_eml.mdl
hdlcoder_ofdm_fft.mdl
hdlcoder_ofdm_fft_eml.mdl
hdlcoder_ofdm_fft_eml_m.m
hdlcoder_ofdm_fft_m.m
hdlcoder_saturate_eml.mdl
hdlcoder_serial_fft_butterfly.m
hdlcoder_sharing_optimization.m
hdlcoder_slsysgen.slx
hdlcoder_slsysgen_preload.m
hdlcoder_slsysgen_stop.m
hdlcoder_sobel_serial_eml.mdl
hdlcoder_streaming_optimization.m
hdlcoder_system_generator_subsystem.m
hdlcoder_vectorized_lms_eml.mdl
hdlcordic_eml.mdl
hdledascripts.m
hdlfirtdecim_multicycle.mdl
hdl_areaopt1.mdl
hdl_cosim_demo1.mdl
hdl_cosim_demo2.mdl
hdl_cosim_demo3.mdl
hdl_cosim_demo4.mdl
hdl_delaybalancing.mdl
mcombo.mdl
mpipe_multchain.mdl
sfir_fixed.mdl
sfir_fixed_pipe1.m
sfir_fixed_pipe2.m

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня есть презентация HDL Coder - могу выложить на ФТП

Презентации-то они прислали, да не все, про ФАР там что-то было, я пока не разглядел где, что-то там слишком компактно всё скомпилилось. Девушка из саппорта сказала что уточнит, могут ли выслать коды, пока тишина.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто-нибудь использовал Матлаб или Симулинк для реализации кодеров и декодеров на ПЛИС (интересуют коды Рида-Соломона, БЧХ, LDPC, Турбо коды) с соответствующим преобразованием в vhdl-код? Какие результаты получились? Или все же сразу на vhdl вести разработку предпочтительней?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо будет попробовать, но после того как мне Матлаб сделал файл синтезируемый на 15000 строк с чем -то (всего лишь перемножение 8х8 char матриц (A*K*A') - , так-то он пишет простой и короткий код, но 512 умножителей я пожалел (да и нет столько) и попросил сделать reuse на 16 - вот тут он долго думал, загрузил как ни странно оба ядра минут на 10, и явно ОЗУ хочет больше) - так вот после этого я задумался - а стоит ли это писать ручками, и возможно ли ? В сгенерированном коде вроде ничего лишнего, сплошной loop unroll - ну так не писать его ручками же. Как-то интересно даже - как раньше то писали. Видмо поэтому ПЛИСоводы - буддисты по натуре, пока эта САПР разводит можно думать о смысле всего насущного до посинения. И чего так - непойму.. Собрать ядро Линукса намного быстрее - а файлов и прочего там поболее. Кто объяснит - чего эти среды такие задумчивые ?

ЗЫ - для Соломона лучше имхо вообще IP готовый взять. А еще на тему Рида-Соломона ругался с ФПГАшниками нашими, у нас скорость небольшая, но высокая избыточность, в итоге определение синдрома и восстановление чисто неоптимзированным софтом на DM3730 ( ARM не помню какой) - занимает 1/50 от длительности всего кадра, который надо восстановить (кадр - 255*64 байт, 16 килобайт, из них я могу 63 пакета по 64 байта потерять - восстановим). У них это сожрало 2/3 ПЛИС тысячедолларовой (в переводе на Альтеру - 30 LE). Хотя сами виноваты - взяли скоростную корку - вот и хана ресурсам, а без исходников то как reuse сделаешь

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Быстро пришлось отказаться от использования мегафункции ввиду ее закрытой архитектуры. В итоге разобрался с теорией и реализовал свой декодер RS и БЧХ на vhdl. По ресурсам значительно выиграл т.к. делал последовательную обработку синдромов на одном решателе ключевого уравнения. Но этот подход потребовал много времени. Интересно попробовать матлаб для этих целей. Особенно если взяться за реализацию LDPC на плис.

Изменено пользователем Gold777

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Много времени в смысле на разработку ?

Кстати по верификации полученного кода. У меня в Моделсиме тесты проходят только если я не делаю loop unroll. Надо ставить в настройках генератора тесбенча oversampling ? Все равно не вышло. Разбираюсь. И еще он у меня ставит везде timescale 1 ns/1ns - это разве нормально ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Написание своих блоков декодирования потребовало гораздо больше времени, чем использование в проекте готовых ip модулей. Что такое loop unroll?

 

Кто-нибудь пробовал считывать бинарный файл в симулинке, подать например на кодер и записать полученный результат в файл? Или это только в матлабе можно?

Изменено пользователем Gold777

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Развертывание циклов. Которые он сам и генерит. Ну если не сталкивались то и ладно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто-нибудь использовал Матлаб или Симулинк для реализации кодеров и декодеров на ПЛИС (интересуют коды Рида-Соломона, БЧХ, LDPC, Турбо коды) с соответствующим преобразованием в vhdl-код? Какие результаты получились? Или все же сразу на vhdl вести разработку предпочтительней?

 

Пытался делать генерацию hdl с помощью Accel DSP от Xilinx, ничего хорошего не вышло, да и сами они потом этот пакет закрыли.

Сейчас использую следующий алгоритм:

- разработка кодека в матлабе

- в симулинке

- симулинк с Xilinx coregenerator

- Verilog

 

Матлаб очень хорош для отладки. Сейчас думаю ещё приспособить hardware co-simulation для этого...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В качестве обзорной информации по генерации HDL из MATLAB, можно посмотреть вебинар https://www.mathworks.com/company/events/we.../wbnr75811.html (нужна регистрация на сайте mathworks). по верификации непосредственно на ПЛИС есть видео на YOUTUBE https://www.youtube.com/watch?v=kce6Y7oqPqI...Xt&index=34 Если есть желание попробовать эту технологию в качестве инструмента для компании в которой работаете, я бы рекомендовал обратится на http://sl-matlab.ru/ или пишите мне dmitryточка[email protected] (пишите пожалуйста только если есть желание внедрения технологии на предприятии, на вопросы типа я решил попробовать для себя но не получается, лучше пишите на форуме, может отвечу :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...