jokolemene
Участник-
Постов
29 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о jokolemene
-
Звание
Участник
Контакты
-
ICQ
Array
-
2 embddr: Да, точно! Я понял в чём была моя ошибка. Теперь всё синтезируется без варнинга и защёлок. Большое спасибо за помощь!
-
Да, регистр был не инициализирован. Инициализировал. Всё равно варнинг рисуется. Посмотрел сгенерённую схему: куча комбинаторики и в самом конце стоят защёлки - в них используются входы ACLR и PRESET. А насчёт порядка счёта: без разницы откуда считать. Единичный бит в регистре только в одном экземпляре. PS: Добавил в цикл break - перестало компилироваться. Выдаёт ошибку: can't resolve reference to object "break".
-
На порту result_o нужно получить порядковый номер бита регистра result_reg, установленного в единицу. Например, если регистр result_reg имеет размер 8192 бита, и в нём установлен бит номер 4015, то на порту result_o нужно получить число 4015.
-
Всем привет! Тема такая: создаю схему на верилоге. В ней есть регистр переменного размера. Размер его задаётся через 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. Как сделать так, чтобы этого варнинга не было? Очень уж мне такие варнинги не нравятся. Да и как схема синтезируется в случае подобных конструкций - не совсем понятно. А я люблю, когда всё понятно и прозрачно.
-
помогите с
jokolemene ответил skilful тема в Работаем с ПЛИС, области применения, выбор
Могу. Вот две картинки. PS: заметил особенность - если к этим виртуальным ножкам прицепить "неоптимизированные" сигналы - всё нормально синтезируется без выдачи подобной ошибки. -
Заработало! Большое спасибо!
-
Да, получилось, спасибо!
-
Всем привет! Может вопрос детский, но что-то внезапно заступорил меня. Тема такая: нужно проверить работу синхронизатора между двумя модулями. Для этого нужно поподавать на один модуль такты, сдвинутые на разную величину времени относительно тактов другого модуля. Вот, например, пытаюсь сдвинуть такты 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 Получается неправильно - результат на картинке. Как надо написать, чтобы было правильно?
-
Помогите определить микросхему
jokolemene ответил jokolemene тема в Микросхемы
Спасибо за подсказку! Правда проблему уже удалось решить без установки этой микросхемы. Так что вопрос более неактуален. -
Помогите определить микросхему
jokolemene опубликовал тема в Микросхемы
Всем привет! Есть плата на которую не впаяны некоторые микросхемы. С одной из микросхем (последовательный интерфейс Intel 82510) дорожки RX и TX идут на одну из таких невпаянных микросхем. Скорее всего это должен быть преобразователь уровней TTL-RS. Есть необходимость определить тип этой микросхемы. Хотя-бы для начала может кто-нибудь подскажет - что это за тип корпуса? Фото прилагается. Интересует микросхема U76. -
С неделю назад мне так уже рекомендовали делать. Я проверил - результат был аналогичный (правда, при проверке команда 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.
-
Я же говорю, что через пять секунд после "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" - это баг. Негоже модулю выдавать такие сообщения об ошибках на вполне легальные команды.
-
Всем здравствуйте! Продолжаю писать программу для дивайса, в котором установлен 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"? И как от неё избавиться?
-
Да, бета-прошивка эту проблему решила. Теперь ID SIM-карты можно узнать до ввода PIN-кода.
-
ОК. Спасибо. Тогда второй вопрос - и где же её взять, эту бета-прошивку? А также средства для заливки её в модуль? Ни на сайте quectel.com, ни на сайте quectel.ru найти прошивку не могу... Гугль тоже что-то не помогает...