Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как можно оптимизировать код?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
keeka
Добрый день, народ.

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

Нажмите для просмотра прикрепленного файла
eugen_pcad_ru
Код не видел пока. Вопрос: фаза формируемого сигнала непрерывная? Если нет, то имеет смысл переделать. Если непрерывная, то может пуcть работает?wink.gif
andrew_b
Что это такое?
Код
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;
keeka
Цитата
Код не видел пока. Вопрос: фаза формируемого сигнала непрерывная? Если нет, то имеет смысл переделать. Если непрерывная, то может пу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;
DuHast
а "rising_edge(clk)" где у Вас? В моделсиме Ваш процесс будет запускаться по кождомфронту сигнала clk, а вот синтезатор выдаст ошибку при компиляции.
keeka
Там по rising_edge ранее запускалась команда считывании отсчета из таблицы, а теперь я это делаю по сигналу c_clk, накапливая его.
Приложил тестбенч, заодно и модуль. В Isim работает.

Нажмите для просмотра прикрепленного файла

Нажмите для просмотра прикрепленного файла
DuHast
У Вас сигнал clk стоит в списке чуствительности процесса, а в самом процессе этот сигнал ни как не используется, это обязательно приведет к тому, что результаты симуляции будут не верные.
Koluchiy
Цитата
на вход clk подается clock, на вход reset - информационные биты

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


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

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


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

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


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

Назначение работы:начинающий самоучка разработчик алгоритмов пытается что-то делать sm.gif
DuHast
Цитата(keeka @ Oct 17 2011, 08:49) *
Хотя было бы больше конкретики, мне было бы проще в тоннах литературы найти то, что нужно.

Если Вы не знаете что такое тригер, счетчик, сдвиговый регистр и т.д., то сночало ситайте любой учебник "Цифровая схемотехника". Если уже знаете, но откройте любой учебник по VHDL и найдите как эти элементы описываются при помощи этого языка.
На форуме ссылок на литературу полно. Удачи.
yes
Цитата(keeka @ Oct 17 2011, 08:49) *
Хотя было бы больше конкретики, мне было бы проще в тоннах литературы найти то, что нужно.

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


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

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

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

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

А я, например, не читал не одной книжки про VHDL и даже не знаю толком его синтаксис (пользуюсь CTRL+С CTRL+V и готовыми шаблонами конструкций из ISE). В симулятор заглядываю крайне редко, в основном чтобы потестить сторонние модули. Однако, прошивки на VHDL пишу регулярно - и всё работает в железе. Плюс могу ещё бонусом к прошивке принципиальную схему и печатную плату разработать с каким-нибудь Virtex6 и АЦП на 1GSPS.
keeka
Мне на самом деле очень интересна тема автоматической генерации HDL-кода.
Скажем, разработчик алгоритмов создал модель, к примеру в матлабе, отладил ее, а дальше HDL-Coder матлабовский генерит код, а разработчик уже отлаживает его вручную.
Там же по сути можно код генерить для конкретной ПЛИС, в составе конкретной отладочной платы. Я давно занимаюсь этим вопросом, но пока не вдавался глубоко именно в реализацию в ПЛИС, больше разбирался, каким образом можно генерить код.

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

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

