Jump to content

    

Ynicky

Участник
  • Content Count

    72
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Ynicky

  • Rank
    Участник

Контакты

  • ICQ
    Array

Recent Profile Visitors

1327 profile views
  1. А где 4 такта на извлечение команды? Если, конечно, Вы не сделаете извлечение 4 слов команды за 1 такт. Иначе нарушается конвейер при выполнении каждой команды за 1 такт. Я уже не говорю о том, что команды обработки данных перемежаются с командами ветвления. Хотя это справедливо и для тех RISC, где каждая команда имеет длину в 1 слово.
  2. Давайте порассуждаем. Команда в Вашем случае должна содержать: Опкод - 1 слово. Адрес первого операнда - 1 слово. Адрес второго операнда - 1 слово. Адрес приемника - 1 слово. + 2 такта минимум на чтение операндов. + 1 такт на исполнение в АЛУ. + 1 такт запись результата. Итого получили 8 тактов. В RISC процессоре: 2 такта на загрузку первого операнда. 2 такта на загрузку второго операнда. 1 такт на исполнение в АЛУ. 1 такт на запись результата. Итого получили 6 тактов. В Вашем случае можно сэкономить 1 такт начиная считывать первый операнд не дождавшись конца загрузки команды. Можно еще укоротить адреса операндов (например в одном слове 2 адреса источников).
  3. Мне очень помогло это: lec9_2.pdf http://www.kurtm.net/archive/2003-Fall-cs1..._html/lecnotes/
  4. А как посмотреть выход MAX2769 (и какой) в аналоговом режиме? Про генератор я подумал в первую очередь. Я использую NT3225SA-26M-NSA0322T. У него стабильность 2,5 ppm. Это гораздо меньше 26 кГц. Насколько я понял, у всех литер одинаковый сдвиг. Точный сдвиг можно будет вычислить после того как программисты осилят вторичку (определение координат в реальном времени). Николай. PS. Забыл добавить. На трех экземплярах приемника результат аналогичен.
  5. Наконец-то принял сигналы спутников. Оказалось, что все литеры сдвинуты примерно на +26 кГц. С чем это связано, пока не понял. Работаю как с полосой +-4 МГц, так и с +-8 МГц. С полосой +-8МГц неравномерность АЧХ очень сильная. При работе АРУ вообще непонятная АЧХ. Без АРУ - лучше. Выброс на частоте 1600 МГц - 32-я гармоника частоты 50 МГц на которой работает процессор. Настройки MAX2769 следующие: +-4 МГц: 0xA291FEB0 0x85502881 0xEAF71DC2 0x9EC00083 0x0C820D04 0x80000705 0x80000006 0x10061B27 0x1E0F4018 0x14C04029 +-8 МГц без АРУ: 0xA291FFD0 0x85512881 0xCAF71DC2 0x9EC00083 0x0C820D04 0x80000705 0x80000006 0x10061B27 0x1E0F4018 0x14C04029 +-8 МГц с АРУ: 0xA291FFD0 0x85502881 0xEAF71DC2 0x9EC00083 0x0C820D04 0x80000705 0x80000006 0x10061B27 0x1E0F4018 0x14C04029 АЧХ прилагаю. Николай. PS. Два месяца назад написал в службу поддержки ф.MAX. Задавал вопросы по MAX2769. В ответ запросили больше информации. Послал. С тех пор жду ответа.
  6. Интересно, а какая у Вас получится АЧХ со следующей конфигурацией: 0xA2919A30 - полоса пропускания 2,5 МГц. Остальные регистры не менял. То, что получилось у меня - во вложении. Николай.
  7. Сделал тоже самое у себя. Интересные получились результаты. Николай.
  8. Отсчеты с АЦП мне не доступны, да и памяти столько в FPGA нет, чтобы их сохранить. А с MAX2769 я так и не могу принять ни одного спутника, ни в режиме ФНЧ ни в режиме ПФ. Значения с интеграторов я использую каждую эпоху. Усредняю и подставляю в формулу фазовой автоподстройки. Каждые 4мС записываю в управляющие регистры корректирующую информацию (новое значение фазы несущей). Для неподвижного объекта это время можно увеличить. Для динамического (самолет) больше нельзя сделать. Будет срыв автоподстройки. А вообще коррелятор у меня позаимствован у GP2021 (идея). Только я его модифицировал для работы с широкой входной полосой несущего сигнала, чтобы обрабатывал весь спектр ГЛОНАСС. И программа за основу взята у ф.Zarlink, которую они прилагают к своим отладочным платам. Николай.
  9. В проекте RF приемника на GP2015 с выхода 1-й ПЧ идет ответвление для ГЛОНАССа на квадратурный смеситель U2794B, далее через RC ФНЧ - на АЦП AD9066 (используются 2 старших разряда). Для NAVSTAR-а используется остальная часть GP2015. АЧХ прикрепил. Так как схема довольно сложная, решил перейти на MAX2769. Дамп памяти для построения спектра в MATLAB-е прикрепил. Текс .m файла привожу ниже. fid = fopen('f1601bw18.dmp','r'); [a,count] = fread(fid,'uint16'); fclose(fid) c = log10(a) plot(c,'r-') title('GLONASS') ylabel('Log10(P)') xlabel('Frequency (0 = +13MHz, 2600 = 0MHz, 5200 = -13MHz (1 = 5000Hz))') hold on В состав моего коррелятора входят 2 синтезатора частот (для кода и несущей), комплексный смеситель (на основе ПЗУ), накапливающие сумматоры-интеграторы (за период 1 эпоха ПСП (1 мС)), а также счетчик местной шкалы времени. Каждую эпоху процессором считываются получаемые на интеграторах и других регистрах (псевдодальности, счетчик эпох и др.) отсчеты, которые обрабатываются и используются для задания корректирующей информации коррелятору. Минимальное время петли обратной связи - это 4 мС в фильтре ФАП. Фильтр слежения за кодом замыкается раз в 20 мС. Процессор можно применить общего назначения, только для вычисления координат требуется плавающая точка. Экспериментируя с MAX2769 установил, что нулевую центральную частоту внутреннего фильтра ПЧ можно выставить записав все 1 в поле FCEN. АЧХ для полосы 8 МГц с нулевой центральной частотой фильтра также вложил. Николай. f1601bw18.rar
  10. Коррелятор использую самодельный (написан на VHDL). При работе с приемником на GP2015 работают как ГЛОНАСС так и NAVSTAR. Только там у меня рабочая частота 25 МГц. В корреляторе есть возможность работы и на частоте 26 МГц, что используется в проекте с MAX2769. Коррелятор управляется софтпроцессором. АЧХ снимаю с помощью специальной программы. Настроил MAX2769 следующим образом: 0xA2918F90 0x85592881 - sign & mag 0xFEFF1DC2 0x9EC00083 0x0C820D04 - 1601MHz, RDIV=26 0x08000705 0x80000006 0x10061B27 Два последних регистра не конфигурирую (оставляю значения по умолчанию). Изменил Ваши настройки с учетом используемой у меня аппаратуры. АЧХ прилагаю. Выброс вблизи 0-й частоты - полагаю помеха от внутреннего VCO. При изменении центральной частоты VCO меняется и положение этого выброса. Николай.
  11. Сделал RF приемник на MAX2769 с выходами I и q. Коррелятор аппаратный на FPGA. Никак не получается настроить ПЧ приемника на полосу +-9МГц. АЧХ не соответствует тому что надо. Хотя полосы 2,5, 4,2 и 8 МГц в режиме с нулевой ПЧ (zero-IF mode) те что надо. Если не сложно, не могли бы Вы дать настройки каждого регистра MAX2769? Николай.
  12. Нет. Вот его операции АЛУ: // Shift instructions `ALU_OP_SLL: result_o = {1'b0, a_i << b_i[4:0]}; `ALU_OP_SRL: result_o = {1'b0, a_i >> b_i[4:0]}; `ALU_OP_SRA: result_o = {1'b0, {{32{a_i[31]}}, a_i } >> b_i[4:0]}; // Arithmetical instructions `ALU_OP_ADD: if(signed_i) result_o = a_i + b_i; // Result may include a carry bit else result_o = {1'b0, a_i + b_i}; `ALU_OP_SUB: if(signed_i) result_o = a_i - b_i; // Result may include a carry bit else result_o = {1'b0, a_i - b_i}; // Logical instructions `ALU_OP_AND: result_o = {1'b0, a_i & b_i}; `ALU_OP_OR: result_o = {1'b0, a_i | b_i}; `ALU_OP_XOR: result_o = {1'b0, a_i ^ b_i}; `ALU_OP_NOR: result_o = {1'b0, ~(a_i | b_i)}; // Conditional instructions `ALU_OP_SEQ: result_o = (a_i == b_i) ? 33'b1 : 33'b0; `ALU_OP_SNE: result_o = (a_i != b_i) ? 33'b1 : 33'b0; `ALU_OP_SLT: if(signed_i) result_o = ({~a_i[31],a_i[30:0]} < {~b_i[31],b_i[30:0]}) ? 33'b1 : 33'b0; else result_o = (a_i < b_i) ? 33'b1 : 33'b0; `ALU_OP_SLE: if(signed_i) result_o = ({~a_i[31],a_i[30:0]} <= {~b_i[31],b_i[30:0]}) ? 33'b1 : 33'b0; else result_o = (a_i <= b_i) ? 33'b1 : 33'b0; `ALU_OP_SGT: if(signed_i) result_o = ({~a_i[31],a_i[30:0]} > {~b_i[31],b_i[30:0]}) ? 33'b1 : 33'b0; else result_o = (a_i > b_i) ? 33'b1 : 33'b0; `ALU_OP_SGE: if(signed_i) result_o = ({~a_i[31],a_i[30:0]} >= {~b_i[31],b_i[30:0]}) ? 33'b1 : 33'b0; else result_o = (a_i >= b_i) ? 33'b1 : 33'b0;
  13. Понятно. Значит, если я сделаю частоту опоры 26 МГц, я могу работать с ВТ кодом. Николай.
  14. Не могу понять какая частота TCXO в этом проекте? И частота среза указана 9 МГц. Нужно сделать GPS/ГЛОНАСС RF приемник, поэтому интересует этот проект. Николай.
  15. Промоделировал "queens". Результаты совпадают с "q.c". Указатели в "q2.c" изменяются на 1, в то время как у меня в процессоре байтовая адресация, т.е. указатели должны меняться на 4. Временно сдвинул адрес в процессоре на 2 разряда вправо и все заработало. 2 Leka: Что нужно (или можно) посмотреть по результатам моделирования? И еще, для чего в программе "q2.c" мы обращаемся к памяти через указатели? Почему нельзя обойтись только регистрами? Ошибок в процессоре больше пока не обнаружил. Николай.