Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SOPC Builder и его возможности
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Страницы: 1, 2
torik
Всем привет!
Пару-тройку месяцев назад пытался выяснить в общих чертах, что такое SOPC Builder и с чем его едят. Читал соответствующую главу хандбука и статью про шину Авалон на altera.ru. К сожалению дело было заброшено в связи с другими срочными работами. Но сейчас планирую вернуться к вопросу применения этого инструмента.
Обращаясь к специалистам и тем кто просто имел дело с SOPC Builder, хочу спросить следующее:
- возможно ли применение SOPC Builder без использования Nios-процессора?
Т.е. могу ли я создать комбинацию, грубо говоря, из контроллера памяти SDRAM и DMA или даже просто контроллер памяти. Это собственно и сподвигло меня на изучение билдера. Один из важнейших вопросов - применение памяти типа DDR, SDRAM, потому хотелось бы не занимаясь разработкой контроллера, использовать контроллер из SOPC Builder, а потом обращаться по интрефейсу шины Авалон. Практически это будет выглядеть как обращение к набору регистров - линейное адресное пространство и никаких запар с инициализациями и прочим.

Если ответ на первый вопрос положительный и даже если нет, хочу перевести для себя эту главу хандбука, посему опять вопрос:
- достаточно ли для освоения SOPC Builder для начала перевести соответсвующую главу хандбука и описание шины авалон с altera.ru?
- интересует ли кого еще такой перевод и не будет ли это бесполезной работой - может он уже переведен?
RHnd
Цитата(torik @ Nov 19 2007, 19:20) *
- возможно ли применение SOPC Builder без использования Nios-процессора?

Я не специалист, но, на сколько знаю, да.

Цитата(torik @ Nov 19 2007, 19:20) *
- достаточно ли для освоения SOPC Builder для начала перевести соответсвующую главу хандбука и описание шины авалон с altera.ru?

Не читал, что именно написано на сайте ЭФО, но, думаю, да. И даже более чем. Хотя, все равно лучше читать исходники с altera.com. Прочитать -достаточно, но вот переводить - излишне. Зачем?

Цитата(torik @ Nov 19 2007, 19:20) *
- интересует ли кого еще такой перевод и не будет ли это бесполезной работой - может он уже переведен?

Если и интересует, то немногих. Нет, уверен, что не переведен - не нужен, устаревает быстрее, чем переводится.

PS:Не возможно серьезно заниматься любой it-деятельностью, не владея техническим английским! Я серьезно.

"-А есть русские мануалы на xxxx?
-Есть русские мануалы на английский язык. Полезная вещь!" © bash.org.ru
torik
Согласен - английский технический просто необходим. С этим уже стало намнооого меньше проблем чем раньше.
Перевод хотел для того, чтобы лучше все усвоить, потренироваться в аглицком...

А вот каким образом применить SOPC Builder без использования Nios-процессора в том варианте как я описал -я не понял...
Antim
Цитата(torik @ Nov 19 2007, 19:47) *
Согласен - английский технический просто необходим. С этим уже стало намнооого меньше проблем чем раньше.
Перевод хотел для того, чтобы лучше все усвоить, потренироваться в аглицком...

А вот каким образом применить SOPC Builder без использования Nios-процессора в том варианте как я описал -я не понял...


Присоединяюсь... Сам не давно пытался подключить DDR SDRAM без NIOS в проект через SOPC, так ничего и не вышло... 07.gif Вообщем мучился, потом открыл Megawizard в нем создал и работаю со своим проектом...
Если кто подключал, было бы очень интересно узнать, какие впечатления...
Спасибо
id_gene
В СОПС-билдере для создания системы нужены как минимум 1 мастер и 1 слейв.
Будет ли мастер процессором или PCI-мостом или еще кем-то - неважно.
Кто будет слейвом - DDR контроллер или on-chip memory тоже не важно.
torik
Что же лучше использовать в качестве мастера?
RHnd
Цитата(torik @ Nov 20 2007, 08:33) *
Что же лучше использовать в качестве мастера?

