跑马灯VHDL课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

跑马灯VHDL课程设计

一、设计任务

控制8个led进行花式显示,设计四种显示模式:

1.从左到右逐个点亮led;

2.从右到左逐个点亮led;

3.从两边到中间逐个点亮led;

4.从中间到两边逐个点亮led;

四种模式循环切换,由复位键rst控制系统的运行与停止.

二、设计过程

根据系统设计要求,采用状态机进行设计,状态机具有四种状态,每种状态完成一种显示模式四种状态间使用case语句进行切换.

程序如下:

library ieee;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

use ieee.std_logic_1164.all;

entity pmd is

port( clk, rst: in std_logic;

y: buffer std_logic_vector(7 downto 0));

end pmd;

architecture behave of pmd is

type states is (state0, state1, state2, state3);

signal state: states;

begin

process (clk, rst)

begin

if rst='1' then

y<="00000000" ; state <= state0;

elsif (clk'event and clk='1') then

case state is

when state0 =>

if y="00000000" then y<="10000000";state <= state0; elsif y="10000000" then y<="01000000";state <= state0; elsif y="01000000" then y<="00100000";state <= state0; elsif y="00100000" then y<="00010000";state <= state0; elsif y="00010000" then y<="00001000";state <= state0; elsif y="00001000" then y<="00000100";state <= state0; elsif y="00000100" then y<="00000010";state <= state0; elsif y="00000010" then y<="00000001";state <= state1; end if;

when state1 =>

if y="00000001" then y<="00000010";state <= state1; elsif y="00000010" then y<="00000100";state <= state1; elsif y="00000100" then y<="00001000";state <= state1; elsif y="00001000" then y<="00010000";state <= state1; elsif y="00010000" then y<="00100000";state <= state1; elsif y="00100000" then y<="01000000";state <= state1;

elsif y="01000000" then y<="10000000";state <= state2;

end if;

when state2=>

if y="10000000" then y<="10000001";state <= state2;

elsif y="10000001" then y<="01000010";state <= state2;

elsif y="01000010" then y<="00100100";state <= state2;

elsif y="00100100" then y<="00011000";state <= state3;

end if;

when state3=>

if y="00011000" then y<="00100100";state <= state3;

elsif y="00100100" then y<="01000010";state <= state3;

elsif y="01000010" then y<="10000001";state <= state3;

elsif y="10000001" then y<="00000000";state <= state0;

end if;

end case;

end if;

end process;

end behave;

对程序进行编译波形仿真如下:

配置设备下载到实验箱上仿真.

四、总结

本次实验是功能模块电路的设计,我选作的是跑马灯设计。

跑马灯状态比较多,根据要求选用状态机的设计方法,我选用四状态的状态机,每种状态代表了一种显示模式,四种模式内采用case语句进行切换,在模式内采用if循环语句进行循环,观察仿真结果,程序运行结果与设计思想一致.在本次实验中我虽然按照要求完成了电路的设计,但是程序思想仍然存在很多的不足之处,程序不够简洁,采用列举的方法列举跑马灯的所有状态使程序过于复杂,如果能采用移位寄存器来进行设计,将简化程序,但是在设计过程中存在了没有解决的问题,仍需要继续解决.

相关文档
最新文档