µÚÒ»·¶ÎÄÍø - רҵÎÄÕ·¶ÀýÎĵµ×ÊÁÏ·ÖÏíÆ½Ì¨

¡¶EDA¼¼ÊõʵÓý̳̣¨µÚÎå°æ£©¡·Ï°Ìâ´ð°¸£¨µÚ1~10Õ£©--ÅË

À´Ô´£ºÓû§·ÖÏí ʱ¼ä£º2025/9/5 16:29:27 ±¾ÎÄÓÉloading ·ÖÏí ÏÂÔØÕâÆªÎĵµÊÖ»ú°æ
˵Ã÷£ºÎÄÕÂÄÚÈݽö¹©Ô¤ÀÀ£¬²¿·ÖÄÚÈÝ¿ÉÄܲ»È«£¬ÐèÒªÍêÕûÎĵµ»òÕßÐèÒª¸´ÖÆÄÚÈÝ£¬ÇëÏÂÔØwordºóʹÓá£ÏÂÔØwordÓÐÎÊÌâÇëÌí¼Ó΢ÐźÅ:xxxxxxx»òQQ£ºxxxxxx ´¦Àí£¨¾¡¿ÉÄܸøÄúÌṩÍêÕûÎĵµ£©£¬¸ÐлÄúµÄÖ§³ÖÓëÁ½⡣

state_inputs : IN STD_LOGIC_VECTOR (0 TO 1);--ÍⲿÊäÈëÐźŠcomb_outputs :OUT INTEGER RANGE 0 TO 15 ); --¶ÔÍâÊä³öÐźŠEND s_machine;

ARCHITECTURE behv OF s_machine IS

TYPE FSM_ST IS (s0, s1, s2, s3); --Êý¾ÝÀàÐͶ¨Ò壬״̬·ûºÅ»¯ SIGNAL c_st, next_state: FSM_ST;--½«ÏÖ̬ºÍ´Î̬¶¨ÒåΪеÄÊý¾ÝÀàÐÍ BEGIN

REG: PROCESS (reset,clk) BEGIN

IF reset ='0' THEN c_st <= s0;--¼ì²âÒì²½¸´Î»ÐźŠELSIF clk='1' AND clk'EVENT THEN c_st <= next_state; END IF; END PROCESS;

COM1: PROCESS(c_st, state_Inputs)--Ö÷¿Ø×éºÏ½ø³Ì(ÏÖ̬ºÍÍⲿÊäÈëΪÃô¸ÐÐźÅ) BEGIN

CASE c_st IS

WHEN s0 => IF state_inputs = \ÊäÈëΪ¡°00¡±£¬ÔÚs0̤²½ ELSE next_state<=s1;END IF;--·ñÔò½øÈës1 WHEN s1 => IF state_inputs = \ÊäÈëΪ¡°00¡±£¬ÔÚs1̤²½ ELSE next_state<=s2;END IF; --·ñÔò½øÈës2 WHEN s2 => IF state_inputs = \ÊäÈëΪ¡°11¡±£¬½øÈës0 ELSE next_state<=s3;END IF; --·ñÔò½øÈës3 WHEN s3 => IF state_inputs = \ÊäÈëΪ¡°11¡±£¬ÔÚs3̤²½ ELSE next_state<=s0;END IF; --·ñÔò·µ»Øs0 END case; END PROCESS;

COM2: PROCESS(c_st, state_Inputs)--Ö÷¿Ø×éºÏ½ø³Ì(ÏÖ̬ºÍÍⲿÊäÈëΪÃô¸ÐÐźÅ) BEGIN

CASE c_st IS

WHEN s0 => comb_outputs<= 5; --ÏÖ̬Ϊs0ʱ£¬¶ÔÍâÊä³öÃüÁîÐźÅ5±àÂë WHEN s1 => comb_outputs<= 8; --ÏÖ̬Ϊs1ʱ£¬¶ÔÍâÊä³öÃüÁîÐźÅ8±àÂë WHEN s2 => comb_outputs<= 12; --ÏÖ̬Ϊs2ʱ£¬¶ÔÍâÊä³öÃüÁîÐźÅ12±àÂë WHEN s3 => comb_outputs<= 14; --ÏÖ̬Ϊs3ʱ£¬¶ÔÍâÊä³öÃüÁîÐźÅ14±àÂë END case; END PROCESS; END behv;

10-3 ¸ÄдÀý10-1£¬Óú궨ÒåÓï¾ä¶¨Òå״̬±äÁ¿£¬¸ø³ö·ÂÕæ²¨ÐÎ(º¬×´Ì¬±äÁ¿)£¬Óëͼ10-3×÷±È½Ï¡£×¢ÒâÉèÖÃÊʵ±µÄ״̬»úÔ¼ÊøÌõ¼þ¡£

--10-3 ¸ÄдÀý10-1£¬Óú궨ÒåÓï¾ä¶¨Òå״̬±äÁ¿£¬¸ø³ö·ÂÕæ²¨ÐÎ(º¬×´Ì¬±äÁ¿)£¬Óëͼ10-3×÷±È½Ï¡£×¢ÒâÉèÖÃÊʵ±µÄ״̬»úÔ¼ÊøÌõ¼þ¡£ LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY s_machine IS