Если вы хотите использовать просто корку сдрам в собственных проектах, то мастера надо написать самому. Фактически, прямая трансляция портов шины авалон наружу.
torik
Т.е. надо создать мастер, который бы не только имел мастер-нитерфейс, но еще и имел дополнително сигналы для связи с внешней пользовательской логикой (вне системного модуля)? Хм... продолжаю читать, может пойму как это сделать.

Но почему же тогда нельзя в качестве этого мастера использовать DMA, потому что у него нет сигналов для соединения с внешней логикой?
id_gene
Цитата(torik @ Nov 20 2007, 15:17) *
Но почему же тогда нельзя в качестве этого мастера использовать DMA
А вы пробовали?
Цитата
Т.е. надо создать мастер, который бы не только имел мастер-нитерфейс, но еще и имел дополнително сигналы для связи с внешней пользовательской логикой (вне системного модуля)?
Это самое простое и правильное решение.
torik
Например, ставим в SOPC Builder-е DAM и котнроллре SDRAM типа как на рисунке в приложенном файле.
Он не дает сгенерировать систему. Как я понимаю - это потому что control_port_slave не подключен?

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

А может тогда проще взять этот контроллер из визарда, да использовать?

Дело то вот в чем - хочется сделать такую вещь, чтобы к FPGA была подключена SDRAM, а запись в нее производить просто как в асинхронную память или набор регистров - адрес 32 (к примеру) бита, данные 8 бит, запись/чтение и все...
Postoroniy_V
Цитата(torik @ Nov 21 2007, 21:20) *
Например, ставим в SOPC Builder-е DAM и котнроллре SDRAM типа как на рисунке в приложенном файле.
Он не дает сгенерировать систему. Как я понимаю - это потому что control_port_slave не подключен?

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

А может тогда проще взять этот контроллер из визарда, да использовать?

Дело то вот в чем - хочется сделать такую вещь, чтобы к FPGA была подключена SDRAM, а запись в нее производить просто как в асинхронную память или набор регистров - адрес 32 (к примеру) бита, данные 8 бит, запись/чтение и все...

использовать как "просто асинхронную память" sdram при помощи данного конроллера не выйдет к сожалению. почитайте даташит на sdram и тогда думаю Вы поймёте почему.
torik
Итак, пока результат следующий. Прочитал главу хандбука SOPC Builder - не всей, а только до редактора компонентов включительно.
Решил попробовать простейший эксперимент: создаем свой собственный компонент без HDL файлов; сигналы мастера запись/данные(10 бит), clk, reset, адрес.
Далее добавляем этот компонент в свою систему SOPC Builder, туда же закидываем PIO на 10 бит. Этот PIO автоматом подсоединяется к нашему мастеру, становится только на выход, т.к. нет сигналов чтения...
Все прекрасно компилируется. Вставляем это в наш проект, к выходам PIO подключаем светодиоды. Адрес = 0 (остальные регистры PIO не используем), таковую даем, сигнал записи и данные со счетчика.
Результат - все работает как и ожидалось!!!

Такие дела. Теперь возвращаемся к SDRAM памяти... smile.gif))))
Делаем такой же мастер без внутренней логики, только с большим адресным пространством + datavalid. Добавляем SDRAM корку - все стыкуется и генерируется.

А дальше, простите, я не успел на работе попробовать - быть непонятки:
- память общим объемомо 16 МБайт, к ней что, можно обращаться как к линейному адресному пространству?
- прочитал (вернее проглядел smile.gif) даташит на SDRAM и не оченьто понял - а как же регистры для настройки??? Они не нужны, получается...

Подскажите, пожалуйста, можно ли обращаться к этой памяти SDRAM как к линейному адресному простанству через простой интерфейс, выполненный по соглашениям Авалон, нужно ли делать предварительно какие-то настройки памяти?
RHnd
Если я ничего не путаю, то да, можно. Все необходимые настройки памяти задаются при создании компонента в SOPC.
torik
Вот это дела - это же почти халява по сравнению с самостоятельным написанием контроллеров памяти и прочей обвязки... smile.gif
vetal
Цитата
сигналы мастера запись/данные(10 бит), clk, reset, адрес.

