eda课程设计
㈠ EDA课程设计心得体会
这个是我做的“微机控制系统”的你照着改一下:
心得体会:
本系统主要介绍了锅炉的液位检测控制,还介绍了对温度和压力的检测控制,介绍了8051单片机和其它一些单片机在锅炉控制系统中的应用,介绍了它们的引脚和在系统中的电路图,本设计还采用了多种传感器来对液位、温度和压力的信号采集,利用LED来进行信号的输出显示,我设计的硬件系统的结构简化,系统精度高,具有良好的人机交互功能,并设有液位报警、高压、低压和阀门失灵等故障报警,有问题立即就能发现。通过自动调节控制液位并实现锅炉内温度和水位的报警。液位控制在设定值上正常运行不需要人工干预,操作人员劳动强度小。
采用单片机设计出的工业锅炉控制器,能够针对汽包水位的不同状态和不同外界条件进行控制,汽包水位运行稳定、控制品质良好、控制效果明显改善;同时大大提高了控制系统的抗干扰能力,保证了工业锅炉的稳定运行。控制装置具有成本低、抗干扰能力强、控制性能好等优点,且系统硬、软件维护简单方便,尤其适用于工业控制现场,具有良好的应用前景。
本系统所采用的传感器性能稳定,测量准确,大大简化现场安装,具有较高的性价比,有较大的工程应用价值,而且利用计算机单片机技术对锅炉生产过程进行自动控制有着重要的意义。其优越性主要在于:首先,通过对锅炉燃烧过程进行有效控制,使燃烧在合理的空燃比条件下进行,可以提高燃烧效率。由于工业锅炉耗煤量大,燃烧热效率每提高 1%都会产生巨大的经济效益。其次,锅炉控制过程的自动化处理以及监控软件良好的人机界面,操作人员在监控计算机上能根据控制效果及时修运行参数,这样能有效地减少工人的疲劳和失误,提高生产过程的实时性、安全性。随着计算机控制技术应用的普及、可靠性的提高及价格的下降,工业锅炉的微机控制必将得到更加广泛的应用。
㈡ 课程设计EDA谁能帮我做一个EDA的简易cpu课程设计,要程序,波形图,和block框图
EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
20世纪90年代,国际上电子和计算机技术较为先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
㈢ EDA 课程设计 ——拔河游戏机
一、总体设计思想
电子拔河游戏机是一种能容纳甲乙双方参赛游戏电路。由一排发光二极管表示拔河的“电子绳”。由甲乙双方通过按纽开关使发光二极管向一方的终点延伸,当延伸到某方的最后一个发光二极管时, 则该方获胜,连续比赛多局以定胜负。
1.基本原理
本电路要求使用9个发光二极管,开机后只有中间一个发亮,此即拔河的中心点。游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。最后用数码管显示获胜者的盘数。
由设计内容可知,首先需要一个十进制的计数器,用于对双方按钮的次数计数,并通过译码器显示在数码管上。设计要求用50MHz的频率,而设计用到的是1K Hz的频率,所以要设计一个程序进行分频。其次,显视控制部分设计要求在发光二极管上显示游戏状态,双方每按十次,亮点向先按十次移动一次,对脉冲进行计数,每十次移一位。需接入一个清零端 ,用于复位。再次,运用VHDL程序语言进行各个模块的程序编写,控制电路的正常运行。最后,将以上程序组装起来,就可得到所需要的拔河游戏机
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity bahe is
port (a,b,rst,clk:in std_logic;
sg,led:out std_logic_vector(8 downto 0);
bt:out std_logic_vector(7 downto 0));
end bahe;
----------------------------------
architecture one of bahe is
component cnt10
port (clk,rst,en:std_logic;
cout:out std_logic;
cq:out std_logic_vector(3 downto 0));
end component;
component scan
port (clk :in std_logic;
a1, a2,a3,b1,b2,b3:in std_logic_vector(3 downto 0);
sg:out std_logic_vector(8 downto 0);
bt: out std_logic_vector(7 downto 0));
end component;
component lmov
port (kl ,kr:in std_logic_vector(3 downto 0) ;
led:out std_logic_vector(8 downto 0);
en : out std_logic;
rst:in std_logic);
end component;
signal e,f,ca1,ca2,cb1,cb2:std_logic;
signal cqa1,cqa2,cqa3,cqb1,cqb2,cqb3:std_logic_vector(3 downto 0);
begin
u1: cnt10 port map (en=>e,rst=>rst,clk=>a,cout=>ca1,cq=>cqa1);
u2: cnt10 port map (en=>e,rst=>rst,clk=>ca1,cout=>ca2,cq=>cqa2);
u3: cnt10 port map (en=>e,rst=>rst,clk=>ca2,cq=>cqa3);
u4: cnt10 port map (en=>e,rst=>rst,clk=>b,cout=>cb1,cq=>cqb1);
u5: cnt10 port map (en=>e,rst=>rst,clk=>cb1,cout=>cb2,cq=>cqb2);
u6: cnt10 port map (en=>e,rst=>rst,clk=>cb2,cq=>cqb3);
u7: scan port map (a1=>cqa1,a2=>cqa2,a3=>cqa3,b1=>cqb1,
b2=>cqb2,b3=>cqb3,clk=>clk,sg=>sg,bt=>bt);
u8:lmov port map (en=>e,kl=>cqa2,kr=>cqb2,rst=>rst,led=>led);
end architecture one;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cnt10 is
port(clk,rst,en:std_logic;
cout:out std_logic;
cq:out std_logic_vector(3 downto 0));
end;
architecture one of cnt10 is
begin
process(clk,rst,en)
variable cqi:std_logic_vector(3 downto 0);
begin
if rst='1' then
cqi:=(others=>'0');
elsif clk'event and clk='1' then
if en='1' then
if cqi<9 then cqi:=cqi+1;
else cqi :=(others=>'0');
end if ;
end if;
end if;
if c qi=9 then cout<='0' ;
else cout<='1';
end if;
cq<=cqi;
end process;
end;
电路的VHDL程序如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity scan is
port (clk :in std_logic;
a1,a2,a3,b1,b2,b3:in std_logic_vector(3 downto 0);
sg:out std_logic_vector(8 downto 0);
bt: out std_logic_vector(7 downto 0));
end;
architecture one of scan is
signal cnt4:std_logic_vector(2 downto 0);
signal a:std_logic_vector(3 downto 0);
signal clk1:std_logic;
begin
p1:process(cnt4)
begin
case cnt4 is
when "000"=>bt<="10000000";a<=a1;
when "001"=>bt<="01000000";a<=a2;
when "010"=>bt<="00100000";a<=a3;
when "011"=>bt<="00000100";a<=b1;
when "100"=>bt<="00000010";a<=b2;
when "101"=>bt<="00000001";a<=b3;
when others=>bt<="00000000";
end case ;
end process p1;
---------------------------------
p2:process (clk)
variable ct:integer range 0 to 50000;
begin
if clk'event and clk='1' then --1000HZ
if ct<49999 then
ct:=ct+1;
clk1<='0';
else
ct:=0;
clk1<='1';
end if;
end if;
end process p2;
process(clk1)
begin
if clk1'event an d clk1='1' then
if cnt4<5 then
cnt4<=cnt4+1;
else
cnt4<="000";
end if;
end if;
end process;
------------------------------------
process (a)
begin
case a is
when "0000"=>sg<="100000000";
when "0001"=>sg<="111110001";
when "0010"=>sg<="001001000";
when "0011"=>sg<="001100000";
when "0100"=>sg<="000110010";
when "0101"=>sg<="000100100";
when "0110"=>sg<="000000100";
when "0111"=>sg<="111110000";
when "1000"=>sg<="000000000";
when "1001"=>sg<="100011111";
when "1010"=>sg<="000100100";
when "1011"=>sg<="000011000";
when "1100"=>sg<="010001100";
when "1101"=>sg<="001001000";
when "1110"=>sg<="001000000";
when "1111"=>sg<="000011111";
when others=>null;
end case ;
end process;
end;
⑸ 胜负显示
将双方终端二极管正极经非门后的输出分别接到二个CC4518计数器的EN端,CC4518的两组4位BCD码分别接到实验装置的两组译码显示器的A、B、C、D插口处。当一方取胜时,该方终端二极管发亮,产生一个上升沿,使相应的计数器进行加一计数,于是就得到了双方取胜次数的显示,若一位数不够,则进行二位数的级联。
⑹ 复位
其VHDL程序如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity lmov is
port (kl ,kr:in std_logic_vector(3 downto 0) ;
led:out std_logic_vector(8 downto 0);
en : out std_logic;
rst:in std_logic);
end ;
architecture one of lmov is
begin
process(rst,kl,kr)
begin
if rst='1' then led<="111101111";en<='1';
elsif kl-kr=1 then led<="111011111";en<='1';
elsif kl-kr=2 then led<="110111111";en<='1';
elsif kl-kr=3 then led<="101111111";en<='1';
elsif kl-kr=4 then led<="011111111";en<='0';
elsif kr-kl=1 then led<="111110111";en<='1';
elsif kr-kl=2 then led<="111111011";en<='1' ;
elsif kr-kl=3 then led<="111111101";en<='1';
elsif kl-kr=4 then led<="111111110";en<='0';
elsif kr-kl=0 then led<="111101111";en<='1';
else null;
end if;
end process;
end;
㈣ 用VHDL语言设计一个交通灯,EDA课程设计
首先最简单的方法是列出真值表。写出逻辑表达式。然后根据逻辑表达式来写出vhdl程序。在编译=》仿真=》功能分析=》输出延时=》下载程序 1.设计原理
在这个实例中,我们设计一个简单的十字路口交通灯。交通灯分东西和南北两个方向,均通过数码管和指示灯指示当前的状态。设两个方向的流量相当,红灯时间45s,绿灯时间40s,黄灯时间5s.
从交通灯的工作机理来看,无论是东西方向还是南北方向,都是一个减法计数器。只不过计数时还要判断红绿灯情况,再设置计数器的模值。
下表所示为一个初始状态和4个跳变状态。交通灯工作时状态将在4个状态间循环跳变,整个交通灯则完全按照减计数器原理进行设计。
状态 当前计数值 下一个CLOCK到来时新模值
东西方向指示 南北方向指示 东西-南北方向指示 东西方向指示 南北方向指示 东西-南北方向指示
初始 0 0 45 40 红-绿
1 6 1 红-绿 5 5 红-黄
2 1 1 红-黄 40 45 绿-红
3 1 6 绿-红 5 5 黄-红
4 1 1 45 40 红-绿
2.部分程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity traffic is
port(clk, urgency: in std_logic;
east_west:buffer std_logic_vector(7 downto 0);--东西方向时钟计数
south_north: buffer std_logic_vector(7 downto 0); --南北方向的时钟计数
led:buffer std_logic_vector(5 downto 0)); --交通指示灯
end traffic;
architecture arch of traffic is
。。。。。。。
end arch;
3.具体设计步骤
1) 建立一个新的工程完成上面的电路设计
2) 编译电路并使用功能仿真来验证设计
3) 引脚配置,如Part I中讨论的,这些配置是确保VHDL代码中输出端口能使用PFGA芯片上连接到LEDR和LEDG的引脚。重新编译项目,并下载到FPGA芯片上。
4) 测试电路的正确性。
㈤ EDA课程设计报告
课程来设计总结
通过本次实验用源计算机操作的形式编辑计数器程序和绘制出了利用计数器原理的分频器原理图,了解了利用软件绘制原理图和编程的方法,以及用计算机形象的仿真计数器和分频器的波形,在实验中通过形象的方法结合图形进行分析把在书上学习的理论知识进行实践。不仅更好的理解和掌握了用软件设计图形和运行仿真的方法,也通过实验把理论知识转化为实际的图形加以理解,更好的理解和掌握了此方面的知识。为以后的实践积累了经验
㈥ EDA课程设计:彩灯控制器
以前做的设计,粘贴时图形没出来,参考一下,记得给分啊
一.设计目的
1、学习开发软件和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课程设计—彩灯控制器等
㈦ EDA课程设计输入有几种,分别是什么
可以原理图输入,也可以文本输入目前的有verilog hdl 、vhdl 、system verilog、system C等硬件描述语言,当然主流内的是原理容图、verilog hdl、vhdl 三者混合输入,可以用Quartus II实现altera器件的设计输入