реклама на сайте
подробности

 
 
> Как можно оптимизировать код?
keeka
сообщение Oct 13 2011, 19:45
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 15-12-10
Из: Москва
Пользователь №: 61 640



Добрый день, народ.

Закончил свою первую работу - модулятор ЧМ2.
Код написан на VHDL.
Подскажите, пожалуйста, что можно было сделать лучше, оптимальней, чтобы лучше работало. Чувствую, что сделал все очень корявоsm.gif
на вход clk подается clock, на вход reset - информационные биты. Все в формате boolean. Ну и выход в формате integer.

Прикрепленный файл  fsk_modulator.vhd ( 1.21 килобайт ) Кол-во скачиваний: 237
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 34)
eugen_pcad_ru
сообщение Oct 14 2011, 04:44
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 642
Регистрация: 15-11-07
Пользователь №: 32 353



Код не видел пока. Вопрос: фаза формируемого сигнала непрерывная? Если нет, то имеет смысл переделать. Если непрерывная, то может пуcть работает?wink.gif


--------------------
Правильно сформулированый вопрос содержит в себе половину ответа.
P.S.: Некоторые модераторы в качестве ответа так навязчиво предлагают посетить свой сайт, что иначе как саморекламу такие действия интерпретировать сложно.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Oct 14 2011, 04:51
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Что это такое?
Код
process(clk)
begin
   --to check the rising edge of the clock signal
if (reset='0') then --(reset='1' and rising_edge(clk)) then    
        c_clk <= 0;
        c_clk <= c_clk + 1;
Go to the top of the page
 
+Quote Post
keeka
сообщение Oct 14 2011, 08:06
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 15-12-10
Из: Москва
Пользователь №: 61 640



Цитата
Код не видел пока. Вопрос: фаза формируемого сигнала непрерывная? Если нет, то имеет смысл переделать. Если непрерывная, то может пуcть работает?wink.gif


фаза непрерывная.

Цитата
process(clk)
begin
--to check the rising edge of the clock signal
if (reset='0') then --(reset='1' and rising_edge(clk)) then
c_clk <= 0;
c_clk <= c_clk + 1;


Забыл из кода комменты убрать лишние. Идея тут в том, что я накапливаю переменную c_clk определенное количество тактов clk при reset=0 и другое количество тактов, если reset=1. так и формирую разные частоты - с разной скоростью беру отсчеты из массива значений синуса.


Посмотрел еще раз код повнимательнее. Лишний раз обнуляю c_clk. Исправил. теперь вот так:

Цитата
process(clk)
begin

if (reset='0') then
c_clk <= c_clk + 1;
if c_clk = 4 then
dataout <= sine(i);
i <= i + 1;
c_clk <= 0;
elsif (i = 29) then
i <= 0;
end if;
elsif (reset='1') then
c_clk <= c_clk + 1;
if c_clk = 1 then
dataout <= sine(i);
i <= i + 1;
c_clk <= 0;
elsif (i = 29) then
i <= 0;
end if;
end if;
end process;


Сообщение отредактировал keeka - Oct 14 2011, 08:01
Go to the top of the page
 
+Quote Post
DuHast
сообщение Oct 14 2011, 08:14
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



а "rising_edge(clk)" где у Вас? В моделсиме Ваш процесс будет запускаться по кождомфронту сигнала clk, а вот синтезатор выдаст ошибку при компиляции.
Go to the top of the page
 
+Quote Post
keeka
сообщение Oct 14 2011, 08:44
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 15-12-10
Из: Москва
Пользователь №: 61 640



Там по rising_edge ранее запускалась команда считывании отсчета из таблицы, а теперь я это делаю по сигналу c_clk, накапливая его.
Приложил тестбенч, заодно и модуль. В Isim работает.

Прикрепленный файл  fsk_modulator.vhd ( 1.02 килобайт ) Кол-во скачиваний: 158


Прикрепленный файл  tb_fsk_modulator.vhd ( 1.05 килобайт ) Кол-во скачиваний: 128
Go to the top of the page
 
