完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
entity ledout is port( clk : in std_logic; rotary_a : in std_logic; rotary_b : in std_logic; rotary_press : in std_logic; led : out std_logic_vector(7 downto 0) ); end ledout; architecture Behavioral of ledout is signal rotary_a_in : std_logic; signal rotary_b_in : std_logic; signal rotary_press_in : std_logic; signal rotary_in : std_logic_vector(1 downto 0); signal rotary_q1 : std_logic; signal delay_rotary_q1 : std_logic; signal rotary_q2 : std_logic; signal rotary_event : std_logic; signal rotary_left : std_logic; signal led_pattern : std_logic_vector(7 downto 0):="00010000"; signal led_drive : std_logic_vector(7 downto 0):="10000000"; signal delay1_led_drive : std_logic_vector(7 downto 0); signal delay2_led_drive : std_logic_vector(7 downto 0); signal delay3_led_drive : std_logic_vector(7 downto 0); signal delay4_led_drive : std_logic_vector(7 downto 0); signal delay5_led_drive : std_logic_vector(7 downto 0); signal delay6_led_drive : std_logic_vector(7 downto 0); signal delay7_led_drive : std_logic_vector(7 downto 0); signal delay8_led_drive : std_logic_vector(7 downto 0); signal delay9_led_drive : std_logic_vector(7 downto 0); signal delay10_led_drive : std_logic_vector(7 downto 0); signal delay11_led_drive : std_logic_vector(7 downto 0); signal delay12_led_drive : std_logic_vector(7 downto 0); signal delay13_led_drive : std_logic_vector(7 downto 0); signal delay14_led_drive : std_logic_vector(7 downto 0); signal delay15_led_drive : std_logic_vector(7 downto 0); signal delay16_led_drive : std_logic_vector(7 downto 0); signal delay17_led_drive : std_logic_vector(7 downto 0); signal delay18_led_drive : std_logic_vector(7 downto 0); signal delay1_rotary_a_in : std_logic; begin rotary_filter:process(clk) begin if clk'event and clk='1' then delay1_rotary_a_in <= rotary_a; rotary_a_in <= delay1_rotary_a_in; rotary_b_in <= rotary_b; rotary_in <= rotary_b_in & rotary_a_in; rotary_press_in <= rotary_press; case rotary_in is when "00" => rotary_q1 <= '0'; rotary_q2 <= rotary_q2; when "01" => rotary_q1 <= rotary_q1; rotary_q2 <= '0'; when "10" => rotary_q1 <= rotary_q1; rotary_q2 <= '1'; when "11" => rotary_q1 <= '1'; rotary_q2 <= rotary_q2; when others => rotary_q1 <= rotary_q1; rotary_q2 <= rotary_q2; end case; end if; end process rotary_filter; direction:process(clk) begin if clk'event and clk='1' then delay_rotary_q1 <= rotary_q1; if rotary_q1 ='1' and delay_rotary_q1='0' then rotary_event <= '1'; rotary_left <= rotary_q2; else rotary_event <= '0'; rotary_left <= rotary_left; end if; end if; end process direction; led_display:process(clk) begin if clk'event and clk='1' then if rotary_event='1' then if rotary_left ='1' then led_pattern <= led_pattern(6 downto 0)& led_pattern(7); else led_pattern <= led_pattern(0) & led_pattern(7 downto 1); end if; end if; if rotary_press_in = '0' then led_drive <= led_pattern; else led_drive<=led_pattern xor "11111111"; end if; delay1_led_drive <= led_drive; delay2_led_drive <= delay1_led_drive; delay3_led_drive <= delay2_led_drive; delay4_led_drive <= delay3_led_drive; delay5_led_drive <= delay4_led_drive; delay6_led_drive <= delay5_led_drive; delay7_led_drive <= delay6_led_drive; delay8_led_drive <= delay7_led_drive; delay9_led_drive <= delay8_led_drive; delay10_led_drive <= delay9_led_drive; delay11_led_drive <= delay10_led_drive; delay12_led_drive <= delay11_led_drive; delay13_led_drive <= delay12_led_drive; delay14_led_drive <= delay13_led_drive; delay15_led_drive <= delay14_led_drive; delay16_led_drive <= delay15_led_drive; delay17_led_drive <= delay16_led_drive; delay18_led_drive <= delay17_led_drive; led <= delay18_led_drive; end if; end process led_display; end Behavioral; |
|
|
|
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-18 16:02 , Processed in 0.684293 second(s), Total 65, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号