Еще надо обязательно ввести сигнал waitrequest!
torik
Да, конечно!
А потом, может быть, и DMA прикрутить... для многоканального доступа.
torik
Всем привет.

Уважаемые специалисты smile.gif, я тут попробовал осуществлять запись в SDRAM память и читать ее для контроля. Для этого создал простенький тестовый проектик.
В нем SOPC Builder система состоит из контроллера памяти и самодельного мастера.
В основном проекте подаю на мастер порт тестовые сигналы простейшие - по одной кнопке запись, по другой чтение. Все это контролирую сигналтабом.

Но увы, со стороны мастера Авалон никакой реакции сигналов waitrequest, datavalid...

Кому не лень - поглядите пожалуйста, в чем я там ошибся. Наверняка с тактовыми чего напутал или еще что, мне не очевидное. На всякий случай скажу, что делаю на отладке DK-CYCII-2C20N...

Архив проекта прилагаю, сменить разрешение на qar
vetal
1. не надо переименовывать qar в rar
2. ваш проект почему-то не открывается в 72
3. вы не приложили компонент для sopc_builder.
4. По делу:
4.1 какие значения принимают сигналы read_n и write_n после сброса? скорее всего ваш модуль пытается одновременно читать и писать.
4.2 на сигнал записи можно завести сигнал empty fifo, а waitrequest шины завести на сингал rdreq (у меня один модуль примерно так скидывает данные в озу)
4.3 не обязательно для изучения использовать sdram память, можно поэекпериментировать/помоделировать на обычной памяти(onchip).
torik
Привет!
1) переименовал qar в rar, т.к. здесь на форуме не дает выложить файл с другим разширением
2) Не открывается в 7.2? У меня 6.1, вроде не должно быть проблем
3) неприложил... походу он в архив не попал, щас переархивирую все
4) после сброса read_n и write_n равны "1". Вроде не одновременно запись/чтение
5) Я по сигналу empty fifo даю запрос на чтение, далее на запись и держу пока установлен empty fifo (он не бывает установлен судя по сигнал табу)
6) Меня ооочень интересует sdram, а например с PIO я уже пробовал - нормально все.

Итак, бросаю архив nios2.rar - просто rar архив паки с проектом, надо только разархивировать... теперь там и компонент для sopc_builder.
Посмотрите, пожалуйста, может в компоненте чего не так...


А еще, когда смотрю сигналтабом, при записи через 6 тактов на выходе readdata мастерпорта появляются записываемые данные!?!? Как так, при этом сигнал read_n держится в "1"...
torik
Монолог продолжается... sad.gif smile.gif

Заново создал систему SOPC Builder, устранил ошибку (вместа ресета на модуль было подано фиг знает что). Добавил кроме памяти еще и PIO для наглядности.
Начало записывать память и читать ее...

Неужели никому неинтересно, или я настолько отстал от жизни, что для всех это пройденный этап?
RHnd
Цитата(torik @ Nov 27 2007, 17:18) *
Монолог продолжается... sad.gif smile.gif

Заново создал систему SOPC Builder, устранил ошибку (вместа ресета на модуль было подано фиг знает что). Добавил кроме памяти еще и PIO для наглядности.
Начало записывать память и читать ее...

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

Ну, все когда-то начинали. smile.gif лично я за вас радуюсь.
Postoroniy_V
Цитата(torik @ Nov 27 2007, 23:18) *
Монолог продолжается... sad.gif smile.gif

Заново создал систему SOPC Builder, устранил ошибку (вместа ресета на модуль было подано фиг знает что). Добавил кроме памяти еще и PIO для наглядности.
Начало записывать память и читать ее...

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

ну почему же очень интересно. a14.gif не понятно просто что Вы ожидали, какой реакции smile.gif
а чтобы работа Ваша не была проделана зря для сообщества, взяли бы какой нить фак написали.
RHnd
Цитата(Postoroniy_V @ Nov 28 2007, 02:31) *
ну почему же очень интересно. a14.gif не понятно просто что Вы ожидали, какой реакции smile.gif
а чтобы работа Ваша не была проделана зря для сообщества, взяли бы какой нить фак написали.

