EDA课程设计

发布 2022-09-30 19:27:28 阅读 2168

eda8路彩灯控制系统vhdl

程序设计。院系:@@院。

专业: 0802班。

学号。姓名:@@

一、设计要求

1、设计一个七段数码管动态扫描电路。数码管个数为8个,共阴极接法。

2、设计一电路,控制上述电路实现“12345678”八个数字的显示,要求显示方式为:

1)自左至右逐个点亮数码管,最后全亮;再重复以上动作。

2)自左至右点亮数码管,每次只点亮一个,最后全息灭,再重复以上动作。

3) 先中间两个点亮,再依次向外点亮;全亮后,再依次向中间熄灭;重复上述步骤。

二、设计方案()

整个系统共有三个输入信号:控制彩灯节奏快慢的基准时钟信号clk,彩灯变化频率选择开关xuanping,彩灯花样选择开关xuanhuayang;共有8个输出信号out[7..0],分别用于控制八路彩灯。

系统整体框图如下:

主要模块组成:时序控制电路模块和显示电路模块。时序控制电路模块由分频和选频两部分构成,可以控制彩灯变化的快慢。

三,设计过程。

1、主程序:8路彩灯。

library ieee;

use use

use entity color8 is

port (clk,rst:in std_logic;

sel:in std_logic_vector(1 downto 0);

aout:out std_logic_vector(7 downto 0));

end color8;

architecture color of color8 is

type state_1 is (s0,s1,s2,s3,s4,s5,s6,s7,s8);

signal state_2:state_1;

beginpr_1:process (clk,rst)

begin

if rst='1' then state_2<=s0;

elsif clk'event and clk='1' then

case state_2 is

when s0=> state_2<=s1;

when s1=> state_2<=s2;

when s2=> state_2<=s3;

when s3=> state_2<=s4;

when s4=> state_2<=s5;

when s5=> state_2<=s6;

when s6=> state_2<=s7;

when s7=> state_2<=s8;

when s8=> state_2<=s0;

end case;

end if;

end process pr_1;

pr_2:process(sel,state_2)

beginif sel="00" then

--when "00" =

case state_2 is

when s0=> aout<="00000000";

when s1=> aout<="10000000";

when s2=> aout<="11000000";

when s3=> aout<="11100000";

when s4=> aout<="11110000";

when s5=> aout<="11111000";

when s6=> aout<="11111100";

when s7=> aout<="11111110";

when s8=> aout<="11111111";

end case;

elsif sel="01" then

case state_2 is

when s0=> aout<="00000000";

when s1=> aout<="10000000";

when s2=> aout<="01000000";

when s3=> aout<="00100000";

when s4=> aout<="00010000";

when s5=> aout<="00001000";

when s6=> aout<="00000100";

when s7=> aout<="00000010";

when s8=> aout<="00000001";

end case;

--when "10"=>

elsif sel="10" then

case state_2 is

when s0=> aout<="00000000";

when s1=> aout<="00011000";

when s2=> aout<="00111100";

when s3=> aout<="01111110";

when s4=> aout<="11111111";

when s5=> aout<="01111110";

when s6=> aout<="00111100";

when s7=> aout<="00011000";

when s8=> aout<="00000000";

end case;

end if;

end process pr_2;

end color8;

**结果如下图:

1)当sel为“00”时, 8路彩灯被选中运行方式一,即自左至右逐个点亮数码管,最后全亮;再重复以上动作。此时波形图如下:

注:由于rst高电平时是复位,所以**时便将它一直设为低电平。

2)当sel为“01”时, 8路彩灯被选中运行方式二,即自左至右点亮数码管,每次只点亮一个,最后全息灭,再重复以上动作。此时波形图如下:

3)当sel为“10”时, 8路彩灯被选中运行方式三,即先中间两个点亮,再依次向外点亮;全亮后,再依次向中间熄灭;重复上述步骤。此时波形图如下:

注:由于之前都有9个状态,这个彩灯的花样只需要8个状态即可,但为了与主控时序进程中的状态转换设计相符合,我将最后一个状态变为全零即与第一个状态相同。所以在此**中有连续两个clk上升沿出现全零的状况。

2、同步时钟clk频率计算。

clk频率计算:

根据人的视觉暂留现象,一个数码管所要显示的字符只要在一秒内点亮24次以上,则感觉上该数码管没有熄灭一样。若8只数码管要出现这种效果,要求在一秒内每只数码管要闪亮24次以上。则clk频率应为24x8=192hz以上,为了减少闪烁现象,达到较好的显示效果,取clk频率为1024hz,每秒内每个数码管显示次数为128次。

分频器程序。

library ieee;

use use

entity fenpin is

port(clk : in std_logic;

clk1 : out std_logic;

clk2 : out std_logic);

end fenpin ;

architecture a of fenpin is

signal cou : std_logic_vector(3 downto 0);

beginprocess(clk)

beginif clk'event and clk='1' then

cou <=cou+1;

end if;

end process;

clk1 <=cou(2);

clk2 <=cou(1);

end a;

**波形:3、频率选择模块(选择不同的模块实现快慢不同节奏)

library ieee;

use entity xuanzepl is

port(clk1,clk2,s: in std_logic;

clkout: out std_logic);

end xuanzepl;

architecture a of xuanzepl is

signal sel: std_logic;

begin

process(clk1,clk2,s)

beginif s='0' then

clkout<=clk1;

elseclkout<=clk2;

end if;

sel<=s;

end process;

end a;

**结果如下:

结果分析:当s为高电平时,clkout选择clk2,当s为低电平时,选择clk1。

EDA课程设计

题目一 数字钟设计 学号1 15 一 实验目的。学习并掌握数字钟的原理 设计方法。二 实验内容。计数始终由模60秒计数器 模60分计数器 模24小时计数器 报时模块 分 时设定模块及输出显示模块构成。可以采用同步计数器或异步计数器设计方法。三 实验要求。计时范围为0小时0分0秒至23小时59分59秒...

eda课程设计

哈尔滨工业大学 威海 信电学院电子信息工程。一 软硬件介绍。1软件部分介绍。1.1 quartus ii 是altera公司的综合性pld fpga开发软件,支持原理图 vhdl veriloghdl以及ahdl altera hardware description language 等多种设计输...

eda课程设计

目录。1 引言 2 1.1 课程设计的目的与任务 2 1.2 课程设计的内容 2 1.3课程设计仪器设备 2 1.4 课程设计的题目 2 1.5 方案的选择 2 2设计方案 3 2.1 设计原理 3 2.2各功能模块的原理及其源程序 3 2.2.1控制模块 3 2.2.2分频模块 4 2.2.3计时...