¡¶Êý×ÖϵͳÉè¼Æ¡·×ܸ´Ï°Ìâ ÏÂÔØ±¾ÎÄ

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2026/3/23 20:09:07ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£

COMPONENT dff1

PORT (clk,d:IN std_logic; q,qb:OUT std_logic); END COMPONENT ;

SIGNAL count_IN_bar:std_logic_vector(4 DOWNTO 0); BEGIN

count_IN_bar(0)<=clk;

gen1:for i IN 0 TO 3 GENERATE

u:dff1 PORT MAP (clk=> , d=> , q=> ,qb=> ); END GENERATE; END rplcont;

£¨Èýʮһ£©ÔÚÏÂÃæºáÏßÉÏÌîÉϺÏÊʵÄÓï¾ä£¬Íê³É½»Í¨µÆ¿ØÖÆÆ÷µÄÉè¼Æ¡£

˵Ã÷£ººì¡¢»Æ¡¢Â̵ƷֱðÁÁ10Ã룬״̬0ʱ¶«Î÷Â̵ÆÁÁ£¬Äϱ±ºìµÆÁÁ£»×´Ì¬1ʱ¶«Î÷ÂÌ¡¢»ÆµÆÁÁ£¬Äϱ±ºìµÆÁÁ£»×´Ì¬2ʱ¶«Î÷ºìµÆÁÁ£¬Äϱ±Â̵ÆÁÁ£»×´Ì¬3ʱ¶«Î÷ºìµÆÁÁ£¬Äϱ±ÂÌ¡¢»ÆµÆÁÁ¡£

LIBRARY ieee;

USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY trafficled1 IS

PORT (clk, reset: IN std_logic;

q: OUT std_logic_vector(11 DOWNTO 0) ); END;

ARCHITECTURE one OF trafficled1 IS

SIGNAL y_ewsn, g_ewsn, r_ewsn:std_logic_vector(3 DOWNTO 0); SIGNAL count:integer RANGE 0 TO 9; SIGNAL state:integer RANGE 0 TO 3; BEGIN

PROCESS(reset, clk,count) BEGIN

IF reset='1' THEN count<=0; state<=0;

ELSIF clk'event AND clk='1' THEN count<=count+1;

IF (count= ) THEN state <=state+1; END IF;

IF state> THEN state <=0; END IF; END IF;

CASE state IS

WHEN 0 => y_ewsn<=\WHEN 1 => y_ewsn<=\WHEN 2 => y_ewsn<=\WHEN 3=> y_ewsn<=\WHEN OTHERS=> ;

END CASE; END PROCESS;

q(0)<=r_ewsn(0); q(1)<=g_ewsn(0); q(2)<=y_ewsn(0) ; q(3)<=r_ewsn(2); q(4)<=g_ewsn(2); q(5)<=y_ewsn(2) ; q(6)<=r_ewsn(1); q(7)<=g_ewsn(1); q(8)<=y_ewsn(1) ; q(9)<=r_ewsn(3); q(10)<=g_ewsn(3); q(11)<=y_ewsn(3) ; END;

£¨ÈýÊ®¶þ£©ÔÚÏÂÃæºáÏßÉÏÌîÉϺÏÊʵÄÓï¾ä£¬Íê³É8λÊý×Ö±È½ÏÆ÷µÄÉè¼Æ¡£

ENTITY COMP IS PORT

(a,b: IN RANGE 0 T0 ; aequalb, agreatb, alessb : OUT BIT); END COMP;

ARCHITECTURE behave OF COMP IS BEGIN

aequalb£¼£½¡®1¡¯ WHEN a£½b ELSE¡®0¡¯; agreatb£¼£½¡®1¡¯ WHEN a£¾b ELSE¡®0¡¯; alessb£¼£½¡®1¡¯ WHEN a£¼b ELSE¡®0¡¯; END behave;

£¨ÈýÊ®Èý£©ÔÚÏÂÃæºáÏßÉÏÌîÉϺÏÊʵÄÓï¾ä£¬Íê³ÉÒ»¸ö16¸ö×ֽڵĶÑÕ»µÄÉè¼Æ¡£ ˵Ã÷£º¶ÑÕ»Óи´Î»Ðźš¢Ñ¹Õ»/µ¯Õ»Ðźš¢¶ÑÕ»ÂúÐźš¢Êý¾ÝÊäÈë/Êä³ö¿Ú¡£ LIBRARY ieee£» USE ieee.std_logic_1164.ALL£» USE ieee.std_logic_signed.ALL£»

ENTITY stack IS PORT

( datain : IN std_logic_vector (7 DOWNTO 0 );

push , pop , reset , clk : IN std_logic; stackfull : OUT std_logic;

dataout : BUFFER std_logic_vector (7 DOWNTO 0 )); END stack;

ARCHITECTURE a OF stack IS

TYPE arraylogic IS ARRAY (15 DOWTO 0) OF std_logic_vector (7 DOWNTO 0 ); --¶¨ÒåÒ»¸ö16×Ö½ÚÊý¾ÝÀàÐÍ

SIGNAL data : arraylogic£» -- ´Ë´¦¶¨ÒåÁËdataΪһ¸öÊý×é16¡Á8 SIGNAL stackflag : std_logic_vector (15 DOWNTO 0 ); --¶¨Òå¶ÑÕ»±êÖ¾£¬Ã¿Ò»×Ö½ÚÓÐÊý¾ÝΪ1£¬ÎÞÊý¾ÝΪ0 BEGIN

stackfull£¼£½ ; --×Ö½Ú0Ϊջµ×

PROCESS (clk , nreset , pop , push) BEGIN

IF reset = ¡®1¡¯ THEN