+Quote Post
DuHast
сообщение Oct 16 2011, 10:04
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



У Вас сигнал clk стоит в списке чуствительности процесса, а в самом процессе этот сигнал ни как не используется, это обязательно приведет к тому, что результаты симуляции будут не верные.
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Oct 16 2011, 16:06
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Цитата
на вход clk подается clock, на вход reset - информационные биты

Чтобы враги не догадались? sm.gif
Go to the top of the page
 
+Quote Post
keeka
сообщение Oct 16 2011, 19:34
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 15-12-10
Из: Москва
Пользователь №: 61 640



Цитата(DuHast @ Oct 16 2011, 14:04) *
У Вас сигнал clk стоит в списке чуствительности процесса, а в самом процессе этот сигнал ни как не используется, это обязательно приведет к тому, что результаты симуляции будут не верные.


Поясните или дайте ссылку, пожалуйста, где почитать об этом случае.

Цитата
Чтобы враги не догадались?


Раскусил
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Oct 16 2011, 20:21
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219



Цитата(keeka @ Oct 16 2011, 23:34) *
Поясните или дайте ссылку, пожалуйста, где почитать об этом случае.
Раскусил

Самое главное, надо определится c назначением этой первой работы:
1) если надо нарисовать в ISIM временную диаграмму - то вы цели достигли.
2) если надо в качестве отчёта о прослушанных лекциях по VHDL написать и сдать преподу код - то
на "два с плюсом" или м.б. на "три с двумя минусами" вы чего-то понаписали в соответствии со стандартом.
3) и самый плохой вариант если надо реализовать это в ПЛИС и получить работающую прошивку - ISE там вас сразу пошлёт нахрен, потому что, то что у вас написано при синтезе в железо даст совершенно не то, что вы хотели. Если вы хотите работать с железом - то вам очень нужно читать книжки по цифровой смехотехнике (триггеры, логика, синхронные счётчики, регистры, мультиплексоры, дешифраторы и т.д.) и книжки (даташиты) про внутреннее устройство ПЛИС, а уже потом снова брать в руки HDL. Ошибка не в коде, который у вас успешно симулируется - ошибка у вас в голове и её в двух словах без базовых знаний не опишешь.
Go to the top of the page
 
+Quote Post
keeka
сообщение Oct 17 2011, 04:49
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 15-12-10
Из: Москва
Пользователь №: 61 640



Цитата(VladimirB @ Oct 17 2011, 00:21) *
Самое главное, надо определится c назначением этой первой работы:
1) если надо нарисовать в ISIM временную диаграмму - то вы цели достигли.
2) если надо в качестве отчёта о прослушанных лекциях по VHDL написать и сдать преподу код - то
на "два с плюсом" или м.б. на "три с двумя минусами" вы чего-то понаписали в соответствии со стандартом.
3) и самый плохой вариант если надо реализовать это в ПЛИС и получить работающую прошивку - ISE там вас сразу пошлёт нахрен, потому что, то что у вас написано при синтезе в железо даст совершенно не то, что вы хотели. Если вы хотите работать с железом - то вам очень нужно читать книжки по цифровой смехотехнике (триггеры, логика, синхронные счётчики, регистры, мультиплексоры, дешифраторы и т.д.) и книжки (даташиты) про внутреннее устройство ПЛИС, а уже потом снова брать в руки HDL. Ошибка не в коде, который у вас успешно симулируется - ошибка у вас в голове и её в двух словах без базовых знаний не опишешь.


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

Назначение работы:начинающий самоучка разработчик алгоритмов пытается что-то делать sm.gif

Сообщение отредактировал keeka - Oct 17 2011, 04:51
Go to the top of the page
 
+Quote Post
DuHast
сообщение Oct 17 2011, 11:18
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Цитата(keeka @ Oct 17 2011, 08:49) *
Хотя было бы больше конкретики, мне было бы проще в тоннах литературы найти то, что нужно.

