EDA 第4章 VHDL设计提高
- 格式:ppt
- 大小:785.00 KB
- 文档页数:50


E D A用V H D L语言设计一个2-4译码器2-4译码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY decoder 2 _4 ISPORT( a:IN STD_LOGIC_VECTOR(1 DOWNTO 0); s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END decoder2_4;ARCHITECTURE Behavioral OF decoder2 _4_t IS BEGINPROCESS(sel)BEGINCASE a ISWHEN "00"=>s<=”0001”;WHEN "01"=>s<=”0010”;WHEN "10"=>s<=”0100”;WHEN "11"=>s<=”1000 “;WHEN OTHERS=>s<=’’0000”END CASE;END PROCESS;END Brhavioral;4选1数据选择器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sel4 ISPROT(d:IN STD_LOGIC_VECTOR(3DOWNTO 0); a:IN STD_LOGIC_VECTOR(1 DOWNTO 0);s:OUT STD_LOGIC);END sel4:ARCHITECTURE Behavioral OF sel4 ISBEGINROCESS(a,d)BEGINCASE a ISWHEN "00"=>s<=d(0)WHEN "01"=>s<=d(1)WHEN "10"=>s<=d(2)WHEN "11"=>s<=d(3) “;WHEN OTHERS=>s<=’Z’END CASE;END PROCESS;END Brhavioral;100进制加法计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY counter ISPORT(clk,en,load,rst:IN STD_LOGICd;IN STD_LOGIC_VECTOR(6 DOWNTO 0);q: OUT STD_LOGIC_VECTOR(6DOWNTO 0):END counter 100;ARCHTECTURE Behavioral OF counter 100 ISsignal qtemp:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINPROCESS(clk,d,en,load,rst)BEGINIF rst= ’1’ THENqtemp<=”00000000”;ELSIF rising-edge(clk) THEN\IF en=’1’ THENIF load=’1’ THEN qtemp<=d,ELSIF qtemp=”1100011” THEN qtemp<=”00000000”;ELSIF qtemp<=qtemp+’1;END IF;END IF;END IF;END PROCESS;q<=qtemp;END Behavioral;8位从高至低串入串出移位寄存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shift.register ISPORT( d,clk:IN STD_LOGIC;q:OUT STD_LOGIC);END d shift.register;ARCHITECTURE Behavioral OF shift.register IS signal qtemp:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINPROCESS(d,clk)BEGINIF rising-edge(clk) THENq<=dtemp(0);dtemp<=d&dtemp(7 DOWNTO 1);END IF;END PROCESS;END Behavioral;状态机LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fsm ISPORT(tin,clk:IN STD_LOGIC;yout:OUT STD_LOGIC_VECTOR(1DOWNTO 0)); END fsm;ARCHITECTURE Behavioral OF fsm ISTYPE state-type IS (S0,S1,S2)signal state,next_state:state_type;BEGINSYNC_PROC:PROCESS(clk)BEGINIF rising_edge(clk) THENstate < = next_state;END IF;END PROCESS;OUTPUT_DECODE:PROCESS(state)BEGINCASE state ISWHEN S0=> yout <=”00”;WHEN S1=> yout<=”01”;WHEN S2=> yout<=”10”;WHEN OTHERS =>yout<=”zz”;END LAST;END PROCESS;NEXT_STATE_DECODE:PROCESS(state,tin)BEGINnext_state<=state;CASE state ISWHEN S0=>next_state<=S1;WHEN S1=> next_state<=S2;WHEN S2=>IF tin=’0’ THEN next_state<=S1;ELSIF tin=’1’ THEN next_state<=S0;ELSE NULL;END IF;WHEN OTHERS=>NULL;END CASE;END PROCESS;END Behavioral;。