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

MAZZI

Свой
  • Постов

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

  • Посещение

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


  1. ИКМ-15

    Что ещё мы тут выяснили опытным путем: :) Вначале данные заходят на так называемый мини-скремблер (то что уже называли XOR, он то и делал сигнал похожим на NRZI), и после идут на кодировку AMI или NRZ. Поэтому и получилось у меня что данные якобы идут с инверсией через фрейм (это в том режиме, когда не вставляется единица перед фреймом, если вставляется, то кодировка была бы более менее одинакова). Не кодируется по XOR сам синхросигнал, т.к. его видно отчетливо везде одинаково. Теперь следующий вопрос, другие биты в нулевом тайм-слоте кодируются по XOR: мультифреймовая, сигнализация, резерв (кстати что туда вставлять, единицу?) ? И ещё заодно подскажите чем заполнять биты сигнализации, если она не используется и мы полностью генерим нулевой тайм-слот? И если фреймовая метка не кодируется, то первый бит первого таймслота по XOR какое состояние берет, то что было перед фреймовой меткой или какое-то фиксированное число?
  2. ИКМ-15

    4 cdq ты, кстати, не ответил по поводу рисунка и NRZI. ещё скажи ты с AMI свое устройство проверял? а то такое чувство, что ты сам это додумал по поводу единицы на последнем бите фрейма перед следующей передачей, в силу того что не было описания... и по поводу какая разница, то разница есть, ведь необходимо добиться совместимости с другими устройствами, а не только с нашими, поэтому и следует работать по общим правилам.
  3. ИКМ-15

    Если можешь, то дай пожалуйста архив :), самое идеальное, если ты его ещё в письменном виде дополнишь пояснениями, если не сложно. Вот картинка с NRZ и NRZI, из выше описанного я понял что это код NRZI http://www.intuit.ru/department/network/baslocnet/3/3-17.gif Вот это совсем тяжело!!! Это и есть NRZ+ ??? И что будет если передача идет без фрейма? Куда мне эту 1 засунуть? :) Умоляю нарисуйте временную диаграмму с пояснениями где, что, куда!!! Согласен, возможно это наворот, но он проявляется да анализаторе, когда просматриваем линию и вполне логичен для фреймовой синхронизации, иначе если будет фиксированный код в тайм-слоте (а это вполне вероятно, к примеру, флаги HDLC) можно будет только на более высоком уровне определить ошибку, а это не есть хорошо!!! Да и по поиску/потери фрейма (110) четыре подряд поймал/четыре подряд потерял такие ложные ловли фреймов будут всегда... Вообще раздражает такой стандарт, мало того что нигде не описан, ещё в NRZ(I), если передавать длинные последовательности нулей умирает выходной трансформатор при передачи длинного положительного импульса (проверяли в AMI нормально, в NRZ(I) умер), прям сырой дальше некуда, не зря не получил распространения, но сделать то его надо... Я ещё не говорил с начальством, но кто готов продать стандарт? мож у кого есть?
  4. ИКМ-15

    Я правильно понял, то что ты описал XOR текущего с предыдущим, по человечески это называется NRZI кодировка (есть перепад = 1, хранение = 0)? И это не одно и тоже NRZ+ и NRZI? Если нет, напишите, пожалуйста чем отличается NRZ+ от NRZ? В силу того, что нет нормального описанного стандарта, сейчас мы анализируем два решения от разных производителей (у них тоже на свои устройства нет описания), выяснилось, что по крайней мере они действительно в линию передают не RZ, как я предполагал ранее, а NRZ (или NRZI, что более вероятно). Прикольно ещё то, что у одного производителя кодировка пишется NRZ, у второго NRZI, но оба прекрасно друг друга понимают. И вот тут ещё один момент требующий пояснения и который ввел меня просто в тупик :) . Мы использовали фреймовый режим и задавали IDLE код во все тайм-слоты кроме нулевого, тут обнаружился прикол, из поведения сигнала похоже он данные через каждый фрейм инвертирует, это вполне возможно для того, чтобы более корректно было отлавливание фрейма, не изменяя фреймовый тайм-слот через фрейм инвертировать все остальные (мы такую фишку уже используем, чтобы с похожим протоколом на E1 передавать большее кол-во тайм-слотов, не реализуя E2 или E3). НИГДЕ в документации об этом даже намека нет, причем два разных производителя спокойно друг друга понимают и PING проходит. Это значит, что информация наверняка в нулевом слоте. Какой бит за это отвечает? Дайте ссылку, где взять информацию? А возможно и не в бите дело, а он обязательно ищет Мультикадровую синхронизацию (Сверх цикловая) и там смотрит четный/нечетный, чтобы поставить инверсию? Причем это мы проверяли как в NRZ(I) так и в AMI, поведение одинаково, кодировка физического уровня не причем.
  5. ИКМ-15

    Погодите, не усложняем ли мы что-то? Поясните, если передается NRZ, то можем ли мы передать через выходной трансформатор длинную последовательность единиц? Или же на самом деле там используется код RZ, а не NRZ? Может я что-то не правильно понимаю? Разъясните :).
  6. ИКМ-15

    Парни, помогите обогатиться документицией по ИКМ-15, не очень понятны варианты с NRZ, NRZ+; как они реально на линию передаются в какой форме, если AMI нормально документирован, то на "русском" NRZ появляются сомнения, т.к. у разных устройств по разному формы сигналов... Где правда жизни, Братья? :) если можно пришлите на [email protected]
  7. подскажи пожалуйста, где находятся данные книги (1 и 3) на серваке electronix? а то что-то я не очень понял как с твоего места куда ты положил закачивать :)
  8. Ширина 8 Глубина 3584 должно быть 7 BLOCKRAM по 512byte, сжирает 8.
  9. Столкнулся с ситуацией, в 200 Spartan II всего 14 BLOCKRAM, у меня один модуль использует 3584 байт RAM и если реально посмотреть в разводку, то он занимает 4096, т.е. при адрессной шине с шириной = 12, он сожрал ещё один неиспользуемый блок. Я подозреваю, что это как-то связанно с дешифратором на Блок RAM, я ему глубину памяти передаю корректно ровно от 0 до 3583. кто как разбирался с такой ерундой? Память в проекте для меня критична, не влезает проект в ПЛИС.
  10. 4 aem: Спасибо за пример, только к чему он? О другом речь.
  11. Ты изначально заложил то, что у тебя не может быть вход данных in_wr_data однобитовым Вот и мультиплексор вылез о котором ты и упоминал ранее вот здесь ты объявляешь не память а регистр. А тебе нужна именно память, а не набор регистров. Поправь меня, если я не прав, память с разрядностью шины данных в один бит не существует? R_tmp_mem - длинная однобитовая память, с которой я и работаю в дальнейшем по записи и по чтению. для меня в этот момент важен перевод последовательный в параллельный, и ты прав для записи многоразрядных слов это описание некорректно Что то ты здесь перемудрил :) в моем случае R_tmp_mem - двумерный массив [1]x[4096]. Запись reg R_tmp_mem [(WIDTH_WR_DATA*DEPTH_WR-1):0]; как раз это отображает.
  12. то что ты вкратце описал, не очень красивое решение, т.к. все равно обращаешься на компоненты памяти, или я не прав? Да и было бы интереснее если бы ты показал на примере <== что ты имеешь ввиду Моё описание корректно: parameter WIDTH_WR_DATA = 1, WIDTH_WR_ADDR = 12, DEPTH_WR = (1<<WIDTH_WR_ADDR), // это будет 2**12=4096 <== WIDTH_RD_DATA = 8, WIDTH_RD_ADDR = 9 reg R_tmp_mem [(WIDTH_WR_DATA*DEPTH_WR-1):0]; reg [(WIDTH_RD_ADDR-1): 0] R_rd_addr; отсюда: reg R_tmp_mem [(1*4096-1):0]; reg [(9-1): 0] R_rd_addr; // 9 разрядный счетчик (2**9=512) по WIDTH_RD_DATA = 8 получается, что бит я покрываю 512*8=4096 при чтении, всё корректно.
  13. Возможно ты прав, возможно я и ленивый, если ты ставишь вопрос таким образом, то: 1) помоги найди некорректность в моем описании на Verilog выложенное выше. 2) расскажи ещё раз принцип описания на языке, я его что-то не увидел здесь.
  14. Как мы все дружно решаем данную ситуацию, давайте, парни, поднапряжемся, кто-нибудь найдет решение :).
  15. На харр дал ссылки это очень хорошо, спасибо, только вернемся к вопросу, необходимо не ручками брать "готовый компоненты библиотеки унисим типа RAMB_X_X" и конфигурить их, а было бы классно, чтобы синтезатор сам понимал, что из описания модели RAM сделать блочную память, к примеру, как есть описание из Language Templates ISE, которое он в дальнейщем понимает как Block Ram, так и здеcь хотелось бы тоже самое. Это делает код более мобильным и переносимым на другие ПЛИС, ASIC.
  16. Если это обсуждалось (в чем я сильно сомневаюсь), дайте ссылочку, пожалуйста, то же и по appnotes, использовал для примера CORE Generator, он сослался на библиотечный элемент BLKMEMDP_V6_1.v, слишком все тяжело описано в нем, разобраться не могу, сам придумал реализацию, по крайней мере в моделе всё как и задумывалось: <================================================== /* ОБЪЯВЛЕНИЕ МОДУЛЯ */ module C_DPINDEP_RAM /*----------------------------------------------------------------------------- * Объявление параметров: */ #( parameter WIDTH_WR_DATA = 1, WIDTH_WR_ADDR = 12, DEPTH_WR = (1<<WIDTH_WR_ADDR), WIDTH_RD_DATA = 8, WIDTH_RD_ADDR = 9 ) /*----------------------------------------------------------------------------- * Объявление портов: */ ( // порт записи input i_WR_CLK, // тактовый импульс записи i_WR_EN, // строб разрешения записи input [(WIDTH_WR_DATA-1): 0] i_WR_DATA,// шина данных записи input [(WIDTH_WR_ADDR-1): 0] i_WR_ADDR,// адресная шина записи // порт чтения input i_RD_CLK, // тактовый импульс чтения input [(WIDTH_RD_ADDR-1): 0] i_RD_ADDR, // адресная шина чтения output reg [(WIDTH_RD_DATA-1): 0] o_RD_DATA // шина данных чтения ); /*----------------------------------------------------------------------------- * Объявление сигналов: */ reg R_tmp_mem [(WIDTH_WR_DATA*DEPTH_WR-1):0]; reg [(WIDTH_RD_ADDR-1): 0] R_rd_addr; integer j, k; /* synthesis translate_off */ integer i; initial begin for (i = 0; i < WIDTH_WR_DATA*DEPTH_WR; i= i + 1) R_tmp_mem <= 1'b0; R_rd_addr <= {WIDTH_RD_ADDR{1'b0}}; end /* synthesis translate_on */ /*----------------------------------------------------------------------------- * Основной код: */ always @(posedge i_WR_CLK) begin if (i_WR_EN) for (j = 0; j < WIDTH_WR_DATA; j = j + 1) R_tmp_mem[(i_WR_ADDR * WIDTH_WR_DATA) + j] <= i_WR_DATA[j]; end always @(posedge i_RD_CLK) begin R_rd_addr <= i_RD_ADDR; end always @*//(posedge i_RD_CLK) <=== пробовал и в комментарии и без for (k = 0; k < WIDTH_RD_DATA; k = k + 1) o_RD_DATA[k] = R_tmp_mem[(R_rd_addr * WIDTH_RD_DATA) + k]; endmodule <================================================== только вот беда, синтезатор (Symplify_pro8.1) не берет это описание как БЛОЧНУЮ ПАМЯТЬ, и пишет: Could not implement Block RAM. Is the read address registered using the same clock as the RAM? Как правильно описать такую модель для Блочной памяти?
  17. Интересен пример описания блочной памяти, где были бы два независимых конфигурируемых порта по записи и по чтению, с такой синтезируемой моделью можно легко будет делать преобразователи из последовательного в параллельный код, минуя сдвиговые регистры (сейчас я с ними делаю). Какие есть решения по данной реализации на Verilog (VHDL), чтобы ещё и понятно было :)? выкладывайте.
  18. что ты имеешь ввиду? Map Properties\Map Slice Logic into Unused Block RAMs этот аттрибут разводки в Xilinx или что-то другое?
  19. подключи библиотеки Xilinx в ModelSim, вполне возможно из-за этого
  20. 1) Русифицировал согласно инструкции в прикрепленном файле, возможно этот способ многие знают. Русский нормально показывает в UltraEdit других эдиторах, что мне изначально и хотелось, и даже могу писать на русском в ModelSim, но вот беда! :) Когда просматриваю комментарии написанные в UltraEdit, то в ModelSim_6.0d байда полнейшая, тоже самое и наоборот, но писать то я их могу. Как это можно синхронизировать, чтобы и там и там все читалось? 2) И ещё, где можно поставить, чтобы ModelSim автоматически открывал другой эдитор? Возможно что это уже обсуждалось ранее, дайте ссылку, спасибо. Codepages_Change.txt
  21. Установил, полностью с первым сервис паком, признаюсь меня он даже разочаровал, проекты, сделаные в 6.3 не разводятся, ругается на уровне MAP (xc2s200-5pq208): ----- ERROR:MapLib:30 - LOC constraint P106 on RST is invalid: No such site on the device. To bypass this error set the environment variable 'XIL_MAP_LOCWARN'. << это оказалось моей ошибкой, точнее тех людей, кто составлял UCF файл назначения пинов. ----- от чего не понятно, новые библиотеки видно желают лучшего. Сделал примитивный модуль: module proba(input a, output B); assign b = a; endmodule ругнулся на PAR: ----- Started process "Generate Post-Place & Route Simulation Model". An error occurred while executing E:/XilinxISE71/data/projnav/scripts/TclFileWrapper4Halite.tcl << Вот этот глюк вроде как говориться убирается SP1, но он у меня почему-то остался, хотя, если нажмешь повторно на "Generate Post-Place & Route Static Timing" доделает всё до конца. ----- и ещё отстой, синтезатор XST как ранее не понимал constant function в verilog, так и не понимает :(, печально...
  22. ага и если ты работаешь в Verilog, то в файле описания плис, либо в тест бенче прописать строчку: initial $sdf_annotate("имя_файла.sdf"); более подробнее см. описание $sdf_annotate.
  23. По ходу это мой глюк, на работе все нормально проходит, буду переставлять теперь дома.
  24. когда делаю ADD to WAVE любого сигнала, слетает без ругани, без каких-либо предупреждений весь проект моделсима, с лицензией всё впорядке, сломался спокойно (ModelSim_KG_by_EFA_2004-07-28). компиляция проекта тоже прошла, с варнингами, но только на те сигналы, которые я и не использую...
×
×
  • Создать...