一 : EDA课程设计报告书
信息工程学院
EDA课程设计报告书 题目:
数字时钟倒计时 专 业: 电子信息科学与技术 班 级: 0309410 学 号: 030941010 学生姓名: 王奎 指导教师: 袁海林
年 5月 10日
2012
eda课程设计 EDA课程设计报告书
信息工程学院课程设计任务书
eda课程设计 EDA课程设计报告书
目录
一、设计目的 ................................................................................................................................... 1
二、总体设计原理与内容 ............................................................................................................... 1
1、设计的总体原理 ................................................................................................................. 1
2、设计内容 ............................................................................................................................. 2
3、设计方案 ............................................................................................................................. 2
三、EDA设计及仿真 ........................................................................................................................ 3
1、倒计时器源程序 ................................................................................................................. 3
2、显示模块源程序 ................................................................................................................. 8
2、源程序仿真结果及数据分析 ........................................................................................... 11
(1)仿真结果 ............................................................................................................... 11
(2)数据分析 ............................................................................................................... 11
四、硬件实现 ................................................................................................................................. 12
五、设计总结 ................................................................................................................................. 13
eda课程设计 EDA课程设计报告书
一、设计目的
随着电子技术的高速发展和计算机技术的普遍应用,电子设计也越来越普遍地应用于整个电子行业中。(www.61k.com)电子设计是人们进行电子产品设计、开发和制造过程中十分关键的一步,其核心就是电子电路的设计。电子设计自动化(EDA)是在电子产品向更复杂、更高级,向数字化、集成化、微型化和低耗能方向发展过程中逐渐产生并日趋完善的电子设计方法,在这种方法中,设计过程的大部分工作(特别是底层工作)均由计算机自动完成,是电子技术发展历程中产生的一种先进的设计方法,是当今电子设计的主流。
本课程设计是时钟倒计时。此计时器功能齐全,显示24时倒计时功能,系统设置外部操作开关可以直接清零、启动、暂停,同时应用了七段数码管来显示数值,可以方便地实现断点计时功能,当计时器递减到零时,还会发出光电报警信号。本设计完成的中途计时功能,实现了在许多的特定场合进行时间追踪的功能,在社会生活中也具有广泛的应用价值.
二、总体设计原理与内容
1、设计的总体原理
本设计为时钟倒计时,它主要由外部开关,控制电路,秒脉冲发生器,计数器,译码器和报警电路组成。各部分相互联系,共同协作,实现电路功能。各部分关系框图如图3-1所示:
图2-1 总体框图
1
eda课程设计 EDA课程设计报告书
2、设计内容
本设计为时钟倒计时,它主要分为三个部分:计数部分,显示部分和控制部分。[www.61k.com]其中计数器和控制电路是系统的主要部分。计数器完成24时计时功能,而控制电路具有直接控制计数器的启动计数、暂停/连续计数、译码显示电路的显示功能。为了满足系统的设计要求,在设计控制电路时,应正确处理各个信号之间的时序关系。在操作直接清零开关CLR时,要求计数器清零,数码显示器不灭灯。 当启动开关为高电平时,计数器开始计数;为了简单起见,我们将暂停与连续的控制与开始用一个键控制。当计数器减到0时,启动报警系统,报警指示灯亮进行报警。通过控制脉冲信号的传送来达到相应的目的。
3、设计方案
本设计主要能完成:显示24时倒计时功能;系统设置外部操作开关,控制计时器的直接清零、启动和暂停/连续功能;在直接清零时,数码管显示器灭灯;计时器为24时递减计时其计时间隔为1秒;计时器递减计时到零时,数码显示器不灭灯,同时发出光电报警信号等。
经分析我们可以用两种方案进行实现:
方案一:用VHDL编码进行实现。VHDL是一门硬件描述语言,可以实现各种组合电路及逻辑电路。使用VHDL编码实现,可读性强,易于理解,可以在软仿,硬仿时,依次进行查看其正确性,还能提高自己的编码水平,利于EDA课程的学习与应用。采用静态编码,先设计计数器进行计数,数值通过数码管显示电路进行显示。设置CLOCK为1HZ,数值变化周期为1秒。
方案二:也是采用VHDL编码进行实现,但采用的是动态扫描法,设置一个片选信号,分时复用扫描两个数码管。这时就要设置两个时钟,因为1HZ的时钟频率太小了,会使得看到的效果不连续,十位与个位产生分离,效果不好。可以另选一个频率1000HZ左右的时钟信号作为扫描时钟。这种设计节约了能量,延长了数码管的寿命,但引入了片选信号,又增加了一个时钟,所以较第一种方案复杂。
方案三:用原理图输入法进行实现。用原理图书输入法也能实现,电路的仿 2
eda课程设计 EDA课程设计报告书
真。[www.61k.com)但原理图输入法只适合中小型电路,而且需要良好的数字电路基础与电路功底。另外,原理图输入法,比较繁琐,不易于操作。综合比较,选择第一种方案。
三、EDA设计及仿真
1、倒计时器源程序
其程序如下所示:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
--------------------------------------------------------------------
entity exp22 is
port( Clk : in std_logic; --时钟输入
Rst : in std_logic; --复位输入
S1,S2 : in std_logic; --时间调节输入
spk : out std_logic;
led : out std_logic_vector(3 downto 0); --整点输报时输出 Display : out std_logic_vector(7 downto 0); --七段码管显示输出 SEG_SEL : buffer std_logic_vector(2 downto 0) --七段码管扫描驱动
);
end exp22;
--------------------------------------------------------------------
architecture behave of exp22 is
signal Disp_Temp : integer range 0 to 15;
signal Disp_Decode : std_logic_vector(7 downto 0);
signal SEC1,SEC10 : integer range 0 to 9;
signal MIN1,MIN10 : integer range 0 to 9;
3
eda课程设计 EDA课程设计报告书
signal HOUR1,HOUR10 : integer range 0 to 9;
signal Music_Count : std_logic_vector(2 downto 0);
signal Clk_Count1 : std_logic_vector(13 downto 0); --产生1Hz时钟的分频计数器
signal Clk1Hz : std_logic;
signal led_count : std_logic_vector(2 downto 0);
signal led_display : std_logic_vector(3 downto 0);
begin
process(Clk)
begin
if(Clk'event and Clk='1') then
if(Clk_Count1<10000) then
Clk_Count1<=Clk_Count1+1;
else
Clk_Count1<="00000000000001";
end if;
end if;
end process;
Clk1Hz<=Clk_Count1(13);
process(Clk1Hz,Rst)
begin
if(Rst='0') then --系统复位
SEC1<=0;
SEC10<=0;
MIN1<=0;
MIN10<=0;
HOUR1<=0;
HOUR10<=0;
4
eda课程设计 EDA课程设计报告书
elsif(Clk1Hz'event and Clk1Hz='1') then --正常运行 if(S1='0') then --调节小时
if(HOUR1=0 and HOUR10/=0) then
HOUR1<=9;
HOUR10<=HOUR10-1;
elsif(HOUR10=0 and HOUR1=0) then HOUR1<=3;
HOUR10<=2;
else
HOUR1<=HOUR1-1;
end if;
elsif(S2='0') then --调节分钟
if(MIN1=0 ) then
MIN1<=9;
if(MIN10=0) then
MIN10<=5;
else
MIN10<=MIN10-1;
end if;
else
MIN1<=MIN1-1;
end if;
elsif(SEC1=0) then
SEC1<=9;
if(SEC10=0) then
SEC10<=5;
if(MIN1=0) then
MIN1<=9;
if(MIN10=0) then
MIN10<=5;
5
eda课程设计 EDA课程设计报告书
if(HOUR10=0and HOUR1=0) then HOUR1<=3;
HOUR10<=2;
elsif(HOUR10=0) then
HOUR1<=9;
HOUR10<=HOUR10-1; else
HOUR1<=HOUR1-1; end if;
else
MIN10<=MIN10-1;
end if;
else
MIN1<=MIN1-1;
end if;
else
SEC10<=SEC10-1;
end if;
else
SEC1<=SEC1-1;
end if;
end if;
end process;
process(Clk)
begin
if(Clk'event and Clk='1') then
Music_Count<=Music_Count+1; 6
eda课程设计 EDA课程设计报告书
if(MIN10=5 and MIN1=9 and SEC10=5) then --在59分50秒开始提示
if((SEC1 MOD 2)=0) then --在偶数秒开始发声 SPK<=Music_Count(2); --嘀
else
SPK<='0';
end if;
elsif(MIN10=0 and MIN1=0 and SEC10=0 and SEC1=0) then SPK<=Music_Count(1); --嗒
else
SPK<='0';
end if;
end if;
end process;
process(Clk)
begin
if(Clk1hz'event and Clk1hz='1') then
if(MIN10=5 and MIN1=9 and SEC10=5 and sec1>3) then 分55秒开始提示
led_Count<=led_Count+1;
else
led_count<="000";
end if;
end if;
end process;
process(led_count)
begin
case (led_count) is
when "000"=>led_display<="0000";
7 --在59
eda课程设计 EDA课程设计报告书
when "001"=>led_display<="1111";
when "010"=>led_display<="0111";
when "011"=>led_display<="0011";
when "100"=>led_display<="0001";
when "101"=>led_display<="1111";
when others=>led_display<="0000";
end case;
led<=led_display;
end process;
process(SEG_SEL)
begin
case (SEG_SEL+1) is
when "000"=>Disp_Temp<=HOUR10;
when "001"=>Disp_Temp<=HOUR1;
when "010"=>Disp_Temp<=10;
when "011"=>Disp_Temp<=MIN10;
when "100"=>Disp_Temp<=MIN1;
when "101"=>Disp_Temp<=10;
when "110"=>Disp_Temp<=SEC10;
when "111"=>Disp_Temp<=SEC1;
end case;
end process;
-----------------------------------------------------------------------------------------------------------------
2、显示模块源程序
显示部分采用七段数码管进行实现。[www.61k.com)LED数码管及引脚图资料:7段LED数码管是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,可以显示0~9等10个数字和小数点,使用非常广泛。这类数码管可以分为共阳极与 8
eda课程设计 EDA课程设计报告书
共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp;共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp,图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。[www.61k.com)我们采用共阴极接法,其图如下:
图3-1 共阴极数码管连接图 输入相应的数值,对应驱动相关二极管点亮,显示相应的数值。显示部分功能表如表3-1所示:
表3-1 功能表 用数码管进行显示,需把各个数值译码后传输到数码管,分十位与个位分别进行显示,其程序如下:
PRO2: PROCESS(DD)
9
eda课程设计 EDA课程设计报告书
BEGIN CASE DD IS -----------------------------------------DD表示十位 WHEN "0000" => S1 <="0111111";--显示0 WHEN "0001" => S1 <="0000110";--显示1 WHEN "0010" => S1 <="1011011";--显示2 WHEN "0011" => S1 <="1001111";--显示3 WHEN "0100" => S1<="1100110";--显示4 WHEN "0101" => S1 <="1101101";--显示5 WHEN "0110" => S1 <="1111101";--显示6 WHEN "0111" => S1 <="0000111";--显示7 WHEN "1000" => S1 <="1111111";--显示8 WHEN "1001" => S1 <="1101111";--显示9 WHEN OTHERS =>S1<="0000000"; END CASE ; END PROCESS;
PROCESS(SS)
BEGIN
CASE SS IS -------------------------------------------SS表示个位
WHEN "0000" => S0 <="0111111";--显示0 WHEN "0001" => S0 <="0000110";--显示1 WHEN "0010" => S0 <="1011011";--显示2 WHEN "0011" => S0 <="1001111";--显示3 WHEN "0100" => S0<="1100110";--显示4 WHEN "0101" => S0 <="1101101";--显示5 WHEN "0110" => S0 <="1111101";--显示6 WHEN "0111" => S0 <="0000111";--显示7 WHEN "1000" => S0 <="1111111";--显示8 WHEN "1001" => S0 <="1101111";--显示9 WHEN OTHERS =>S0<="0000000"; END CASE ; 10
eda课程设计 EDA课程设计报告书
END PROCESS;
END A;
2、源程序仿真结果及数据分析
(1)仿真结果
图3-2 仿真结果部分波形图
图3-3仿真结果总体波形图
(2)数据分析
由仿真结果图可以看出:先清零,再置数,置初始值为23--59--59 ,置数后,保持23--59--59,直至使能端ENB为高电平,等到上升沿的到来,开始计数,计数器减计数至零时,报警信号WARM变为高电平,发出报警信号。[www.61k.com]但信号在FPGA器件内部通过连线和逻辑门时,都有一定的延时。延时的大小与连线的长短和门单元的数目有关,同时还受器件的制造工艺、工作电压、温度等的影响。此外,信号的高低电平转换也需要一定的过度时间。由于存在这些因素的影响,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的“毛刺”,称为“冒险”现象。可以 11
eda课程设计 EDA课程设计报告书
通过改变设计来破坏毛刺的产生的条件,从而减少毛刺的发生。[www.61k.com]例如,在数字电路设计中,常采用格雷码。还可以利用D触发器消除毛刺。但由于时间和条件的限制没有进行时延现象的消除,在本次设计中没有太大影响,但在以后的工作中是一定要避免的。
四、硬件实现
1、打开QuartusII软件,建立一个工程,将编写好的源代码加载进去进行仿真。
2、代码编译成功之后,进行功能仿真,首先建立波形文件,设置时钟参数;将波形文件保存好,进行软件仿真;
3、软仿真实现之后,要进行硬仿,即硬件实现。硬件实现简单明了,可以清楚的看到实验的成功与否,而且真实可靠。为了实现硬仿,我们先进行管脚绑定。CLR ,ENB , PLD分别由键8,键7及键6来执行,S1,S0分别由数码管8和数码管7来显示。绑定情况如图4-4所示:
图4-4 管脚绑定图
4、管脚绑定好之后,进行编译。
5、编译无误后,进行下载硬仿。硬件电路选择模式6,数码管8和数码管7分别显示计数值的十位与个位。键8,键7与键6分别代表清零,启动/暂停/连续与复位键。加载结果如图4-5所示:
12
eda课程设计 EDA课程设计报告书
图4-5 加载成功图
五、设计总结
1、设计过程中遇到的问题及解决方法
在此次设计中,我自己的动手能力有了显著的提高。[www.61k.com]在软仿的时候一切都比较顺利,但硬仿的时候,却发现有一个不该报警的地方报警了,看程序也没错误,波形也没错误,刚开始怎么也找不出问题,后来我们感觉应该还是程序的问题,便从程序入手,在程序中又强调了一下,报警条件,结果硬仿正确了。所以说,实验就要不断的尝试,VHDL是一门语言,语言有些时候不仅仅是语法这么简单,只有在不断地调试中才能取得成功。
在本次设计中,其实我们做了两种方案。第二种方案没有详细提及,该方案采用的时动态扫描。做完第一种方案之后,我们又进行了第二种方案的仿真,在硬仿时发现数码管不能正确显示,出现了乱码现象。这让我们很是费解,软仿没有错误,试验箱也不可能有问题,这是什么原因呢?我们思索了很久,也做了许多尝试,都没有成功。后来忽然间看到模式指示数码管旁边有一个短路帽,这让我哦联想到电路实验中短路帽的转换,所以,我把短路帽从上方拿到了下方,结果就正确显示了。
还有一次,同学的显示怎么都成功不了,按了开始就变为0,完全看不到变化现象,我看了程序感觉没错,就觉得是不是时钟设置的问题,我把它的时钟频率调小之后,发现果真正确显示了。
2,设计体会
为期一周的EDA课程设计就要结束了,在这一周的实训中,我收获颇丰。在此次课程设计之前我对QUARTUS软件已经有了接触,但却没有很深的了解。在此次课程设计时我将梁老师上课的内容在复习理解的基础上有了深刻的理解,对VHDL语言也有了更加熟悉的认知。更重要的是对实验箱的功能及应用更熟
13
eda课程设计 EDA课程设计报告书
练了。(www.61k.com]
本次课程设计是运用VHDL语言将模拟电子技术基础和数字电子技术基础以及电工电子技术的内容相结合,在此次设计的过程中发现了自己对理论知识认识的不足还有在动手操作方面还欠缺锻炼,因此我在此次课程设计的时候加深对老师所教的内容进一步复习,并且在上机练习的时候我就更加加强了对实践的重视。通过这次课程设计我还知道了在学习这条道路上我们不断要加强学习,还要有坚持不懈的学习精神。要将理论知识与实践相结合,要用理论指导实践,用实践来验证理论,让我们学于所用。
在这次设计中,我学到了很多东西,尝试到了成功的喜悦,但也有不足的地方,时钟有一点延时,虽然不影响效果,但若能考虑到延时问题,这样既会让所设计的器件的功能更加完善。报警采用的是光电报警,但若能再加上声报警就更完美了。
此次课程设计中我还更加体会到合作的重要性,要有协助精神,这样我们才能事半功倍!这次设计比较成功,但是由于时间关系,还是有一些做的不够好的地方。这次设计中得到了老师及同学们的大力帮助,在此衷心的感谢大家的指导与批评。
六、参考文献
[1]《数字电子技术基础》 阎石主编 高等教育出版社
[2] 潘松,黄继业.《EDA技术实用教程》 [ M ].北京:科学出版社, 2002.
[3] 康华光主编.《电子技术基础》(模拟部分).第四版.北京:高等教育出版社,2001
[4] 乔庐峰 王志功 《 VHDL数字电路设计教程》 电子工业出版社。2005
[5] 网络资源 计数器 百度文库
14
二 : EDA课程设计
EDA8路彩灯控制系统VHDL
程序设计
院系:@@院
专业: 0802班
学号:############
姓名:@@@
一、设计要求
1、设计一个七段数码管动态扫描电路。[www.61k.com]数码管个数为8个,共阴极接法。
2、设计一电路,控制上述电路实现“12345678”八个数字的显示,要求显示方式为:
(1)自左至右逐个点亮数码管,最后全亮;再重复以上动作。
eda课程设计 EDA课程设计
(2)自左至右点亮数码管,每次只点亮一个,最后全息灭,再重复以上动作。[www.61k.com)
(3) 先中间两个点亮,再依次向外点亮;全亮后,再依次向中间熄灭;重复上述步骤。
二、设计方案()
整个系统共有三个输入信号:控制彩灯节奏快慢的基准时钟信号CLK,彩灯变化频率选择开关xuanping,彩灯花样选择开关xuanhuayang;共有8个输出信号out[7..0],分别用于控制八路彩灯。系统整体框图如下:
主要模块组成:时序控制电路模块和显示电路模块。时序控制电路模块由分频和选频两部分构成,可以控制彩灯变化的快慢。 三,设计过程
1、主程序:8路彩灯
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
ENTITY color8 IS
PORT (clk,rst:IN std_LOGIC;
eda课程设计 EDA课程设计
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;
BEGIN
pr_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;
eda课程设计 EDA课程设计
END IF;
END PROCESS pr_1;
pr_2:PROCESS(sel,state_2)
BEGIN
if 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";
eda课程设计 EDA课程设计
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;
eda课程设计 EDA课程设计
END PROCESS pr_2;
END color8;
仿真结果如下图:
(1)当sel为“00”时, 8路彩灯被选中运行方式一,即自左至右逐个点亮数码管,最后全亮;再重复以上动作。[www.61k.com)此时波形图如下:
注:由于rst高电平时是复位,所以仿真时便将它一直设为低电平。
(2)当sel为“01”时, 8路彩灯被选中运行方式二,即自左至右点亮数码管,每次只点亮一个,最后全息灭,再重复以上动作。此时波形图如下:
(3)当sel为“10”时, 8路彩灯被选中运行方式三,即先中间两个点亮,再依次向外点亮;全亮后,再依次向中间熄灭;重复上述步骤。此时波形图如下:
注:由于之前都有9个状态,这个彩灯的花样只需要8
个状态即可,
eda课程设计 EDA课程设计
但为了与主控时序进程中的状态转换设计相符合,我将最后一个状态变为全零即与第一个状态相同。(www.61k.com]所以在此仿真中有连续两个clk上升沿出现全零的状况。
2、同步时钟CLK频率计算
CLK频率计算:
根据人的视觉暂留现象,一个数码管所要显示的字符只要在一秒内点亮24次以上,则感觉上该数码管没有熄灭一样。若8只数码管要出现这种效果,要求在一秒内每只数码管要闪亮24次以上。则CLK频率应为24X8=192Hz以上,为了减少闪烁现象,达到较好的显示效果,取CLK频率为1024Hz,每秒内每个数码管显示次数为128次。
分频器程序
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
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);
eda课程设计 EDA课程设计
BEGIN
PROCESS(clk)
BEGIN
IF 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 ieee.std_logic_1164.all;
entity xuanzepl is
port(clk1,clk2,s: in std_logic;
CLKOUT: out std_logic);
eda课程设计 EDA课程设计
end xuanzepl;
architecture a of xuanzepl is
signal sel: std_logic;
begin
process(clk1,clk2,S)
begin
if s='0' then
CLKOUT<=clk1;
else
CLKOUT<=clk2;
end if;
sel<=s;
end process;
end a;
仿真结果如下:
结果分析:当S为高电平时,clkout选择CLK2,当S为低电平时,选择CLK1。[www.61k.com)
eda课程设计 EDA课程设计
4、彩灯运行方式的选择:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
ENTITY y IS
PORT( clk: IN STD_LOGIC;
S: OUT std_logic_vector(1 downto 0)); END y;
ARCHITECTURE a OF y IS
Signal ja :std_logic_vector(1 downto 0); BEGIN
PROCESS(clk)
BEGIN
IF CLK'event AND CLK='1' THEN IF ja="10" THEN ja<="00"; else ja<=ja+1;
END IF;
END IF;
Case ja is
when "00"=>s<="00"; when "01"=>s<="01"; when "10"=>s<="10";
eda课程设计 EDA课程设计
when others=>null;
end case;
END PROCESS ;
END a;
结果分析:此时这的CLK相当于一个切换键,是为了切换彩灯的运行方式。(www.61k.com]起初S为“00”此时选择方式1;当clk来了一个上升沿时,S变为“01”此时选择方式二;当clk再来一个上升沿时,S变为“10”此时选择方式三。然后将S引脚与主程序模块color8的sel脚相接。所以我们可以通过clk键在这三种方式中选择彩灯的花样。
5、总的原理图:
eda课程设计 EDA课程设计
仿真结果:
当xuanhuayang取不同的值时,out输出的花样也随之变化。(www.61k.com]同时,xuanping为通过输入高低电平来控制out的变化频率。
四、总结
在此次课程设计中,我们要有一个大致的整体框图,然后分别实现各个模块,以达到设计要求。在设计过程中,尤其是在编程的时候,出现了许多错误,经过一步步改正,向同学请教等,终于得以成功,这次实验主要考察了我们的VHDL语言的掌握能力,以及将其运用到我们的生活中去,具有很好的实用价值,也加强了我们对EDA的掌握能力。
三 : EDA课程设计报告
EDA课程设计报告
专业班级:
学生姓名:
学生学号:
2011年6月28日
eda课程设计 EDA课程设计报告
一、 课设设计目的
通过EDA课程设计,在学习EDA仿真软件SystemView使用方法的基础上,掌握最基本的调幅发射与接收系统的工作原理与系统仿真设计。(www.61k.com]
二、 课设设计内容
以《SystemView动态系统分析及通信系统仿真设计》一书第一章、第二章、第四章为参考资料,设计常规双边带调幅、超外差收音机仿真电路,并进行电路仿真及分析。
三、 前期准备工作
以《SystemView动态系统分析及通信系统仿真设计》一书第一章、第二章为参考资料,学习了仿真软件的基本使用方法,完成了以下练习题:
1.1试用频率分别为f1=200HZ、f2=2000HZ的两个正弦信号源,合成一调制信号y(t)=5sin(2πf1t)*cos(2πf2t),观察其频谱与输出信号波形。注意根据信号的频率选择适当的系统采样数率。
仿真电路图:
输出波形图:
输出频谱图:
2
eda课程设计 EDA课程设计报告
结果及分析:频率为200Hz 的信号f1与频率为2000Hz的信号f2相乘,相当于在频域内卷积,卷积结果为两个频率相加减,实现频谱的搬移,形成1800Hz和2200Hz的信号,因信号最高频率为2000Hz所以采用8192Hzz的采样速率,采样点数为1024。[www.61k.com)
1.2将一正弦信号与高斯噪声相加后观察输出波形及其频谱。由小到大改变高斯噪声的功率,重新观察输出波形及其频谱。
仿真电路图:
波形图:
当所加噪声功率谱密度= 10e-6 W/Hz时,波形:
3
eda课程设计 EDA课程设计报告
频谱:
当所加噪声功率谱密度=1 W/Hz时,波形:
频谱:
当所加噪声功率谱密度=1000 W/Hz时,波形:
频谱:
4
eda课程设计 EDA课程设计报告
结果及分析: 原始信号的频率为1000Hz,采样速率为2048Hz,采样点数为128。[www.61k.com) 在加入功率谱密度为10e-6 W/Hz高斯噪声后,其波形无明显失真。
在加入功率谱密度为1 W/Hz高斯噪声后,其波形发生失真,输出信号的各频率分量上的功率发生不规则变化。
在加入功率谱密度为1000 W/Hz高斯噪声后,其波形发生严重失真,输出信号的各频率分量上的功率发生不规则变化。
综上可知,高斯功率噪声较小时,信号失真较小,当高斯功率噪声增大时,波形失真变大。
1.3已知DTMF双音频编码器的低组频率为697HZ,770HZ,852HZ,941HZ,高组频率为1209HZ,1336HZ,1477HZ,1633HZ,试合成0~9、*、#的双音频,并使用接收器图符中的单声道音频文件(8bit wav)输出,通过计算机的声卡输出声音,与实际输出的声音比较。注意,在输出端应加入一定的增益来放大波形。
仿真电路图:
5
eda课程设计 EDA课程设计报告
波形图:
结果及分析:
该电路是电话机的按键仿真电路,当两个不同频率的信号,以697HZ和1209HZ为例,两个信号相加经过一个音频输出器件产生一个wav音频文件。[www.61k.com)
2.1在设计区放置两个信号源图符,将其中一个定义为周期正弦波,频率为20KHz,幅度为5V,相位为45o;另一个定义为高斯噪声,标准方差为1,均值为0。将两者通过一个加法器图符连接,同时放置一个实时接收计算器图符,并连接到加法器图符的输出,观察输出波形。
仿真电路图:
周期正弦波:
6
eda课程设计 EDA课程设计报告
频谱:
输出波形:
输出频谱:
结果及分析:频率为20KHz的原始信号在加入高斯噪声之后,其波形图与频谱图都发生了变化,具体结果如上图所示,由图可得出加噪后的信号各频率分量上的功率发生了变化。[www.61k.com)
2.2试定义一个线性系统算子,将其设置为一个“Analog”类型的5极点“Butterworth”低通滤波器,截止频率为3000HZ。
7
eda课程设计 EDA课程设计报告
如下题所示。[www.61k.com]
2.3将练习题2.1中定义的高斯噪声通过练习题2.2定义的低通滤波器滤波后与练习题2.1中定义的正弦波相乘,观察输出波形。
仿真电路图:
输出波形:
输出频谱:
结果及分析:高斯噪声信号在经过一个低通滤波器后,输出频率最高位3000Hz的信号,与频率为20KHz的信号相乘,在频域进行频谱的搬移,输出信号的频率近似为17KHz~23KHz。
四、 最基本的调幅发射与接收系统的工作原理与系统仿真设计
以《SystemView动态系统分析及通信系统仿真设计》一书第四章为参考资料,进行了以下设计。
8
eda课程设计 EDA课程设计报告
1. 常规双边带调幅电路仿真
1) AM调制原理
任意的AM已调信号可以表示为Sam(t)=c(t)m(t),当m(t)=A0+f(t),c(t)=cos(wct+Θ0),且A0不等于0时,称为常规条幅,其时域表达式为Sam(t)=c(t)m(t)=【A0+f(t)】cos(wct+Θ0)其中,A0是外加的直流分量;f(t)是调制信号,它可以是确知信号,也可以是随机信号;wc=2πfc为载波信号的角频率;Θ0为载波信号的起始相位,为简便起见,通常设为0。[www.61k.com](原理框图如下所示)
原理框图
2)
常规双边带调幅电路设计步骤
1.
根据原理图选择必要的仿真电路设计器件(信号发生器、放大器、滤波器等)
2.根据电路要求,进行器件参数的设定
3.连线
4.运行电路,观察各信号的波形和频谱图,并更改参数对比结果,得出结论
该信号源为载波信号,其频率为1KHZ,幅度为1。
此为信号的增益,增益为3, 作用为使可以产生一个支流信号。
该信号源为调制型号,其频率为100HZ,幅度为1。
此为高斯噪声信号,均值为0,方差为1。
该信号为本振信号,其频率与载波信号的频率相同。
低通滤波器,”Analog”类型的3极点“Butterworth”截止频率为110HZ。
SystemView仿真电路图
9
eda课程设计 EDA课程设计报告
3) 仿真结果及分析
调制信号的波形及频谱:
载波波形及频谱:
10
eda课程设计 EDA课程设计报告
加入高斯信号的波形,频谱:
相干解调后输出波形,频谱:
11
eda课程设计 EDA课程设计报告
分析:加入噪声信号后,信号波形发生变化,信号经过本振与低通进行相干解调,解调出来的信号与原信号相比发生了波形失真。[www.61k.com]
2. 超外差收音机电路仿真
1) 超外差接收机的工作原理
通常的AM中波收音机覆盖的频率范围为540~1700KHZ,中频(IF)频率fIF为455KHZ。商业广播发射采用常规调幅,调制度接近1,且发射功率很大,因此收音机为节省成本、减小体积,一般解调器采用最简单的二极管包络检波。本地振荡器(简称本振)的典型设置都高于所希望解调的RF信号,即所谓高边调谐。输入滤波器用于抑制所不希望的信号和噪声,更重要的是去除与期望频率和解调中频频率fIF有关的镜像频率2fIF信号。固定的中频滤波器用于提高收音机的接收选择性。通过设计陡峭的滤波器边沿,能使进入解调器的相邻信道的能量最小。实际的收音机电路使用陶瓷滤波器能得到很好的性能,由此产生的增益衰减可增加以及增益后再检波。(原理框图如下所示) 原理框图:
12
eda课程设计 EDA课程设计报告
2) 超外差收音机电路设计步骤
1.根据原理图选择必要的仿真电路设计器件(信号发生器、扫频器、二极管包络、检波器等)。(www.61k.com)
2.根据电路要求,进行器件参数的设定。
3.连线。
4.运行电路,观察各信号的波形和频谱图,并更改参数对比结果,得出结论。
扫频器,可分别设置调制度为0.75、1、0.5;将扫频范围设置为0~3KHZ、0~4KHZ、0~5KHZ。
载波信号,分别设置为30KHZ、40KHZ、50KHZ。
切比契夫带通滤波器,5极点,上变频为25KHZ,下变频为15KHZ,可以将最大频率的信号选取出来。
二极管包络检波器,将零点设置为0V。
切比契夫低通滤波器,5极点,最高频率为5KHZ,用于取出所需的音频信号,同时滤除高频杂波干扰。
本振信号,其频率为60KHZ。
SystemView仿真电路图
13
eda课程设计 EDA课程设计报告
3) 仿真结果及分析:
三个信号相混合的波形,频谱:
经过本振信号后的波形,频谱:
经过带通滤波器的波形,频谱: 14
eda课程设计 EDA课程设计报告
经过包络检波和低通滤波器的波形,频谱:
15
eda课程设计 EDA课程设计报告
分析:本电路图采用频率分别为30KHz、40KHz、50KHz的在波分别与三个扫频信号进行调制,得出三个已调制信号同时与本振信号(频率为40+20=60KHz)相乘,在频域相当于进行频谱的搬移,使频率为40KHz的信号恰好搬移到20KHz的中频信号上,相乘信号经过带通滤波器后输出20KHz的中频信号,在经过二极管包络检波器和低通滤波器输出低频信号,此低频信号恰好就是以40KHz为载频的调制信号,其带宽为4KHz。(www.61k.com]
五、 总结与展望
这次EDA课程设计历时两天,在两天的日子里,主要学习了在SystemView by ELANIX软件对高频电子线路的仿真,主要以超外差接收机的原理和仿真为主,不仅巩固了以前所学过的知识,更加深了对书本上所学到过知识的理解。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,光有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能真正有所进步。课设中通过查阅资料解决不懂的问题,学会了从不同的渠道,用不同的方法去查找,从而提高自己的实际动手能力和独立思考的能力,使我不仅学到了知识,而且也开阔了视野,提高了我自身解决问题的能力。
16
四 : EDA课程设计报告
EDA课程设计报告
专业班级:
学生姓名:
学生学号:
2011年6月28日
一、 课设设计目的
通过EDA课程设计,在学习EDA仿真软件SystemView使用方法的基础上,掌握最基本的调幅发射与接收系统的工作原理与系统仿真设计。
二、 课设设计内容
以《SystemView动态系统分析及通信系统仿真设计》一书第一章、第二章、第四章为参考资料,设计常规双边带调幅、超外差收音机仿真电路,并进行电路仿真及分析。
三、 前期准备工作
以《SystemView动态系统分析及通信系统仿真设计》一书第一章、第二章为参考资料,学习了仿真软件的基本使用方法,完成了以下练习题:
1.1试用频率分别为f1=200HZ、f2=2000HZ的两个正弦信号源,合成一调制信号y(t)=5sin(2πf1t)*cos(2πf2t),观察其频谱与输出信号波形。注意根据信号的频率选择适当的系统采样数率。
仿真电路图:
输出波形图:
输出频谱图:
2
结果及分析:频率为200Hz 的信号f1与频率为2000Hz的信号f2相乘,相当于在频域内卷积,卷积结果为两个频率相加减,实现频谱的搬移,形成1800Hz和2200Hz的信号,因信号最高频率为2000Hz所以采用8192Hzz的采样速率,采样点数为1024。
1.2将一正弦信号与高斯噪声相加后观察输出波形及其频谱。由小到大改变高斯噪声的功率,重新观察输出波形及其频谱。
仿真电路图:
波形图:
当所加噪声功率谱密度= 10e-6 W/Hz时,波形:
3
频谱:
当所加噪声功率谱密度=1 W/Hz时,波形:
频谱:
当所加噪声功率谱密度=1000 W/Hz时,波形:
频谱:
4
结果及分析: 原始信号的频率为1000Hz,采样速率为2048Hz,采样点数为128。 在加入功率谱密度为10e-6 W/Hz高斯噪声后,其波形无明显失真。
在加入功率谱密度为1 W/Hz高斯噪声后,其波形发生失真,输出信号的各频率分量上的功率发生不规则变化。
在加入功率谱密度为1000 W/Hz高斯噪声后,其波形发生严重失真,输出信号的各频率分量上的功率发生不规则变化。
综上可知,高斯功率噪声较小时,信号失真较小,当高斯功率噪声增大时,波形失真变大。
1.3已知DTMF双音频编码器的低组频率为697HZ,770HZ,852HZ,941HZ,高组频率为1209HZ,1336HZ,1477HZ,1633HZ,试合成0~9、*、#的双音频,并使用接收器图符中的单声道音频文件(8bit wav)输出,通过计算机的声卡输出声音,与实际输出的声音比较。注意,在输出端应加入一定的增益来放大波形。
仿真电路图:
5
波形图:
结果及分析:
该电路是电话机的按键仿真电路,当两个不同频率的信号,以697HZ和1209HZ为例,两个信号相加经过一个音频输出器件产生一个wav音频文件。
2.1在设计区放置两个信号源图符,将其中一个定义为周期正弦波,频率为20KHz,幅度为5V,相位为45o;另一个定义为高斯噪声,标准方差为1,均值为0。将两者通过一个加法器图符连接,同时放置一个实时接收计算器图符,并连接到加法器图符的输出,观察输出波形。
仿真电路图:
周期正弦波:
6
频谱:
输出波形:
输出频谱:
结果及分析:频率为20KHz的原始信号在加入高斯噪声之后,其波形图与频谱图都发生了变化,具体结果如上图所示,由图可得出加噪后的信号各频率分量上的功率发生了变化。
2.2试定义一个线性系统算子,将其设置为一个“Analog”类型的5极点“Butterworth”低通滤波器,截止频率为3000HZ。
7
如下题所示。
2.3将练习题2.1中定义的高斯噪声通过练习题2.2定义的低通滤波器滤波后与练习题2.1中定义的正弦波相乘,观察输出波形。
仿真电路图:
输出波形:
输出频谱:
结果及分析:高斯噪声信号在经过一个低通滤波器后,输出频率最高位3000Hz的信号,与频率为20KHz的信号相乘,在频域进行频谱的搬移,输出信号的频率近似为17KHz~23KHz。
四、 最基本的调幅发射与接收系统的工作原理与系统仿真设计
以《SystemView动态系统分析及通信系统仿真设计》一书第四章为参考资料,进行了以下设计。
8
1. 常规双边带调幅电路仿真
1) AM调制原理
任意的AM已调信号可以表示为Sam(t)=c(t)m(t),当m(t)=A0+f(t),c(t)=cos(wct+Θ0),且A0不等于0时,称为常规条幅,其时域表达式为Sam(t)=c(t)m(t)=【A0+f(t)】cos(wct+Θ0)其中,A0是外加的直流分量;f(t)是调制信号,它可以是确知信号,也可以是随机信号;wc=2πfc为载波信号的角频率;Θ0为载波信号的起始相位,为简便起见,通常设为0。(原理框图如下所示)
原理框图
2)
常规双边带调幅电路设计步骤
1.
根据原理图选择必要的仿真电路设计器件(信号发生器、放大器、滤波器等)
2.根据电路要求,进行器件参数的设定
3.连线
4.运行电路,观察各信号的波形和频谱图,并更改参数对比结果,得出结论
该信号源为载波信号,其频率为1KHZ,幅度为1。
此为信号的增益,增益为3, 作用为使可以产生一个支流信号。
该信号源为调制型号,其频率为100HZ,幅度为1。
此为高斯噪声信号,均值为0,方差为1。
该信号为本振信号,其频率与载波信号的频率相同。
低通滤波器,”Analog”类型的3极点“Butterworth”截止频率为110HZ。
SystemView仿真电路图
9
3) 仿真结果及分析
调制信号的波形及频谱:
载波波形及频谱:
10
加入高斯信号的波形,频谱:
相干解调后输出波形,频谱:
11
分析:加入噪声信号后,信号波形发生变化,信号经过本振与低通进行相干解调,解调出来的信号与原信号相比发生了波形失真。
2. 超外差收音机电路仿真
1) 超外差接收机的工作原理
通常的AM中波收音机覆盖的频率范围为540~1700KHZ,中频(IF)频率fIF为455KHZ。商业广播发射采用常规调幅,调制度接近1,且发射功率很大,因此收音机为节省成本、减小体积,一般解调器采用最简单的二极管包络检波。本地振荡器(简称本振)的典型设置都高于所希望解调的RF信号,即所谓高边调谐。输入滤波器用于抑制所不希望的信号和噪声,更重要的是去除与期望频率和解调中频频率fIF有关的镜像频率2fIF信号。固定的中频滤波器用于提高收音机的接收选择性。通过设计陡峭的滤波器边沿,能使进入解调器的相邻信道的能量最小。实际的收音机电路使用陶瓷滤波器能得到很好的性能,由此产生的增益衰减可增加以及增益后再检波。(原理框图如下所示) 原理框图:
12
2) 超外差收音机电路设计步骤
1.根据原理图选择必要的仿真电路设计器件(信号发生器、扫频器、二极管包络、检波器等)。
2.根据电路要求,进行器件参数的设定。
3.连线。
4.运行电路,观察各信号的波形和频谱图,并更改参数对比结果,得出结论。
扫频器,可分别设置调制度为0.75、1、0.5;将扫频范围设置为0~3KHZ、0~4KHZ、0~5KHZ。
载波信号,分别设置为30KHZ、40KHZ、50KHZ。
切比契夫带通滤波器,5极点,上变频为25KHZ,下变频为15KHZ,可以将最大频率的信号选取出来。
二极管包络检波器,将零点设置为0V。
切比契夫低通滤波器,5极点,最高频率为5KHZ,用于取出所需的音频信号,同时滤除高频杂波干扰。
本振信号,其频率为60KHZ。
SystemView仿真电路图
13
3) 仿真结果及分析:
三个信号相混合的波形,频谱:
经过本振信号后的波形,频谱:
经过带通滤波器的波形,频谱: 14
经过包络检波和低通滤波器的波形,频谱:
15
分析:本电路图采用频率分别为30KHz、40KHz、50KHz的在波分别与三个扫频信号进行调制,得出三个已调制信号同时与本振信号(频率为40+20=60KHz)相乘,在频域相当于进行频谱的搬移,使频率为40KHz的信号恰好搬移到20KHz的中频信号上,相乘信号经过带通滤波器后输出20KHz的中频信号,在经过二极管包络检波器和低通滤波器输出低频信号,此低频信号恰好就是以40KHz为载频的调制信号,其带宽为4KHz。
五、 总结与展望
这次EDA课程设计历时两天,在两天的日子里,主要学习了在SystemView by ELANIX软件对高频电子线路的仿真,主要以超外差接收机的原理和仿真为主,不仅巩固了以前所学过的知识,更加深了对书本上所学到过知识的理解。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,光有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能真正有所进步。课设中通过查阅资料解决不懂的问题,学会了从不同的渠道,用不同的方法去查找,从而提高自己的实际动手能力和独立思考的能力,使我不仅学到了知识,而且也开阔了视野,提高了我自身解决问题的能力。
16
五 : EDA课程设计报告书
信息工程学院
EDA课程设计报告书 题目:
数字时钟倒计时 专 业: 电子信息科学与技术 班 级: 0309410 学 号: 030941010 学生姓名: 王奎 指导教师: 袁海林
年 5月 10日
2012
信息工程学院课程设计任务书
目录
一、设计目的 ................................................................................................................................... 1
二、总体设计原理与内容 ............................................................................................................... 1
1、设计的总体原理 ................................................................................................................. 1
2、设计内容 ............................................................................................................................. 2
3、设计方案 ............................................................................................................................. 2
三、EDA设计及仿真 ........................................................................................................................ 3
1、倒计时器源程序 ................................................................................................................. 3
2、显示模块源程序 ................................................................................................................. 8
2、源程序仿真结果及数据分析 ..文章窝......................................................................................... 11
(1)仿真结果 ............................................................................................................... 11
(2)数据分析 ............................................................................................................... 11
四、硬件实现 ................................................................................................................................. 12
五、设计总结 ................................................................................................................................. 13
一、设计目的
随着电子技术的高速发展和计算机技术的普遍应用,电子设计也越来越普遍地应用于整个电子行业中。电子设计是人们进行电子产品设计、开发和制造过程中十分关键的一步,其核心就是电子电路的设计。电 子设计自动化(EDA)是在电子产品向更复杂、更高级,向数字化、集成化、微型化和低耗能方向发展过程中逐渐产生并日趋完善的电子设计方法,在这种方法中,设计过程的大部分工作(特别是底层工作)均由计算机自动完成,是电子技术发展历程中产生的一种先进的设计方法,是当今电子设计的主流。
本课程设计是时钟倒计时。此计时器功能齐全,显示24时倒计时功能,系统设置外部操作开关可以直接清零、启动、暂停,同时应用了七段数码管来显示数值,可以方便地实现断点计时功能,当计时器递减到零时,还会发出光电报警信号。本设计完成的中途计时功能,实现了在许多的特定场合进行时间追踪的功能,在社会生活中也具有广泛的应用价值.
二、总体设计原理与内容
1、设计的总体原理
本设计为时钟倒计时,它主要由外部开关,控制电路,秒脉冲发生器,计数器,译码器和报警电路组成。各部分相互联系,共同协作,实现电路功能。各部分关系框图如图3-1所示:
图2-1 总体框图
1
2、设计内容
本设计为时钟倒计时,它主要分为三个部分:计数部分,显示部分和控制部分。其中计数器和控制电路是系统的主要部分。计数器完成24时计时功能,而控制电路具有直接控制计数器的启动计数、暂停/连续计数、译码显示电路的显示功能。为了满足系统的设计要求,在设计控制电路时,应正确处理各个信号之间的时序关 系。在操作直接清零开关CLR时,要求计数器清零,数码显示器不灭灯。 当启动开关为高电平时,计数器开始计数;为了简单起见,我们将暂停与连续的控制与开始用一个键控制。当计数器减到0时,启动报警系统,报警指示灯亮进行报警。通过控制脉冲信号的传送来达到相应的目的。
3、设计方案
本设计主要能完成:显示24时倒计时功能;系统设置外部操作开关,控制计时器的直接清零、启动和暂停/连续功能;在直接清零时,数码管显示器灭灯;计时器为24时递减计时其计时间隔为1秒;计时器递减计时到零时,数码显示器不灭灯,同时发出光电报警信号等。
经分析我们可以用两种方案进行实现:
方案一:用VHDL编码进行实现。VHDL是一门硬件描述语言,可以实现各种组合电路及逻辑电路。使用VHDL编码实现,可读性强,易于理解,可以在软仿,硬仿时,依次进行查看其正确性,还能提高自己的编码水平,利于EDA课程的学习与应用。采用静态编码,先设计计数器进行计数,数值通过数码管显示电路进行显示。设置CLOCK为1HZ,数值变化周期为1秒。
方案二:也是采用VHDL编码进行实现,但采用的是动态扫描法,设置一个片选信号,分时复用扫描两个数码管。这时就要设置两个时钟,因为1HZ的时钟频率太小了,会使得看到的效果不连续,十位与个位产生分离,效果不好。可以另选一个频率1000HZ左右的时钟信号作为扫描时钟。这种设计节约了能量,延长了数码管的寿命,但引入了片选信号,又增加了一个时钟,所以较第一种方案复杂。
方案三:用原理图输入法进行实现。用原理图书输入法也能实现,电路的仿 2
真。但原理图输入法只适合中小型电路,而且需要良好的数字电路基础与电路功底。另外,原理图输入法,比较繁琐,不易于操作。综合比较,选择第一种方案。
三、EDA设计及仿真
1、倒计时器源程序
其程序如下所示:
library ieee;
use ieee.std_logic_1164.all;
use ieee. std_logic_arith.all;
use ieee.std_logic_unsigned.all;
--------------------------------------------------------------------
entity exp22 is
port( Clk : in std_logic; --时钟输入
Rst : in std_logic; --复位输入
S1,S2 : in std_logic; --时间调节输入
spk : out std_logic;
led : out std_logic_vector(3 downto 0); --整点输报时输出 Display : out std_logic_vector(7 downto 0); --七段码管显示输出 SEG_SEL : buffer std_logic_vector(2 downto 0) --七段码管扫描驱动
);
end exp22;
--------------------------------------------------------------------
architecture behave of exp22 is
signal Disp_Temp : integer range 0 to 15;
signal Disp_Decode : std_logic_vector(7 downto 0);
signal SEC1,SEC10 : integer range 0 to 9;
signal MIN1,MIN10 : integer range 0 to 9;
3
signal HOUR1,HOUR10 : integer range 0 to 9;
signal Music_Count : std_logic_vector(2 downto 0);
signal Clk_Count1 : std_logic_vector(13 downto 0); --产生1Hz时钟的分频计数器
signal Clk1Hz : std_logic;
signal led_count : std_logic_vector(2 downto 0);
signal led_display : std_logic_vector(3 downto 0);
begin
process(Clk)
begin
if(Clk'event and Clk='1') then
if(Clk_Count1<10000) then
Clk_Count1<=Clk_Count1+1;
else
Clk_Count1<="00000000000001";
end if;
end if;
end process;
Clk1Hz<=Clk_Count1(13);
process(Clk1Hz,Rst)
begin
if(Rst='0') then --系统复位
SEC1<=0;
SEC 10<=0;
MIN1<=0;
MIN10<=0;
HOUR1<=0;
HOUR10<=0;
4
elsif(Clk1Hz'event and Clk1Hz='1') then --正常运行 if(S1='0') then --调节小时
if(HOUR1=0 and HOUR10/=0) then
HOUR1<=9;
HOUR10<=HOUR10-1;
elsif(HOUR10=0 and HOUR1=0) then HOUR1<=3;
HOUR10<=2;
else
HOUR1<=HOUR1-1;
end if;
elsif(S2='0') then --调节分钟
if(MIN1=0 ) then
MIN1<=9;
if(MIN10=0) then
MIN10<=5;
else
MIN10<=MIN10-1;
end if;
else
MIN1<=MIN1-1;
end if;
elsif(SEC1=0) then
SEC1<=9;
if(SEC10=0) then
SEC10<=5;
if(MIN1=0) then
MIN1<=9;
if(MIN10=0) then
MIN10<=5;
5
if(HOUR10=0and HOUR1=0) then HOUR1<=3;
HOUR10<=2;
elsif(HOUR10=0) then
HOUR1<=9;
HOUR10<=HOUR10-1; else
HOUR1<=HOUR1-1; end if;
else
MIN10<=MIN10-1;
end if;
else
MIN1& lt;=MIN1-1;
end if;
else
SEC10<=SEC10-1;
end if;
else
SEC1<=SEC1-1;
end if;
end if;
end process;
process(Clk)
begin
if(Clk'event and Clk='1') then
Music_Count<=Music_Count+1; 6
if(MIN10=5 and MIN1=9 and SEC10=5) then --在59分50秒开始提示
if((SEC1 MOD 2)=0) then --在偶数秒开始发声 SPK<=Music_Count(2); --嘀
else
SPK<='0';
end if;
elsif(MIN10=0 and MIN1=0 and SEC10=0 and SEC1=0) then SPK<=Music_Count(1); --嗒
else
SPK<='0';
end if;
end if;
end process;
process(Clk)
begin
if(Clk1hz'event and Clk1hz='1') then
if(MIN10=5 and MIN1=9 and SEC10=5 and sec1>3) then 分55秒开始提示
led_Count<=led_Count+1;
else
led_count<="000";
end if;
end if;
end process;
process(led_count)
begin
case (led_count) is
when "000"=>led_display<="0000";
7 --在59
when "001"=>led_display<="1111";
when "010"=>led_display<="0111";
when "011"=>led_display<="0011";
when "100"=>led_display<="0001";
when "101"=>led_display<="1111";
when others=>led_display<="0000";
end case;
led<=led_display;
end process;
process(SEG_SEL)
begin
case (SEG_SEL+1) is
when "000"=>Disp_Temp<=HOUR10;
when "001"=>Disp_Temp<=HOUR1;
when "010"=>Disp_Temp<=10;
when "011"=>Disp_Temp<=MIN10;
when "100"=>Disp_Temp<=MIN1;
when "101"=>Disp_Temp<=10;
when "110"=>Disp_Temp<=SEC10;
when "111"=>Disp_Temp<=SEC1;
end case;
end process;
-----------------------------------------------------------------------------------------------------------------
2、显示模块源程序
显示部分采用七段数码管进行实现。LED数码管及引脚图资料:7段LED数码管是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,可以显示0~9等10个数字和小数点,使用非常广泛。这类数码管可以分为共阳极与 8
共阴极两种,共阳极就是把所有LED的阳极连接到共同接 点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp;共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp,图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。我们采用共阴极接法,其图如下:
图3-1 共阴极数码管连接图 输入相应的数值,对应驱动相关二极管点亮,显示相应的数值。显示部分功能表如表3-1所示:
表3-1 功能表 用数码管进行显示,需把各个数值译码后传输到数码管,分十位与个位分别进行显示,其程序如下:
PRO2: PROCESS(DD)
9
BEGIN CASE DD IS -----------------------------------------DD表示十位 WHEN "0000" => S1 <="0111111";--显示0 WHEN "0001" => S1 <="0000110";--显示1 WHEN "0010" => S1 <="1011011";--显示2 WHEN "0011" => S1 <="1001111";--显示3 WHEN "0100" => S1<="1100110";--显示4 WHEN "0101" => S1 <="1101101";--显示5 WHEN "0110" => S1 <="1111101";--显示6 WHEN "0111" => S1 <="0000111";--显示7 WHEN "1000" => S1 <="1111111";--显示8 WHEN "1001" => S1 <="1101111";--显示9 WHEN OTHERS =>S1<="0000000"; END CASE ; END PROCESS;
PROCESS(SS)
BEGIN
CASE SS IS -------------------------------------------SS表示个位
WHEN "0000" => S0 <="0111111";--显示0 WHEN "0001" => S0 <="0000110";--显 示1 WHEN "0010" => S0 <="1011011";--显示2 WHEN "0011" => S0 <="1001111";--显示3 WHEN "0100" => S0<="1100110";--显示4 WHEN "0101" => S0 <="1101101";--显示5 WHEN "0110" => S0 <="1111101";--显示6 WHEN "0111" => S0 <="0000111";--显示7 WHEN "1000" => S0 <="1111111";--显示8 WHEN "1001" => S0 <="1101111";--显示9 WHEN OTHERS =>S0<="0000000"; END CASE ; 10
END PROCESS;
END A;
2、源程序仿真结果及数据分析
(1)仿真结果
图3-2 仿真结果部分波形图
图3-3仿真结果总体波形图
(2)数据分析
由仿真结果图可以看出:先清零,再置数,置初始值为23--59--59 ,置数后,保持23--59--59,直至使能端ENB为高电平,等到上升沿的到来,开始计数,计数器减计数至零时,报警信号WARM变为高电平,发出报警信号。但信号在FPGA器件内部通 过连线和逻辑门时,都有一定的延时。延时的大小与连线的长短和门单元的数目有关,同时还受器件的制造工艺、工作电压、温度等的影响。此外,信号的高低电平转换也需要一定的过度时间。由于存在这些因素的影响,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的“毛刺”,称为“冒险”现象。可以 11
通过改变设计来破坏毛刺的产生的条件,从而减少毛刺的发生。例如,在数字电路设计中,常采用格雷码。还可以利 用D触发器消除毛刺。但由于时间和条件的限制没有进行时延现象的消除,在本次设计中没有太大影响,但在以后的工作中是一定要避免的。
四、硬件实现
1、打开QuartusII软件,建立一个工程,将编写好的源代码加载进去进行仿真。
2、代码编译成功之后,进行功能仿真,首先建立波形文件,设置时钟参数;将波形文件保存好,进行软件仿真;
3、软仿真实现之后,要进行硬仿,即硬件实现。硬件实现简单明了,可以清楚的看到实验的成功与否,而且真实可靠。为了实现硬仿,我们先进行管脚绑定。CLR ,ENB , PLD分别由键8,键7及键6来执行,S1,S0分别由数码管8和数码管7来显示。绑定情况如图4-4所示:
图4-4 管脚绑定图
4、管脚绑定好之后,进行编译。
5、编译无误后,进行下载硬仿。硬件电路选择模式6,数码管8和数码管7分别显示计数值的十位与个位。键8,键7与键6分别代表清零,启动/暂停/连续与复位键。加载结果如图4-5所示:
12
图4-5 加载成功图
五、设计总结
1、设计过程中遇到的问题及解决方法
在此次设计中,我自己的动手能力有了显著的提高。在软仿的时候一切都比较顺利,但硬仿的时候,却发现有一个不该报警的地方报警了,看程序也没错误,波形也没错误,刚开始怎么也找不出问题,后来我们感觉应该还是程序的问题,便从程序入手,在程序中又强调了一下,报警条件,结果硬仿正确了。所以说,实验就要不断的尝试,VHDL是一门语言,语言有些时候不仅仅是语法这么简单,只有在不断地调试中才能取得成功。
在本次设计中,其实我们做了两种方案。第二种方案没有详细提及,该方案采用的时动态扫描。做完第一种方案之后,我们又进行了第二种方案的仿真,在硬仿时发现数码管不能正确显示,出现了乱码现象。这让我们很是费解,软仿没有错误,试验箱也不可能有问题,这是什么原因呢?我们思索了很久,也做了许多尝试,都没有成功。后来忽然间看到模式指示数码管旁边有一个短路帽,这让我哦联想到电路实验中短路帽的转换,所以,我把短路帽从上方拿到了下方,结果就正确显 示了。
还有一次,同学的显示怎么都成功不了,按了开始就变为0,完全看不到变化现象,我看了程序感觉没错,就觉得是不是时钟设置的问题,我把它的时钟频率调小之后,发现果真正确显示了。
2,设计体会
为期一周的EDA课程设计就要结束了,在这一周的实训中,我收获颇丰。在此次课程设计之前我对QUARTUS软件已经有了接触,但却没有很深的了解。在此次课程设计时我将梁老师上课的内容在复习理解的基础上有了深刻的理解,对VHDL语言也有了更加熟悉的认知。更重要的是对实验箱的功能及应用更熟
13
练了。
本次课程设计是运用VHDL语言将模拟电子技术基础和数字电子技术基础以及电工电子技术的内容相结合,在此次设计的过程中发现了自己对理论知识认识的不足还有在动手操作方面还欠缺锻炼,因此我在此次课程设计的时候加深对老师所教的内容进一步复习,并且在上机练习的时候我就更加加强了对实践的重视。通过这次课程设计我还知道了在学习这条道路上我们不断要加强学习,还要有坚持不懈的学习精神。要将理论知识与实践相结合,要用理论指导实践,用实践来验证理论,让我们学于所用。
在这次设计中,我学到了很多东西,尝试到了成功的喜悦,但也有不足的地方,时钟有一点延时,虽然不影响效果,但若能考虑到延时问题,这样既会让所设计的器件的功能更加完善。报警采用的是光电报警,但若能再加上声报警就更完美了。
此次课程设计中我还更加体会到合作的重要性,要有协助精神,这样我们才能事半功倍!这次设计比较成功,但是由于时间关系,还是有一些做的不够好的地方。这次设计中得到了老师及同学们的大力帮助,在此衷心的感谢大家的指导与批评。
六、参考文献
[1]《数字电子技术基础》 阎石主编 高等教育出版社
[2] 潘松,黄继业.《EDA技术实用教程》 [ M ].北京:科学出版社, 2002.
[3] 康华光主编.《电子技术基础》(模拟部分).第四版.北京:高等教育出版社,2001
[4] 乔庐峰 王志功 《 VHDL数字电路设计教程》 电子工业出版社。2005
[5] 网络资源 计数器 百度文库
14
本文标题:eda课程设计-EDA课程设计报告书61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1