Если Вы не знаете что такое тригер, счетчик, сдвиговый регистр и т.д., то сночало ситайте любой учебник "Цифровая схемотехника". Если уже знаете, но откройте любой учебник по VHDL и найдите как эти элементы описываются при помощи этого языка.
На форуме ссылок на литературу полно. Удачи.
Go to the top of the page
 
+Quote Post
yes
сообщение Oct 17 2011, 15:23
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(keeka @ Oct 17 2011, 08:49) *
Хотя было бы больше конкретики, мне было бы проще в тоннах литературы найти то, что нужно.

Назначение работы:начинающий самоучка разработчик алгоритмов пытается что-то делать sm.gif


опасаюсь гнева сообщества Жsm.gif, но позволю все-таки высказать крамольную мысль - разработчику алгоритмов не обязательно читать даташиты на ПЛИС и о триггере можно иметь самое общее представление.
по крайней мере я знаю таких профессионалов, которые пишут годный код для сложных алгоритмов

из документации нужно посмотреть RTL или synthesis coding style
это можно либо считать как набор шаблонов и наполнять их смыслом, либо разобраться с тем, что же эти шаблоны представляют на физическом уровне

можно (и по-моему нужно) взять тулы (synplify или precision) для синтеза и скормить им код - по отчетам разбираться и смотреть доки/хелпы
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Oct 17 2011, 18:30
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219



Цитата(yes @ Oct 17 2011, 19:23) *
опасаюсь гнева сообщества Жsm.gif, но позволю все-таки высказать крамольную мысль - разработчику алгоритмов не обязательно читать даташиты на ПЛИС и о триггере можно иметь самое общее представление...

Ну собственно человек прочитал ваши мысли + книжку про VHDL, и разработал "алгоритм", который успешно симулируется.

А я, например, не читал не одной книжки про VHDL и даже не знаю толком его синтаксис (пользуюсь CTRL+С CTRL+V и готовыми шаблонами конструкций из ISE). В симулятор заглядываю крайне редко, в основном чтобы потестить сторонние модули. Однако, прошивки на VHDL пишу регулярно - и всё работает в железе. Плюс могу ещё бонусом к прошивке принципиальную схему и печатную плату разработать с каким-нибудь Virtex6 и АЦП на 1GSPS.
Go to the top of the page
 
+Quote Post
keeka
сообщение Oct 18 2011, 12:23
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 15-12-10
Из: Москва
Пользователь №: 61 640



Мне на самом деле очень интересна тема автоматической генерации HDL-кода.
Скажем, разработчик алгоритмов создал модель, к примеру в матлабе, отладил ее, а дальше HDL-Coder матлабовский генерит код, а разработчик уже отлаживает его вручную.
Там же по сути можно код генерить для конкретной ПЛИС, в составе конкретной отладочной платы. Я давно занимаюсь этим вопросом, но пока не вдавался глубоко именно в реализацию в ПЛИС, больше разбирался, каким образом можно генерить код.

Как считаете, такой метод разработки заслуживает жизни? Или прошивки, полученные таким путем на порядок медленнее и объемнее написанных вручную?

По сути ведь если идеализировать такую ситуацию, разработчику вообще не обязательно уметь программировать.

Сообщение отредактировал keeka - Oct 18 2011, 12:23
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Oct 18 2011, 13:40
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(keeka @ Oct 18 2011, 16:23) *
Как считаете, такой метод разработки заслуживает жизни? Или прошивки, полученные таким путем на порядок медленнее и объемнее написанных вручную?

Такой метод все чаще используется - очень много времени экономит. Особенно эффективна связка матлаба с xilinx, собрал на симулинке модель из стандартных блоков, потом собрал эквивалент на блоках xilinx и все. Хотя есть одно НО - сгенеренный код не оптимален (не знаю как сейчас - учитываются ли особенности архитектуры) и при жестких требованиях площадь/частота все равно потребуется его править руками. При этом править, возможно, придется именно на уровне счетчиков/регистров, а в том что автоматически сгенерируется придется все равно разбираться. Поэтому резюме такое - метод хороший, но разбираться в HDL для создания именно эффективных схем все равно придется.
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Oct 18 2011, 19:17
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219



