文档详情

8位串行状态机.doc

发布:2017-03-21约4.19千字共5页下载文档
文本预览下载声明
1、时序控制状态机VHDL码: LIBRARY IEEE; USE IEEE.STD_logic_1164.all; ENTITY PULS8 IS PORT (RST,CLK,RU : IN STD_LOGIC:=0; SS : IN STD_LOGIC_VECTOR(2 DOWNTO 0):=000; LDO,ROUT,P,CT,COUT : OUT STD_LOGIC:=0); END ENTITY PULS8; ARCHITECTURE behav OF PULS8 IS TYPE states IS(S0,S1,S2,S3,S4,S5,S6,S7,S8); SIGNAL ST : states:=S0; BEGIN PROCESS(CLK,RST,RU,SS) BEGIN IF RST=0 THEN ST =S0; ELSIF (CLKEVENT AND CLK =1 AND RU =1) THEN CASE ST IS WHEN S0 = IF SS=000 THEN ST =S1;LDO=0;ROUT=0;COUT=0;P=0;CT=0;ELSE ST=S0;END IF; WHEN S1 = IF SS=001 THEN ST =S2;LDO=1;COUT=1;P=1;CT=1;ELSE ST=S1;COUT=0;P=0;CT=0;END IF; WHEN S2 = IF SS=010 THEN ST =S3;LDO=1;COUT=1;P=1;CT=1;ELSE ST=S2;COUT=0;P=0;CT=0;END IF; WHEN S3 = IF SS=011 THEN ST =S4;LDO=1;COUT=1;P=1;CT=1;ELSE ST=S3;COUT=0;P=0;CT=0;END IF; WHEN S4 = IF SS=100 THEN ST =S5;LDO=1;COUT=1;P=1;CT=1;ELSE ST=S4;COUT=0;P=0;CT=0;END IF; WHEN S5 = IF SS=101 THEN ST =S6;LDO=1;COUT=1;P=1;CT=1;ELSE ST=S5;COUT=0;P=0;CT=0;END IF; WHEN S6 = IF SS=110 THEN ST =S7;LDO=1;COUT=1;P=1;CT=1;ELSE ST=S6;COUT=0;P=0;CT=0;END IF; WHEN S7 = IF SS=111 THEN ST =S8;LDO=1;COUT=1;P=1;CT=1;ELSE ST=S7;COUT=0;P=0;CT=0;END IF; WHEN S8 = IF RU=1 THEN ST =S0 ; ELSE ST=S8;END IF; WHEN OTHERS= ST =S0; END CASE; IF ST=S8 THEN ROUT=1; ELSE ROUT =0; END IF; END IF; END PROCESS; END ARCHITECTURE behav; 状态机控制串并转换8数码静态显示电路的状态图如下图: 时序控制状态机原理图: 时序控制状态机仿真波形图 2 、左移寄存器VHDL码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SHIFTER IS PORT (CLOCK,LOAD:IN STD_LOGIC; DATA:IN STD_LOGIC_VECTOR(7 DOWNTO 0); shiftout: OUT STD_LOGIC); END SHIFTER; ARCHITECTURE ONE OF SHIFTER IS BEGIN PROCESS(CLOCK,LOAD) VARIABLE REG8: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLOCKEVENT AND CLOCK=1 THEN IF LOAD=0 THEN REG8:=DATA; ELSE REG8(1 DOWNTO 7):=REG8(0 DOWNTO 6); REG8(0):=0; shiftout = REG8(7); END IF; END IF; END PROCESS; END ONE; 左移寄存器原理图: 左移寄存器仿真波形图: 3、7段16进制译码器VHDL码:: libra
显示全部
相似文档