开发工具:
文件大小: 9kb
下载次数: 0
上传时间: 2018-04-11
详细说明: 实现几个灯的轮流闪烁。LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SHFRT IS PORT (CLK:IN STD_LOGIC; MODE:IN STD_LOGIC; EN:IN STD_LOGIC; RESET:IN STD_LOGIC; LEDG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END SHFRT; ARCHITECTURE BEHAV OF SHFRT IS TYPE FSM_ST IS(S00,S01,S10,S11,S20,S21,S30,S31,S40,S41,S50,S51,S60,S61,S70,S71,S80,S81,S82); SIGNAL CS,NS:FSM_ST; SIGNAL TEMP:INTEGER RANGE 0 TO 8:=0; SIGNAL REG:STD_LOGIC_VECTOR(7 DOWNTO 0):=(OTHERS=>'0'); BEGIN REG1:PROCESS(CLK,RESET) BEGIN IF RESET ='1' THEN CS<=S00; ELSIF CLK'EVENT AND CLK='1' THEN CS<=NS; END IF; END PROCESS; PROCESS(MODE,RESET) BEGIN IF RESET='1' THEN TEMP<=0; ELSIF MODE'EVENT AND MODE='1' THEN IF TEMP<=8 THEN TEMP<=TEMP+1; ELSE TEMP<=0; END IF; END IF; END PROCESS; REG2:PROCESS(CS,TEMP,REG) BEGIN CASE CS IS WHEN S00=>NS<=S01; WHEN S01=> IF TEMP=0 THEN NS<=S01; ELSE NS<=S10; END IF; WHEN S10=>NS<=S11; WHEN S11=> IF TEMP=1 THEN NS<=S11; ELSE NS<=S20; END IF; WHEN S20=>NS<=S21; WHEN S21=> IF TEMP=2 THEN NS<=S21; ELSE NS<=S30; END IF; WHEN S30=>NS<=S31; WHEN S31=> IF TEMP=3 THEN NS<=S31; ELSE NS<=S40; END IF; WHEN S40=>NS<=S41; WHEN S41=> IF TEMP=4 THEN NS<=S41; ELSE NS<=S40; END IF; WHEN S50=>NS<=S51; WHEN S51=> IF TEMP=5 THEN NS<=S51; ELSE NS<=S60; END IF; WHEN S60=>NS<=S61; WHEN S61=> IF TEMP=6 THEN NS<=S61; ELSE NS<=S70; END IF; WHEN S70=>NS<=S71; WHEN S71=> IF TEMP=7 THEN NS<=S71; ELSE NS<=S80; END IF; WHEN S80=>NS<=S81; WHEN S81=> IF TEMP=8 THEN IF REG="01100000" THEN NS<=S82; ELSE NS<=S81; END IF; ELSE NS<=S00; END IF; WHEN S82=> IF TEMP=8 THEN IF REG="00000110" THEN NS<=S81; ELSE NS<=S82; END IF; ELSE NS<=S00; END IF; WHEN OTHERS=>NS<=S00; END CASE; END PROCESS; REG3:PROCESS(CLK,CS) BEGIN IF CLK'EVENT AND CLK='1' THEN CASE CS IS WHEN S00=>REG<=(OTHERS=>'0'); WHEN S01=>REG<=NOT REG; WHEN S10=>REG<="10101010"; WHEN S01=>REG<=NOT REG; WHEN S20=>REG<="00000011"; WHEN S21=> REG(7 DOWNTO 1)<=REG(6 DOWNTO 0); REG(0)<=REG(7); WHEN S30=>REG<="1100000"; WHEN S31=> REG(6 DOWNTO 0)<=REG(7 DOWNTO 1); REG(7)<=REG(0); WHEN S40=>REG<="00000001"; WHEN S41=> REG(7 DOWNTO 1)<=REG(6 DOWNTO 0); WHEN S50=>REG<="10000000"; WHEN S51=> REG(6 DOWNTO 0)<=REG(7 DOWNTO 1); WHEN S60=>REG<="10000001"; WHEN S61=> REG(3 DOWNTO 1)<=REG(2 DOWNTO 0); REG(0)<=REG(3); REG(6 DOWNTO 4)<=REG(7 DOWNTO 5); REG(7)<=REG(4); WHEN S70=>REG<="00011000"; WHEN S71=> REG(2 DOWNTO 0)<=REG(3 DOWNTO 1); REG(3)<=REG(0); REG(7 DOWNTO 5)<=REG(6 DOWNTO 4); REG(4)<=REG(7); WHEN S80=>REG<="00000011"; WHEN S81=> REG(7 DOWNTO 1)<=REG(6 DOWNTO 0); REG(0)<=REG(7); WHEN S82=> REG(6 DOWNTO 0)<=REG(7 DOWNTO 1); REG(7)<=REG(0); WHEN OTHERS=>REG<=(OTHERS=>'0'); END CASE; END IF; END PROCESS; LEDG<=REG WHEN EN='1' ELSE (OTHERS=>'0'); END ARCHITECTURE BEHAV; ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.