Golikov 0 September 17, 2013 Posted September 17, 2013 · Report post соберитесь, там в начале есть галочка натив фифо! Вам не нужен фифо на шину. Вам нужно встроить фифо в свой модуль, нафига создавать кучу сигналов для шинного фифо. Да, надо будет написать вывод данных в шину через регистр, но это не сложно, полчасика с отладкой... Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 17, 2013 Posted September 17, 2013 · Report post Не нахожу такого. Вот скрин. Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 17, 2013 Posted September 17, 2013 · Report post это когда вы уже выберите фифо memory and storage-> FIFOs -> fifo Generator элемент сделается и добавится в проект, потом по нему 2 раза кликните откроется (или сразу по добавлению откроется) визард. на первой странице натив - акси, ставьте галку натив. работает оно так, у него есть шина входная и выходная, клок, ресет, и врайт енайбл и реад енайбл. Если фифо не в ресете, то на каждый клок при установленном реад енайбле на выходе появляются данные, а при установленном врайт енайбле данные со входа пихаются в фифо. то есть алгоритм считали данные а АЦП, поставили на вход фифо, дернули на 1 клок врайт енайбл и готово. дальше каждое чтение из регистра с шины (со стороны проца) выставляете данные с выхода фифо на шину, а сами на 1 клок дергаете реад енайбл. вот и все... остается только следить за опустошением - переполнением фифо, в нем есть счетчик данных и соотвествующие сигналы кстати эти сигналы очень для вас важны, если фифо опустошится значит скорости передачи хватает, если переполнится то нет. Потерь данных с фифо не должно быть, если оно не переполнилось и не опустошилось Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 17, 2013 Posted September 17, 2013 · Report post Посмтотри пожалуйста правильно ли там все, вот что получилось пока что(модуль ацп еще не добавлял). Его добавить его то просто как add source? Где его вставить как компонент и связать порты (в каком из файлов). И алгоритм, что ты описал где мне кодить?(спасибо, кстати, что подробно так его описал)). microblaze_adc.rar Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 18, 2013 Posted September 18, 2013 · Report post все делается в файле user. Это файл предоставлен для вас, все остальные файлы - это файлы обертки, максимум когда их надо редактировать это если вы хотите какие то сигналы прокинуть на ружу из вашего юзера. Тогда эти порты объявляется во внешнем файле и прокидываются во внутрь юзера. архивчик я смог посмотреть только структуру, сами файлики недоступны почему то архив поврежден пишет, 2 раза скачивал, может при заливке сдох... Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 18, 2013 Posted September 18, 2013 · Report post Щас еще раз выложу microblaze_adc.rar Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 18, 2013 Posted September 18, 2013 · Report post во я лошара:) это у меня среда vhd файл приняла за какой то образ диска)... ну да ладно. я увидел пустой юзер файл, это не есть верно) его стоило бы наполнить. А импортить модуль в проект надо уже после того как в ISE вы его напишите, проверите и имплементнете. Честно не очень понимаю чего вы хотите чтобы я посмотрел:) если вас беспокоит что по коду, то лучше кидайте код суда, я его погляжу глазьями, а если по соединениям, то опять же лучше картинки. У меня виндоус 8 и 64 бита, а для ксалинкса - это приговор, так что работаю на виртуалке (не спрашивайте почему так получилось, это карма:)), и надо сделать кучу действий чтобы открыть проект, это утомляет... Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 18, 2013 Posted September 18, 2013 · Report post Юзер пустой, потому что я еще не писал там ничего и не добавлял). Вообщем я так понял сейчас я должен сделать вот что: 1) вставить мой vhdl модуль в проект 2) В user файле где написано USER signal declarations added here, as needed for user logic вставить мой компонент моего ацп модуля. 3) Там же в user где написано --USER logic implementation added here связываю с помощью port map мой ацп компонент с портами user файла. 4) И там же в архитектуре описать алгоритм чтения-записи, что ты мне сказал. Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 18, 2013 Posted September 18, 2013 · Report post да только есть еще 5 пункт 5. в верхнем модуле в который вставлен ваше user надо "прокинуть" порты что вы добавите на ружу. Ну то есть добавить такие же порты в верхнем модуле, и соединить их со входами юзера. дальше проверки и имплементайшен потом импорт его в платформ студию, добавление к процу и так далее... для начала попробуйте без фифо, просто организовать считывание данных с АЦП в процессор через шину. Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 18, 2013 Posted September 18, 2013 · Report post для начала попробуйте без фифо, просто организовать считывание данных с АЦП в процессор через шину. Т.е пока без 4 пункта сделать? (без фифо) Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 18, 2013 Posted September 18, 2013 · Report post ну да, сделайте шаблон на 4 регистра к примеру. Там будет процедура записи и чтения по адресам регистров, уже визардом сделанная. Данные с АЦП просто пихайте в один из регистров, а с проца попробуйте почитать по адресу. Если все получится между АЦП и регистром вставите фифо. Совсем в начале можно даже без АЦП:) просто поймите как оно все работает... Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 18, 2013 Posted September 18, 2013 · Report post Спасибо , буду пробовать) Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 19, 2013 Posted September 19, 2013 · Report post Вообщем добавил ацп модуль, добавил ацп как компонент в user , возник вопрос: при связывании портов adc с user портами не знаю, к чему подключить spi_adc(in). И еще: мне похоже нужно будет добавить еще модули приемника и передатчика, т.к я платой управляю(настраиваю предусилитель и включаю ацп) с компа(посылаю по uart команды). user_logic.rar Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 19, 2013 Posted September 19, 2013 · Report post что такое spi_adc(in). Это данные от АЦП или к АЦП. вам надо юзере сделать такой порт, и к нему подключить. Потом во внешнем модуле сделать такой же порт и подключить его к этому порту юзера. а уж последний подключить через констраин к нужной ноге плис. Логично сделать чтобы команды с компа по уарт принимал процессор микроблайз, раскодировал, понимал что надо и делал это. Доступ к ацп все через те же регистры этого же модуля... Quote Share this post Link to post Share on other sites More sharing options...
vitali36 0 September 19, 2013 Posted September 19, 2013 (edited) · Report post Spi_adc - это вход с ацп. Данные от ацп adc_a : out std_logic_vector(13 downto 0) я привязал к Bus2IP_Data . вам надо юзере сделать такой порт, и к нему подключить. Т.е я могу в user, где описаны порты Bus2IP_Clk : in std_logic; Bus2IP_Reset : in std_logic; Bus2IP_Data : in std_logic_vector(0 to C_SLV_DWIDTH-1); Bus2IP_BE : in std_logic_vector(0 to C_SLV_DWIDTH/8-1); Bus2IP_RdCE : in std_logic_vector(0 to C_NUM_REG-1); Bus2IP_WrCE : in std_logic_vector(0 to C_NUM_REG-1); IP2Bus_Data : out std_logic_vector(0 to C_SLV_DWIDTH-1); IP2Bus_RdAck : out std_logic; IP2Bus_WrAck : out std_logic; IP2Bus_Error : out std_logic создавать порты, которые мне будут нужны и потом привязывать? Там просто написано Bus protocol ports, do not add to or delete Т.е, например у меня есть N количество портов в ацп модуле. Этот модуль я вставляю в проект, потом как компонент в user файл. Порты ацп, которые мне не нужно связывать с портами user файла , но их нужно вывести потом наружу (задать в ucf ) я добавляю к user портам и связываю. А порты ацп, которые мне не нужно ни связывать с user портами, ни выводить наружу, я просто объявляю сигналы(с таким же названием) и связываю их с ними . И в топ файле верхнего уровня сделать тоже самое. Так я понимаю?)) Edited September 19, 2013 by vitali36 Quote Share this post Link to post Share on other sites More sharing options...