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

zvs

Свой
  • Постов

    209
  • Зарегистрирован

  • Посещение

Весь контент zvs


  1. Напрасно надеетесь - PLL совершенно не минимизирует джиттер генератора, а как раз наоборот... Генератор можно поскать у Epson, Crystek или в БМГплюс например...
  2. 1) Снимает... Но собсно дело не в этом - дело в том, что его никто не выставляет :( Оно само... 2) Нет... Не умею я :( А подскажите пожалуйста, куда там смотреть и что в ассемблерном виде я там смогу увидеть? 3) Отладчиком. 4) А можно с этого места поподробнее? Код у меня такой: int main(void) { int result = 0; alt_busy_sleep(160000); do { result = WiznetInit(); // вот тут производится инициализация контроллера // и регистрация прерывания. } while (result == 0); while(1) //ожидание прерывания { if(int_type != 0) { if(int_type != RECV_INT) WiznetRead(); } } /**/ } int WiznetInit(void) { (...)// инициализацию контроллера я пропустил... Для ясности. if(alt_irq_register(0, ptr_int_type, IntHandle)!=0) return(0); //регистрация прерывания else return(1); } static void IntHandle(void* context, alt_u32 id) //обработчик прерывания { alt_u8 type; alt_u8* ptr_int_type = (alt_u8*)context; type = IORD_8DIRECT(COMMON,IR); if(type&&S0_INT_MSK) { type = IORD_8DIRECT(S0,Sn_IR); if(type&&SEND_OK) *ptr_int_type = SEND_OK; else if(type&&TIMEOUT) *ptr_int_type = TIMEOUT; else if(type&&RECV_INT) *ptr_int_type = RECV_INT; else *ptr_int_type = 0; } else *ptr_int_type = 0; IOWR_8DIRECT(S0,Sn_IR,0x1F); //снятие прерывания } И ежели я ставлю brakepoint внутри обработчика прерывания - то могу отловить момент "зацикливания". А ежели иду step-by-step от начала main(), то на следующей строке после alt_irq_register() дебаггер уже не показывает где он находится.
  3. Тему пора переименовывать, ну да ладно... Знатоки NIOS, ежели кто использовал Avalon TriState Bridge для подключения внешей перефирии, подскажите пожалуйста - это вообще возможно использовать прерывание, подключенное через этот мост к NIOS'у? Меня собственно почему сомнение берет - не нашел в mnl_avalon_spec.pdf никаких про то упоминаний. У меня прерывание как-то не так работает. В мосте (Avalon TriState Bridge) определил соответствие между внешней ногой и сигналом irq_n - повесил на 0-е прерывание. alt_irq_register определил не в main, а в отдельной функции. После выполнения "регистрации прерывания" процессор закольцовывается на обработчике прерывания, указанном в alt_irq_register. То есть возникает ощущение, что прерывание возникает постоянно, хотя на самом деле линия стоит - не шелохнется (осциллограф и SignalTap тут единодушны). Может кто сталкивался с такой необходимостью - подключать к NIOS'у периферию, работающую с прерываниями? Поделитесь, как вы ее побеждали, пожалуйста...
  4. C 1) Разобрался - убедил SignalTap 2) Я не одинок во вселенной. Эта проблема как выяснилось нерешабельна. Описано здесь.
  5. Так, с прерываниями все нормально - это я просто сглупил. Просто нужно иметь в виду, что при создании компонента направление сигналов указываются для подключаемого устройства по отношению к шине. Но... 1) Отчего-то в SignalTap не добавляются ноги данных созданной шины 2) При выполнении одной команды чтения генерируется ЧЕТЫРЕ цикла чтения. Я так понимаю, что это связано с тем, что SOPC Builder посчитал, что у моего устройства есть byte_enable, но я, при создании компонента, таких сигналов не задавал :( Читаю макросом IORD_8DIRECT. 3) Кроме того огромное количество варнингов по поводу "Reduced register" где-то внутри процессора. Это нормально?
  6. Я так понял, что у 7.1 багов, связанных с SOPC Builder'ом - как грязи. Поэтому и ковыряюсь на 6.1. Но это лирика. Главное - другое. Переделал все через трайстейт мост и передача (как и прием) таки состоялись!!! Огромное спасибо, Postoroniy_V!! :a14: Осталось придумать как прикрутить прерывания от wiznet'а.
  7. Ну, как говорится, я еще мал и глуп и не видал больших синиц ;) В процессе ковыряния Avalon Tri-state Bridge обнаружилась одна гадкая особенность - он не хочет использовать прерывание от этого самого WizNet'a как входное прерывание для процессора. Только как выход :(
  8. 1) Как раз этим и занимаюсь :) 2) А кеша у меня вроде как нет совсем - NIOS задан в конфигурации "/е" 3) Код... :( Код наибанальнейший. Просто для теста: #include <io.h> int main(void) { int i, a, b; a = 1024; b = 1010; a = a-b; for(i=0;++i<=255;) { if(i>a) { IOWR_8DIRECT(0x2000,0x0000,0x11); } else b = IORD_8DIRECT(0x2000,0x0000); //c адреса 0x2000 начинается пространство Avalon to External Bus Bridge } return 0; } Периферия - кроме Avalon to External Bus Bridge только onchip'овая память (2кБайта) cpu_0 was generated with full capabilities... - это от SOPC Builder'а, ну а Quartus вообще молчит 4) Отладчик родной... Закрома Вы имеете ввиду местные?
  9. Только-только начал ковырять NIOS, посему все чаще хватаюсь за голову со словами "Создатель, как много я еще не знаю!!!". Задачка с виду простая. Есть некая железяка (старая, замучаная макетка) к которой прикручена перифирия в виде Wiznet'овского модуля Ethernet. Есть выдернутая из альтеровской университетской программы "мегафункция" Avalon to External Bus Bridge. Нужно записать 8-битные данные по некоторому адресу шины. Пытаюсь сделать это vfrhjcjv IOWR (или IOWR_8DIRECT), но при пошаговом выполнении в отладчике происходит нечто странное. Выглядит это как будто при попытке записать (или прочитать) данные по адресу, выделенному этому External Bus Bridge'у в SOPC Builder'e данные все-таки записываются (то есть на шине возникают соотвествующие сигналы с avalon_chipselect, avalon_write и т.д.) но потом программа сбрасывается (то бишь выполнение опять начинается с начала) Может нельзя вот так напрямую использовать эти макросы? С другой стороны их активно применяют в NIOS'овском примерчике который называется "memtest". Уважаемые знатоки, подскажите пожалуйста где тут зарыта собака?
  10. Ну что ж.. Итог есть :) На выходе генератора (входе компаратора) гармоника 60 МГц ушла за 70 дБ (две цепочки LC фильтров, разделенных резисторм. Перед первым фильтром резистор поставить не удалось - места на печати не хватило).Но... На выходе компаратора она снова есть, причем той же величины, что и ранее на выходе генератора. Может быть ее только там и нужно было давить?
  11. И так макетирую :) L = 100 нГн (других нет) С = 68 пФ соответственно Efind я видел... :( Синтезаторы от ADI не использовал, уяснил только, что мороки там много, а результат, выданный мне ихней ADISim меня не впечатлил :( Будем Гуглить... 2 rloc: За подарки спасибо, встречный вопрос: чем синтезировали и моделировали? Что за пакет такой?
  12. ПЛИС потребляет тактовую частоту, которая транслируется через АЦП... (то есть у АЦП есть свои выходы DCO+- в LVDS), а при отключении АЦП ничего не меняется :(
  13. Тут весь вопрос в том куда падают неизбежные вторая и третья гармоники сигнала (но это пол-беды) а главное - в количестве поворачивающих коэффициентов формирователя квадратур... 2 deemon: режекторный фильтрик помог - гармоника упала где-то на 7-9 дБ, но этого очень мало... Попробую влепить еще один, но место на макетке катастрофически кончается...
  14. Да вот вся зараза в том, что мне нужны нестандартные частоты: 98,175 МГц и 112,2 МГц причем в малом количестве (по две штучки каждого номинала) и желательно быстро :( 2 deemon - буду попробовать...
  15. Уважаемый blackfin, у меня два вопроса. 1. Где Вы были раньше??? 2. Если Вы их покупали, так чтобы быстро и на нестандарнтую частоту? Я так понимаю, что паразитная гармоника - это продукт биения подаваемого входного синуса с субгармоникой Fd/2. Схема тут возможно и не при чем, виноват генератор. Тогда уж признавайтесь пожалуйста, что у Вас был за тактовый генератор и на какую частоту?
  16. Еще раз всем спасибо за ответы и предложения За документ спасибо, пропробовал, но... ничего не изменилось... Причины (imho) - далее... 2 rloc&&yuri_d Согласен с yuri_d :я тоже не видел решений с использованием кварцев на четных гармониках. Но близкое рассмотрение генератора с помощью БПФ цифрового осциллографа дало следующие результаты: То есть как уже говорилось... Соответственно вопрос: Насколько это тяжко - заказать такой фильтр (и где его можно заказать?) Да нет, со старым генератором (да и с внешним тоже) все было тип-топ... И вовсе это не "самопального" DDC, а вполне классический алгоритм формирования квадратур... Далее. Гм... Долго пытался понять где там усилитель, но все-таки понял, что Вы имеете ввиду - Full-Scale range у меня установлен на 1.536 V p-p. Но мне все же кажется, что это болезнь скорее проиходит от генератора, а не от АЦП. Кстати сразу вопрос, а Вы, уважаемый bms, какую применяли схему тактирования? 2 Stanislav, я тоже опасаюсь схем с ООС в смысле усиления шумов... В этом направлении и копаем-с... А вообще не ндравится мне мой компаратор ADCMP553 - входы у него как-то подозрительно подтянуты к 1.7В - терзают смутные сомнения, что он был придуман в основном для того, чтобы вытаскивать из шумов PECL-ные клоки... Схема - вот: А в смысле монтажа - это почти "наколЕнный" вариант...
  17. Всем ответившим спасибо! Теперь по-очереди: Есть. Гармоника ровно на половине Fd около 60 Дб от основной сигнальной. С компаратора (а также с разветвителя, стоящего за ним - далее подробнее) выходят PECL уровни. Терминацию производил согласно SLLA120, то есть со стороны компаратора pull-down резисторы 150 Ом, со стороны АЦП - последовательно конденсаторы 0,1 мкФ, pull-up резисторы встроены в АЦП согласно datasheet на него. Трансформатор ставил - никакого результата. На выходе компаратора стоит разветвитель cdcm1804 от TI - после включения его делителя становится все гораздо лучше, но я склонен считать, что это не из-за скважности - клоки смотрел оциллографом - визуально duty cycle очень близок к 50%. Тут я согласный - но встречный вопрос - как с этим бороться - опять же после генератора стоит компаратор, который по идее субгармоники должен убирать (или я не прав?) Ну... Тут я немножечко того.. На рисунке показан уже результат обработки (формирование квадратур, фильтрация, децимация), которая производится в ПЛИС после АЦП. Без обработки я могу принять только 12к отсчетов и там есть все, в том числе гармоники сигнального генератора, но вот эту паразитку от тактового генератора практически не видно :(
  18. Здраввуйте! Значит такая проблема. Есть АЦП (AD9430). Был тактовый генератор от Cardinal Components (куплен в БМГ+). У генератора был высокий джиттер - решили поменять. Поменяли - система тактирования стала состоять из генератора синуса от того же БМГ+ и компаратора ADCMP553. Джиттер пропал - хорошо, но... В спектре сигнала с выхода АЦП появилась какая-то паразитная гармоника, отстоящая от Fd/2 (половины частоты дискретизации) на ту же частоту, какую имеет подаваемый гармонический сигнал. (рисунок прикреплен). С прежним высокоджиттерным тактовым генератором таких ужасов не наблюдалось. Такты на АЦП подаются дифференциальными PECLовскими уровнями, причем смена полярности уровней приводит к увеличению уровня паразитной гармоники до 40 дБ. Может быть кто сталкивался с подобной проблемой? Подскажите, кто виноват и что делать...
  19. Наткнулся в одном из Альтеровских примеров на такую запись if(write_to_enable)begin enable_register <= write_data[0]; end else begin enable_register <= enable_register; end А имеет смысл так явно указывать, что ежели не write_to_enable, то регистр должен хранить состояние? Или все всегда будет хорошо и без секции else?
  20. Очень нужен ГОСТ 20265-83 Соединители радиочастотные коаксиальные. Присоединительные размеры. Ежли есть у кого - поделитесь пожалуйста upd. Все, вопрос решен - уже нашел.
  21. По моему если подходить к задаче с точки зрения ее решения, а не с точки зрения обучения ;) то проще всего взять счетчик и пускай себе щелкает по тактовому сигналу (все время) а в тот момент, когда Вам в игре нужно "бросить кубик" просто считывается его значение. :)
  22. 2 Warlord С Мегабайтами разобрался, все было не так как Вы предположили - вместо клока 20 МГц был 15 :) Особую радость Стримера тоже увидел - там запускается QueueSize BeginDataXfer'ов, что дает хорошую защиту приема от загруженности машины. Спасибо!
  23. Не вычитываете FIFO... Других вариантов быть не могёт...
  24. 2 Warlord Ширина шины 16 Проект Streamer это где? upd. Нашел, буду пробовать, спасибо! upd2. Попробовал 10000 с копейками кБайт в секунду. То есть не шибко быстрее чем в моем варианте :( Выкладываю картинки stream - это скриншот Streamer'а, DMS - это статистика, собранная с помошью Device Monitoring Studio. Очень огорчают падения скорости, видные на графике от DMS. Я так понимаю это она (DMS) позагрузила систему - но скорость падает уж очень сильно :(
×
×
  • Создать...