Nguyên lý
+ Mạch điều khiển LED được kích hoạt bởi tín hiệu clk (clock) và tín hiệu reset (đặt lại).
Khi tín hiệu reset được kích hoạt ở mức logic '1', mạch sẽ trở về trạng thái ban đầu với giá trị 00000000, đồng thời các LED đơn đấu anode chung sẽ được tắt.
+ Khi tín hiệu reset không, mạch sẽ hoạt động như sau:
• Nếu trạng thái hiện tại là 00000000 thì trạng thái tiếp theo là
00011000 hai LED ở giữa được bật, còn lại tất cả các LED khác đều tắt.
• Nếu trạng thái hiện tại là 00011000 thì trạng thái tiếp theo là
• Nếu trạng thái hiện tại là 00111100 thì trạng thái tiếp theo là
• Nếu trạng thái hiện tại là 01111110 thì trạng thái tiếp theo là
• Nếu trạng thái hiện tại là 11111111 thì trạng thái tiếp theo là
Quá trình thực hiện
- Main library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity dk_8_led_test is
The VHDL code defines a module named `dk_8_led_test` with inputs for a clock and a reset signal, and an output for an 8-bit LED vector The architecture is behavioral, utilizing a signal `t` to represent the LED states Within a process triggered by the clock and reset signals, if the reset is activated, `t` is initialized to "00000000" On each rising edge of the clock, the code transitions through specific states: from "00000000" to "00011000", then to "00111100", followed by "01111110", and "11111111", before cycling back to "00000000" If `t` encounters any undefined state, it resets to "00000000" Finally, the current state of `t` is assigned to the output `led_out`.
4 library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity tb_dk_8_led is
Port ( ); end tb_dk_8_led; architecture Behavioral of tb_dk_8_led is component dk_8_led_test
The code snippet defines a component with ports for clock, reset, and an 8-bit LED output in VHDL It initializes the clock signal to '0' and sets up a reset signal, while the LED output is declared as a vector The component instance, named "u," maps the clock, reset, and LED output signals accordingly Additionally, the clock signal toggles every 0.5 nanoseconds, creating a clock pulse for the system.
reset output_led
); process begin input_control