Перейти к содержанию
    

2 часа назад, Yuri124 сказал:

А какой контроллер используете? https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug_embedded_ip.pdf

Если тот, который в п.29 - то у него

 

 

да это он. 

это возможности dma, те какими размерностями "слов" можно трансферить данные. На сколько я понял просто выбираешь один или несколько или все размерности и доопределяешь уже в регистре контроля перед трансфером.

 

у меня основная проблема в том что я не могу записать регистры. 

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

 

 

Изменено пользователем Drakonof

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

2 hours ago, Drakonof said:

это возможности dma, те какими размерностями "слов" можно трансферить данные

Да, уже сам понял, что не в этом дело :)

Если щелкнуть по интерфейсу (control port slave) или же по всему блоку DMA - не появляется ли подсказка - временная диаграмма работы шины - какие сигналы в какой последовательности подавать?

Изменено пользователем Yuri124

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/26/2020 at 7:45 PM, Drakonof said:

правильно ли я задаю смещения регистров? в даташите написано просто 0,1,2,3,6, но передавая эти цифры нужно ли их домнажать на 4?

Какая ширина шины адреса control port? Если 3 бита - то будет по 4 байта на единичное приращение адреса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

55 минут назад, Yuri124 сказал:

Какая ширина шины адреса control port? Если 3 бита - то будет по 4 байта на единичное приращение адреса.

С этим разобрался. Ширина 3 бита, следовательно адресация регистров 1,2 и тд. 

3 часа назад, Yuri124 сказал:

 

Да, уже сам понял, что не в этом дело :)

Если щелкнуть по интерфейсу (control port slave) или же по всему блоку DMA - не появляется ли подсказка - временная диаграмма работы шины - какие сигналы в какой последовательности подавать?

 

Там единственная ссылка на документацию в которой всё взаимодействие с ядром идет через ниос и следовательно через api драйвера. 

Не хочу программно делать, слишком затратно ради одного dma ставить ниос..  Хотя повторюсь, что пробовал программно это сделать и оно работало.

Как через стэйт машин заставить его работать не понимаю, может не предназначено, но это было бы странно

Изменено пользователем Drakonof

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так а временную диаграммку QSYS не подсказывает?

У вас сигнал записи постоянно активный, может его дергать нужно (но это вряд ли) или сначала выставить на шину адрес-данные, потом - сигнал записи...

Попробуйте сделать такой этап - записать в регистр и считать из него  - до тех пор, пока не получится.

Я применял sgdma (который в главе 30) - заработал сразу. Этот DMA не пробовал - надо была 64-битная шина адреса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

29.06.2020 в 10:19, Yuri124 сказал:

А какой контроллер используете? https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug_embedded_ip.pdf

Если тот, который в п.29 - то у него

 

 

я могу  его  поставить, но боюсь что никогда не работал с дескрипторами  и плохо представляю что это. Можно попробовать.. 

Вы этим ip из стэй машины управляете  или из Nios?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

почитал доку к dma, посмотрел код. Ну вы же не заполняете регистры корки DMA.

 

1) state == 0. В регистр 1 хотите писать адрес источника (30000), но не пишите в регистр ничего. write = 0
2) state == 2. В регистр 2 хотите писать адрес получателя (31000), но не пишите в регистр ничего. По прежнему write = 0;

и тд..

то есть у вас регистры вообще не заполняются.

Нужно при каждом НЕ холостом state (0, 2, 4, 6, ...) дергать write в единицу. И потом ее сбрасывать (кстати не обязательно, но наверное лучше в ноль ставить при state 1, 3, 5, 7...)

Но я делаю обычно так

always @(posedge clk) begin
	if (write)
  		write <= 1'b0;
end
  	

Так у меня дергается write на 1 такт

ps. На шестом стейте вы запускаете трансфер, пытаетесь прописать 9. Будет побайтно перекидывать память. Можно попробовать писать значение 12 (в десятичной системе) в регистр. Будет по 4 байта перекидывать.

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Drakonof said:

этим ip из стэй машины управляете  или из Nios?

Из автомата. Только обычно автоматы я пишу из 2-3 always блоков - не нужно запоминать, какой сигнал когда установлен и когда его нужно сбрасывать, сбрасывается автоматически. И сигналы устанавливаются сразу в "текущем" состоянии, а не в следующем. (может, несколько сумбурно объяснил).

15 minutes ago, new123 said:

write = 0

Так там же write_n.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

