From f6c568b416174a6f57f83055a6f73c86157696ab Mon Sep 17 00:00:00 2001 From: Davide Date: Fri, 21 Mar 2025 17:47:28 +0100 Subject: [PATCH] Refactor KittCarPWM logic for improved LED direction handling and clean up Vivado project settings --- LAB1/src/KittCarPWM.vhd | 25 ++++++++++--------- .../lab1_kit_car_pwm/lab1_kit_car_pwm.xpr | 9 +++---- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/LAB1/src/KittCarPWM.vhd b/LAB1/src/KittCarPWM.vhd index b1741f8..f2d29a0 100644 --- a/LAB1/src/KittCarPWM.vhd +++ b/LAB1/src/KittCarPWM.vhd @@ -86,12 +86,13 @@ BEGIN leds_sr <= (OTHERS => 0); led_sig <= (OTHERS => '0'); counter := (OTHERS => '0'); + up <= '1'; ELSIF rising_edge(clk) THEN - -- Kitt logic - IF leds_sr(TAIL_LENGTH - 1) = 15 THEN + -- Kitt logic: Update direction + IF leds_sr(TAIL_LENGTH - 1) = led'high THEN up <= '0'; - ELSIF leds_sr(TAIL_LENGTH - 1) = 0 THEN + ELSIF leds_sr(TAIL_LENGTH - 1) = led'low THEN up <= '1'; END IF; @@ -101,17 +102,17 @@ BEGIN -- Calculate the number of periods IF counter >= (MIN_KITT_CAR_STEP_NS * n_period) THEN - -- Shift the leds - IF up = '1' THEN - leds_sr <= (leds_sr(TAIL_LENGTH - 1) + 1) & leds_sr(TAIL_LENGTH - 2 DOWNTO 0); - ELSIF up = '0' THEN - leds_sr <= (leds_sr(TAIL_LENGTH - 1) - 1) & leds_sr(TAIL_LENGTH - 2 DOWNTO 0); - END IF; - - -- Reset leg_sig + -- Reset led_sig led_sig <= (OTHERS => '0'); - -- Assign the leds + -- Shift the leds + IF up = '1' THEN + leds_sr <= (leds_sr(TAIL_LENGTH - 1) + 1) & leds_sr(TAIL_LENGTH - 1 DOWNTO 1); + ELSE + leds_sr <= (leds_sr(TAIL_LENGTH - 1) - 1) & leds_sr(TAIL_LENGTH - 1 DOWNTO 1); + END IF; + + -- Assign the LEDs FOR i IN 0 TO TAIL_LENGTH - 1 LOOP led_sig(leds_sr(i)) <= leds_pwm(i); END LOOP; diff --git a/LAB1/vivado/lab1_kit_car_pwm/lab1_kit_car_pwm.xpr b/LAB1/vivado/lab1_kit_car_pwm/lab1_kit_car_pwm.xpr index 95b970f..cff86d3 100644 --- a/LAB1/vivado/lab1_kit_car_pwm/lab1_kit_car_pwm.xpr +++ b/LAB1/vivado/lab1_kit_car_pwm/lab1_kit_car_pwm.xpr @@ -106,6 +106,7 @@ +