From f936d86f89c18908003cac537098c965fc67ca2d Mon Sep 17 00:00:00 2001 From: nikit3s Date: Mon, 17 Aug 2026 18:58:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B1=D1=80=D0=BE=D1=81=20=D0=BF=D0=BE?= =?UTF-8?q?=20=D0=B2=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D1=8E=20?= =?UTF-8?q?=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D0=BA=D0=BE=D0=BD=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=BD=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rst_n был прибит к единице, и состояние модулей после конфигурации задавали только начальные значения регистров. Теперь короткий сброс на 256 тактов. Симуляция проходит. Отсутствия байт на UART это не вылечило -- коммит самостоятельный, как гигиена, а не как исправление. --- src/Top.vhd | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/Top.vhd b/src/Top.vhd index 1f5d722..bc00541 100644 --- a/src/Top.vhd +++ b/src/Top.vhd @@ -55,7 +55,12 @@ architecture Behavioral of Top is constant CIC_W : integer := 26; constant FIR_DEC : integer := 5; -- 62.5 кГц / 5 = 12.5 кГц - signal rst_n : std_logic := '1'; + -- Сброс по включению. Раньше здесь была константа '1', и тогда состояние + -- модулей после конфигурации определялось только начальными значениями + -- регистров. Для UART это критично: до первого кадра он молчит, и уровень + -- на линии задаёт его сдвиговый регистр, который обязан быть в единицах. + signal rst_n : std_logic := '0'; + signal rst_cnt : unsigned(7 downto 0) := (others => '0'); signal pdm_bit : std_logic; signal pdm_valid : std_logic; @@ -84,7 +89,17 @@ architecture Behavioral of Top is begin - rst_n <= '1'; + por_proc : process (clk) + begin + if rising_edge(clk) then + if rst_cnt = 255 then + rst_n <= '1'; + else + rst_cnt <= rst_cnt + 1; + rst_n <= '0'; + end if; + end if; + end process por_proc; led_event <= pdm_valid when LED_SRC = 2 else cic_valid when LED_SRC = 1 else