Ну смотрите.Ситуация такая. Стоит шкаф и работает.Выходит модуль из строя и его надо заменить "на горячую". как это сделать так,чтобы при смене модуля ложная информация с него не считывалась,а считывалась только достоверная?
Это Вы меня спрашиваете?) Откуда я знаю какой это модуль????:)) И вообще, если модуль вышел из строя, то из него заведомо не могут идти не ложные данные. Зачем тогда его заменять, если из него идут верные данные?)))
ложные данные в любом случае будут,если модуль неисправен, надо как-то дать понять микропроцессорному модулю,что подчиненный модуль неисправен. вот и спрашиваю,Как это можно сделать на программном уровне.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
ну я думаю сделать регистр, в который записать идентификатор модуля. Периодически его читать. Если считанное не совпадает с тем что предполагает считать шкаф,то косяк, но некоторые биты будут теряться все равно.
always @(negedge RD or negedge WR) case (A) 4'b0000: D <= 8'b00100000; 4'b0001: D <= 8'b00010101; 4'b0010: D <= 8'b00010000; 4'b0011: D <= 8'b00001000; 4'b1000: D <= INREG[7:0]; 4'b1001: D <= INREG[15:8]; default: D = 8'b00000000; endcase
always @(negedge WR or negedge RES) begin if (RES == 0) INREG <= 0; else if ((!CS && !WR && A == 4'b1000)||!RES) INREG[7:0] <= DAT; else if ((!CS && !WR && A == 4'b1001)||!RES) INREG[15:8] <= DAT; end
assign DAT[7:0]=(!CS&!RD)?D[7:0]:8'bz;
assign OUT[15:0]=!INREG[15:0];
endmodule
и все равно не хочет работать. Может дело в этом триггере-защелке LATCH? но я не нашел как описать этот LATCH на верилоге.
_________________ Когда уже ничего не помогает - прочтите, наконец, инструкцию. Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII) Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Просто по ссылке,которую вы скинули,я нашел раздел Latches.
Там описан триггер, с разрешающим входом ,обычным входом и выходом.
У меня та же ситуация, только у меня 2 разрешающих входа получается, при А=8 и А=9.Я не понимаю как это описать.Что при 8 он пропускает одну часть сигналов,а при 9 другую.
AHDL не знаю. Посему не понимаю, что вам надо получить. Посмотрите как сделан latch по ссылке что я дал. Вам надо сделать присвоение значения, когда выполняется заданное условие. Когда условие не выполняется, то делать ничего не надо.
Добавил: Т.е. вы сами не понимаете, что делает первый кусок кода!? Так вы разберитесь, что исходный код делает! Выпишете "пути данных", условия. Схему на обычной логике нарисуйте, в крайнем случае. Чтобы вы сами поняли. А потом уже переписывайте на другом языке.
_________________ Когда уже ничего не помогает - прочтите, наконец, инструкцию. Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII) Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
да,я понимаю впринципе,что он делает. раньше писал на AHDL(не до конца изучив язык). Щас уже перехожу на Verilog(от меня это потребовали).И вот прочитал про этот триггер-защелку.
думаю будет так,пока другого ничего в голову не приходит почему-то.
_________________ Когда уже ничего не помогает - прочтите, наконец, инструкцию. Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII) Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Error: Can't route source node "INREG[9]~98" of type max_mcell to destination node "Mux6~6" of type max_mcell Error: Can't route source node "INREG[9]~98" of type max_mcell to destination node "INREG[9]~98" of type max_mcell Error: Can't route source node "INREG[9]~98" of type max_mcell to destination node "INREG[9]~145" of type max_mcell Error: Can't route source node "INREG[9]~98" of type max_mcell to destination node "WideNor0~0" of type max_mcell Error: Can't place node "INREG[9]~145" of type max_mcell Error: Can't find fit Error: Quartus II Fitter was unsuccessful. 6 errors, 7 warnings Error: Peak virtual memory: 400 megabytes Error: Processing ended: Fri Feb 01 13:28:41 2013 Error: Elapsed time: 00:00:01 Error: Total CPU time (on all processors): 00:00:01 Error: Quartus II Full Compilation was unsuccessful. 8 errors, 38 warnings
при таком коде выдает вот такие ошибки...
это означает,что не хватает макроячеек и надо писать как-то еще хитрее и проще?
reg INREG; always @(CS or WR or A or DAT) begin if (!CS&&!WR&& A==8) INREG[7:0]=DAT[7:0]; end
always @(CS or WR or A or DAT) begin if (!CS&&!WR&& A==9) INREG[15:8]=DAT[7:0]; end
ЗЫ: Чёт давненько я на верилоге ничего не делал. Подзабыл уже.
_________________ Когда уже ничего не помогает - прочтите, наконец, инструкцию. Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII) Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
_________________ Когда уже ничего не помогает - прочтите, наконец, инструкцию. Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII) Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Макроячейки задействуются не только на регистры из "схемы", но и на выводы (pin-ы) работающие на выход. А может просто не хватить ресурсов внутренней шины на разводку между макроячейками.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения