khlenar
Свой-
Постов
2 403 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
khlenar стал победителем дня 23 мая 2023
khlenar имел наиболее популярный контент!
Репутация
5 ОбычныйИнформация о khlenar
-
Звание
Гуру
- День рождения 06.09.1965
Контакты
-
Сайт
Array
Информация
-
Город
Array
Посетители профиля
9 475 просмотров профиля
-
Я XDS100 V3.0 программирую через JTAG. Но это я не на производстве) На али брал У вас наверное какие то готовые платы есть и стоит задача их запрограммировать?
-
Да, да, спасибо. Я так смотрю. А в консоль он не выводит? Хотя, в мапе подробная информация.
-
Как узнать размер скомпилированного кода в CCS?
khlenar опубликовал тема в Cредства разработки для МК
Здравствуйте все. Собственно вопрос. В STM32CubeIDE при компиляции показывает размер скомпилированного кода. В Code Composer почему то нет. Так то так работал, но хочется знать. -
Получил микросхемы. Купил у другого. Поставил, все работает. Напряжения 3.3 и 1.8В. как по расчетам. Но зато по разводке вы мне все разъяснили, спасибо большое.
-
В данном случае PB_state присваивается после условия сам на себя. Поэтому он был не определен. PB_state это output logic. В данном случае надо еще один вход RESET заводить. Сейчас работает нормально. Это вариант антидребезга. `timescale 1ns / 100ps module PushButton_Debouncer ( input wire clk, input wire PB, // "PB" is the glitchy, asynchronous to clk, active low push-button signal // from which we make three outputs, all synchronous to the clock output logic PB_state, // 1 as long as the push-button is active (i.e. pushed down) output logic PB_down, // 1 for one clock cycle when the push-button goes down (i.e. just pushed) output logic PB_up // 1 for one clock cycle when the push-button goes up (i.e. just released) ); initial begin PB_state = 1'b0; end // First use two flip-flops to synchronize the PB signal the "clk" clock domain logic PB_sync_0; always @(posedge clk) PB_sync_0 <= ~PB; // invert PB to make PB_sync_0 active high logic PB_sync_1; always @(posedge clk) PB_sync_1 <= PB_sync_0; // счетчик logic [3:0] PB_cnt; // When the push-button is pushed or released, we increment the counter // The counter has to be maxed out before we decide that the push-button state has changed wire PB_idle = (PB_state == PB_sync_1); wire PB_cnt_max = &PB_cnt; // true when all bits of PB_cnt are 1's always @(posedge clk) if(PB_idle) PB_cnt <= 0; // nothing's going on else begin PB_cnt <= PB_cnt + 1'b1; // something's going on, increment the counter if(PB_cnt_max) PB_state <= ~PB_state; // if the counter is maxed out, PB changed! end assign PB_down = ~PB_idle & PB_cnt_max & ~PB_state; assign PB_up = ~PB_idle & PB_cnt_max & PB_state; endmodule // Тестовый модуль module Test; bit clk; bit PB; bit PB_state; bit PB_down; bit PB_up; shortint i; PushButton_Debouncer Debounce ( .clk(clk), .PB(PB), .PB_state(PB_state), .PB_down(PB_down), .PB_up(PB_up) ); initial begin clk = 1'b0; PB = 1'b1; for(i = 0; i < 8; i++) begin #150 PB = 1'b0; #150 PB = 1'b1; end #150 PB = 1'b0; #2500 PB = 1'b1; #2500 $stop; end always #50 clk = ~clk; endmodule
-
Ясно.
-
initial синтезироваться не будет. Это я только пример проверяю. Разбираюсь с алгоритмом. В questa Скажите, почему bit применять не желательно?
-
-
PB_state выход. Он как бы не определен в выражении. Когда его убираю из assign PB_idle = (PB_state == PB_sync_1)? 1'b1 : 1'b0; то выражение выполняется. Но в wave он равен 0.
-
-
Понятно. Спасибо. Взял из примера. assign да, так и делаю. Согласен. В коде можно легко проглядеть, запутаться.
-
QuestaSim не отрабатывает выражение.
khlenar опубликовал тема в Методы и средства верификации ПЛИС/ASIC
Здравствуйте все. Почему то в выражение wire PB_idle = (PB_state == PB_sync_1); PB_idle всегда находится в неопределенном состоянии. Оператор PB_state всегда 0, а PB_sync_1 меандр. PB_idle по идеи тоже меандр должен быть. -
Спасибо за разъяснение.
-
По схеме TPS54332 нормально работает. Конденсатор не греется, холодный. Пульсации в норме. Я не знаю как и что проверять, но для надежности буду керамику применять.