展开全部

以前做的设计,粘贴时图形没出来,参考62616964757a686964616fe59b9ee7ad9431333330363866一下,记得给分啊

一.设计目的

1、学习EDA开发软件和MAX+plus Ⅱ的使用方法,熟悉可编程逻辑器件的使用,通过制作来了解彩灯控制系统。

2、进一步掌握数字电路课程所学的知识。

3、了解数字电路设计的一般思路,进一步解决和分析问题。

4、培养自己的编程和谨慎的学习态度

二、.设计题目内容和要求

(1)课题内容:

用EDA技术设计一个彩灯控制器,使彩灯(LED管)能连续发出三种以上不同的花型(自拟);

随着彩灯显示图案的变化,发出不同的音响声。

要求使用7段数码管显示当前显示的花型,如第一种花型显示A1,第二种花型显示b2,第三种花型显示C3

(2)主要任务:完成该系统的硬件和软件的设计,并利用实验箱制作出实物演示,调试好后并能实际运用(指导教师提供制作所需的器件),最后就课程设计本身提交一篇课程设计报告。

三、总体方案设计与选择

1 总体方案的设计

方案一:电路分为三个部分:彩灯花型模块、声音模块,时钟模块。用时钟控制声音和花型,整体使用相同的变量与信号,主体框图如下;

图三—1-1方案一的的流程图

方案二:电路分为五个模块:分频器模块、16进制计数器、4进制计数器,4选1选择器、彩灯控制器。其中彩灯控制器是用来输出不同的花样,彩灯控制器的输出则是用一个16进制的计数器来控制,扬声器的输出时用不同的频率来控制,所以用了一个集成分频器来使输入的频率被分为几种不同的频率,不同频率的选择性的输出则是用一个4选一的选择器来控制。整体框图如下:

图三—1-2方案二的流程图

2、方案的选择

方案一是将融合在一起,原理思路简单,元件种类使用少,但是在编程时要使用同一变量和信号,这样就会给编程带来很大的困难,另外中间单元连线较多,不容易检查,门电路使用较多,电路的抗干扰能力会下降。

方案二将彩灯花型控制与声音控制分开,各单元电路只实现一种功能,电路设计模块化,且编程时将工作量分开,出现错误时较容易检查,连线较少且容易组装和调试。

结合两个方案的优缺点,我选择容易编程、组装和调试的方案二。

四、模块电路的设计

1、分频器模块

设计要求显示不同的彩灯的时候要伴随不同的音乐,所以设计分频器来用不同的频率控制不同的音乐输出。

模块说明:

Rst:输入信号 复位信号 用来复位分频器的输出使输出为“0”,及没有音乐输出。

Clk:输入信号 模块的功能即为分频输入的频率信号。

Clk_4、clk8、clk_12、clk_16:输出信号 即为分频模块对输入信号clk的分频,分别为1/4分频输出、1/8分频输出、1/12分频输出、1/16分频输出。不同的频率会发出不同的声音。如图

图四-1分频器电路图

2、16进制计数器

16进制模块用来控制彩灯输出模块,即确定彩灯控制器的不同的输出。

Rst:输入信号 复位信号 用来复位16进制使其输出为“00000”,即彩灯不亮。

Clk1:输入信号 用来给模块提供工作频率。

Count_out[3..0]:输出信号 即为16进制计数器的输出,此输出信号作为彩灯的输入信号。

如图四-2

图四-2 16进制计数器电路图

3、4进制计数器模块

4进制计数器作为选择器的输入来控制选择器选择不同的频率作为输出控制扬声器工作。

Clk2:输入信号 来为计数器提供工作频率。

Rst:输入信号 复位信号 使计数器的输出为“00”。

如图四-3

图四-3 4进制计数器电路图

4、4选1选择器模块

Rst:输入信号复位信号使选择器的输出为“0”。

In1、in2、in3、in4:输入信号接分频器的输出。

Inp[1..0]:输入信号接4进制计数器的输出用来控制选择器的选择不同的输入选择不同的输出。

Output2:输出信号直接接扬声器即输出的是不同的频率来控制扬声器播放声音