Угу. Если возьмете на себя труд начать, вспомнить возникавшие вопросы и взяться за составления, я присоединюсь в написании - попробую и поотвечать, и свои трудности вспомнить.
torik
Ага, только бы знать как этот ваш "фак" писать.
Еще могу выложить перевод по SOPC Builder - это конечно громко сказано, да и не весь раздел...
prog_sun
Цитата(torik @ Nov 28 2007, 20:02) *
Ага, только бы знать как этот ваш "фак" писать.
Еще могу выложить перевод по SOPC Builder - это конечно громко сказано, да и не весь раздел...

Мне вообще то интересно. Вот как сделать мастера для rs232? Туториал на Sopc Builder пока не читал, но прочту сейчас же. smile.gif Читал только Introduction to the Altera Sopc Bulder.

Цитата
Решил попробовать простейший эксперимент: создаем свой собственный компонент без HDL файлов; сигналы мастера запись/данные(10 бит), clk, reset, адрес.


Это где создаете компонент в квартусе или сопсе?





Цитата(prog_sun @ Jan 13 2008, 16:09) *
Мне вообще то интересно. Вот как сделать мастера для rs232? Туториал на Sopc Builder пока не читал, но прочту сейчас же. smile.gif Читал только Introduction to the Altera Sopc Bulder.
Это где создаете компонент в квартусе или сопсе?

используйте мастер редактора компонентов SOPC Builder, чтобы определить интерфейс и упаковать ваши файлы HDL в компонент SOPC Builder

И еще один вопрос. Вместо того чтобы писать мастер порт возьму готовый, например DMA (у него мастер порт есть), а слейвом будет RS232. Или DMA тоже потребует лицензии?

Фокус с DMA не прошел, он сам требует авалон мастера. Прийдется самому делать мастера. twak.gif буду читать дальше.
sazh
Ради rs232 шину Авалон воспроизводить. Ниос задействовать.
Наверно это все же перебор.
проектов отврытых и так море.
prog_sun
Цитата(sazh @ Jan 13 2008, 17:56) *
Ради rs232 шину Авалон воспроизводить. Ниос задействовать.
Наверно это все же перебор.
проектов отврытых и так море.

Да проектов реализации rs232 на *hdl и другими способами море. Но посмотрите на возможности SOPC, грех не использовать их. Это начальное изучение SOPC. Потом точно знаю, будет усложнение, добавление новых интерфейсов. Почти все интерфейсы, что мне нужны, в SOPC есть.
torik
1) Разберитесь что у вас там с лицензией - полная лицензия на квартус означает лицензию на SOPC кроме процессора nios

2) В SOPC Builder для создания внешнего интерфейса типа мастер:
- жмем file->new component
- 1, 2 вкладки просто пропускаем
- во вкладке signals выбираем templates->add типичный набор мастера
- выбираем ширину шины адреса и данных
- в принципе можно жать finish если не говорит ни о каких проблемах.

3) добавляем в SOPC самодельный компонент и RS232, пояляется связь между ними... Теперь можно жать кнопку генерации

4) в проекте квартусовом смотрите - у созданной системы быть входы/выходы оноименные с мастеринтерфейсом самодельным и rs232

5) читаете в хандбуке про RS232 компонент и пользуетесь им как написано.

Про шину авалон можно почитать даже по-русски (основы можно понять вполне) - http://www.altera.ru/cgi-bin/go?519
Про сопс билдер я даже где-т тут выкладывал что-то вроде перевода... http://electronix.ru/forum/index.php?showtopic=40086
Про все, само сабой лучше читать в оригинале
prog_sun
Цитата
1) Разберитесь что у вас там с лицензией - полная лицензия на квартус означает лицензию на SOPC кроме процессора nios

фул, тут все в порядке smile.gif

Цитата
2) В SOPC Builder для создания внешнего интерфейса типа мастер:
- жмем file->new component
- 1, 2 вкладки просто пропускаем
- во вкладке signals выбираем templates->add типичный набор мастера
- выбираем ширину шины адреса и данных
- в принципе можно жать finish если не говорит ни о каких проблемах.


