Jump to content

    

Meinframe

Участник
  • Content Count

    40
  • Joined

  • Last visited

Everything posted by Meinframe


  1. А pcb антенна скажем GPS пробьёт через 1,5-2мм металла?
  2. Здравствуйте. Сталкивался ли кто-нибудь с проблемой размещения антенны flex PCB на металлической поверхности? А именно ухудшается ли сигнал? или есть какие-то ещё проблемы? P.S. антенны планируется применять различного диапазона.
  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 руб.) Доставка почтой по РФ и странам СНГ, за Ваш счёт. Связь через ЛС или почта
  4. Требуется по данному модему описание, а именно схема включения, готовые проекты на данном устройстве, вообщем всё что есть есть, поделитесь тем чем сможете по данному вопросу.
  5. Извините, за то что некорректно сформулировал вопрос. Кто нибудь знает что это за штучка? Довольно старая, но меня устраивает :rolleyes:
  6. Всё дело в цене данных модулей, а также была поставлена задача время отклика не более 0,1 сек, расстояние 200-300м, скорость передачи данных думаю порядка 48 кбит/с. http://www.zelax.ru/products/catalog/modems/prod_104 Данная фирма работает только с высоковольтными ЛЭП, а мне нужно просто принять сигнал 220 (6 проводов) передать сигнал по 2 проводам и опять разделить на к примеру 6 проводов. Также интересует соединение типа звезда, когда есть один PLC модем главный а остальные зависят от него, ещё чтобы между ними была обратная связь, что то типа режима дуплекс. Такое вообще есть?
  7. Кто нибудь сталкивался с проблемой, когда нужно не интернет по ЛЭП, а управлять чем либо к примеру модем с обеих сторон ЛЭП через "Блок сопряжения" передаёт управляющие сигналы. Есть какие догадки, мысли, ссылки в интернете? Просто я гуглил но ничего в рунете не нашёл по управлению, везде лишь только интернет.
  8. Результатом явился законченный курсовой проект "Генератор ошибок". Офрмлен по ГОСТ, но есть небольшие замечания по оформлению. ________________.rar Спасибо всем тем, кто мне помог. :santa2:
  9. bogaev_roman Вы не могли сделать так сказать ГАЙД по тому как Вы проводили симуляцию с тестом, я думаю многим начинающим таким как я это будет полезно. Само собой когда у Вас будет свободное время.
  10. Это всего лишь вероятность "порчи" бита, мне не нужно регулировать её, пускай будет 1/4 или 1/2 это как мне кажется не влияет на то, что счётчик по каким-то неведомым причинам не может посчитать случившиеся ошибки, я просто не могу понять вроде бы не такая уж и сложная задача посчитать изменения выходного сигнала относительно входного, но БЛИИИН я просто непонимаю где ошибка...))) :maniac:
  11. при таком коде: module 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 Скрин симуляции: Что-то не работает...хотя Вы вроде правильно написали
  12. При таком коде (жаль не могу под спойлер закинуть) module 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 вот такая симуляция
  13. Может вот так доказать статистическую вероятность изменения бита? module 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 Не подскажите мне как сделать так чтобы просто был счётчик который считает кол-во раз изменившегося бита между входной и выходной последовательностью.
  14. 1) При компиляции выдаёт Warning: Внимание: Выходные контакты застряли на VCC или GND А вот что при симуляции: 2) bogaev_roman у меня не получается откомпилировать Ваш тест-код. Error: Node instance "uut" instantiates undefined entity "channel" Предупреждение (10755): Verilog HDL предупреждение в uut.v (29): сигнал iclk создаёт комбинационную петлю
  15. Поправил на &lfsr...но ничего не изменилось. Времянка какя-то странная получается, щас времени нет, вечером приду выложу скрины.
  16. Мне кажется ошибка в логике 34 и 39 строка, но точно понять никак не могу. Ещё не пойму как частота может повлиять на то будет ли у меня сигнал или нет. А ещё какой Вы просите выложить тест? А ещё я не привык к тому что программа компилируется и видимых ошибок нет, а на выход ничего не идёт. поэтому мой мозК просто рвётся на части, прям уже незнаю что делать, все эти дни потратил на поиск в книжках различных ситуаций но мне кажется ошибка моя проще чем кажется но только я её не вижу. Где же прячется ошибка? Вот последняя версия кода channel.v Эти тесты просили? И ещё вопрос как сделать инкрементную компиляцию и что это вообще такое...или по шагам как нибудь? ЗЫ сорри за такие вопросы буду по 300 раз спрашивать глупости, просто я забываю быстро и поэтому приходится повторять. ЗЗЫ если надо выложу весь проект целиком. я уверен что lfsr работает, но не уверен что cycle выставляется хотя бы раз, и уверен что errorEvent работает. Помогите понять почему cycle не работает.
  17. Добавил 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...и после симуляции опять ничего...
  18. Ага ! Не ждали :1111493779: Просидел 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 ничего нет...прям ваще незнаю что делать :crying:
  19. Тут много кто может вставить эти строки в код правильно и провести функциональную симуляцию - это вполне решаемая задача. А почему же никто не поможет? Ведь это дело 10 минут(возможно даже меньше) Просто я люблю учится на примерах готовых, а не на воздухе в котором ветает то что мне нужно и которое я смогу поймать только через 1-2 месяца... Ну помогите же мне :rolleyes:. А то тут сообщество принципиальных людей, которые привыкли жить как [волки в "стаде"].
  20. Имеется код. 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; Эти строки нужно просто вставить в проект в любом месте, определив, конечно, используемые регистры. Я вставлял эти строки, объявлял регистры. Но когда делал функциональную симуляцию, то ничего не получалось. Кто нибудь может вставить эти строки в код правильно и провести функциональную симуляцию?
  21. 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 ? ну или кол-во ошибок.
  22. Может так: always_ff @(posedge iclk) begin if (irst | cycle) err_ctr <= 8'h0; else if (ien & erEvent) err_ctr <= err_ctr + 1; end Та же ошибка Error (10170): Verilog HDL syntax error at channel.v(25) near text "@"; expecting ".", or an identifier, or "(", or ""
  23. 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 "" <-----что сие за бред? я целый день просидел так и не смог исправить...