如图四—4

图四—4 4选1选择器电路图

5、彩灯控制模块

彩灯控制采用的模式6来进行显示。

图四—5—1模式6结构图

彩灯控制模块用来直接控制彩灯的输出,使彩灯表现出不同的花样。

Rst:输入信号 使彩灯控制模块的输出为“00000000”,即让彩灯无输出。

Input[4..0]:输入信号 不同的输入使彩灯控制模块有不同的输出即彩灯显示出不同的花样。

Output3[7..0]:输出信号 直接与数码管相连来控制数码管。

如图四—5—2

图四-5-2 彩灯控制电路图

五、EDA设计与仿真

1、源程序:

----------------------------------------------分频器模块-----------------------------------------

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYfenpinqi IS

PORT

(

clk2,rst :IN std_logic;

clk_12,clk_4,clk_16,clk_8 : OUT std_logic

);

ENDfenpinqi;

ARCHITECTUREcd OF fenpinqi IS

begin

p1:process(clk2,rst)

variable a:integer range 0 to 20;

begin

if rst='1' then

clk_4<='0'; ----- 复位信号控制部分

else

if clk2'event and clk2='1'then

if a>=3 then

a:=0;

clk_4<='1';

else

a:=a+1;

clk_4<='0';

end if;

end if;

end if;

endprocess p1;

p2:process(clk2,rst)

variable b:integer range 0 to 20;

begin

if rst='1' then

clk_16<='0'; ----- 复位信号控制部分

else

if clk2'event and clk2='1'then

if b>=15 then

b:=0;

clk_16<='1';

else

b:=b+1;

clk_16<='0';

end if;

end if;

end if;

endprocess p2;

p3:process(clk2,rst)

variable c:integer range 0 to 20;

begin

if rst='1' then

clk_8<='0'; ----- 复位信号控制部分

else

if clk2'event and clk2='1'then

if c>=7 then

c:=0;

clk_8<='1';

else

c:=c+1;

clk_8<='0';

end if;

end if;

end if;

endprocess p3;

p4:process(clk2,rst)

variable d:integer range 0 to 40;

begin

if rst='1' then

clk_12<='0'; ----- 复位信号控制部分

else

if clk2'event and clk2='1'then

if d>=11 then

d:=0;

clk_12<='1';

else

d:=d+1;

clk_12<='0';

end if;

end if;

end if;

endprocess p4;

endcd;

----------------------------------------------4选1选择器---------------------------------------

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYxzq4_1 IS

PORT

(

rst:in std_logic;

inp:in integer range 0 to 3;

in1,in2,in3,in4 : In std_logic;

output2 :OUT std_logic

);

ENDxzq4_1;

ARCHITECTUREa OF xzq4_1 IS

BEGIN

PROCESS (rst,inp)

BEGIN

if(rst='1') then output2<='0';

else

case inp is

when 0=>output2<=in1;

when 1=>output2<=in2;

when 2=>output2<=in3;

when 3=>output2<=in4;

when others=>null;

end case;

end if;

END PROCESS;

ENDa;

-------------------------------------------彩灯控制模块----------------------------------------

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYcaideng IS

PORT

(

input :

IN INTEGER RANGE

0 TO 15;

rst:in std_logic;

output3 :OUT std_logic_vector(7 downto 0);

sm :out std_logic_vector(6 downto 0)

);

ENDcaideng;

ARCHITECTUREa OF caideng IS

BEGIN

PROCESS (input)

BEGIN

if rst='1' thenoutput3<="00000000";sm<="0000000";

else

case input is

when 0=>output3<="00111000";sm<="0000110";

when1=>output3<="00001111";sm<="0000110";

when2=>output3<="00111110";sm<="0000110";

when3=>output3<="01111111";sm<="0000110";

when4=>output3<="01011011";sm<="1011011";

when5=>output3<="01110110";sm<="1011011";

when6=>output3<="00001111";sm<="1011011";

when7=>output3<="01111111";sm<="1011011";

when8=>output3<="01101101";sm<="1001111";

when9=>output3<="00000111";sm<="1001111";

when10=>output3<="01110111";sm<="1001111";