46 минут назад, new123 сказал:

state == 0. В регистр 1 хотите писать адрес источника (30000), но не пишите в регистр ничего. write = 0

спасибо.

Но разве там сигнал write_n не инверсный? те для записи регистра нужно ставить 0, а не 1.

9 минут назад, Yuri124 сказал:

Из автомата. Только обычно автоматы я пишу из 2-3 always блоков - не нужно запоминать, какой сигнал когда установлен и когда его нужно сбрасывать, сбрасывается автоматически. И сигналы устанавливаются сразу в "текущем" состоянии, а не в следующем. (может, несколько сумбурно объяснил).

Простите, не будет нагло попросить у Вас пример для sgdma? думаю лучше ставить ту ip по которой совершенно точно можно проконсультироваться) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

31 minutes ago, Drakonof said:

Но разве там сигнал write_n не инверсный? те для записи регистра нужно ставить 0, а не 1.

наверное пора изучить шину Avalon-MM =)

https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/manual/mnl_avalon_spec.pdf

конкретно раздел 3.5 и таблицу 9 из раздела 3.2

31 minutes ago, Drakonof said:

write_n не инверсный?

в альтеровский доках это называют Active Low. Но в авалоне этот сигнал Active High

 

Quote

Except for Avalon Conduit interfaces, each interface may include only one signal of each signal role. Many signal roles allow active-low signals. Active-high signals are generally used in this document

 

write write_n 1 Master → Slave Asserted to indicate a write transfer. If present, writedata is required.

 

Такс, я прошу меня извинить.

Дочитал дальше 

Quote

Some Avalon-MM signals can be active high or active low. When active low, the signal name ends with _n.

Интересно, что у меня при экспорте наружу никогда не экспортировался _n сигнал, я даже не знал о его существовании. Правда наружу авалон я всегда вытаскивал через Avalon Pipeline Bridge

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 минут назад, new123 сказал:

Такс, я прошу меня извинить.

Дочитал дальше 

В любом случае большое спасибо, что стараетесь помочь) это приятно)

 

Изменено пользователем Drakonof

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Посмотрел первое сообщение ваше. Вы юзаете Lite Quartus 18

А внизу вам QSYS пишет, мол поддержка DMA Controller будет в релизе Standart. Может в этом причина?
Погуглил, таких сообщений хватает, там всем отвечают, что тогда нужно юзать в Standart

 

А модератор Альтеры отвечает что с 18.1 Лайта есть поддержка

https://community.intel.com/t5/Programmable-Devices/Will-the-DMA-Controller-altera-avalon-dma-nbe-supported-in/m-p/663673/highlight/true

Изменено пользователем new123

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

56 minutes ago, Drakonof said:

пример для sgdma?

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

Но там сложного ничего нет, интуитивно понятно сигналы выставляются. Единственное, в каком-то IP блоке было такое, чтобы стереть - надо было писать 1, а не 0.

 

Посмотрите http://www.sunburst-design.com/papers/CummingsICU2002_FSMFundamentals.pdf  

Изменено пользователем Yuri124

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 минут назад, new123 сказал:

 

А модератор Альтеры отвечает что с 18.1 Лайта есть поддержка

я думаю, если бы она была не доступна в lite, то qsys не сгенерировался бы, плюс из ниоса эта ip работает. 

8 минут назад, Yuri124 сказал:

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

Но там сложного ничего нет, интуитивно понятно сигналы выставляются. Единственное, в каком-то IP блоке было такое, чтобы стереть - надо было писать 1, а не 0.

 

Посмотрите http://www.sunburst-design.com/papers/CummingsICU2002_FSMFundamentals.pdf  

 

я так же про данный dma думал))))

да, всё еще будет актуально) спасибо. Почитал про дескрипторы и sg режим, мне понравилось, мне кажется лучше её поставить, хорошенько в ней разобраться и тогда можно её к pcie прикрутить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Взял Ваш DMA IP (из 15-го Квартусв), поставил в QSYS, щелкнул по порту управления - получил временную диаграмму работы с портом. 

4.thumb.png.f742c3068f6c34d18a0d59e2187239f1.png

 

Надо три такта, чтобы сделать запись или чтение в порт.

 

Возможно (но это не точно - нужно пробовать) - если писать/читать последовательно по ряду адресов - можно на третьем такте выставлять данные для следующего адреса, при этом не "щелкать" сигналами /CS и /WR

Изменено пользователем Yuri124

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...