Цитата(keeka @ Oct 18 2011, 16:23) *
Мне на самом деле очень интересна тема автоматической генерации HDL-кода.
Скажем, разработчик алгоритмов создал модель, к примеру в матлабе, отладил ее, а дальше HDL-Coder матлабовский генерит код, а разработчик уже отлаживает его вручную.
Там же по сути можно код генерить для конкретной ПЛИС, в составе конкретной отладочной платы. Я давно занимаюсь этим вопросом, но пока не вдавался глубоко именно в реализацию в ПЛИС, больше разбирался, каким образом можно генерить код.
Как считаете, такой метод разработки заслуживает жизни? Или прошивки, полученные таким путем на порядок медленнее и объемнее написанных вручную? По сути ведь если идеализировать такую ситуацию, разработчику вообще не обязательно уметь программировать.

Лучше приведу пример из жизни:
У нас вот практически все задачи крутятся вокруг цифровой обработки сигнала, однако, большую часть времени (95%) разработчики занимаются вовсе не ЦОСом.

Сгенерировать цифровой фильтр хоть в матлабе, хоть в корегене - делов на 10 минут. Но сам по себе фильтр вещь в себе - данные для него нужно откуда-то взять, а выходные данные куда-то подать - а это высокоскоростные интерфейсы, где матлаб отдыхает. Таких слов как LVDS, DDR, SERDES, TrimodeEthernetMAC, PCIE, USB 2.0 - матлаб не знает. Также часто требуется работа с внешней памятью типа ZBT SRAM, SDRAM, DDR2 SDRAM и др. - тоже матлаб в ауте.

Но даже типовые задачи ЦОС матлабу не всегда под силу: например, попробуйте создать DDS (синтезатор прямого цифрового синтеза) для генерации синуса с помощью ЦАП AD9739 с тактовой частотой 2.5ГГц (при том что максимальная тактовая частота в топовом Virtex6 - 500МГц).

Ну а борьба с времянками - это вообще шаманство и пляски с бубном sm.gif.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 19 2011, 03:11
Сообщение #18


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(VladimirB @ Oct 18 2011, 14:17) *
Но даже типовые задачи ЦОС матлабу не всегда под силу: например, попробуйте создать DDS (синтезатор прямого цифрового синтеза) для генерации синуса с помощью ЦАП AD9739 с тактовой частотой 2.5ГГц (при том что максимальная тактовая частота в топовом Virtex6 - 500МГц).

я сделал такое как раз в матлабе, а потом ручками за 10 минут в код перенес.


--------------------
Go to the top of the page
 
+Quote Post
sazh
сообщение Oct 19 2011, 06:50
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(des00 @ Oct 19 2011, 06:11) *
я сделал


bb-offtopic.gif

Вопрос по Вашим статьям TimeQuest в Компонентах и Технологиях.
Можно ли где качнуть файлы *.sdc к рассматриваемым примерам.
(у меня 11тый квартус ругается на set_clock_groups в примере module mapper Порождение новой тактовой частоты с помощью PLL)
Go to the top of the page
 
+Quote Post
syoma
сообщение Oct 19 2011, 07:41
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Цитата
Хотя есть одно НО - сгенеренный код не оптимален (не знаю как сейчас - учитываются ли особенности архитектуры) и при жестких требованиях площадь/частота все равно потребуется его править руками.

