|
|
  |
создание шины Avalon_Memory_Mapped в SOPC_builder, avalon_MM_build |
|
|
|
Apr 9 2009, 08:55
|
Группа: Новичок
Сообщений: 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
|
|
|
|
|
Apr 10 2009, 12:23
|
Группа: Новичок
Сообщений: 9
Регистрация: 9-04-09
Пользователь №: 47 399

|
Да все верно Avalon Memory Mapped slave. Едиственно проблема была в ядре создать эту шину с помощью new_component и выбрать из списка сигналов нужные для данного проекта Теперь нужно выяснить возможно ли сделать шину data двунаправленной чтобы по ней шли данные от енкодера и записывались начальные данные в блок управления енкодером
|
|
|
|
|
Apr 14 2009, 10:21
|
Группа: Новичок
Сообщений: 9
Регистрация: 9-04-09
Пользователь №: 47 399

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

Участник

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

|
Цитата(Jemmax @ Apr 14 2009, 14:21)  я имел в виду чтобы шины readdata[7..0] и writedata[7..0] сделать как одну т.е. занять только восемь проводников. так не получится, нет внутри в плисах (в ядре) Altera тристабильных ресурсов, только на IO крисстала (выходные пины). Делайте модуль с отдельной шиной записи и шиной чтения и подключайте к Avalon.
|
|
|
|
|
Apr 15 2009, 20:54
|
Группа: Новичок
Сообщений: 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.
|
|
|
|
|
Apr 16 2009, 10:32
|
Группа: Новичок
Сообщений: 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. (точнее говоря даже компилятор не пропускает такой алгоритм)
|
|
|
|
|
Apr 16 2009, 12:19
|

Участник

Группа: Свой
Сообщений: 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 неправильно формируется от слейва (всегда готов, хотя на деле не так), а мастер пишет в никуда данные.
|
|
|
|
|
Apr 16 2009, 19:47
|
Группа: Новичок
Сообщений: 9
Регистрация: 9-04-09
Пользователь №: 47 399

|
Скажите а почему мне нужен авалон-мастер для опроса модуля обработки сигнала от энкодера. Если я правильно понимаю мастером является само ядро Nios (либо другое устройство которое может генерить запрос DMA) мне необходимо просто обработать сигналы шины Avalon MM Slave Сделать я это хочу путем опроса "проводов" chipslect, read_n, write_n, readdata[7..0] , writedata[7..0] которые заходят в модуль обработки сигналов энкодра
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|