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

jokolemene

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о jokolemene

  • Звание
    Участник
    Участник

Контакты

  • ICQ
    Array
  1. 2 embddr: Да, точно! Я понял в чём была моя ошибка. Теперь всё синтезируется без варнинга и защёлок. Большое спасибо за помощь!
  2. Да, регистр был не инициализирован. Инициализировал. Всё равно варнинг рисуется. Посмотрел сгенерённую схему: куча комбинаторики и в самом конце стоят защёлки - в них используются входы ACLR и PRESET. А насчёт порядка счёта: без разницы откуда считать. Единичный бит в регистре только в одном экземпляре. PS: Добавил в цикл break - перестало компилироваться. Выдаёт ошибку: can't resolve reference to object "break".
  3. На порту result_o нужно получить порядковый номер бита регистра result_reg, установленного в единицу. Например, если регистр result_reg имеет размер 8192 бита, и в нём установлен бит номер 4015, то на порту result_o нужно получить число 4015.
  4. Всем привет! Тема такая: создаю схему на верилоге. В ней есть регистр переменного размера. Размер его задаётся через parameter, а затем выполняется перекомпиляция схемы. В результате работы схемы в регистре только один бит устанавливается в 1, остальные остаются в нуле. Вопрос: как комбинаторикой узнать номер этого установленного бита? Вот, например, как это было бы мной реализовано, если бы регистр был постоянного размера, скажем, восьмибитовым: reg [7:0] result_reg; assign result_o = result_reg[7] ? 7 : result_reg[6] ? 6 : result_reg[5] ? 5 : result_reg[4] ? 4 : result_reg[3] ? 3 : result_reg[2] ? 2 : result_reg[1] ? 1 : 0; А как это сделать если регистр переменного размера? Пытаюсь сделать нечто в этом роде: parameter XX = 8; // Количество бит в регистре результата parameter NB = log2(XX); // Логарифм по основанию 2 от XX (вычисляется функцией log2) reg [XX-1:0] result_reg; // Регистр с результатом работы схемы reg [NB-1:0] num_bit_reg; // Номер установленного бита в регистре result_reg assign result_o = num_bit_reg; // result_o - output-порт модуля always @( result_reg ) begin integer i; for( i=0; i < XX; i=i+1 ) if( result_reg[i] ) num_bit_reg = i; end Компилируется и вроде даже работает как надо, но при компиляции выдаётся warning: inferring latch(es) for variable "num_bit_reg", which holds its previous value in one or more paths through the always construct. Как сделать так, чтобы этого варнинга не было? Очень уж мне такие варнинги не нравятся. Да и как схема синтезируется в случае подобных конструкций - не совсем понятно. А я люблю, когда всё понятно и прозрачно.
  5. Могу. Вот две картинки. PS: заметил особенность - если к этим виртуальным ножкам прицепить "неоптимизированные" сигналы - всё нормально синтезируется без выдачи подобной ошибки.
  6. Всем привет! Может вопрос детский, но что-то внезапно заступорил меня. Тема такая: нужно проверить работу синхронизатора между двумя модулями. Для этого нужно поподавать на один модуль такты, сдвинутые на разную величину времени относительно тактов другого модуля. Вот, например, пытаюсь сдвинуть такты 2 относительно тактов 1 на 6 наносекунд: reg clk1; reg clk2; always #10 clk1 = ~clk1; always #10 clk2 = ~clk2; initial begin #0 clk1 = 0; #0 clk2 = 0; #6 clk2 = 1; end Получается неправильно - результат на картинке. Как надо написать, чтобы было правильно?
  7. Спасибо за подсказку! Правда проблему уже удалось решить без установки этой микросхемы. Так что вопрос более неактуален.
  8. Всем привет! Есть плата на которую не впаяны некоторые микросхемы. С одной из микросхем (последовательный интерфейс Intel 82510) дорожки RX и TX идут на одну из таких невпаянных микросхем. Скорее всего это должен быть преобразователь уровней TTL-RS. Есть необходимость определить тип этой микросхемы. Хотя-бы для начала может кто-нибудь подскажет - что это за тип корпуса? Фото прилагается. Интересует микросхема U76.
  9. С неделю назад мне так уже рекомендовали делать. Я проверил - результат был аналогичный (правда, при проверке команда CGREG дала ответ 2, а не 0): [00:00:12] {GSM } Проверяем регистрацию в сети [00:00:12] {GSM } COMM: AT+CREG? [00:00:12] {GSM } ANSW: +CREG: 0,1 [00:00:12] {GSM } ANSW: OK [00:00:12] {GSM } Есть регистрация в сети [00:00:12] {GSM } Измеряем уровень сигнала [00:00:12] {GSM } COMM: AT+CSQ [00:00:12] {GSM } ANSW: +CSQ: 18,0 [00:00:12] {GSM } ANSW: OK [00:00:12] {GSM } Уровень сигнала = -77 dBm [00:00:12] {TCP } Проверяем состояние канала [00:00:12] {GSM } COMM: AT+QISTAT [00:00:12] {GSM } ANSW: OK [00:00:12] {GSM } ANSW: STATE: IP INITIAL [00:00:12] {TCP } Проверяем состояние сети [00:00:12] {GSM } COMM: AT+CGREG? [00:00:12] {GSM } ANSW: +CGREG: 0,2 [00:00:12] {GSM } ANSW: OK [00:00:12] {TCP } Нет регистрации в сети [00:00:12] {TCP } Подключаем GPRS-сервис [00:00:12] {GSM } COMM: AT+CGATT=1 [00:00:12] {GSM } ANSW: +CME ERROR: unknown [00:00:12] {TCP } ERROR: нет ответа 'OK' Возможно, что если бы команда CGREG ответила 0, а не 2, то модуль на команду CGATT ответил бы ОК. Но во время тестирования команда CGREG ни разу не ответила 0. Только 2 или 1.
  10. Я же говорю, что через пять секунд после "unknown" дивайс даёт эту команду повторно, получает "ОК" и дальше работает нормально. APN задаётся чуть позже - перед выполнением команды "AT+QIACT". Опять-же, точно такой-же дивайс, но с модулем SIM340DZ, аттачится к GPRS-сервису с пол-пинка, работая по точно такому-же алгоритму. Тем не менее, сделал для проверки установку APN заранее. Вот лог результата: [00:00:00] {MAIN} ADC(0)=715; Vbat=4.19В [00:00:00] {GSM } Включаем GSM-модуль [00:00:03] {GSM } ANSW: RDY [00:00:03] {GSM } COMM: AT+IPR? [00:00:03] {GSM } ANSW: AT+IPR? [00:00:03] {GSM } ANSW: +IPR: 38400 [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } COMM: AT+IFC? [00:00:03] {GSM } ANSW: AT+IFC? [00:00:03] {GSM } ANSW: +IFC: 0,0 [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } COMM: ATZ [00:00:03] {GSM } ANSW: ATZ [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } COMM: ATE0 [00:00:03] {GSM } ANSW: ATE0 [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } COMM: ATX4 [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } COMM: AT+CMEE=2 [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } COMM: AT+CREG=0 [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } COMM: AT+QIURC=0 [00:00:03] {GSM } ANSW: OK [00:00:09] {GSM } Проверяем наличие и залоченность SIM-карты [00:00:09] {GSM } COMM: AT+CPIN? [00:00:09] {GSM } ANSW: +CPIN: SIM PIN [00:00:09] {GSM } ANSW: OK [00:00:09] {GSM } Включена защита PIN-кодом [00:00:09] {GSM } Считываем ID SIM-карты [00:00:09] {GSM } COMM: AT+QCCID [00:00:09] {GSM } ANSW: 89997776112013633181 [00:00:09] {GSM } ANSW: OK [00:00:09] {GSM } Считываем количество оставшихся попыток набора PIN-кода [00:00:09] {GSM } COMM: AT+QTRPIN [00:00:09] {GSM } ANSW: +QTRPIN: 3,3,10,10 [00:00:09] {GSM } ANSW: OK [00:00:09] {GSM } Пытаемся разлочить карточку [00:00:09] {GSM } COMM: AT+CPIN=2586 [00:00:09] {GSM } ANSW: +CPIN: READY [00:00:09] {GSM } ANSW: OK [00:00:09] {GSM } Проверяем наличие и залоченность SIM-карты [00:00:09] {GSM } COMM: AT+CPIN? [00:00:09] {GSM } ANSW: +CPIN: READY [00:00:09] {GSM } ANSW: OK [00:00:09] {GSM } SIM-карточка открыта [00:00:10] {GSM } Проверяем регистрацию в сети [00:00:10] {GSM } COMM: AT+CREG? [00:00:10] {GSM } ANSW: +CREG: 0,2 [00:00:10] {GSM } ANSW: OK [00:00:10] {GSM } Поиск сети [00:00:10] {GSM } Измеряем уровень сигнала [00:00:10] {GSM } COMM: AT+CSQ [00:00:10] {GSM } ANSW: +CSQ: 99,99 [00:00:10] {GSM } ANSW: OK [00:00:10] {GSM } Уровень сигнала = -113 dBm [00:00:10] {MAIN} ADC(0)=714; Vbat=4.18В [00:00:15] {GSM } Проверяем регистрацию в сети [00:00:15] {GSM } COMM: AT+CREG? [00:00:15] {GSM } ANSW: +CREG: 0,1 [00:00:15] {GSM } ANSW: OK [00:00:15] {GSM } Есть регистрация в сети [00:00:15] {GSM } Измеряем уровень сигнала [00:00:15] {GSM } COMM: AT+CSQ [00:00:15] {GSM } ANSW: +CSQ: 20,0 [00:00:15] {GSM } ANSW: OK [00:00:15] {GSM } Уровень сигнала = -73 dBm [00:00:15] {TCP } Проверяем состояние канала [00:00:15] {GSM } COMM: AT+QISTAT [00:00:15] {GSM } ANSW: OK [00:00:15] {GSM } ANSW: STATE: IP INITIAL [00:00:15] {TCP } Устанавливаем имя точки доступа, логин и пароль [00:00:15] {GSM } Считываем номер оператора из GSM-модуля [00:00:15] {GSM } COMM: AT+COPS=0,2 [00:00:15] {GSM } ANSW: OK [00:00:15] {GSM } COMM: AT+COPS? [00:00:15] {GSM } ANSW: +COPS: 0,2,"40177" [00:00:15] {GSM } ANSW: OK [00:00:15] {GSM } COMM: AT+CGDCONT=1,"IP","internet" [00:00:15] {GSM } ANSW: OK [00:00:15] {GSM } COMM: AT+QIREGAPP="internet","","" [00:00:15] {GSM } ANSW: OK [00:00:15] {TCP } Подключаем GPRS-сервис [00:00:15] {GSM } COMM: AT+CGATT=1 [00:00:15] {GSM } ANSW: +CME ERROR: unknown [00:00:15] {TCP } ERROR: нет ответа 'OK' Дополнение: Проблема решилась так: не давать команду "AT+CGATT" совсем. Никогда. Такой "workaround" пока-что работает. Буду наблюдать. Но в любом случае "unknown" - это баг. Негоже модулю выдавать такие сообщения об ошибках на вполне легальные команды.
  11. Всем здравствуйте! Продолжаю писать программу для дивайса, в котором установлен M10 (Revision: M10BR06). При попытке аттача к GPRS-сервису (сразу после инициализации модуля) командой "AT+CGATT=1" появляется сообщение об ошибке "+CME ERROR: unknown". В большинстве случаев после выполнения пятисекундной задержки и повторной передачи команды "AT+CGATT=1" GPRS-сервис поднимается нормально, но один раз эта ошибка появлялась в течение нескольких минут. При этом в то-же самое время другой дивайс с модулем SIM340DZ и карточкой того-же самого провайдера поднял GPRS и соединился с сервером "на ура". Проблема не связана с каким-то конкретным оператором - проверялось на разных операторах с разными карточками (VegaLine и Tele2). Вот кусок лога работы дивайса: [00:00:00] {MAIN} ADC(0)=712; Vbat=4.17В [00:00:00] {GSM } Включаем GSM-модуль [00:00:02] {GSM } ANSW: RDY [00:00:02] {GSM } COMM: AT+IPR? [00:00:02] {GSM } ANSW: +CFUN: 1 [00:00:02] {GSM } ANSW: +CPIN: SIM PIN [00:00:02] {GSM } ANSW: AT+IPR? [00:00:02] {GSM } ANSW: +IPR: 38400 [00:00:02] {GSM } ANSW: OK [00:00:02] {GSM } COMM: AT+IFC? [00:00:03] {GSM } ANSW: AT+IFC? [00:00:03] {GSM } ANSW: +IFC: 0,0 [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } COMM: ATZ [00:00:03] {GSM } ANSW: ATZ [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } COMM: ATE0 [00:00:03] {GSM } ANSW: ATE0 [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } COMM: ATX4 [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } COMM: AT+CMEE=2 [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } COMM: AT+CREG=0 [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } COMM: AT+QIURC=0 [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } Проверяем наличие и залоченность SIM-карты [00:00:03] {GSM } COMM: AT+CPIN? [00:00:03] {GSM } ANSW: +CPIN: SIM PIN [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } Включена защита PIN-кодом [00:00:03] {GSM } Считываем ID SIM-карты [00:00:03] {GSM } COMM: AT+QCCID [00:00:03] {GSM } ANSW: 89997776112013633181 [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } Считываем количество оставшихся попыток набора PIN-кода [00:00:03] {GSM } COMM: AT+QTRPIN [00:00:03] {GSM } ANSW: +QTRPIN: 3,3,10,10 [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } Пытаемся разлочить карточку [00:00:03] {GSM } COMM: AT+CPIN=2586 [00:00:03] {GSM } ANSW: +CPIN: READY [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } Проверяем наличие и залоченность SIM-карты [00:00:03] {GSM } COMM: AT+CPIN? [00:00:03] {GSM } ANSW: +CPIN: READY [00:00:03] {GSM } ANSW: OK [00:00:03] {GSM } SIM-карточка открыта [00:00:03] {GSM } Проверяем регистрацию в сети [00:00:03] {GSM } COMM: AT+CREG? [00:00:04] {GSM } ANSW: +CREG: 0,2 [00:00:04] {GSM } ANSW: OK [00:00:04] {GSM } Поиск сети [00:00:04] {GSM } Измеряем уровень сигнала [00:00:04] {GSM } COMM: AT+CSQ [00:00:04] {GSM } ANSW: +CSQ: 99,99 [00:00:04] {GSM } ANSW: OK [00:00:04] {GSM } Уровень сигнала = -113 dBm [00:00:08] {GSM } Проверяем регистрацию в сети [00:00:08] {GSM } COMM: AT+CREG? [00:00:08] {GSM } ANSW: +CREG: 0,2 [00:00:08] {GSM } ANSW: OK [00:00:08] {GSM } Поиск сети [00:00:08] {GSM } Измеряем уровень сигнала [00:00:08] {GSM } COMM: AT+CSQ [00:00:08] {GSM } ANSW: +CSQ: 23,0 [00:00:08] {GSM } ANSW: OK [00:00:08] {GSM } Уровень сигнала = -67 dBm [00:00:10] {MAIN} ADC(0)=687; Vbat=4.03В [00:00:13] {GSM } Проверяем регистрацию в сети [00:00:13] {GSM } COMM: AT+CREG? [00:00:13] {GSM } ANSW: +CREG: 0,1 [00:00:13] {GSM } ANSW: OK [00:00:13] {GSM } Есть регистрация в сети [00:00:13] {GSM } Измеряем уровень сигнала [00:00:13] {GSM } COMM: AT+CSQ [00:00:13] {GSM } ANSW: +CSQ: 23,0 [00:00:13] {GSM } ANSW: OK [00:00:13] {GSM } Уровень сигнала = -67 dBm [00:00:13] {TCP } Проверяем состояние канала [00:00:13] {GSM } COMM: AT+QISTAT [00:00:13] {GSM } ANSW: OK [00:00:13] {GSM } ANSW: STATE: IP INITIAL [00:00:13] {TCP } Подключаем GPRS-сервис [00:00:13] {GSM } COMM: AT+CGATT=1 [00:00:13] {GSM } ANSW: +CME ERROR: unknown [00:00:13] {TCP } ERROR: нет ответа 'OK' [00:00:15] {TCP } Проверяем состояние канала [00:00:15] {GSM } COMM: AT+QISTAT [00:00:15] {GSM } ANSW: OK [00:00:15] {GSM } ANSW: STATE: IP INITIAL [00:00:15] {TCP } GPRS-канал закрыт [00:00:15] {TCP } ERROR: неудачная попытка открыть GPRS-канал Вопрос: что это за ошибка - "unknown"? И как от неё избавиться?
  12. Да, бета-прошивка эту проблему решила. Теперь ID SIM-карты можно узнать до ввода PIN-кода.
  13. ОК. Спасибо. Тогда второй вопрос - и где же её взять, эту бета-прошивку? А также средства для заливки её в модуль? Ни на сайте quectel.com, ни на сайте quectel.ru найти прошивку не могу... Гугль тоже что-то не помогает...
×
×
  • Создать...