Такой метод все чаще используется - очень много времени экономит. Особенно эффективна связка матлаба с xilinx, собрал на симулинке модель из стандартных блоков, потом собрал эквивалент на блоках xilinx и все. Хотя есть одно НО - сгенеренный код не оптимален (не знаю как сейчас - учитываются ли особенности архитектуры) и при жестких требованиях площадь/частота все равно потребуется его править руками. При этом править, возможно, придется именно на уровне счетчиков/регистров, а в том что автоматически сгенерируется придется все равно разбираться. Поэтому резюме такое - метод хороший, но разбираться в HDL для создания именно эффективных схем все равно придется.
VladimirB
Цитата(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.
des00
Цитата(VladimirB @ Oct 18 2011, 14:17) *
Но даже типовые задачи ЦОС матлабу не всегда под силу: например, попробуйте создать DDS (синтезатор прямого цифрового синтеза) для генерации синуса с помощью ЦАП AD9739 с тактовой частотой 2.5ГГц (при том что максимальная тактовая частота в топовом Virtex6 - 500МГц).

я сделал такое как раз в матлабе, а потом ручками за 10 минут в код перенес.
sazh
Цитата(des00 @ Oct 19 2011, 06:11) *
я сделал


bb-offtopic.gif

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

Возможно код не оптимален, но 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 не работал, поэтому думаю там не все так хорошо.
bogaev_roman
Цитата(syoma @ Oct 19 2011, 11:41) *
1. Разработчику алгоритмов не нужно уметь программировать в VHDL вообще - то есть он может отладить алноритм вплоть до таймингов и синхронизации не лезя в код.

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

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

Особо добавить нечего, кроме того, что парнишка делал цифровой модем и таким вот автоматическим образом получил максимальную тактовую частоту 150МГц на virtex4, при этом требовалось 200. Вот эту вот модель я за неделю довел до 205МГц, при этом топовый модуль пришлось руками писать + 2 проблематичных БИХ фильтра полностью переписать вручную.
И еще: в текущей моей работе приходится отлаживать некий коммутатор, который стыкуется с процессорами по некоему интерфейсу, вот каким "макаром" мне на матлабе описать этот самый процессор. От поставщика только описание на СИ некоторых функций. При этом дело обстоит не только с "моим" процессором, таких устройств много. В тулбоксе только стандартные и наиболее распространенные устройства.
syoma
Конечно, Матлаб не универсальная штука и все промоделировать в нем нельзя. Пока можно сказать, что он хорошо подходит для моделирования алгоритмов DSP, не более. Автоматы состояний мы делаем в Xilinx StateCAD, а затем подключаем к модели через blackbox.
Процессоры там тоже особо не промоделируешь.
Но, кстати, это особо и не нужно.
Например, ессно наш алгоритм DSP получает сигналы не напрямую с аналогового сигнала. В реальности там стоит АЦП, а АЦП надо еще тактировать и управлять. То есть целый драйвер нужен. Но в МАТЛАБЕ от этого можно абстрагироваться, просто подав Simulinkовский сигнал на преобразователь в фиксированную точку и все. Таким образом сигнал становится как-бы внутренним Плисовским сигналом.
А драйвер АЦП давно отлажен и сделан как BSP в виде симулинковского блока в библиотеке. В итоге отлаженный алгоритм подключается к драйверу и генерится битстрим.
Цитата
Каким образом Вы проверяете работоспособность на функциональном уровне? Только по симулинку? Тестбенчи вообще не пишете? Каким образом проверяется работоспособность с учетом всех задержек

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

ПС Кстати в следуюшем проекте мы начинаем использовать SERDES. Посмотрю, как их можно к Матлабу прикрутить
keeka
А как вы относитесь к связке LabVIEW + PXI? Писать графический код в лабвью с помощью FPGA Module а потом его сажать в ПЛИС через FlexRIO.
Простые вещи я так реализовывал, но более сложный код занимал кучу места. Правда я наверно коряво делал.
bogaev_roman
Согласен, для ЦОС матлаб подходит очень хорошо, но ключевая фраза у Вас здесь:
Цитата(syoma @ Oct 19 2011, 16:57) *
в Симулинке показывается цепь, которая содержит слишком длинную комбинаторную цепочку. В этом случае разработчик должен внести в нее регистры, увеличив задержки. При этом он продолжает моделирование и если надо корректирует дизайн, чтобы сохранялась исходная функция.

Что сделать, если внести регистры не удается по алгоритму? БИХ фильтр к примеру, раз речь про ЦОС. Выкидывать его и ставить КИХ, который занимает кучу логики и не влазит? Или кристалл брать на спидгрейд выше? Вот тут и требуется знание языков, архитектуры конкретной ПЛИС и возможностей САПР.
syoma
Цитата
Что сделать, если внести регистры не удается по алгоритму? БИХ фильтр к примеру, раз речь про ЦОС.

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

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

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

У нас тут есть человек, который пробовал и эту связку и Altera DSP Builder. И я разговаривал с людьми, которые юзали Matlab (VHDL)Coder. И пока однозначный ответ - Xilinx System Generator по функциональности и эффективности пока всех их уделывает как минимум на голову.
Многие модели, спокойно реализованные на System Generator невозможно было реализовать на DSP Builder или Coder.
Преемуществом System Generator является то, что он заточен под конкретную архитектуру, и поэтому генерит не универсальный VHDL, а эффективно заточенный под конкретную FPGA. То есть использует на полную встроенные DSP48 и память, генерит корки, которые только может, организовует DCMы, как ему надо и т.д. Матлабовский кодер так полюбому не умеет.
bogaev_roman
Цитата(syoma @ Oct 19 2011, 17:22) *
В Матлабе и так есть куча возможностей добиться оптимизации между скоростью и размерами. Например разработчик имеет выбор между полностью последовательными или параллельными реализациями, или что-то среднее. Опять же есть выбор, какие элементы ПЛИС использовать - DSP48 или лепить умножитель из логики и т.д. Память из чего BlockRAM или доморощеная. В общем выбор есть.

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

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


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

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

Тут я думаю с Вами есть кому поспорить кроме меня, от себя одно - есть области, где ПЛИС или ASIC - незаменимы.
А насчет частоты пример - у меня в последнем проекте логика работает на 500МГц и 250МГц, где ж я спидгрейт выше возьму, там и так максимальная 600 biggrin.gif Ранее, кстати, в какой-то теме писал что снижение спидгрейта снижает цену на 20% при одинаковых технологиях, представьте, что делается какой-нибудь девайс в 100000 экземплярах.
des00
Цитата(sazh @ Oct 19 2011, 01:50) *
bb-offtopic.gif

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

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


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

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

Короче архив содержит полный курс подготовки от нуля до создания собственных контроллеров любой сложности.
Исключительно полезен, как справочный материал, когда надо быстро вспомнить как работать на VHDL или не зная языка склепать нечто из примеров.
Особенно наворочена третья часть. Не только расширяет границы сознания, но реально взрывает мозг sm.gif
Желаю всем удачи.
keeka
Спасибоsm.gif Как раз, что мне нужно)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.