Jump to content

    

Meinframe

Участник
  • Content Count

    42
  • Joined

  • Last visited

Everything posted by Meinframe


  1. Здравствуйте. Сталкивался ли кто-нибудь с проблемой размещения антенны flex PCB на металлической поверхности? А именно ухудшается ли сигнал? или есть какие-то ещё проблемы? P.S. антенны планируется применять различного диапазона.
  2. Цитата(Alex11 @ Dec 27 2015, 13:37) Не пытайтесь - не работает. Нужен зазор хотя бы миллиметра 2, а лучше 5. А pcb антенна скажем GPS пробьёт через 1,5-2мм металла?
  3. Продаю за половину текущей рыночной стоимости, при покупке всех источников сразу будет скидка 50% т.е. всё за 2550 руб. 1 x HGPOWER LA60P-1400 = 1600 руб. (1* 1600 = 1600 руб.) 4 x MEAN WELL LPC-60-1400 = 800 руб. (4 * 800 = 3200 руб.) 1 x QLT ИПТ-220ТО35С110К07 = 300 руб. (1 * 300 = 300 руб.) Доставка почтой по РФ и странам СНГ, за Ваш счёт. Связь через ЛС или почта ai_robot@mail.ru
  4. Требуется по данному модему описание, а именно схема включения, готовые проекты на данном устройстве, вообщем всё что есть есть, поделитесь тем чем сможете по данному вопросу.
  5. Кто нибудь сталкивался с проблемой, когда нужно не интернет по ЛЭП, а управлять чем либо к примеру модем с обеих сторон ЛЭП через "Блок сопряжения" передаёт управляющие сигналы. Есть какие догадки, мысли, ссылки в интернете? Просто я гуглил но ничего в рунете не нашёл по управлению, везде лишь только интернет.
  6. Цитата(zalex1965 @ Sep 14 2012, 10:45) Так это совсем другая постановка вопроса. То, что Вам нужно, к ЛЭП, вообще говоря, никакого отношения не имеет (под ЛЭП у нас обычно понимают линии электропередач напряжением от 6кВ ). Вам же нужно передавать инфу по питающей сети 220В. Такое оборудование есть, но гарантированно работать такая система будет лишь при условии, что все те объекты, которые Вам нужно связать, "висят" на одной и той же фазе одного и того же трансформатора. Посмотрите, тут например, http://www.electrik.info/main/news/194-per...ti-220380v.html Извините, за то что некорректно сформулировал вопрос. Кто нибудь знает что это за штучка? Довольно старая, но меня устраивает ЦитатаХ10 - наиболее старая технология (1978г) ориентирована на управление бытовыми приборами. Основные недостатки – это низкая скорость и малое адресное пространство, т.е. вы дистанционно включили свет у себя в доме, а включился еще и в соседском… По этой технологии передача данных осуществляется частотными посылками (120кГц) в момент перехода переменного напряжения 220В через ноль. Двоичная единица – наличие частотной посылки, ноль – ее отсутствие. Для увеличения помехоустойчивости вводятся повторы, квитирование и т.д. Максимальная скорость передачи 60 бит/с (60 бод). Полная команда передается около 0.8с. Контроллеры и оконечные устройства Х-10 приятно радуют невысокой ценой от 8$ за пассивный приемник, до 100$ за многофункциональное активное устройство.
  7. Цитата(kovigor @ Sep 13 2012, 16:31) Странно, есть же готовые модемы для связи по ЛЭП: http://www.radis.ru/avc.htm http://www.zelax.ru/products/catalog/modems/prod_104 Спросите у Google: "модемы для связи по ЛЭП" ... Всё дело в цене данных модулей, а также была поставлена задача время отклика не более 0,1 сек, расстояние 200-300м, скорость передачи данных думаю порядка 48 кбит/с. http://www.zelax.ru/products/catalog/modems/prod_104 Данная фирма работает только с высоковольтными ЛЭП, а мне нужно просто принять сигнал 220 (6 проводов) передать сигнал по 2 проводам и опять разделить на к примеру 6 проводов. Также интересует соединение типа звезда, когда есть один PLC модем главный а остальные зависят от него, ещё чтобы между ними была обратная связь, что то типа режима дуплекс. Такое вообще есть?
  8. Я начинающий. Мне нужно реализовать "Генератор ошибок с обратной связью", который будет влиять на код идущий от кодера к декодеру Витерби. Реализовать нужно на ПЛИС, но я незнаю как, и вообще себе даже не представляю как это примерно должно выглядеть. Для тех кто решит мне помочь, описание к вложению(но я думаю Вы и так всё поймёте в отличие от меня): LFSR (регистр сдвиговый) R6 (регистр инициализации == (цифровой компаратор) 0101 (последовательный код) 1->0 (замена 1 на 0 при определённой вероятности) Кто нибудь сможет меня ткнуть куда либо носом и показать пальцем дорогу где копать? =) А ещё хочу спросить как это сделать в какой нибудь среде симуляции к примеру Quartus II.
  9. Результатом явился законченный курсовой проект "Генератор ошибок". Офрмлен по ГОСТ, но есть небольшие замечания по оформлению. [attachment=63853:ber.rar] Спасибо всем тем, кто мне помог.
  10. Кодalways_ff @(posedge iclk)     if (irst | cycle)  err_ctr <= 8'h0;     else if (ien & erEvent) err_ctr <= err_ctr + 1; Error (10170): Verilog HDL syntax error at channel.v(25) near text "@"; expecting ".", or an identifier, or "(", or "" <-----что сие за бред? я целый день просидел так и не смог исправить...
  11. bogaev_roman Вы не могли сделать так сказать ГАЙД по тому как Вы проводили симуляцию с тестом, я думаю многим начинающим таким как я это будет полезно. Само собой когда у Вас будет свободное время.
  12. ЦитатаСдается мне алгоритм работает не так как Вы задумали. // 8'hFF - P = ~0.5 при этом на вход подается постоянно 'd127 -> вероятность появления errorEvent = lfsr < {1'b0, ierRate}; в данном случае будет 1/4. Т.е. чтоб реально получить вероятность близкую к 0.5 требуется подать 'd255 и смотреть не 10 тактов, а больше гораздо. Это всего лишь вероятность "порчи" бита, мне не нужно регулировать её, пускай будет 1/4 или 1/2 это как мне кажется не влияет на то, что счётчик по каким-то неведомым причинам не может посчитать случившиеся ошибки, я просто не могу понять вроде бы не такая уж и сложная задача посчитать изменения выходного сигнала относительно входного, но БЛИИИН я просто непонимаю где ошибка...)))
  13. при таком коде: CODEmodule channel ( input irst, iclk, ien, input [7:0] ierRate, // Входная вероятность ошибки // 8'h00 - P = 0 - ошибки отсутствуют // 8'hFF - P = ~0.5 input iserial, // Входные данные (код NRZ) output oserial, // Выходные данные output [7:0] oerserial, // Выходные данные, кол-во ошибок output reg prom1 ); // Регистр генератора ПСП, инициализируется // всеми единицами при включении ПЛИС reg [8:0] lfsr = {9{1'b1}}; // Выходной буферный регистр reg serial_ff; //Счётчик reg [7:0] err_ctr; // Событие "ошибка" случается, если значение в регистре ПСП // менее заданного параметра wire errorEvent = lfsr < {1'b0, ierRate}; reg iserial_r; assign prom1 = errorEvent; //Промежуточный сигнал события ошибка always @(posedge iclk) if (irst) iserial_r<=1'b0; else iserial_r<=iserial; always @(posedge iclk) if (irst) err_ctr<=0; else if (iserial_r!=oserial) err_ctr<=err_ctr+1'b1; else err_ctr<=err_ctr; assign oerserial = err_ctr; // Описание сдвигового регистра с обратными связями (генератора ПСП) always @ (posedge iclk) if (irst) lfsr <= {9{1'b1}}; // По сигналу сброс синхронно (т.е. по фронту iclk) // загружаем в регистр все единицы else if (ien) // По сигналу lfsr <= {lfsr[7:0], lfsr[8] ^ lfsr[4]}; // Стандартный полином для генератора 9-й степени // g(x) = x^9 + x^5 + 1 // По переднему фронту сигнала iclk при активном разрешительном сигнале ien // присваимваем буферному регистру serial_ff результат операции ИСКЛЮЧАЮЩЕЕ ИЛИ // между исходным (входным) потоком данных и потоком ошибок. always @ (posedge iclk) if (ien) serial_ff <= iserial ^ errorEvent; assign oserial = serial_ff; endmodule Скрин симуляции: Что-то не работает...хотя Вы вроде правильно написали
  14. При таком коде (жаль не могу под спойлер закинуть) CODEmodule channel ( input irst, iclk, ien, input [7:0] ierRate, // Входная вероятность ошибки // 8'h00 - P = 0 - ошибки отсутствуют // 8'hFF - P = ~0.5 input iserial, // Входные данные (код NRZ) output oserial, // Выходные данные output [7:0] oerserial // Выходные данные, кол-во ошибок ); // Регистр генератора ПСП, инициализируется // всеми единицами при включении ПЛИС reg [8:0] lfsr = {9{1'b1}}; // Выходной буферный регистр reg serial_ff; //Счётчик reg [7:0] err_ctr; // Событие "ошибка" случается, если значение в регистре ПСП // менее заданного параметра wire errorEvent = lfsr < {1'b0, ierRate}; always @(posedge iclk) if (irst) err_ctr<=0; else if (iserial!=oserial) err_ctr<=err_ctr+1'b1; else err_ctr<=err_ctr; assign oerserial = err_ctr; // Описание сдвигового регистра с обратными связями (генератора ПСП) always @ (posedge iclk) if (irst) lfsr <= {9{1'b1}}; // По сигналу сброс синхронно (т.е. по фронту iclk) // загружаем в регистр все единицы else if (ien) // По сигналу lfsr <= {lfsr[7:0], lfsr[8] ^ lfsr[4]}; // Стандартный полином для генератора 9-й степени // g(x) = x^9 + x^5 + 1 // По переднему фронту сигнала iclk при активном разрешительном сигнале ien // присваимваем буферному регистру serial_ff результат операции ИСКЛЮЧАЮЩЕЕ ИЛИ // между исходным (входным) потоком данных и потоком ошибок. always @ (posedge iclk) if (ien) serial_ff <= iserial ^ errorEvent; assign oserial = serial_ff; endmodule вот такая симуляция
  15. Может вот так доказать статистическую вероятность изменения бита? CODEmodule channel ( input irst, iclk, ien, input [7:0] ierRate, // Входная вероятность ошибки // 8'h00 - P = 0 - ошибки отсутствуют // 8'hFF - P = ~0.5 input iserial, // Входные данные (код NRZ) output oserial, // Выходные данные output [7:0] oerserial // Выходные данные, кол-во ошибок ); // Регистр генератора ПСП, инициализируется // всеми единицами при включении ПЛИС reg [8:0] lfsr = {9{1'b1}}; // Выходной буферный регистр reg serial_ff; //Счётчик reg [7:0] err_ctr; // Событие "ошибка" случается, если значение в регистре ПСП // менее заданного параметра wire errorEvent = lfsr < {1'b0, ierRate}; //Счетчик будет считать каждый раз, когда наш генератор генерирует ошибку always @ (posedge iclk) if (oserial) err_ctr <= err_ctr + 1'b1; assign oerserial = err_ctr; // Описание сдвигового регистра с обратными связями (генератора ПСП) always @ (posedge iclk) if (irst) lfsr <= {9{1'b1}}; // По сигналу сброс синхронно (т.е. по фронту iclk) // загружаем в регистр все единицы else if (ien) // По сигналу lfsr <= {lfsr[7:0], lfsr[8] ^ lfsr[4]}; // Стандартный полином для генератора 9-й степени // g(x) = x^9 + x^5 + 1 // По переднему фронту сигнала iclk при активном разрешительном сигнале ien // присваимваем буферному регистру serial_ff результат операции ИСКЛЮЧАЮЩЕЕ ИЛИ // между исходным (входным) потоком данных и потоком ошибок. always @ (posedge iclk) if (ien) serial_ff <= iserial ^ errorEvent; assign oserial = serial_ff; endmodule Не подскажите мне как сделать так чтобы просто был счётчик который считает кол-во раз изменившегося бита между входной и выходной последовательностью.
  16. 1) ЦитатаИ какая получилась результирующая строка? При компиляции выдаёт Warning: Внимание: Выходные контакты застряли на VCC или GND А вот что при симуляции: 2) bogaev_roman у меня не получается откомпилировать Ваш тест-код. Error: Node instance "uut" instantiates undefined entity "channel" Предупреждение (10755): Verilog HDL предупреждение в uut.v (29): сигнал iclk создаёт комбинационную петлю
  17. Цитатаassign cycle = lfsr == 9'hFF Поправил на &lfsr...но ничего не изменилось. Цитататеперь выведите на врямянку сигналы lfsr и errorEvent Времянка какя-то странная получается, щас времени нет, вечером приду выложу скрины.
  18. Мне кажется ошибка в логике 34 и 39 строка, но точно понять никак не могу. Ещё не пойму как частота может повлиять на то будет ли у меня сигнал или нет. А ещё какой Вы просите выложить тест? А ещё я не привык к тому что программа компилируется и видимых ошибок нет, а на выход ничего не идёт. поэтому мой мозК просто рвётся на части, прям уже незнаю что делать, все эти дни потратил на поиск в книжках различных ситуаций но мне кажется ошибка моя проще чем кажется но только я её не вижу. Где же прячется ошибка? Вот последняя версия кода [attachment=62870:channel.v] Эти тесты просили? И ещё вопрос как сделать инкрементную компиляцию и что это вообще такое...или по шагам как нибудь? ЗЫ сорри за такие вопросы буду по 300 раз спрашивать глупости, просто я забываю быстро и поэтому приходится повторять. ЗЗЫ если надо выложу весь проект целиком. я уверен что lfsr работает, но не уверен что cycle выставляется хотя бы раз, и уверен что errorEvent работает. Помогите понять почему cycle не работает.
  19. Добавил Кодoutput [8:0] oerserial Кодelse if (ien & errorEvent) err_ctr <= err_ctr + 1; Warning (10230): Verilog HDL assignment warning at channel.v(36): truncated value with size 32 to match size of target (9) Делаю симуляцию, oerserial обозначаю как B 000000000...и после симуляции опять ничего...
  20. Так нужно? Кодassign oerserial = result [8:0];
  21. Ага ! Не ждали Просидел 2 дня толку 0. Вот что нагородил: Кодmodule channel (     input        irst, iclk, ien,     input [7:0] ierRate,    // Входная вероятность ошибки                             // 8'h00 - P =  0    - ошибки отсутствуют                             // 8'hFF - P = ~0.5     input        iserial,     // Входные данные (код NRZ)     output        oserial, oerserial        // Выходные данные                 );          // Регистр генератора ПСП, инициализируется     // всеми единицами при включении ПЛИС     reg      [8:0]    lfsr = {9{1'b1}};     // Выходной буферный регистр     reg            serial_ff;          // Событие "ошибка" случается, если значение в регистре ПСП     // менее заданного параметра     wire        errorEvent = lfsr < {1'b0, ierRate};        //Ошибки     reg   [8:0] result;        //Счётчик     reg   [8:0] err_ctr;          reg   [8:0] cycle;      //Регистр один раз за цикл пробегает любое выбранное нами значение. //Формируем сигнал конца цикла assign cycle = lfsr == 9'hFF;      //Счетчик будет считать каждый раз, когда наш генератор генерирует ошибку always_ff @ (posedge iclk)     if (irst | cycle)  err_ctr <= 8'h0;     else if (ien & errorEvent) err_ctr <= err_ctr + 1; //Посчитанный результат сохраняем в регистр до конца цикла измерения always_ff @ (posedge iclk)      if (irst) result <= 8'h0;          else if (ien & cycle) result <= err_ctr;      assign oerserial = result; // Описание сдвигового регистра с обратными связями (генератора ПСП) always @ (posedge iclk)     if (irst)         lfsr <= {9{1'b1}};    // По сигналу сброс синхронно (т.е. по фронту iclk)                             // загружаем в регистр все единицы     else if (ien)            // По сигналу         lfsr <= {lfsr[7:0], lfsr[8] ^ lfsr[4]};         // Стандартный полином для генератора 9-й степени         // g(x) = x^9 + x^5 + 1 // По переднему фронту сигнала iclk при активном разрешительном сигнале ien // присваимваем буферному регистру serial_ff результат операции ИСКЛЮЧАЮЩЕЕ ИЛИ // между исходным (входным) потоком данных и потоком ошибок. always @ (posedge iclk)     if (ien)         serial_ff <= iserial ^ errorEvent;     assign        oserial = serial_ff;      endmodule И всё равно почему-то при функциональной симуляции на oerserial ничего нет...прям ваще незнаю что делать
  22. Всё, хорош флудить. Сам сделаю.
  23. КодТут много кто может вставить эти строки в код правильно и провести функциональную симуляцию - это вполне решаемая задача. А почему же никто не поможет? Ведь это дело 10 минут(возможно даже меньше) Просто я люблю учится на примерах готовых, а не на воздухе в котором ветает то что мне нужно и которое я смогу поймать только через 1-2 месяца... Ну помогите же мне . А то тут сообщество принципиальных людей, которые привыкли жить как [волки в "стаде"].
  24. Имеется код. Кодmodule channel (     input        irst, iclk, ien,     input [7:0] ierRate,    // Входная вероятность ошибки                             // 8'h00 - P =  0    - ошибки отсутствуют                             // 8'hFF - P = ~0.5     input        iserial,    // Входные данные (код NRZ)     output        oserial        // Выходные данные                 );          // Регистр генератора ПСП, инициализируется     // всеми единицами при включении ПЛИС     reg      [8:0]    lfsr = {9{1'b1}};     // Выходной буферный регистр     reg            serial_ff;     // Событие "ошибка" случается, если значение в регистре ПСП     // менее заданного параметра     wire        errorEvent = lfsr < {1'b0, ierRate}; // Описание сдвигового регистра с обратными связями (генератора ПСП) always @ (posedge iclk)     if (irst)         lfsr <= {9{1'b1}};    // По сигналу сброс синхронно (т.е. по фронту iclk)                             // загружаем в регистр все единицы     else if (ien)            // По сигналу         lfsr <= {lfsr[7:0], lfsr[8] ^ lfsr[4]};         // Стандартный полином для генератора 9-й степени         // g(x) = x^9 + x^5 + 1 // По переднему фронту сигнала iclk при активном разрешительном сигнале ien // присваимваем буферному регистру serial_ff результат операции ИСКЛЮЧАЮЩЕЕ ИЛИ // между исходным (входным) потоком данных и потоком ошибок. always @ (posedge iclk)     if (ien)         serial_ff <= iserial ^ errorEvent;     assign        oserial = serial_ff;      endmodule Имеется дополнениек этому коду: Код//ошибки за период счетчика LFSR. //Регистр один раз за цикл пробегает любое выбранное нами значение. //Формируем сигнал конца цикла assign cycle = lfsr == 9'hFF; //Cчетчик будет считать каждый раз, когда наш генератор генерирует ошибку always_ff @ (posedge iclk)     if (irst | cycle)  err_ctr <= 8'h0;     else if (ien & errorEvent) err_ctr <= err_ctr + 1; //Посчитанный результат сохраняем в регистр до конца цикла измерения always_ff @ (posedge iclk)      if (irst) result <= 8'h0;      else if (ien & cycle) result <= err_ctr; Эти строки нужно просто вставить в проект в любом месте, определив, конечно, используемые регистры. Я вставлял эти строки, объявлял регистры. Но когда делал функциональную симуляцию, то ничего не получалось. Кто нибудь может вставить эти строки в код правильно и провести функциональную симуляцию?
  25. Кодmodule channel (     input        irst, iclk, ien,     input [7:0] ierRate,    // Входная вероятность ошибки                             // 8'h00 - P =  0    - ошибки отсутствуют                             // 8'hFF - P = ~0.5     input        iserial,    // Входные данные (код NRZ)     output        oserial        // Выходные данные                 );          // Регистр генератора ПСП, инициализируется     // всеми единицами при включении ПЛИС     reg      [8:0]    lfsr = {9{1'b1}};     // Выходной буферный регистр     reg            serial_ff;     //Счётчик     reg   [7:0] err_ctr;     //Результат ошибок     reg         result;        // Событие "ошибка" случается, если значение в регистре ПСП     // менее заданного параметра     wire        errorEvent = lfsr < {1'b0, ierRate};     wire        cycle;      //Счетчик будет считать каждый раз, когда наш генератор генерирует ошибку always @ (posedge iclk)     if (irst | cycle)  err_ctr <= 8'h0;     else if (ien & errorEvent) err_ctr <= err_ctr + 1; //Посчитанный результат сохраняем в регистр до конца цикла измерения always @ (posedge iclk)      if (irst) result <= 8'h0;      else if (ien & cycle) result <= err_ctr; // Описание сдвигового регистра с обратными связями (генератора ПСП) always @ (posedge iclk)     if (irst)         lfsr <= {9{1'b1}};    // По сигналу сброс синхронно (т.е. по фронту iclk)                             // загружаем в регистр все единицы     else if (ien)            // По сигналу         lfsr <= {lfsr[7:0], lfsr[8] ^ lfsr[4]};         // Стандартный полином для генератора 9-й степени         // g(x) = x^9 + x^5 + 1 //Регистр один раз за цикл пробегает любое выбранное нами значение. //Формируем сигнал конца цикла     assign cycle = lfsr == 9'hFF; // По переднему фронту сигнала iclk при активном разрешительном сигнале ien // присваимваем буферному регистру serial_ff результат операции ИСКЛЮЧАЮЩЕЕ ИЛИ // между исходным (входным) потоком данных и потоком ошибок. always @ (posedge iclk)     if (ien)         serial_ff <= iserial ^ errorEvent;     assign        oserial = serial_ff;      endmodule а как посмотреть result ? ну или кол-во ошибок.