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

 
 
 
Reply to this topicStart new topic
> создание шины Avalon_Memory_Mapped в SOPC_builder, avalon_MM_build
Jemmax
сообщение Apr 9 2009, 08:55
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 9-04-09
Пользователь №: 47 399



Господа опытные программисты
помогите пожалуйста советом как решить проблему подключения модуля опроса состояния енкодера к шине авалон
Модуль Encoder_Control создан как bdf файл т.е blok_diagram/shematik_file иметтся три входа F_0, F_1, clk и выходы шина данных data[4..0], irq. Теперь очень нужно подключить шину Avalon Memory-Mapped чтобы в ядро передавать данные о состоянии енкодера.
На данный момент удалось создать ядро с помощью SOPC_Builder оно получилось как в примере tt_nios2_hardware_tutorial. Не могу понять как в это ядро имплантировать Avalon Bus Modul чтобы были правильные выводы для соединения с проводниками от Encoder_Control в котором должен быть Slave port peripheral.
За ранее благодарен любой информации

Сообщение отредактировал Jemmax - Apr 9 2009, 09:00
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Apr 9 2009, 12:50
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



А что есть это ваше ядро ?? На сколько я понял вам нужно передавать данные с энкодера в мэйн - ну так вам нужно IRQ sender и Avalon MemoryMapped slave - мастер опрашивает слейв по прерыванию laughing.gif
Go to the top of the page
 
+Quote Post
Jemmax
сообщение Apr 10 2009, 12:23
Сообщение #3





Группа: Новичок
Сообщений: 9
Регистрация: 9-04-09
Пользователь №: 47 399



Да все верно Avalon Memory Mapped slave. Едиственно проблема была в ядре создать эту шину с помощью new_component и выбрать из списка сигналов нужные для данного проекта
Теперь нужно выяснить возможно ли сделать шину data двунаправленной чтобы по ней шли данные от енкодера и записывались начальные данные в блок управления енкодером
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Apr 10 2009, 14:37
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Реализуете slave read/write , назначаете порты в new_component и будет вам счастие biggrin.gif
Go to the top of the page
 
+Quote Post
Jemmax
сообщение Apr 14 2009, 10:21
Сообщение #5





Группа: Новичок
Сообщений: 9
Регистрация: 9-04-09
Пользователь №: 47 399



Кузмич я имел в виду чтобы шины readdata[7..0] и writedata[7..0] сделать как одну т.е. занять только восемь проводников. Такое техническое решение возможно ?? У нас ведь сигналы read, write есть.
И еще если не затруднит аргументируйте ответ ссылкой на доументацию.

Сообщение отредактировал Jemmax - Apr 14 2009, 10:22
Go to the top of the page
 
+Quote Post
RYury
сообщение Apr 14 2009, 10:59
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 70
Регистрация: 4-12-06
Из: Окно Петра в Европу
Пользователь №: 23 119



Цитата(Jemmax @ Apr 14 2009, 14:21) *
я имел в виду чтобы шины readdata[7..0] и writedata[7..0] сделать как одну т.е. занять только восемь проводников.


так не получится, нет внутри в плисах (в ядре) Altera тристабильных ресурсов, только на IO крисстала (выходные пины). Делайте модуль с отдельной шиной записи и шиной чтения и подключайте к Avalon.
Go to the top of the page
 
+Quote Post
Jemmax
сообщение Apr 15 2009, 20:54
Сообщение #7





Группа: Новичок
Сообщений: 9
Регистрация: 9-04-09
Пользователь №: 47 399



Спасибо за совет разобрался с writedata[7..0] и readdata[7..0] шины однонаправленные, и в Z- состояние переводить после приема/передачи не нужно в Avalon Memory-Mapped interfaces все предусмотрено. Теперь другая проблема получить правильные сигналы от подчиненного устройства для передачи данных чтобы они соответствовали интерфейсу шины авалон.
устройство энкодер при вращении ручки на шине readdata[7..0] появляется поток чисел от 0-32 (это сделано работает) теперь нужно увязать поток данных с сигналом read он я понял активен когда '0', irq, chipselect, clk.
Подскажите пожалуйста может быть есть пример на VHDL для операции чтения подчиненного устройства. Я если честно запутался во временных диаграммах пытаюсь все смоделировать в waveform.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Apr 16 2009, 09:27
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Jemmax - что есть
Цитата
.....теперь нужно увязать поток данных с сигналом read он я понял активен когда '0', irq, chipselect, clk.

Как я понял вам нужно загнать даные в регистр, выставить интерупт и прочитаеть данные с регистра мастером - всё biggrin.gif .
Go to the top of the page
 
+Quote Post
Jemmax
сообщение Apr 16 2009, 10:32
Сообщение #9





Группа: Новичок
Сообщений: 9
Регистрация: 9-04-09
Пользователь №: 47 399



На данный момент нужно в работающем блке опроса состояния энкодера Encoder_Box создать модуль на VHDL который-бы отправлял и принимал данные от Avalon-MM Slave в соответствии с сигналами шины.
Столкнулся с проблемой изменения значеня в регистре который используется в двух разных процессах. В одном процессе по rising_edge CLK я выполняю Time_Set <= Time_Set+1 или Time_Set <= Time_Set-1 тут все нормально. Но как только по шине авалон writedata[7..0] приходит число (0-31) для начальной установки оно не изменяет текущее значение в Time_Set. (точнее говоря даже компилятор не пропускает такой алгоритм)
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Apr 16 2009, 10:40
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Jemmax - так вам по ходу мастер нужен... тогда вам прямая дорога сюда - Описалово - раздел "Fundamental WRITE/READ MASTER" вроде бы laughing.gif

А на счёт траблы вашей - синтезер арёт что насилуют, потому как переменную можно читать из разных процессов , но писать её можно тольок в одном процессе biggrin.gif
Go to the top of the page
 
+Quote Post
RYury
сообщение Apr 16 2009, 12:19
Сообщение #11


Участник
*

Группа: Свой
Сообщений: 70
Регистрация: 4-12-06
Из: Окно Петра в Европу
Пользователь №: 23 119



Цитата(Jemmax @ Apr 16 2009, 14:32) *
Но как только по шине авалон writedata[7..0] приходит число (0-31) для начальной установки оно не изменяет текущее значение в Time_Set


возможно что мастер пишет в слейв, т.е. выставляет сигнал address, write, writedata и не анализирует обратный сигнал от слейва - waitrequest, и прекращает цикл записи (сбрасывает сигнал write), либо waitrequest неправильно формируется от слейва (всегда готов, хотя на деле не так), а мастер пишет в никуда данные.
Go to the top of the page
 
+Quote Post
Jemmax
сообщение Apr 16 2009, 19:47
Сообщение #12





Группа: Новичок
Сообщений: 9
Регистрация: 9-04-09
Пользователь №: 47 399



Скажите а почему мне нужен авалон-мастер для опроса модуля обработки сигнала от энкодера. Если я правильно понимаю мастером является само ядро Nios (либо другое устройство которое может генерить запрос DMA) мне необходимо просто обработать сигналы шины Avalon MM Slave Сделать я это хочу путем опроса "проводов" chipslect, read_n, write_n, readdata[7..0] , writedata[7..0] которые заходят в модуль обработки сигналов энкодра
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Apr 17 2009, 12:15
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Если слейв у вас есть, с выведенным интеруптом, то в принципе можно и ниосом опрашивать....
Но тормоз он ещё тот...
Go to the top of the page
 
+Quote Post

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

 


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


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