Когда выбираешь мастера, предупреждения возникают. Читаешь их и делаешь то что требуется. Мастера научился делать. Сейчас делаю тот пример, что вы в начале привели с Pio. Только там не понятно как шину 10 разрядную сделали. Выбирать приходится из 8, 16 и т.д

Цитата
3) добавляем в SOPC самодельный компонент и RS232, пояляется связь между ними... Теперь можно жать кнопку генерации

4) в проекте квартусовом смотрите - у созданной системы быть входы/выходы оноименные с мастеринтерфейсом самодельным и rs232

5) читаете в хандбуке про RS232 компонент и пользуетесь им как написано.

до этого еще не дошел, делаю ваш пример. если с Pio получится все ( пока не получается там при первоначальной компиляции в квартусе возникает error, разбираюсь что за ошибка) то думаю не составит труда включить rs232.
Цитата
Про шину авалон можно почитать даже по-русски (основы можно понять вполне) - http://www.altera.ru/cgi-bin/go?519
Про сопс билдер я даже где-т тут выкладывал что-то вроде перевода... http://electronix.ru/forum/index.php?showtopic=40086

Это все вчера нашел, до авалона дело не дошло. twak.gif Туториал в оригинале даже не читал. smile.gif
А вот перевод ваш прочитал вчера.
prog_sun
В квартусе при первоначальной компиляции выдает error: Node instance "the_untitled" instantiates undefined entity "untitled". untitled - это он так изначально именует класс -component class name в Component Wizard.
Читаем лекарство CAUSE: You attempted to compile the current design, but the specified node instance instantiates the specified undefined entity.
ACTION: Make sure that the required user library paths are specified correctly. If the project contains EDIF Input Files (.edf), make sure that you specified the EDA synthesis tool settings correctly. Otherwise, define the specified entity or change the calling entity.
Ну и как корректно создать этот путь? Единственно где путь указывается это Component Wizard, все корректно там указано (путь к папке с проектом квартуса).

т.е project path
torik
Вы переделываете готовый пример?
Сама система SOPC генерируется нормально? Если да, то значит неправильно подключена в основном проекте (не те имена портов написаны) - смотрите внимательнее
prog_sun
Цитата
Вы переделываете готовый пример?

нет, вот эти ваши слова
Цитата
Далее добавляем этот компонент в свою систему SOPC Builder, туда же закидываем PIO на 10 бит. Этот PIO автоматом подсоединяется к нашему мастеру, становится только на выход, т.к. нет сигналов чтения...
Все прекрасно компилируется. Вставляем это в наш проект, к выходам PIO подключаем светодиоды. Адрес = 0 (остальные регистры PIO не используем), таковую даем, сигнал записи и данные со счетчика.
Результат - все работает как и ожидалось!!!

хочу в железо воплотить, но только error получаюNode instance "the_untitled" instantiates undefined entity "untitled". и предупрежение Warning (10335): Unrecognized synthesis attribute "auto_dissolve" at ser.v(47).
Сама система SOPC генерируется нормально? да, без ошибок
Если да, то значит неправильно подключена в основном проекте (не те имена портов написаны) - точно не те. Сейчас попробую правильные имена поставить.

поставил правильные имена, все равно выдает error. wacko.gif
prog_sun
Цитата
неправильно подключена в основном проекте (не те имена портов написаны)

вы это говорили про проект который в sopc компилится?
torik
нет, после генерации системы файл имя системы.v смотрели? В нем же перечислены порты...
prog_sun
Цитата(torik @ Jan 14 2008, 21:12) *
нет, после генерации системы файл имя системы.v смотрели? В нем же перечислены порты...

torik
Посмотри, что не так делаю?
Что за component class name? В шестом хендбуке написано, что это специализированное имя. Но как его задавать не нашел.
На 4 рис. мои сигналы оформелны неправильно. У pio сигналы правильно записаны.
torik
Да все на первый взгляд верно, хотя class name и name просто совпадают с именем папки в которой он расположен и одинаковы...

А покажите код, который добавляете в основной проект для включения в него системы?
prog_sun
Цитата
хотя class name и name просто совпадают с именем папки в которой он расположен и одинаковы