when11=>output3<="01111011";sm<="1001111";

when12=>output3<="00111000";sm<="1100110";

when13=>output3<="00111111";sm<="1100110";

when14=>output3<="00111110";sm<="1100110";

when 15=>output3<="01111001";sm<="1100110";

when others=>null;

end case;

end if;

end process;

end a;

--------------------------------------------16进制计数器模块-----------------------------------

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYcounter_16 IS

PORT

(

clk,rst :IN std_logic;

count_out :

OUT INTEGER RANGE

0 TO 15);

ENDcounter_16;

ARCHITECTUREa OF counter_16 IS

BEGIN

PROCESS (rst,clk)

variable temp:integer range 0 to 16;

BEGIN

IF rst='1' THEN

temp:=0;

ELSIF (clk'event and clk='1') THEN

temp:=temp+1;

if(temp=15) then

temp:=0;

end if;

END IF;

count_out<=temp;

END PROCESS;

ENDa;

-------------------------------4进制计数器模块----------------------------------

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYcounter_4 IS

PORT

(

clk,rst :IN std_logic;

count_out :OUT integer range 0 to 3 );

ENDcounter_4;

ARCHITECTUREa OF counter_4 IS

BEGIN

PROCESS (rst,clk)

variable temp:integer range 0 to 16;

BEGIN

IF rst='1' THEN

temp:=0;

ELSIF (clk'event and clk='1') THEN

temp:=temp+1;

if(temp=4) then

temp:=0;

end if;

END IF;

count_out<=temp;

END PROCESS;

ENDa;

-------------------------------------------主程序----------------------------------

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYproject IS

PORT (clk1,rst,clk2: IN std_logic;

Out1: OUT std_logic_vector(7 downto 0);

Out2 :out std_logic_vector(6 downto0);

Out3: OUT std_logic);

ENDproject;

ARCHITECTUREstruct OF project IS

COMPONENT counter_16 IS

PORT(clk,rst : IN std_logic;

count_out : OUT integer range 0 to 15 );

ENDCOMPONENT;

COMPONENT fenpinqi IS

PORT(clk2,rst : IN std_logic;

clk_12,clk_4,clk_16,clk_8 : OUT std_logic);

END COMPONENT ;

COMPONENT counter_4 IS

PORT(clk,rst :IN std_logic;

count_out :OUT integer range 0 to 3 );

ENDCOMPONENT;

COMPONENT xzq4_1 IS

PORT

(

rst:in std_logic;

inp:in integer range 0 to 3;

in1,in2,in3,in4 : In std_logic;

output2 :OUT std_logic

);

ENDCOMPONENT;

COMPONENT caideng IS

PORT

(

input: IN INTEGER RANGE 0 TO 15;

rst:in std_logic;

output3 :OUT std_logic_vector(7 downto 0);

sm :out std_logic_vector(6 downto 0)

);

ENDCOMPONENT;

SIGNALu: integer range 0 to 15;

SIGNALw: integer range 0 to 3;

SIGNALv1,v2,v3,v4: std_logic;

BEGIN

U1:counter_16PORT MAP(clk1,rst,u);

U2:fenpinqiPORT MAP(clk2,rst, v1,v2,v3,v4);

U3:counter_4PORT MAP(v3,rst,w);

U4:xzq4_1 PORT MAP(rst,w, v1,v2,v3,v4,out3);

U5:caidengPORT MAP(u,rst,out1,out2);

ENDstruct;

2、彩灯控制器仿真结果及数据分析

分析:如上图,clk1控制的是彩灯模块,clk2控制的是声音模块,当rst为高电平是输出全为0,ck1每出现四个高电平,花型发生一次变化,out2分别显示1、2、3、4,out1显示不同的花型,out3发出声音,如图脉冲数不同表示发出的声音不同,但是声音与花型相比有一定的延迟。

六、硬件实现

1、引脚锁定图

2、硬件仿真图

显示第一组花型之一

显示第二组花型之一

显示第三组花型之一

显示的第四组花型之一

七、总体电路

整个系统就是各个分模块组成来实现最后的彩灯控制功能,系统又两个时钟来控制一个是控制16进制计数器即控制彩灯控制模块来实现彩灯的不同输出,另一个时钟为分频器的输入来进行分频处理,最后用来控制扬声器发出不同的音乐,为了使效果明显尽量达到要求分频处理的时钟的频率比实现彩灯控制的时钟频率要高。

将各个模块连在一起采用在课程中学到的元件例化,将各个模块的引脚连在一起,使之成为一个整体。元件例化是VHDL设计实体构自上而下层次化设计的重要途径。整体电路如图五—1

图七—1 整体电路图

八、心得体会

1、在设计时遇到一些主要问题如下:怎么将各个模块连在一起、开始硬件仿真时总是出现错误,设计方案的选择。最后我选择了元件例化将各个模块连在一起,仿真时是因为短路帽接错了,当时没有注意,在方案的选择时我们选了实现比较简单的分模块方案

2、这次的EDA课程设计我学到得东西很多明白了理论与实践之间的差距,而且对DEA课程有了更深入的理解,尤其是知道了怎么去应用所学的知识,怎么去利用网络实现自己的要求,具体体会如下:

(1)要想完成编程就要对DEA知识很熟悉,这样才能加快编程的速度,另外在编程时一定要小心,稍微有一点粗心都会有很多的错误出现,在出现错误后要学会寻找错误原因如名称前后不一、数据类型不同、符号写错等等

(2)拿道题目后要注意分析,要学会总体把握,然后再一一一细化、学会将复杂的问题简单化,分析时一定要有一个明确的目标。

(3)要学会理论联系实际,在程序导入到实验箱后,居然不显示结果,认真的检查看看操作是否有错误、试验箱中该短路的是否已用短路帽短路、又重新检查了一下程序,结果发现是短路帽接错了,所以看似很简单的操作自己操作起来可能会有很大的漏洞,所以亲自动手是很重要的。

(4)当自己的只是有限时,要注意运用网络等一切资源,要学会知识的灵活运用在查阅的过程中学到了很多在书本所没有学到的知识,通过查阅相关资料进一步加深了对EDA的了解

总的来说,通过这次课程设计不仅锻炼了我们的动手和动脑能力,也使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,要把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。还有最重要的一点就是要有一丝不苟的精神和端正认真的态度,遇到困难后要学会积极的面对。

3、在此设计中声音会有一定的延迟,可以考虑用花型输出信号作为4选1的控制信号

九、参考书目:

赵伟军,《Protel99se教程》,北京,人民邮电出版社,1996年

金西,《VHDL与复杂数字系统设计》,西安,西安电子科技大学出版社,2003

汉泽西,《EDA技术及其应用》,北京,北京航空航天大学出版社,2004

[4] 黄任,《VHDL入门.解惑.经典实例.经验总结》,北京,北京航空航天大学出版社,2005

[5] 李洋,《EDA技术 使用教程》,北京,机械工业出版社,2009

[6] 网络资源:EDA课程设计、EDA课程设计—彩灯控制器等

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

彩灯控制器课程设计vhdl_EDA课程设计:彩灯控制器相关推荐

  1. 单片机节日彩灯实训报告_基于单片机的节日彩灯设计论文课程设计.doc

    基于单片机的节日彩灯设计论文课程设计.doc 辽 宁 工 业 大 学 单片机原理及接口技术课程设计(论文) 题目: 基于单片机的节日彩灯设计 院(系): 专业班级: 学 号: 学生姓名: 指导教师: ...

  2. 基于51单片机的51单片机的LED彩灯霓虹灯控制器(心形流水灯)设计

    基于51单片机的51单片机的LED彩灯霓虹灯控制器(心形流水灯)设计 必看!!视频讲解 基于51单片机的LED彩灯霓虹灯心形流水灯设计 这里写目录标题 1 开发环境 2 功能说明介绍 3 仿真图 4 ...

  3. 计算机组成与原理如何书写DEC微指令,计算机组成原理课程设计16位机微程序控制器指令系统设计与实现.doc...

    计算机组成原理课程设计16位机微程序控制器指令系统设计与实现 一.设计题目 16位机微程序控制器指令系统的设计与实现 二.设计目的 通过看懂教学计算机组合逻辑控制器中已经设计好并正常运行的几条基本指令 ...

  4. 计算机微程序流程图,基于微程序控制器的《计算机系统综合设计》课程设计指导书.doc...

    基于微程序控制器的<计算机系统综合设计>课程设计指导书 基于微程序控制器的 <计算机系统综合设计>课程设计 指导书 计算机科学与技术学院 计科教研室 基于微程序控制器的简单机器 ...

  5. 花样彩灯的c语言程序设计,单片机花样彩灯课程实施方案报告.doc

    个人收集整理 仅供参考学习 个人收集整理 仅供参考学习 PAGE / NUMPAGES 个人收集整理 仅供参考学习 1.引言 随着人们生活环境地不断改善和美化,在许多场合可以看到彩色霓虹灯. LED ...

  6. 51单片机节日彩灯控制c语言,采用AT89C51单片机设计的可编程彩灯控制

    本文介绍一种采用单片机设计的可编程彩灯控制器,使用者布置好彩灯接好线路后不需要改变接线,就可以按自己的要求编入各路彩灯的亮灭顺序和延时时间,随时改变显示花样,可配合各种字符.图案,增加艺术效果,也可用 ...

  7. ssm课程答疑系统的设计与实现毕业设计源码261620

    SSM<程序设计基础>课程答疑系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可 ...

  8. SSM《程序设计基础》课程答疑系统的设计与实现 毕业设计-附源码261620

    SSM<程序设计基础>课程答疑系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可 ...

  9. 微型计算机系统课程设计,微机课程设计模板.doc

    微机课程设计模板.doc 1课程设计课程名称_微机原理及应用_______题目名称_微机原理及应用课程设计_学生学院_自动化学院______专业班级电气工程及其自动化2班__学号__310700105 ...

  10. microsoft 为microbit.org 设计的课程

    这文章来至https://www.microbit.co.uk/blocks/lessons ,是由microsoft 为microbit.org 设计的课程 Microbit Shop 入门课程 B ...

最新文章

  1. Earth to developers: Grow up!
  2. linux操作系统上网,linux操作系统下无法上网
  3. Linux与云计算——第二阶段 第五章:存储Storage服务器架设—分布式存储Ceph
  4. free5GC — 部署端到端 5G 实验网络
  5. 岗位内推 | 微软亚洲互联网工程院自然语言处理组招聘
  6. 网页性能优化03-函数防抖
  7. 二叉树的前中后序遍历之迭代法(统一风格迭代方式)
  8. java number转string_Java Number类, Character类,String类
  9. iPhone 11全球热销:价格真香是硬道理
  10. 嵌入式体系结构复习笔记
  11. SQlite数据库的C编程接口(六) 返回值和错误码(Result Codes and Error Codes) ——《Using SQlite》读书笔记
  12. html 制作用户注册页面模板,注册登录页面模板
  13. 《统计学》第八版贾俊平第三章课后答案Excel
  14. 【老生谈算法】基于matlab的车牌识别算法详解及程序源码——车牌识别算法
  15. 物理系统——射线检测
  16. 苹果库乐队怎么玩_iPhone技巧丨苹果手机制作炫酷铃声,就是不一样!
  17. 用ps制作动态图片教程
  18. 海德汉LSV2通讯协议
  19. 值得收藏的12款小众冷门但功能强大的在线神器
  20. 国产数据库-达梦数据库安装

热门文章

  1. AI、大数据、云计算深度融合,星环大数据3.0给用户带来哪些体验?
  2. DbgView 显示OutputDebugString 输出内容 不能显示问题总结
  3. HTTP 状态码大全
  4. PHP strtotime 将时间转换为时间戳
  5. 度盘高速下载器,比超级VIP还要快,推荐给大家
  6. Postman安装教程及汉化
  7. 如何在word中的图片上画圈标注_word文字下怎么画圈标记
  8. 软件工程----项目的进度安排
  9. html按钮调用php函数,如何在html按钮上执行php函数点击
  10. js运算符优先级速查表