stackflag£¼£½( OTHERS => ¡®0¡¯ ); dataout£¼£½( OTHERS => ¡®0¡¯ ); FOR i IN 0 TO 15 LOOP

data ( i ) £¼£½ ; END LOOP;

ELSIF clk¡¯event AND clk = ¡®1¡¯ THEN

IF push = ¡®1¡¯ AND pop= ¡®0¡¯ THEN -- push FOR i IN 0 TO 14 LOOP

data ( i ) £¼£½ ; END LOOP;

data (15) £¼£½ ;

stackflag£¼£½¡®1¡¯ & stackflag(15 DOWNTO 1 );

ELSIF push = ¡®0¡¯ AND pop= ¡®1¡¯ THEN -- pop dataout£¼£½data (15);

FOR i IN 15 DOWNTO 1 LOOP data ( i ) £¼£½ ; END LOOP£»

stackflag£¼£½stackflag ( DOWNTO 0 ) & ¡®0¡¯; END IF£»

END IF£» END PROCESS; END a;

£¨ÈýÊ®ËÄ£©ÔÚÏÂÃæºáÏßÉÏÌîÉϺÏÊʵÄÓï¾ä£¬Íê³ÉÒ»¸ö8λ·ÖƵÆ÷µÄÉè¼Æ¡£ LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PULSE IS

PORT ( CLK : IN STD_LOGIC;

D : IN STD_LOGIC_VECTOR (7 DOWNTO 0); FOUT : OUT STD_LOGIC ); END;

ARCHITECTURE one OF PULSE IS SIGNAL FULL : STD_LOGIC; BEGIN

P_REG: PROCESS(CLK)

CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN

IF CLK¡¯EVENT AND CLK = ¡®1¡¯ THEN IF CNT8 = \ CNT8 := ; --µ±CNT8¼ÆÊý¼ÆÂúʱ£¬ÊäÈëÊý¾ÝD±»Í¬²½Ô¤Öøø¼ÆÊýÆ÷CNT8 FULL <= '1'; --ͬʱʹÒç³ö±êÖ¾ÐźÅFULLÊä³öΪ¸ßµçƽ ELSE CNT8 := ; --·ñÔò¼ÌÐø×÷¼Ó1¼ÆÊý

FULL <= '0'; --ÇÒÊä³öÒç³ö±êÖ¾ÐźÅFULLΪµÍµçƽ END IF; END IF;

END PROCESS P_REG;

P_DIV: PROCESS( ) VARIABLE CNT2 : STD_LOGIC; BEGIN

IF FULL'EVENT AND FULL = '1' THEN

CNT2 <= ; --Èç¹ûÒç³ö±êÖ¾ÐźÅFULLΪ¸ßµçƽ£¬D´¥·¢Æ÷Êä³öÈ¡·´ IF CNT2 = '1' THEN FOUT <= '1'; ELSE FOUT <= '0'; END IF; END IF;

END PROCESS P_DIV; END;

£¨ÈýÊ®Î壩ÔÚÏÂÃæºáÏßÉÏÌîÉϺÏÊʵÄÓï¾ä£¬Íê³ÉÒ»¸ö10Ïߣ­4ÏßÓÅÏȱàÂëÆ÷µÄÉè¼Æ¡£

LIBRARY IEEE ;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY coder IS

PORT ( din : IN STD_LOGIC_VECTOR(9 DOWNTO 0);

output : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END coder;

ARCHITECTURE behav OF CODER IS

SIGNAL SIN : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

PROCESS ( ) BEGIN

IF (din(9)='0') THEN SIN <= \

(din(8)=¡¯0¡¯) THEN SIN <= \ ELSIF (din(7)='0') THEN SIN <= \ ELSIF (din(6)='0') THEN SIN <= \ ELSIF (din(5)='0') THEN SIN <= \ ELSIF (din(4)='0') THEN SIN <= \ ELSIF (din(3)='0') THEN SIN <= \ ELSIF (din(2)='0') THEN SIN <= \ ELSIF (din(1)='0') THEN SIN <= \ ELSE SIN <= ;

£» END PROCESS £» Output <= sin £» END behav;

ÈýÊ®Áù£©ÔÚÏÂÃæºáÏßÉÏÌîÉϺÏÊʵÄÓï¾ä£¬Íê³ÉÒ»¸öĦ¶û״̬»úµÄÉè¼Æ¡£ ˵Ã÷:״̬»úµÄ״̬ͼ¼ûͼa,״̬½á¹¹Í¼¼ûͼb.

Library ieee;

Use ieee.std_logic_1164.all; Entity mooreb is

Port (clk, reset : in std_logic;

Ina : in std_logic_vector (1 downto 0); Outa : out std_logic_vector (3 downto 0) ); End mooreb;

Architecture one of mooreb is

Type ms_state is (st0, st1, st2, st3); Signal c_st, n_st : ; Begin

Process (clk, reset) Begin

If reset = ¡®1¡¯ then c_st <= st0;

Elsif clk¡¯event and clk = ¡®1¡¯ then c_st <= ; End if; End process; Process (c_st) Begin

Case c_st is

When st0 => if ina = ¡°00¡± then n_st <= st0; Else n_st <= st1; End if;

Outa <= ¡°0101¡±;

When st1 => if ina = ¡°00¡± then n_st <= st1; Else n_st <= st2; End if;

Outa <= ¡°1000¡±;

When st2 => if ina = ¡°11¡± then n_st <= ; Else n_st <= st3; End if;

Outa <= ¡°1100¡±;

When st3 => if ina = ¡°11¡± then n_st <= ; Else n_st <= st0; End if;

Outa <= ;