Так должно быть?
Поигрался вчера и сегодня с именами. То что на рисунке показано, имена там такие: nis.sopc ( nis - имя папки), Class name - tor, Display name - reb. Если скомпилить, то в квартусе получаем error Node instance "<name>" instantiates undefined entity "<name>". Если же сделать все три имени одинаковыми, то получаем error Project too complex: hierarchy path is too long в котором вложено еще 100 error-ов Entity "<name>" is instantiated by entity "<name>". Сегодня в интернете нашел 6.1 туториал билдера. Там приводится пример сборки rs232. На странице 5-10 там видно, что все три имени совпадают. Пока пример с хендбука с rs232 не делал, не дошел еще.
В интернете поискал на Node instance "<name>" instantiates undefined entity "<name>". Нашел, что такая ошибка может быть вызвана из-за не подключения пользовательской библиотеки. Подключил, не помогло.

Цитата
А покажите код, который добавляете в основной проект для включения в него системы?

А весь код то состоит в добавлении инпут аутпут выводов.
torik
Да вы знаете, судя по вашей схеме данная система имеет только выходы. А входов (write, read, address, data...) нету. Это как раз те самые сигналы мастера, который вы смастерили.

Какая конкретно версия квартуса у вас. Если 6.1, то могу попробовать выслать пример...
prog_sun
Цитата(torik @ Jan 15 2008, 16:44) *
Да вы знаете, судя по вашей схеме данная система имеет только выходы. А входов (write, read, address, data...) нету. Это как раз те самые сигналы мастера, который вы смастерили.

Какая конкретно версия квартуса у вас. Если 6.1, то могу попробовать выслать пример...