Возможно код не оптимален, но MATLAB дает несколько неоспоримых преемуществ.
1. Разработчику алгоритмов не нужно уметь программировать в VHDL вообще - то есть он может отладить алноритм вплоть до таймингов и синхронизации не лезя в код.
2. Отлаженный в МАТЛАБе код 100% работает в железе. (Относится к System Generator)
3. При моделировании разработчику доступен весь спектр тулбоксов Матлаба. Например мы используем Simpowersystems для моделирования электроники инверторов, с помощью симулинка отлаживаем алгоритмы контроллеров, а потом с помощью System Generator моделируем те же алгоритмы, но у же с учетом особенностей ПЛИС(задержки и ограничения чисел с фиксированной запятой) и затем тупо компилируем эти же алгоритмы в конечный битстрим. И все работает
И четвертое - как минимум в 4 раза сокращается время разработки. Вот презентация еще 2005г.
http://www.google.de/url?sa=t&source=w...o0FIeUnLmv9OpZg
У нас уже 4-х летний опыт работы на Xilinx DSP System Generator, и уже не один проект на нем сделали и все работает в индустрии.
Предыдущие утверждения справедливы для System Generator. Последние версии достаточно мощны - там тебе куча кодеров-декодеров и почти все корки представлены.
Цитата
Также часто требуется работа с внешней памятью типа ZBT SRAM, SDRAM, DDR2 SDRAM и др. - тоже матлаб в ауте.

С SDRAM работаем прямо из Матлаба. Раньше пользовались внутренней памятью и ее стало не хватать. И мы подумали - почему бы не использовать внешний неиспользуемый банк. Чувак без единой строчки кода за 3 дня подключил все к матлабу.

С Matlab Coder не работал, поэтому думаю там не все так хорошо.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Oct 19 2011, 12:25
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(syoma @ Oct 19 2011, 11:41) *
1. Разработчику алгоритмов не нужно уметь программировать в VHDL вообще - то есть он может отладить алноритм вплоть до таймингов и синхронизации не лезя в код.

Каким образом Вы проверяете работоспособность на функциональном уровне? Только по симулинку? Тестбенчи вообще не пишете? Каким образом проверяется работоспособность с учетом всех задержек, просто не помню, чтоб симулинк позволял моделировать в формате sdf.
Цитата
2. Отлаженный в МАТЛАБе код 100% работает в железе. (Относится к System Generator)

Четыре года назад генерировал автоматически канал AWGN (матлаб2005), нетлист получился нерабочим - убил неделю, чтоб найти ошибку в нетлисте - оказалось индексы он попутал.
Цитата
3.

Особо добавить нечего, кроме того, что парнишка делал цифровой модем и таким вот автоматическим образом получил максимальную тактовую частоту 150МГц на virtex4, при этом требовалось 200. Вот эту вот модель я за неделю довел до 205МГц, при этом топовый модуль пришлось руками писать + 2 проблематичных БИХ фильтра полностью переписать вручную.
И еще: в текущей моей работе приходится отлаживать некий коммутатор, который стыкуется с процессорами по некоему интерфейсу, вот каким "макаром" мне на матлабе описать этот самый процессор. От поставщика только описание на СИ некоторых функций. При этом дело обстоит не только с "моим" процессором, таких устройств много. В тулбоксе только стандартные и наиболее распространенные устройства.
Go to the top of the page
 
+Quote Post
syoma
сообщение Oct 19 2011, 12:57
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Конечно, Матлаб не универсальная штука и все промоделировать в нем нельзя. Пока можно сказать, что он хорошо подходит для моделирования алгоритмов DSP, не более. Автоматы состояний мы делаем в Xilinx StateCAD, а затем подключаем к модели через blackbox.
Процессоры там тоже особо не промоделируешь.
Но, кстати, это особо и не нужно.
Например, ессно наш алгоритм DSP получает сигналы не напрямую с аналогового сигнала. В реальности там стоит АЦП, а АЦП надо еще тактировать и управлять. То есть целый драйвер нужен. Но в МАТЛАБЕ от этого можно абстрагироваться, просто подав Simulinkовский сигнал на преобразователь в фиксированную точку и все. Таким образом сигнал становится как-бы внутренним Плисовским сигналом.
А драйвер АЦП давно отлажен и сделан как BSP в виде симулинковского блока в библиотеке. В итоге отлаженный алгоритм подключается к драйверу и генерится битстрим.
Цитата
Каким образом Вы проверяете работоспособность на функциональном уровне? Только по симулинку? Тестбенчи вообще не пишете? Каким образом проверяется работоспособность с учетом всех задержек