PORT(clk,reset : IN STD_LOGIC;--Ö÷¿ØÊ±Ðò½ø³ÌʱÖÓÇý¶¯ºÍ¸´Î»ÐźŠstate_inputs : IN STD_LOGIC_VECTOR (0 TO 1);--ÍⲿÊäÈëÐźŠcomb_outputs :OUT INTEGER RANGE 0 TO 15 ); --¶ÔÍâÊä³öÐźŠEND s_machine;

ARCHITECTURE behv OF s_machine IS

-- TYPE FSM_ST IS (s0, s1, s2, s3); --Êý¾ÝÀàÐͶ¨Ò壬״̬·ûºÅ»¯ -- attribute syn_encoding

: string;

-- attribute syn_encoding of FSM_ST : type is \

SIGNAL c_st, next_state: STD_LOGIC_VECTOR(1 DOWNTO 0);--FSM_ST;--½«ÏÖ̬ºÍ´Î̬¶¨ÒåΪеÄÊý¾ÝÀàÐÍ

CONSTANT s0: STD_LOGIC_VECTOR(1 DOWNTO 0):=\״̬·ûºÅ±àÂ붨Òå CONSTANT s1: STD_LOGIC_VECTOR(1 DOWNTO 0):=\ CONSTANT s2: STD_LOGIC_VECTOR(1 DOWNTO 0):=\ CONSTANT s3: STD_LOGIC_VECTOR(1 DOWNTO 0):=\BEGIN

REG: PROCESS (reset,clk) BEGIN

IF reset ='0' THEN c_st <= s0;--¼ì²âÒì²½¸´Î»ÐźŠELSIF clk='1' AND clk'EVENT THEN c_st <= next_state; END IF; END PROCESS;

COM:PROCESS(c_st, state_Inputs)--Ö÷¿Ø×éºÏ½ø³Ì(ÏÖ̬ºÍÍⲿÊäÈëΪÃô¸ÐÐźÅ) BEGIN

CASE c_st IS

WHEN s0 => comb_outputs<= 5; --ÏÖ̬Ϊs0ʱ£¬¶ÔÍâÊä³öÃüÁîÐźÅ5±àÂë IF state_inputs = \ÊäÈëΪ¡°00¡±£¬ÔÚs0̤²½ ELSE next_state<=s1;END IF; --·ñÔò½øÈës1 WHEN s1 => comb_outputs<= 8; --ÏÖ̬Ϊs1ʱ£¬¶ÔÍâÊä³öÃüÁîÐźÅ8±àÂë IF state_inputs = \ÊäÈëΪ¡°00¡±£¬ÔÚs1̤²½ ELSE next_state<=s2;END IF; --·ñÔò½øÈës2 WHEN s2 => comb_outputs<= 12; --ÏÖ̬Ϊs2ʱ£¬¶ÔÍâÊä³öÃüÁîÐźÅ12±àÂë IF state_inputs = \ÊäÈëΪ¡°11¡±£¬½øÈës0 ELSE next_state<=s3;END IF; --·ñÔò½øÈës3 WHEN s3 => comb_outputs<= 14; --ÏÖ̬Ϊs3ʱ£¬¶ÔÍâÊä³öÃüÁîÐźÅ14±àÂë IF state_inputs = \ÊäÈëΪ¡°11¡±£¬ÔÚs3̤²½ ELSE next_state<=s0;END IF; --·ñÔò·µ»Øs0 END case; END PROCESS; END behv;

10-4 ΪÀý10-2µÄLOCKÐźÅÔö¼ÓkeepÊôÐÔ£¬ÔÙ¸ø³ö´ËÉè¼ÆµÄ·ÂÕæ²¨ÐÎ(×¢ÒâɾȥLOCK_T)¡£

--10-4 ΪÀý10-2(MooreÐÍADC0809²ÉÑù)µÄLOCKÐźÅÔö¼ÓkeepÊôÐÔ¡£

¡¶EDA¼¼ÊõʵÓý̳̣¨µÚÎå°æ£©¡·Ï°Ìâ´ð°¸£¨µÚ1~10Õ£©--ÅË.doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ£¬·½±ã¸´ÖÆ¡¢±à¼­¡¢ÊղغʹòÓ¡
±¾ÎÄÁ´½Ó£ºhttps://www.diyifanwen.net/c8ysad731fy9ersa9r15c_13.html£¨×ªÔØÇë×¢Ã÷ÎÄÕÂÀ´Ô´£©

Ïà¹ØÍÆ¼ö£º

ÈÈÃÅÍÆ¼ö
Copyright © 2012-2023 µÚÒ»·¶ÎÄÍø °æÈ¨ËùÓÐ ÃâÔðÉùÃ÷ | ÁªÏµÎÒÃÇ
ÉùÃ÷ :±¾ÍøÕ¾×ðÖØ²¢±£»¤ÖªÊ¶²úȨ£¬¸ù¾Ý¡¶ÐÅÏ¢ÍøÂç´«²¥È¨±£»¤ÌõÀý¡·£¬Èç¹ûÎÒÃÇ×ªÔØµÄ×÷Æ·ÇÖ·¸ÁËÄúµÄȨÀû,ÇëÔÚÒ»¸öÔÂÄÚ֪ͨÎÒÃÇ£¬ÎÒÃǻἰʱɾ³ý¡£
¿Í·þQQ£ºxxxxxx ÓÊÏ䣺xxxxxx@qq.com
ÓåICP±¸2023013149ºÅ
Top