Тоже обращал внимание на это. Еще в сигналах указываю reset, а в квартусе (на схеме) получаю reset_n. К тому же в хендбуке написано, что сигналы генерируются вот так
module my_multiport_component (
// Signals for Avalon-MM slave port "s1"
avs_s1_clk,
avs_s1_reset_n,
avs_s1_address,
avs_s1_read,
avs_s1_write,
avs_s1_writedata,
avs_s1_readdata,
avs_s1_export_dac_output,
мастер порт генерируется аналогично, только вместо avs пишется аvm.
Если посмотреть риснунок, где приводил мои сигналы (рис 4), то видно что сигналы мастера не по этим правилам сгенерированы.
Quartus II Version Build 151 09/26/2007 SJ естественно фул. Service Pack Installed: None.

Вряд ли это связано с версией Квартуса. На SOPCе сделал пример с процессором, памятью и pio. Все сгенерировалось в Sopce, перенеслось в квартус, скомпилил и в ответ получил одно предупреждение, что ядро - тайм лимид. Так что, думаю Sopc работает. Наверно что то не то делаю при компановке мастер-порта. А что не знаю. У меня мастер порт фактически отсутствует в схеме квартуса, а пины слейв порта pio присутствуют.
RHnd
Бррр.... Это что же, вы компонент без HDL кода создаете? Фигасе. И что, он должен автоматически вам все сигналы авалоновские на глобал кинуть? С чего? Пишите HDL и будет хорошо.
prog_sun
torik
Цитата
Итак, пока результат следующий. Прочитал главу хандбука SOPC Builder - не всей, а только до редактора компонентов включительно.
Решил попробовать простейший эксперимент: создаем свой собственный компонент без HDL файлов; сигналы мастера запись/данные(10 бит), clk, reset, адрес.
Далее добавляем этот компонент в свою систему SOPC Builder, туда же закидываем PIO на 10 бит. Этот PIO автоматом подсоединяется к нашему мастеру, становится только на выход, т.к. нет сигналов чтения...
Все прекрасно компилируется. Вставляем это в наш проект, к выходам PIO подключаем светодиоды. Адрес = 0 (остальные регистры PIO не используем), таковую даем, сигнал записи и данные со счетчика.
Результат - все работает как и ожидалось!!!

Вот этим руководствовался.
А теперь получается
Цитата
Бррр.... Это что же, вы компонент без HDL кода создаете? Фигасе. И что, он должен автоматически вам все сигналы авалоновские на глобал кинуть? С чего? Пишите HDL и будет хорошо

так осталось дело за малым написать этот код, использую вашу прошлую подсказку.
Цитата
На форуме неоднократно обсуждалось (где-то рядом должна быть тема про SDRAM контроллер - там этот вопрос поднимался). В простейшем случае ваш мастер просто будет сигналы avalon передавать наружу. Что-то типа

input my_address;
output avalon_master_address;

assign avalon_master_address=my_address;

И так для всех нужных Вам сигналов.

Для меня сейчас VHDL как китайская грамота.

извиняюсь не VHDL а Verilog
prog_sun
Цитата
input my_address;
output avalon_master_address;

assign avalon_master_address=my_address


это надо вот так понимать?
assign address=new_signal_1;
assign waitrequest=new_signal_2;
assign writedata=new_signal_3;
assign write=new_signal_4;

но тогда следует заметить что waitrequest не output avalon_master_address а input. 07.gif
Postoroniy_V
Цитата(RHnd @ Jan 16 2008, 02:26) *
Бррр.... Это что же, вы компонент без HDL кода создаете? Фигасе. И что, он должен автоматически вам все сигналы авалоновские на глобал кинуть? С чего? Пишите HDL и будет хорошо.

До версии 6.х включительно было...можно было делать...
а в версиях 7.х наблюдаю туже фигню
пошёл курить мануал sad.gif
torik
Е-мое, у меня квартус 6.1 и я создаю мастер без всякого кода HDL, все работает так как я и описывал. Очень удобная вещь для стыковки системы SOPC с внешней логикой, через фифо например...

При этом, кстати говоря, мануал я читал уже новый, на 7.1 (ну на сайте альтеры...)
prog_sun
torik
Цитата
Е-мое, у меня квартус 6.1 и я создаю мастер без всякого кода HDL, все работает так как я и описывал. Очень удобная вещь для стыковки системы SOPC с внешней логикой, через фифо например...

выложи тут или пришли мне папку с файлом самодельный мастер -pio слейв. fpga_sun@mail.ru. Только не архивируй его, а то я не смогу прочитать файл.
Вчера начал изучать верилог. Начал делать своего мастера, но получал error Verilog HDL error at Verilog1.v(25): object "address" is not declared. Читал на него таблетку, исправлял, получал другой error. Сам Sopc генерирует *.v файлы в рабочей папке. Вот посмотрел их, и изучил пример создания слейв верилог файла. Тут захотелось посмотреть пример создания мастер велилог файла. Решил обратно попробовать создать dma мастер и какой-нибудь слейв. Взял sgdma мастер и on-chip слейв 32 разряда (все как по умолчанию). Нормально сгенерировалось в sopce. Без errorов предварительно скомпилилось в квартусе, но с предупреждениями (14 сообщений).Все они были связаны с тем, что не сделал пин пленер и с таймквестом. (но в графическом изображении sopc в квартусе есть только два вывода клок и ресет, куда делись другие вывода?) Поскольку все предупреждения были знакомы, решил полностью скомпилировать. В пинпленере установил пины. А вот в тамквест не смог записать констрейны Error: Current module quartus_tan ended unexpectedly. Отключил библиотеку пользователя, еще хуже получилось (100 предупреждений и error в таймквесте). Посмотрел верилог код мастера sgdma. Состоит из многих подмодулей, разобраться сразу сложно, что куда.
torik
Если только начинаеш вообще работать с ПЛИС (это так? или только с верилогом не работали?), то купили бы себе "отладочную плату" - там и примеры быть и прочее. В этом случае, пожалуй, трудно будет сразу на всякие сопсбилдеры замахиваться... Может я и неправ...

Чо-то мне не дает выложить прям папку с файлами smile.gif. Может все-таки архив, а?

И что-то ты меня совсем запутал, уже какие-то "слейв верилог файлы" пошли... Просто создай мастера без HDL файлов - там ошибку сделать трудно. Потом собери систему SOPC из этого мастера и PIO или там RS-232. сгенерируй.
Далее вставь в свой проект хоть в графическом виде и подай на входы этой системы (должны будут появиться все сигналы которые в самодельном мастере созданы - write_n, addres...) сигналы в соответсвии с требованиями шины авалон...
prog_sun
Цитата
Если только начинаеш вообще работать с ПЛИС (это так? или только с верилогом не работали?), то купили бы себе "отладочную плату" - там и примеры быть и прочее. В этом случае, пожалуй, трудно будет сразу на всякие сопсбилдеры замахиваться... Может я и неправ...

Один проект только сделал, от печатки до пайки плиса. Получил деньги и купил DE1 и сижу разбираюсь с ним.(купил его для изучения верилога и ниоса). Верилог для меня темный лес, раньше графически рисовал. Вчера простенькую программу написал в верилоге залил в DE1, работает. Понял структуру верилог файла, дальше читаю.

Цитата
Чо-то мне не дает выложить прям папку с файлами smile.gif. Может все-таки архив, а?

Пытался распкаковать ваш nios2.rar, не получилось. Давайте в архиве, другим rar-ом попробую распаковать.

Цитата
И что-то ты меня совсем запутал, уже какие-то "слейв верилог файлы" пошли... Просто создай мастера без HDL файлов - там ошибку сделать трудно. Потом собери систему SOPC из этого мастера и PIO или там RS-232. сгенерируй.

Так и делаю. sopc сам генерит *v файлы в папке. Вот к примеру sgddr(мастер) - on-chip(слейв), sopc генерирует вот эти файлы - sgdma.v, onchip_mem.v и еще другие файлы. Просто onchip_mem.v-назвал "слейв верилог файлом"

Цитата
Далее вставь в свой проект хоть в графическом виде и подай на входы этой системы (должны будут появиться все сигналы которые в самодельном мастере созданы - write_n, addres...) сигналы в соответсвии с требованиями шины авалон...


в этом пункте у меня проблемы, не появляются на графике у меня эти сигналы. 07.gif Почитаю туториал, скорее всего, где-то что-то упускаю.
torik
Не распаковался, потому что надо его переименовать было в .qar и открывать в квартусе...

Но неважно, вот выкладываю проект, где я тестил память SDRAM, там и PIO быть. Проверял с помощью сигналтаба.
Отладка - циклон 2 стартер кит.))