К сожалению(или к счастью) с тестбенчами опыта не имел по вышеозначенным причинам, поэтому не совсем понимаю, зачем они нужны.
В случае с System Generator все сводится к следующему. Все клоки Маталаб распределяет сам и дизайн полностью синхронный. Таким образом сигнал от одного регистра до следующего должен дойти за период клока. При моделировании в Симулинке регистровые задержки учитываются и по диаграмме можно увидеть, что данный сигнал задержан на столько то периодов.
Далее есть такая функция - анализатор таймингов, которая комплирует полностью дизайн, пытается впихать его в ПЛИС и если вышеуказанное условие не выполняется - в Симулинке показывается цепь, которая содержит слишком длинную комбинаторную цепочку. В этом случае разработчик должен внести в нее регистры, увеличив задержки. При этом он продолжает моделирование и если надо корректирует дизайн, чтобы сохранялась исходная функция. Если тайминг проходит, то можно прошивать ПЛИС - гарантируется, что в этом случае функциональность ПЛИС будет идентична модели.

ПС Кстати в следуюшем проекте мы начинаем использовать SERDES. Посмотрю, как их можно к Матлабу прикрутить
Go to the top of the page
 
+Quote Post
keeka
сообщение Oct 19 2011, 13:04
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 15-12-10
Из: Москва
Пользователь №: 61 640



А как вы относитесь к связке LabVIEW + PXI? Писать графический код в лабвью с помощью FPGA Module а потом его сажать в ПЛИС через FlexRIO.
Простые вещи я так реализовывал, но более сложный код занимал кучу места. Правда я наверно коряво делал.

Сообщение отредактировал keeka - Oct 19 2011, 13:07
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Oct 19 2011, 13:11
Сообщение #24


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Согласен, для ЦОС матлаб подходит очень хорошо, но ключевая фраза у Вас здесь:
Цитата(syoma @ Oct 19 2011, 16:57) *
в Симулинке показывается цепь, которая содержит слишком длинную комбинаторную цепочку. В этом случае разработчик должен внести в нее регистры, увеличив задержки. При этом он продолжает моделирование и если надо корректирует дизайн, чтобы сохранялась исходная функция.

Что сделать, если внести регистры не удается по алгоритму? БИХ фильтр к примеру, раз речь про ЦОС. Выкидывать его и ставить КИХ, который занимает кучу логики и не влазит? Или кристалл брать на спидгрейд выше? Вот тут и требуется знание языков, архитектуры конкретной ПЛИС и возможностей САПР.
Go to the top of the page
 
+Quote Post
syoma
сообщение Oct 19 2011, 13:22
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Цитата
Что сделать, если внести регистры не удается по алгоритму? БИХ фильтр к примеру, раз речь про ЦОС.

В Матлабе и так есть куча возможностей добиться оптимизации между скоростью и размерами. Например разработчик имеет выбор между полностью последовательными или параллельными реализациями, или что-то среднее. Опять же есть выбор, какие элементы ПЛИС использовать - DSP48 или лепить умножитель из логики и т.д. Память из чего BlockRAM или доморощеная. В общем выбор есть.
Цитата
Вот тут и требуется знание языков, архитектуры конкретной ПЛИС и возможностей САПР.

А если все это знать, что еще тогда можно сделать с БИХ фильтром?

Цитата
А как вы относитесь к связке LabVIEW + PXI?

