---------------------------状态机---------------------------Library ieee;Use ieee.std_logic_1164.all;-------------------------------------------Entity statem isPort(clk,clr:in std_logic; Q0,Q1,Q2,Q3:out std_logic_vector(6 downto 0));end;---------------------------------------------architecture dd of statem isType state is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9);signal ss0,ss1,ss2,ss3:state;signal Q:integer range 0 to 19999999;signal cp:std_logic;procedure disp(s:in state;p:out std_logic_vector(6 downto 0))isbegin case s is when s0=>p:="1000000"; when s1=>p:="1111001"; when s2=>p:="0100100"; when s3=>p:="0110000"; when s4=>p:="0011001"; when s5=>p:="0010010"; when s6=>p:="0000010"; when s7=>p:="1111000"; when s8=>p:="0000000"; when s9=>p:="0010000"; end case;end disp;----------1s---------------beginprocess(clk) begin if clk'event and clk='1' then Q<=Q+1; if Q=0 then cp<=not cp; end if; end if;end process;---------------------------------- process(cp) begin if clr='0' then ss0<=s0; ss1<=s0; ss2<=s0; ss3<=s0;elsif cp'event and cp='1' then case ss0 is when s0=>ss0<=s1; when s1=>ss0<=s2; when s2=>ss0<=s3; when s3=>ss0<=s4; when s4=>ss0<=s5; when s5=>ss0<=s6; when s6=>ss0<=s7; when s7=>ss0<=s8; when s8=>ss0<=s9; when s9=>ss0<=s0; case ss1 is when s0=>ss1<=s1; when s1=>ss1<=s2; when s2=>ss1<=s3; when s3=>ss1<=s4; when s4=>ss1<=s5; when s5=>ss1<=s0; case ss2 is when s0=>ss2<=s1; when s1=>ss2<=s2; when s2=>ss2<=s3; when s3=>ss2<=s4; when s4=>ss2<=s5; when s5=>ss2<=s6; when s6=>ss2<=s7; when s7=>ss2<=s8; when s8=>ss2<=s9; when s9=>ss2<=s0; case ss3 is when s0=>ss3<=s1; when s1=>ss3<=s2; when s2=>ss3<=s3; when s3=>ss3<=s4; when s4=>ss3<=s5; when s5=>ss3<=s0; when others=>null; end case; end case; when others=>null; end case; end case;end if;end process;process(ss0,ss1) variable sss0,sss1,sss2,sss3:std_logic_vector(6 downto 0); begin disp(ss0,sss0); disp(ss1,sss1); disp(ss2,sss2); disp(ss3,sss3); Q0<=sss0;Q1<=sss1;Q2<=sss2;Q3<=sss3;end process;end;--------------------------------判断语句----------------------------------------------------- Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity statem isPort(clk,clr:in std_logic; Q0,Q1,Q2,Q3:out std_logic_vector(6 downto 0));end;architecture dd of statem issignal ss0,ss2, ss1,ss3:std_logic_vector(3 downto 0);signal Q:integer range 0 to 12999999;signal cp:std_logic;procedure disp0(s0:in std_logic_vector(3 downto 0);p0:out std_logic_vector(6 downto 0))isbegin case s0 is when "0000"=>p0:="1000000"; when "0001"=>p0:="1111001"; when "0010"=>p0:="0100100"; when "0011"=>p0:="0110000"; when "0100"=>p0:="0011001"; when "0101"=>p0:="0010010"; when "0110"=>p0:="0000010"; when "0111"=>p0:="1111000"; when "1000"=>p0:="0000000"; when "1001"=>p0:="0010000"; when others=>null; end case;end disp0;beginprocess(clk) beginif clk'event and clk='1' then Q<=Q+1; if Q=0 then cp<=not cp; end if;end if;end process; process(cp) begin if clr='0' then ss0<="0000"; ss1<="0000"; ss2<="0000"; ss3<="0000"; elsif cp'event and cp='1' then ss0<=ss0+1; if ss0=9 then ss0<="0000"; ss1<=ss1+1; if ss1=5 then ss1<="0000"; ss2<=ss2+1; if ss2=9 then ss2<="0000"; ss3<=ss3+1; if ss3=5 then ss3<="0000"; end if; end if; end if; end if; end if;end process;process(ss0,ss1,ss2,ss3) variable sss0,sss1,sss2,sss3:std_logic_vector(6 downto 0); begin disp0(ss0,sss0); disp0(ss1,sss1); disp0(ss2,sss2); disp0(ss3,sss3); Q0<=sss0;Q1<=sss1;Q2<=sss2;Q3<=sss3;end process;end;
导读:目前正在解读《用状态机编写的VHDL60分计时器》的相关信息,《用状态机编写的VHDL60分计时器》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《用状态机编写的VHDL60分计时器》的详细说明。
简介:本文给出的是一个用状态机编写的VHDL60分计时器程序。
提醒:《用状态机编写的VHDL60分计时器》最后刷新时间 2024-03-14 00:58:06,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《用状态机编写的VHDL60分计时器》该内容的真实性请自行鉴别。