Просто распакуй и открывай.

Не распаковался, потому что надо его переименовать было в .qar и открывать в квартусе...

Но неважно, вот выкладываю проект, где я тестил память SDRAM, там и PIO быть. Проверял с помощью сигналтаба.
Отладка - циклон 2 стартер кит.))

Просто распакуй и открывай.
prog_sun
Цитата(torik @ Jan 16 2008, 16:06) *
Не распаковался, потому что надо его переименовать было в .qar и открывать в квартусе...

Но неважно, вот выкладываю проект, где я тестил память SDRAM, там и PIO быть. Проверял с помощью сигналтаба.
Отладка - циклон 2 стартер кит.))

Просто распакуй и открывай.

Не распаковался, потому что надо его переименовать было в .qar и открывать в квартусе...

Но неважно, вот выкладываю проект, где я тестил память SDRAM, там и PIO быть. Проверял с помощью сигналтаба.
Отладка - циклон 2 стартер кит.))

Просто распакуй и открывай.

Спасибо, сейчас посмотрю. beer.gif А пример с самодельным мастером? в связке с pio. Логика работы этой связки очень простая, включил светодиод, выключил его. Но и за цдрам спасибо начну его изучать.

Тут вот, что у меня вышло. Взял связку SGDMA-PIO, как то соединил их не зная логики соединения, maniac.gif но так что бы не было предупреждений. Сгенерировал в Sopce, скомпилил в квартусе. Все прошло без предупреждений, залил в DE1 тоже не ругаясь на тайм лимит smile.gif . Last светодиод один включился и все. Ну теперь можно изучить этот пример вдоль и поперек. Там одна проблема pio инпут не хочет подключаться к sopc модулю(ходел сделать включение и выключение светодиодов), предупреждение выставляет говорит нет тест бенча. Причем сделано это на квартусе 7.2
torik
В том примере что я скинул как раз и быть этот самодельный мастер - поглядите. Неважно память сдрам или пио или что еще - работает абсолютно одинаково.

Просто задайте адрес (например через assign) в моем проекте равным адресу PIO и выводите на него данные...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.