У нас тут есть человек, который пробовал и эту связку и Altera DSP Builder. И я разговаривал с людьми, которые юзали Matlab (VHDL)Coder. И пока однозначный ответ - Xilinx System Generator по функциональности и эффективности пока всех их уделывает как минимум на голову.
Многие модели, спокойно реализованные на System Generator невозможно было реализовать на DSP Builder или Coder.
Преемуществом System Generator является то, что он заточен под конкретную архитектуру, и поэтому генерит не универсальный VHDL, а эффективно заточенный под конкретную FPGA. То есть использует на полную встроенные DSP48 и память, генерит корки, которые только может, организовует DCMы, как ему надо и т.д. Матлабовский кодер так полюбому не умеет.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Oct 19 2011, 13:44
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(syoma @ Oct 19 2011, 17:22) *
В Матлабе и так есть куча возможностей добиться оптимизации между скоростью и размерами. Например разработчик имеет выбор между полностью последовательными или параллельными реализациями, или что-то среднее. Опять же есть выбор, какие элементы ПЛИС использовать - DSP48 или лепить умножитель из логики и т.д. Память из чего BlockRAM или доморощеная. В общем выбор есть.

Выбор то есть, только увидев "непроходящую" цепочку, неразбирающийся будет опытным путем дробить ее регистрами, а знающий архитектуру расчитает уровень слоев логики и выставит сразу оптимальный вариант.
Цитата
А если все это знать, что еще тогда можно сделать с БИХ фильтром?

По разрядности коэффициентов можно заранее представить в какое кол-во умножителей выльется реализация. Подбором коэффициентов можно уйти от умножителей на сдвиги и сумматоры. Если взть один проблематичный фильтр и посмотреть его максимальную частоту, то она окажется как правило гораздо выше, чем если кристалл будет забит на 90% другой логикой. Можно отдельно его откомпилировать и вставить в готовый проект с сохранением всех временных характеристик. Помимо этого существует куча дополнительных параметров кроме "оптимизация по быстродействию", включающая в себя дублирование регистров и комбинаторики, ограничение по fan-out, переразводка с учетом "неуложившихся" путей, замены мультиплексоров. Можно некоторые сигналы даже на глобальные шины вешать.
Go to the top of the page
 
+Quote Post
syoma
сообщение Oct 19 2011, 14:14
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Ваша логика ясна, все понятно. Но так же и понятно то, что я по сравнению с Вами - ламер в ПЛИСах. Но такие средства дают возможность использовать FPGA таким ламерам. Ну и пусть у меня дизайн заработает на 50МГц, а не на 200. В моей работе(наверняка у Вас по другому) главная цель не выжать из ПЛИСины все возможности, а получить рабочий проект в отведенное время и еще и с читаемой документацией (еще одна заковырка для HDL, не так ли?). Поэтому мы берем FPGA в 2 раза больше, да спидгрейд максимальный и задаемся целью достигнуть 50МГц и вперед..
Я вообще считаю, что ПЛИС - это продукт не для массовости, а именно для приложений где цена не является главным фактором, а главное - быстрота и эффективность разработки и гибкость по функциональности. Если для массовости, я бы взял DSP проц за сколько-то там 20-50$?, и мутил бы все там.


Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Oct 19 2011, 14:44
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(syoma @ Oct 19 2011, 18:14) *
Ваша логика ясна, все понятно.

Дак я не хотел никого обидеть, ранее писал о том, что штука полезная и в последнее время используется все чаще. Сам занимался разработкой цифровых модемов и, естественно, начинал с матлабовской модели на симулинке. Все красиво, понятно и быстро, но используется в основном только на начальном этапе/нектритичных условиях. Да и коргенератор от xilinx не используешь для той же altera.
Цитата
Я вообще считаю, что ПЛИС - это продукт не для массовости, а именно для приложений где цена не является главным фактором, а главное - быстрота и эффективность разработки и гибкость по функциональности.

Тут я думаю с Вами есть кому поспорить кроме меня, от себя одно - есть области, где ПЛИС или ASIC - незаменимы.
А насчет частоты пример - у меня в последнем проекте логика работает на 500МГц и 250МГц, где ж я спидгрейт выше возьму, там и так максимальная 600 biggrin.gif Ранее, кстати, в какой-то теме писал что снижение спидгрейта снижает цену на 20% при одинаковых технологиях, представьте, что делается какой-нибудь девайс в 100000 экземплярах.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 19 2011, 17:17
Сообщение #29


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(sazh @ Oct 19 2011, 01:50) *
bb-offtopic.gif

