FAQ

Version 1 (Dmitry Smekhov, 01/11/2012 01:11 am)

1 1
h1. FAQ - Часто Задаваемые Вопросы
2 1
3 1
h2. Общие вопросы
4 1
5 1
h3. Это действительно работает ?
6 1
7 1
Да. Этот проект стал основным для компании "Иструментальные Системы" http://www.insys.ru
8 1
9 1
h3. А под какой лицензией это распространяется ?
10 1
11 1
Тип лицензии пока не определён. Возможно будет GPL. 
12 1
13 1
h3. А зачем Вам это надо ?
14 1
15 1
Сложный вопрос, вот несколько мыслей по этому поводу:
16 1
# Из любви к искусству.
17 1
# Что бы сохранить знания. 
18 1
# Что обеспечить тестирование в разных проектах и на разном оборудовании.
19 1
20 1
h3. А у Вас теперь все проекты будут Open Source ?
21 1
22 1
Нет. 
23 1
24 1
h3. А на каких модулях проекты уже работают ?
25 1
26 1
* Virtex 5 - AMBPEX5, ADP201x1, FMC105P 
27 1
* Virtex 6 - FMC114V,  ML605
28 1
* Spartan 6 - FMC103E, SP605
29 1
30 1
h2. Прошивка ПЛИС
31 1
32 1
h3. Почему такие странные названия: pcie_core64_m1, pcie_core64_m2, pcie_core64_m4 и т.д.
33 1
34 1
* pcie_core - это ядро для PCI Express
35 1
* 64 - используется 64-х разрядная шина
36 1
* m1, m2, m4 - это метки различных модификаций ядра для разных ПЛИС и разных локальных шин.
37 1
38 1
h3. В чём отличие между pcie_core64_m1 и pcie_core64_m2
39 1
40 1
* pcie_core64_m1 - это контроллер PCI Express для Virtex 5 и выходом на шину PLD_Bus. В пространстве BAR0 реализованы только блоки управления PE_EXT_FIFO (под номерами 4 и 5)
41 1
* pcie_core64_m2 - это надстройка над pcie_core64_m1. Добавлен блок управления PE_MAIN и сделан переход на шину LC_Bus
42 1
43 1
h3. Зачем нужна шина PLD_Bus ? 
44 1
45 1
Шина PLD_Bus понадобилась что бы отделить реализацию контроллера от типа используемой шины. PLD_Bus может быть адаптирована к параллельным или последовательным шинам. В данный момент есть компоненты для подключения к шинам LC_Bus и WISHBONE. 
46 1
47 1
h3. Возможно ли подключение PLD_Bus к AXI ?
48 1
49 1
Возможно. Но в данный момент такого моста нет.
50 1
51 1
h3. Зачем нужно разделение на пространства BAR0 и BAR1 ?
52 1
53 1
Для разделения управления каналом DMA и приложением.
54 1
Различия:
55 1
* На пространство BAR0 наложено ограничение - в нём обязательно должны быть реализованы блоки управления PE_EXT_FIFO для управления каналом DMA.
56 1
* На пространство BAR1 никаких ограничений не наложено. 
57 1
* BAR0 - всегда работает на частоте компонентов IP Core Xilinx. (250 MHz для Virtex 5)
58 1
* BAR1 - может работать на другой частоте (например 266 MHz)
59 1
* Канал DMA работает только с BAR1
60 1
* BAR0 - фиксированный тип шины
61 1
* BAR1 - шина PLD_Bus с возможностью перехода на LC_Bus, WISHBONE.
62 1
63 1
64 1
h3. Обязательно ли делать обращения к регистрам через 32-х разрядные команды ?
65 1
66 1
Обязательно. Байтовые операции не поддерживаются.
67 1
68 1
h3. А что произойдёт если я дам команду на запись или чтение байта ?
69 1
70 1
Не знаю. Попробуйте и сообщите о результате.
71 1
72 1
h3. А мне обязательно надо использовать байтовые операции. Что делать ?
73 1
74 1
Необходимо модифицировать компоненты core64_rx_engine, core64_tx_engine, core64_reg_access, core64_pb_disp, core64_pb_transaction; Но это получиться уже другой контроллер.
75 1
76 1
h3. Канал DMA за одну операцию производит передачу блока в 4096 байт. Это обязательно ?
77 1
78 1
Да. Это фундаментальное свойство. 4096 байт это размер страницы для компьютеров Intel x86. Ограничение на кратность 4096 байт для размера и начального адреса блока данных позволило существенно упростить контроллер.
79 1
80 1
h3. А мне обязательно надо использовать канал DMA с размером буфера не кратным 4096 байт. Что делать ?
81 1
82 1
Сделать другой контроллер.
83 1
84 1
h3. Что такое сигнал "Запрос DMA" (dmar0, dmar1) ?
85 1
86 1
Сигнал "запрос DMA" сообщает контроллеру что источник или приёмник данных готов к обмену. 
87 1
Например в системе ввода данных от АЦП в компьютер между АЦП и DMA контроллером находится FIFO. Сигналом запроса DMA должен является флаг заполнения FIFO на 512 64-х разрядных слов. Как только в FIFO появится 512 слов будет установлен сигнал запроса DMA и канал DMA передаст 4096 байт в компьютер. Это свойство позволяет запрограммировать DMA канал на приём большого блока данных (например 1 Гбайт) или на непрерывный ввод данных. При этом с центрального процессора снимается задача слежения за заполнением данных в FIFO.
88 1
89 1
h3. DMA контроллер может работать без сигнала "запрос DMA" ?
90 1
91 1
Да. Это нормальный режим для работы DMA контроллера с памятью в пространстве BAR1. 
92 1
93 1
h3. Какой адрес DMA контроллрер выставляет на шине PLD_Bus ?
94 1
95 1
В данный момент это адрес из регистра LOCAL_ADR в блоке PE_EXT_FIFO. Адрес является константой. Это нормально для работы с FIFO. Но не всегда удобно для работы с памятью. Возможно будет введён режим модификации локального адреса в будущих версиях контроллера.
96 1
97 1
h3. Зачем понадобилось объединять дескрипторы в блок дескрипторов ?
98 1
99 1
Для ускорения работы с фрагментированной памятью. 
100 1
101 1
h3. Зачем в блоке дескрипторов присутствуют сигнатура и контроляная сумма ?
102 1
103 1
При ошибке программирования DMA канал обнаружит несоответствие контрольной суммы и остановит работу. Если бы такой проверки не было, то произошло бы зависание компьютера.
104 1
105 1
h2. Организация обмена
106 1
107 1
h3. Как обеспечить непрерывный ввод и обработку принимаемых данных ?
108 1
109 1
* Необходимо выделить несколько буферов, например 8. И из них сформировать кольцевой буфер, т.е. после заполенения буфера 0 будет заполнятся буфер 1, потом 2 и т.д. А после заполения буфера 7 будет заполняться буфер 0. Буферы должны быть достаточно большими, например 8-16 Мбайт, или больше.
110 1
111 1
* После того, как DMA канал заполнит буфер 0, он сформирует прерывание и сразу начнёт заполнять буфер 1 и т.д.
112 1
113 1
* Центральный процессор получает прерывание и через обработчик прерывания сообщает прикладной программе что очередной буфер готов. Программа его обрабатывает. Необходимо обеспечить, что бы скорость обработки была больше, чем скорость ввода данных.
114 1
115 1
h3. Какова загрузка центрального процессора для обслуживания DMA контроллера ?
116 1
117 1
При использовании больших буферов загрузка центрального процессора минимальна ~0.01%
118 1
119 1
h3. Из каких соображений надо выбирать число и размер буферов ?
120 1
121 1
Необходимо помнить, что существуют паузы в процессы выполнения программы. Эти паузы должны быть скомпенсированы размером буфера.
122 1
123 1
h3. Существует ли возможность приостановить обмен данными ?
124 1
125 1
Да. Для этого существует бит PAUSE в регистре DMA_CTRL блока PE_EXT_FIFO. 
126 1
Если обработчик прерываения обнаруживает, что прикладная программа не успевает обработать данные, то обработчик может приостановть процесс. Такой режим работы называется "согласованный режим". 
127 1
Он подходит для систем, в которых возможна приостановка данных. Например для систем связи. 
128 1
129 1
130 1
h2. Программное обеспечение
131 1
132 1
h3. А опубликованы исходные тексты драйвера ?
133 1
134 1
Для Linux - опубликованы.
135 1
Для Windows - нет.