Raven 32 July 15, 2013 Posted July 15, 2013 · Report post Даже если курсач (хотя что за курсач в июле ? :)), в процессе пусть научится чему-то. Польза будет. Будет делать сам, но под присмотром. Share this post Link to post Share on other sites More sharing options...
Maverick_ 17 July 15, 2013 Posted July 15, 2013 · Report post Польза будет. Будет делать сам, но под присмотром. правильно... Share this post Link to post Share on other sites More sharing options...
vitali36 0 July 15, 2013 Posted July 15, 2013 · Report post Это не курсач. ПЛИС Spartan 3an Starter Kit. ADC LTC1407A-1. Вход АЦП подключаю к звуковой разъем компьютера( играет музыка - поступает аналоговый сигнал ). Дальше он оцифровывается на АЦП и после этого данные нужно закинуть на UART и передать на компьютер. АЦП настроен норммально. Проверял на осциллографе. UART отдельно тоже тестировал. Все нормально. Есть отдельные проекты АЦП и UART. В том архиве, что я выше высылал, я пытаюсь собрать это в один проект, дабы передать данные на UART. Не пойму, как их там связать Share this post Link to post Share on other sites More sharing options...
Александр77 1 July 15, 2013 Posted July 15, 2013 · Report post Еще раз повторяю. Для того что бы передать данные от АЦП через UART в ПК надо создать модуль, в котором будет с одной стороны формироваться сигнатура с тестбенча для АЦП, с другой стороны - тестбенч для UART. Еще, как правильно сказали, надо либо отсылать только 8 из 14 (или сколько там?) бит, либо разделить их (эти несколько бит результата преобразования) и побайтно отправлять в UART. Далее объединяете модулем верхнего уровня и вуа-ля! Еще добавлю. При создании модуля управления надо решить и временное согласование. К примеру. Скорость передачи по UART 115200, значит максимум можно выжать 11520 байт/с (10 бит). Следовательно управление АЦП должно либо идти с этой частотой (отбрасываете младшие биты), либо в 2 раза реже (если передаете по два байта). Share this post Link to post Share on other sites More sharing options...
Raven 32 July 15, 2013 Posted July 15, 2013 · Report post 2 vitali36: Сегодня я гляну на ADC и StarterKit, а вы пока обрисуйте в виде блок-схемы типа "3 квадрата - 5 линий" :) то, чего вы хотите добиться. Количество деталей в схеме - чем больше, тем лучше (тока не совсем уж до фанатизма, конечно). Что откуда входит-выходит, разрядности и т.п. Неплохо бы не забыть и об управляющих сигналах, и тактовых тоже. Глядишь, пытаясь изложить в таком виде, и для себя прояснение придет. Вообще-то, с блок-схемы любое проектирование надо начинать. Польза будет. Share this post Link to post Share on other sites More sharing options...
vitali36 0 July 15, 2013 Posted July 15, 2013 (edited) · Report post в котором будет с одной стороны формироваться сигнатура с тестбенча для АЦП, с другой стороны - тестбенч для UART Не очень понятен вот этот момент. Разъясни поподробнее пожалуйста. Тестбенчи я писал, чтобы проверить работоспособность в моделировании isim Edited July 15, 2013 by vitali36 Share this post Link to post Share on other sites More sharing options...
Maverick_ 17 July 15, 2013 Posted July 15, 2013 · Report post Не очень понятен вот этот момент. Разъясни поподробнее пожалуйста. Тестбенчи я писал, чтобы проверить работоспособность в моделировании isim Формируете тестбенч, который формирует/эмулирует поток данных с АЦП (точно так же как должно быть в "железе"). Далее Вы смотрите выход Вашего UART (для отладки можете сделать в тестбенче приемник UART). Имитацию АЦП можно делать с помощью чтения данных из файла... Добиваетесь, чтобы на выходе Вашего UART были данные с АЦП. Это будет работать в том случае если скорость АЦП и Вашего UART равны... Как- то так :laughing: Share this post Link to post Share on other sites More sharing options...
Александр77 1 July 15, 2013 Posted July 15, 2013 · Report post При моделировании УАРТа, к примеру, наверняка подавали байты и сигнал начала передачи, а также тактирования! Вот то же самое надо сделать и в новом модуле - он должен формировать привязанные друг к другу сигналы запуска АЦП, затем чтения результата, далее выдать результат в шину УАРТа и подать сигнал запись данных в передатчик УАРТа. Ожидаем окончания передачи байта. Далее все в вечном цикле. PS Отличием между модулем и тестбенчем можно считать, то обстоятельство, что в тестбенче писали wait for X us; а тут надо сделать таймер из счетчика Share this post Link to post Share on other sites More sharing options...
vitali36 0 July 15, 2013 Posted July 15, 2013 (edited) · Report post Так, c этим разобрался. Теперь момент, который больше всего меня интересует. В топ модуле связывают компоненты с помощью port map, а в entity описывают входы и выходы. В моем случае у АЦП куча входов и выходов и у UART куча входов и выходов. Т.е , как я представляю на рисунке : сначала АЦП со входами и выходами , затем рядом UART. Мне придется связать выходы АЦП со входами UART. И какие выходы и входы описать в entity. Посмотрите файлы( кто скачивал ) и на рисунке черканите. Их хрен свяжешь.. Edited July 15, 2013 by vitali36 Share this post Link to post Share on other sites More sharing options...
Александр77 1 July 15, 2013 Posted July 15, 2013 · Report post Ну если совсем не хотите слушать и делать как советуют, то связывать надо так: В entity назначаете сигналы управления АЦП, выход УАРТа и тактовый вход; Модули управления АЦП и УАРТа объявляете component полностью копируя назначение сиганлов в модулях (там где entity) Назначаете сигналы - выход АЦП (н-р ADC_s:std_logic_vector(13 downto 0)) Затем в begin вставляете в качестве D1: АЦП, а в качестве D2: УАРТ Выход АЦП посылаете в ADC_s. А для входа данных УАРТа пишите =>ADC_s(13 downto 6) - присваивание 8ми битной шине старшей части 14 битной шины. Share this post Link to post Share on other sites More sharing options...
vitali36 0 July 15, 2013 Posted July 15, 2013 · Report post Ну если совсем не хотите слушать и делать как советуют Так я и хочу, как советуют) А управляющий модуль в топ не надо вставлять как component. И есть ли какие-либо порты в управляющем модуле, помимо описания функциональной части? Делаю первый рабочий так сказать проект, так что не серчайте если что.. Share this post Link to post Share on other sites More sharing options...
Александр77 1 July 15, 2013 Posted July 15, 2013 · Report post Управляющий модуль тоже надо компонентом вставлять. В итоге должно быть так Модуль АЦП - выводов x1 из них x2<x1- внешние соединяемые с микросхемой Модуль УАРТа - y1 из них y2<y1 - внешние сигналы (TXD, RXD и тп) В модуле управления, сигналов должно быть ((x1-x2)+(y1-y2)). Их наименование и разрядность должны (рекомендую ибо так проще не запутаться) совпадать с сигналами идущими от АЦП и на УАРТ. Если все сделано верно, то в топовом модуле, каждой паре назначаете один сигнал. Например пара "результат АЦП-модуль управления" - ADC_s(x downto 0), паре "модульь управления - данные УАРТа" -DT_s(7 downto 0) и тд. После объявления компонентов в порт мапе пишете слева - имя порта в компоненте, а справа сигнал куда отослать или откуда принять. Что то аля D1:ADC PORT MAP( clk=>clk, Rez=>ADC_s, .... .... ); Собственно все. Share this post Link to post Share on other sites More sharing options...
vitali36 0 July 15, 2013 Posted July 15, 2013 · Report post Модуль АЦП - выводов x1 из них x2<x1- внешние соединяемые с микросхемой Модуль УАРТа - y1 из них y2<y1 А что за x1, x2, y1, y2. почему неравенства? Share this post Link to post Share on other sites More sharing options...
Maverick_ 17 July 15, 2013 Posted July 15, 2013 · Report post А что за x1, x2, y1, y2. почему неравенства? наверно, имеются ввиду выводу которые идут наружу - из ПЛИС, и выводы которые внутренние для ПЛИС - остаются внутри ПЛИС Share this post Link to post Share on other sites More sharing options...
Александр77 1 July 16, 2013 Posted July 16, 2013 · Report post Именно так: x1, y1 это все порты модулей, а x2,y2- порты для связи с микросхемами. Разница между ними - число выводов остающихся внутри ПЛИС Share this post Link to post Share on other sites More sharing options...