Вопрос по Вашим статьям TimeQuest в Компонентах и Технологиях.
Можно ли где качнуть файлы *.sdc к рассматриваемым примерам.
(у меня 11тый квартус ругается на set_clock_groups в примере module mapper Порождение новой тактовой частоты с помощью PLL)

хмм, крайне странно, т.к. команда распространенная. нужно либо читать хелп (может ее заменили) лио смотреть проект (может ошибка).


--------------------
Go to the top of the page
 
+Quote Post
tAmega
сообщение Oct 22 2011, 05:32
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 474
Регистрация: 20-01-09
Из: НН
Пользователь №: 43 639



Немного запоздал с линком, вот только что нарыл. Это самопальная дока на основе документации к синтезатору Xilinx xst.
В файле с картинками разжеваны все примитивы триггеры, счетчики, регистры и так далее.
Каждый компонент описан на VHDL, а рядом картинка что получается в результате в ПЛИС.
Очень советую для правильной постановки мозгов в самом начале пути.
Кому интересно есть два продолжения, второй документ, как самому написать процессор,
третий документ, как самому написать параллельный конвейер для процессора,
ко всем докам в принципе есть архивы с готовыми и рабочими проектами.
Опять же кому интересно дам линки.
Ну а пока первый линк для топик стартера. Реально расширяет границы сознания sm.gif
https://rapidshare.com/files/425586106/Learning_VHDL.pdf


--------------------
пользователь отключен
Go to the top of the page
 
+Quote Post
keeka
сообщение Oct 22 2011, 07:25
Сообщение #31


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 15-12-10
Из: Москва
Пользователь №: 61 640



Цитата
Ну а пока первый линк для топик стартера.


Спасибо огромное!! sm.gif
Go to the top of the page
 
+Quote Post
ys05
сообщение Oct 22 2011, 07:51
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 20-10-11
Пользователь №: 67 864



Цитата(tAmega @ Oct 22 2011, 09:32) *
Кому интересно есть два продолжения, второй документ, как самому написать процессор,
третий документ, как самому написать параллельный конвейер для процессора,
ко всем докам в принципе есть архивы с готовыми и рабочими проектами.
Опять же кому интересно дам линки.

Давайте уж линки, почитаем, интересно. Я только не понял, это Ваши самопальные произведения?
Go to the top of the page
 
+Quote Post
tAmega
сообщение Oct 22 2011, 09:58
Сообщение #33


Местный
***

Группа: Свой
Сообщений: 474
Регистрация: 20-01-09
Из: НН
Пользователь №: 43 639



Завтра выложу на рапиду и дам сюда линк.


--------------------
пользователь отключен
Go to the top of the page
 
+Quote Post
tAmega
сообщение Oct 23 2011, 07:48
Сообщение #34


Местный
***

Группа: Свой
Сообщений: 474
Регистрация: 20-01-09
Из: НН
Пользователь №: 43 639



Вот, линк на полный конспект из трех частей со всеми исходниками проектов. Вес 87Mb.
В конспекте дается описание того, как создавать описания на VHDL от триггера до микропроцессора с конвейером команд.
Все описания сопровождаются реально действующими проектами под Xilinx ISE с исходниками.
http://rapidshare.com/files/1114005735/VHD...g_pack_2010.rar

Короче архив содержит полный курс подготовки от нуля до создания собственных контроллеров любой сложности.
Исключительно полезен, как справочный материал, когда надо быстро вспомнить как работать на VHDL или не зная языка склепать нечто из примеров.
Особенно наворочена третья часть. Не только расширяет границы сознания, но реально взрывает мозг sm.gif
Желаю всем удачи.


--------------------
пользователь отключен
Go to the top of the page
 
+Quote Post
keeka
сообщение Oct 23 2011, 10:29
Сообщение #35


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 15-12-10
Из: Москва
Пользователь №: 61 640



Спасибоsm.gif Как раз, что мне нужно)
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 00:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01732 секунд с 7
ELECTRONIX ©2004-2016