人人范文网 其他心得体会

eda实验心得体会(精选多篇)

发布时间:2020-09-14 08:32:54 来源:其他心得体会 收藏本文 下载本文 手机版

推荐第1篇:EDA可编程逻辑器件实验心得体会完整版

EDA

可 编 程 逻 辑 器 件

《实验总结》

学号:

姓名:

班级:

EDA试验心得体会

当看到这门课的时候,我最初的感觉是很无语,书本上一大堆看不懂的东西,没有接触过的VHDL语言和一些电路图和实体,听起来也是一塌糊涂,对EDA技术很陌生,也感到很茫然,也没有信心,当接触到可编程器件的时候,看到大家同样感到很迷惘。

随后在深入的学习中发现书本资料通过大量的图示对PLD硬件特性与编程技术进行了形象的讲解,不仅融合了之前学习的关于电路设计的知识还将EDA的技术加入其中。对VHDL语言的详尽讲解更是让我深刻理解了VHDL语言的编程原理。由于本门课程是一门硬件学习课程,所以实验必不可少。通过课程最后实验,我体会一些VHDL语言相对于其他编程语言的特点。在接触VHDL语言之前,我已经学习了C语言,汇编语言,而相对于这些语言的学习,,VHDL 具有明显的特点。这不仅仅是由于VHDL 作为一种硬件描述语言的学习需要了解较多的数字逻辑方面的硬件电路知识,括目标芯片基本结构方面的知识更重要的是由于VHDL 描述的对象始终是客观的电路系统。由于电路系统内部的子系统乃至部分元器件的工作状态和工作方式可以是相互独立、互不相关的,也可以是互为因果的。这表明,在任一时刻,电 路 系 统 可 以 有 许 多 相关 和不相关的事件同时并行发生。例如可以在多个独立的模块中同时入行不同方式的数据交换和控制信号传输,这种并行工作方式是任何一种基于CPU 的软件程序语言所无法描绘和实现的。传统的软件编程语言只能根据CPU 的工作方式,以排队式指令的形式来对特定的事件和信息控制或接收。在CPU 工作的任一时间段内只能完成一种操作。因此,任何复杂的程序在一个单CPU 的计算机中的运行,永远是单向和一维的。因而程序设计者也几乎只以一维的思维模式就可以编程和工作了。在试验箱上,编写相应的软件即可,否则,只在计算机上模拟调试软件,则无法了解单片机接口中各种控制信号的使用。还可帮助学会分析问题和解决问题的能力。这在单片机实验报告中都要体现出来。

这门课是一门理论性和实践性都很强的专业基础课,也是一门综合性的技术基础学科,它需要程序语言、数学、物理学、电子学、力学、机械等知识,同时还要掌握各种物理量的变换测定,以及实验装置的设计和数据分析等方面所涉及的基础理论。许多测试理论和方法只有通过实际验证才能加深理解并真正掌握。实验就是使学生加深理解所学基础知识,掌握各类典型传感、记录仪器的基本原理和适用范围;具有测试系统的选择及应用能力;具有实验数据处理和误差分析能力;得到基本实验技能的训练与分析能力的训练,使学生初步掌握测试技术的基本方法,具有初步独立进行电子信息工程测试的能力,对各门知识得到融会贯通的认识和掌握,加深对理论知识的理解。实验课是本门课程的重要环节,其目的是培养学生的分析和解决实际问题的能力,从而掌握机械工程测试技术手段,为将来从事技术工作和科学研究奠定扎实的基础。

通过本门课程实验,以下能力得到了较大的提高:

了解了可编程逻辑器件操作的原理和应用,以及试验箱及软件编译环境的使用的注意事项及各种测试中不同问题的处理方法。

在学习的过程中,我深深体会到,学习不单单要将理论知识学扎实了,更重要的是实际动手操作能力,学完了课本知识,我并没有觉得自己有多大的提高,但是在随后的实验过程中我真的感觉学会了很多,学到了很多知识,在实践中更加理解了书本上的理论知识的经典所在以及这门学科的意义和用处!真心希望以后的课程都能将理论与实践充分的结合起来,在实践的过程中串联书本的知识,让理论化为实践的力量!

推荐第2篇:EDA实验4lxm

实验四 计数器与七段译码器及显示的设计

一 实验目的

1、掌握七段译码器的工作原理;

2、学会用VHDL硬件描述语言进行数字系统设计;

3、学会运用波形仿真测试检验程序的正确性;

4、用QuartusII完成基本组合电路的设计。

二 实验仪器

PC机、Quartus II 6.0软件、康芯EDA实验箱

三 实验内容

选GW48系统的实验电路模式6,用数码8显示译码输出(PIO46-PIO40),键3到键8作为控制输入端。完成计数器的数码管显示设计。

四 实验原理及步骤

7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。例6-18作为7段译码器,输出信号LED7S的7位分别接如图6-2数码管的7个段,高位在左,低位在右。例如当LED7S输出为“1101101”时,数码管的7个段:g、f、e、d、c、b、a分别接

1、

1、0、

1、

1、0、1;接有高电平的段发亮,于是数码管显示“5”。注意,这里没有考虑表示小数点的发光管,如果要考虑,需要增加段h,例6-18中的LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)应改为 ...(7 DOWNTO 0) 。

1、根据译码器真值表写出原程序。

译码器真值表:

输入

输出

值 A

B C D a b c d e f g 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 0 1 1 0 0 0 0 2 0 0 1 0 1 1 0 1 1 0 1 3 0 0 1 1 1 1 1 1 0 0 1 4 0 1 0 0 0 1 1 0 0 1 1 5 0 1 0 1 1 0 1 1 0 1 1 6 0 1 1 0 1 0 1 1 1 1 1

7 0 1 1 1 1 1 1 0 0 0 0 8 1 0 0 0 1 1 1 1 1 1 1 9 1 0 0 1 1 1 1 1 0 1 1 A

1 0 1 0 1 1 1 0 1 1 1 B 1 0 1 1 0 0 1 1 1 1 1 C 1 1 0 0 1 0 0 1 1 1 0 D 1 1 0 1 0 1 1 1 1 0 1 E 1 1 1 0 1 0 0 1 1 1 1 F 1 1 1 1 1 0 0 0 1 1 1

三、实验内容:

1、说明下列程序中各语句的含义,以及该例的整体功能。在Quartus II 6.0上对以下该例进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形(提示:用输入总线的方式给出输入信号仿真数据)。

LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DecL7S IS PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ; END ; ARCHITECTURE one OF DecL7S IS BEGIN PROCESS( A ) BEGIN CASE A(3 DOWNTO 0) IS WHEN \"0000\" =>LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S NULL ; END CASE ; END PROCESS ; END ;

图3- 1 共阴数码管及其电路

2、引脚锁定以及硬件下载测试。建议选实验电路模式6,用数码8显示译码输出(PIO46--PIO40),键

8、键

7、键

6、键5四位控制输入,硬件验证译码器的工作性能。

3、用VHDL完成四位二进制加法计数器设计,命名为CNT4B.

4、用VHDL例化语句(参考实验1中的1位全加VHDL文本输入设计)按图3-2 的方式,完成顶层文件设计,并重复以上实验过程。注意图3-2中的tmp是4位总线,led是7位总线。对于引脚锁定和实验,建议仍选实验电路模式6,用数码8显示译码输出,用键3作为时钟输入(每按2次键为1个时钟脉冲),或直接时钟信号clock0。

图3-2 计数器和译码器连接电路的顶层文件原理图

(提示:

1、将教材P89页程序和P154页程序读懂,分别建立工程、生成各自原理图。

2、将上述两个原理图按教材P155页图6-19连接起来建立新的原理图设计文件。

3、将上述原理图文件编译、仿真、引脚绑定,下载到实验箱验证。

四、实验报告要求

1、总结Quartus II 6.0 VHDL 中CASE语句应用及多层次设计方法

2、根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和实验过程;设计程序、程序分析报告、仿真波形图及其分析报告;

3、心得体会――本次实验中你的感受;你从实验中获得了哪些收益;本次实验你的成功之处;本次实验中还有待改进的地方;下次实验应该从哪些地方进行改进;怎样提高自的实验效率和实验水平等等。

五、问题与思考:

只要求译出数字0~9和“-” ,怎样修改程序?

推荐第3篇:EDA实验总结报告

数字EDA实验报告--------------薛蕾0941903207

数字EDA实验 实验报告

学院: 计算机科学与工程学院 专业: 通信工程 学号: 0941903207 姓名: 薛蕾 指导老师: 钱强

数字EDA实验报告--------------薛蕾0941903207 实验一 四选一数据选择器的设计

一、实验目的

1、熟悉Quartus II软件的使用。

2、了解数据选择器的工作原理。

3、熟悉EDA开发的基本流程。

二、实验原理及内容

实验原理

数据选择器在实际中得到了广泛的应用,尤其是在通信中为了利用多路信号中的一路,可以采用数据选择器进行选择再对该路信号加以利用。 从多路输入信号中选择其中一路进行输出的电路称为数据选择器。或:在地址信号控制下,从多路输入信息中选择其中的某一路信息作为输出的电路称为数据选择器。数据选择器又叫多路选择器,简称MUX。 4选1数据选择器:

(1)原理框图:如右图。

D0 、D

1、D

2、D3

:输入数据 A1 、A0

:地址变量

由地址码决定从4路输入中选择哪1路输出。

(2)真值表如下图:

1 (3)逻辑图

数据选择器的原理比较简单,首先必须设置一个选择标志信号,目的就是为了从多路信号中选择所需要的一路信号,选择标志信号的一种状态对应着一路信号。在应用中,设置一定的选择标志信号状态即可得到相应的某一路信号。这就是数据选择器的实现原理。

三.实验内容

1、分别采用原理图和VHDL语言的形式设计4选1数据选择器

2、对所涉及的电路进行编译及正确的仿真。电路图:

四、实验程序

library ieee; use ieee.std_Logic_1164.all;

ENTITY mux4 IS

PORT(

a0, a1, a2, a3 :IN STD_LOGIC;

s :IN STD_LOGIC_VECTOR (1 DOWNTO 0);

y :OUT STD_LOGIC ); END mux4; ARCHITECTURE archmux OF mux4 IS

BEGIN y

--当s=00时,y=a0 a1 WHEN s = \"01\" else

--当s=01时,y=a1 a2 WHEN s = \"10\" else

--当s=10时,y=a2 a3;

--当s取其它值时,y=a2 END archmux;

五、运行结果

六.实验总结

真值表分析:

当js=0时,a1,a0取00,01,10,11时,分别可取d0,d1,d2,d3.

实验二 血型配对器的设计

一、实验目的

1、进一步熟悉Quartus II软件的使用。

2、掌握简单组合逻辑电路的设计方法与功能仿真技巧。

3、进一步学习Quartus II中基于原理图设计的流程。

二、实验原理及内容

实验原理

人类有O、A、B、AB 4种基本血型,输血者与受血者的血型必须符合图示原则。设计一血型配对电路,用以检测输血者与受血者之间的血型关系是否符合,如果符合,输出为1,否则为0。

已知: AB血型是万能受血者,O血型是万能献血者! 如果要输血给O型血,那么可以的血型是O型! 如果要输血给A型血,那么可以的血型是A,O型! 如果要输血给B型血,那么可以的血型是B,O型!

如果要输血给AB型血,那么可以的血型是A,B,AB,O型!

输血者

受血者

O A

O A B AB

B AB

三.实验内容

1、用VHDL语言编写程序实现血型配对器的功能 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY Vxuexing IS PORT( P,Q,R,S:IN STD_LOGIC; F:OUT STD_LOGIC ); END Vxuexing; ARCHITECTURE A OF Vxuexing IS BEGIN

F

2、对所编写的电路进行编译及正确的仿真。

实验分析 真值表

PQRSF00001000110010100111010000101101100011111000010010101011011111000110101110011111

P,Q表示输血者的血型;R,S,表示受血者的血型。当两者符合血型配合原则时,F=1,否则为0.

四、运行结果

五、实验总结

本实验给出了四种不同的血型编码,PQ(1,1),RS(1,1)表示AB型血,P,Q(1,0),RS(1,0)表示B型血,PQ(0,1),RS(0,1)表示A型血,PQ(0,0),RS(0,0)表示O型血。根据真值表,并根据实验的原理图,画出电路图并进行连接。

实验三 简单数字钟的设计

一、实验目的

1、了解数字钟的工作原理。

2、进一步学习Quartus II中基于VHDL设计的流程。

3、掌握VHDL编写中的一些小技巧。

4、掌握简单时序逻辑电路的设计方法与功能仿真技巧。

二、实验原理及内容

实验原理

简单数字钟应该具有显示时-分-秒的功能。首先要知道钟表的工作机理,整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转

三.实验内容

1、用原理图的方式编写一个12/24进制的计数器,并创建为SYMBOL文件。

2、用VHDL的方式编写一个60进制的计数器,并创建为SYMBOL文件。

3、创建顶层文件。调用已编写的SYMBOL文件,设计简单的数字钟电路。

2、对所编写的电路进行编译及正确的仿真。

二十四进制VHDL LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT24 IS PORT(

CP, EN, Rd, LD :IN STD_LOGIC;

D

:IN STD_LOGIC_VECTOR(5 DOWNTO 0);

Co

:OUT STD_LOGIC; Q

:OUT STD_LOGIC_VECTOR(5 DOWNTO 0) ); END CNT24; ARCHITECTURE STR OF CNT24 IS

SIGNAL QN : STD_LOGIC_VECTOR(5 DOWNTO 0 ) ;

BEGIN Co

ELSE \'0\'; PROCESS (CP, RD)

BEGIN IF (Rd =\'0\') THEN

QN

ELSIF (EN=\'1\') THEN QN

六十进制VHDL LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY jsq60 IS PORT(en,rd,cp :IN STD_LOGIC;

qh:buffer STD_LOGIC_VECTOR(3 DOWNTO 0);

ql :buffer STD_LOGIC_VECTOR(3 DOWNTO 0);

Co :OUT STD_LOGIC); END jsq60; ARCHITECTURE b OF jsq60 IS BEGIN Co

BEGIN IF (rd=\'0\') THEN qh

IF (en=\'1\') THEN

IF (ql=9) THEN

ql

IF (qh=5) THEN

qh

ELSE qh

end if;

else

ql

end if;

end if;

END IF; END PROCESS; END b;

原理图

四、运行结果

24进制

60进制

时钟仿真结果

五、实验总结

此设计问题可分为主控电路,计数器模块和扫描显示三大部分,计数器在之前的学习中已经非常熟悉,只要掌握60,12进制的技术规律,用同步或异步计数器都可以实现。二扫描电路我们学过两种驱动方式:BCD码驱动方式和直接驱动方式。

实验四 简单交通灯的设计

一、实验目的

1、了解交通灯的亮灭规律。

2、了解交通灯控制器的工作原理。

3、进一步熟悉VHDL语言编程,了解实际设计中的优化方案。

二、实验原理及内容

实验原理

交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车子如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂,本实验仅针对最简单的南北和东西直行的情况。

要完成本实验,首先必须了解交通路灯的亮灭规律。依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。其交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。

三.实验内容

1、用VHDL的方式编写一个简单的交通控制灯电路

2、对所编写的电路进行编译及正确的仿真。

程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

entity traffic is port(clk,enb : in std_logic;

ared,agreen,ayellow,bred,bgreen,byellow : buffer std_logic;

acounth,acountl,bcounth,bcountl : buffer std_logic_vector(3 downto 0)); end traffic;

architecture one of traffic is begin proce(clk,enb) variable lightstatus : std_logic_vector(5 downto 0); begin

if(clk\'event and clk=\'1\')then lightstatus := ared&agreen&ayellow&bred&bgreen&byellow; if((acounth=\"0000\" and acountl=\"0000\")or(bcounth=\"0000\" and bcountl=\"0000\"))then Case lightstatus is When \"010100\"=>lightstatus:=\"001100\";acountl if(enb=\'1\')then lightstatus:=\"100010\";acountl

else lightstatus:=\"010100\";acountl

when \"100010\"=>

lightstatus:=\"100001\";acountl

when \"100001\"=>

lightstatus:=\"010100\";acountl

when others=>lightstatus:=\"010100\";acountl

end case; else if(acountl=\"0000\")then acounth

else acountl

end if;

if(bcountl=\"0000\")then bcounth

else bcountl

ared

bred

四、运行结果

分析:

这里a代表东西方向,b代表南北方向,acounth是表示东西方向五进制计数acountl是东西方向六进制计数,bcounth则表示南北方向五进制,bounthl则是南北方向六进制计数 东西方向为0时,东西方向红灯亮(ared=1)

东西方向在1~4之间,东西方向绿灯亮(即agreen=1)南北方向 的红灯亮起(即bred=1)

五、实验总结

此设计问题可分为主控电路,译码驱动电路和扫描显示部分。

但是,这远远不能满足实际生活的需要,还应设置倒计时秒数,因此可在此电路基础上外加一个定时模块。

实验五 流水灯的设计

一、实验目的

1、了解流水灯的工作原理。

二、实验原理及内容

实验原理

要完成本实验,首先必须了解流水灯的原理。所谓的流水灯实际上就是由多个LED发光二极管构成的电路,当发光二极管可以依次点亮时,即能呈现流水的效果。 实验内容

1、设计能带8个LED发光管发光,并按照要求轮流发光,产生流水灯的流动效果。

2、应具有两种以上不同风格的流动闪亮效果。比如依次点亮或者依次熄灭。(选作)

3、有起动、停止控制键。(选作)

4、有流动闪亮效果选择设置键。(选作)

5、对所编写的电路进行编译及正确的仿真。

三、实验程序

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY yiweijicun1 IS PORT (CP,R,DSR,DSL:IN STD_LOGIC;

S:STD_LOGIC_VECTOR(2 DOWNTO 0);

D:STD_LOGIC_VECTOR(7 DOWNTO 0);

Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)

); END yiweijicun1; ARCHITECTURE yiweijicun_arch OF yiweijicun1 IS

SIGNAL IQ: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS (CP,R,IQ) BEGIN IF (R=\'1\') THEN IQ \'0\'); ELSIF(CP\'EVENT AND CP =\'1\')THEN CASE CONV_INTEGER(S) IS WHEN 0=>NULL; WHEN 1=>IQ IQ IQ IQ IQ IQ IQ NULL; END CASE; END IF; Q

四、运行结果

结果分析:

d[0]~d[7]为八个输入端,s[0]和s[1]控制流水灯得输出,s=1保持,s=2实现左移功能,s=3实现右移功能,因为延迟的原因,在s=2时,需要经过一段时间才能实现循环右移的功能,流水灯的实现其实是运用了8位移位寄存器,它只是运用了其中的保持左移与右移的功能,8LO位移位寄存器还有循环右移,循环左移,算数右移,算数左移等功能。

五、实验总结

了解了移位寄存器的功能和原理

通过这次实验,加深了VHDL语言的运用能力,更进一步了解了8位移位寄存器的功能。

实验六 乘法器的设计

一、实验目的

1、了解乘法器的工作原理。

2、了解复杂时序电路的设计流程。

二、实验原理及内容

实验原理

具体设计原理参见教材188页。 实验内容

1、设计一个能进行两个十进制数相乘的乘法器,乘数和被乘数均小于100。(可以参考教材231页的VHDL代码来设计)

2、对所编写的电路进行编译及正确的仿真。

三、实验程序

library IEEE; use IEEE.std_logic_1164.all;

entity one_bit_adder is port ( A: in STD_LOGIC; B: in STD_LOGIC; C_in: in STD_LOGIC; S: out STD_LOGIC; C_out: out STD_LOGIC ); end one_bit_adder;

architecture one_bit_adder of one_bit_adder is begin

S

end one_bit_adder; library IEEE; use IEEE.std_logic_1164.all;

entity sichen is port ( A: in STD_LOGIC_VECTOR (3 downto 0); B: in STD_LOGIC_VECTOR (3 downto 0); data_out: out STD_LOGIC_VECTOR (6 downto 0) ); end sichen;

architecture multi_arch of sichen is signal A_MULT_B0: STD_LOGIC_VECTOR (2 downto 0); signal A_MULT_B1: STD_LOGIC_VECTOR (2 downto 0); signal A_MULT_B2: STD_LOGIC_VECTOR (2 downto 0);

signal S_TEMP1: STD_LOGIC_VECTOR (1 downto 0); signal S_TEMP2: STD_LOGIC_VECTOR (1 downto 0);

signal C_TEMP : STD_LOGIC_VECTOR (6 downto 0);

signal C0_out_B0, C1_out_B0, C2_out_B0 : STD_LOGIC; signal C0_out_B1, C1_out_B1, C2_out_B1 : STD_LOGIC;

signal ZERO: STD_LOGIC;

component one_bit_adder port ( A: in STD_LOGIC; B: in STD_LOGIC; C_in: in STD_LOGIC; S: out STD_LOGIC; C_out: out STD_LOGIC ); end component; begin U_0_0 : one_bit_adder port map (A =>A_MULT_B0(1), B =>A_MULT_B1(0), C_in =>ZERO, S =>C_TEMP(1), C_out =>C0_out_B0); U_0_1 : one_bit_adder port map (A =>A_MULT_B0(2), B =>A_MULT_B1(1), C_in =>C0_out_B0, S =>S_TEMP1(0), C_out =>C1_out_B0); U_0_2 : one_bit_adder port map (A =>ZERO, B =>A_MULT_B1(2), C_in =>C1_out_B0, S =>S_TEMP1(1), C_out =>C2_out_B0);

U_1_0 : one_bit_adder port map (A =>A_MULT_B2(0), B =>S_TEMP1(0), C_in =>ZERO, S =>C_TEMP(2), C_out =>C0_out_B1); U_1_1 : one_bit_adder port map (A =>A_MULT_B2(1), B =>S_TEMP1(1), C_in =>C0_out_B1, S =>S_TEMP2(0), C_out =>C1_out_B1); U_1_2 : one_bit_adder port map (A =>A_MULT_B2(2), B =>C2_out_B0, C_in =>C1_out_B1, S =>S_TEMP2(1), C_out =>C2_out_B1);

A_MULT_B0(0)

A_MULT_B1(0)

A_MULT_B2(0)

ZERO

C_TEMP(6)

data_out

end multi_arch;

四、运行结果

乘法器实现A,B两数的相乘。A[0]~A[3]以及B[0]~B[3]是实现输入端的控制。由图看出,输出上产生了延迟是因为当A[3]输入1,对应了十进制的8,B[0]输入1,对应了十进制的1,两者相乘得8,即在data_out端应输出8,此处因仍存在竞争冒险。

五、实验总结

乘法器的设计的问题可以分为乘数和被乘数控制模块,寄存模块,乘法模块和扫描显示模块几个部分。

两数相乘的方法很多,可以用移位相加的方法,也可以将乘法器看成计数器,乘积的初始值为零,每一个时钟周期将被乘数的值加到积上,同时乘数减一,这样反复执行,直到乘数为零。

推荐第4篇:EDA心得体会

EDA学习心得体会

大三时候开始了专业课的学习,其中EDA就是要学的一门专业课,课程刚开始的时候,对EDA技术很陌生,也感到很茫然,也非常没有信心,当接触到可编程器件的时候,看到大家同样感到很迷惘。首先,通过对这门课程相关理论的学习,我掌握了EDA的一些基本的的知识,现代电子产品的性能越来越高,复杂度越来越大,更新步伐也越来越快。实现这种进步的主要原因就是微电子技术和电子技术的发展。前者以微细加工技术为代表,目前已进入超深亚微米阶段,可以在几平方厘米的芯片上集成几千万个晶体管;后者的核心就是电子设计自动化EDA(Electronic Design Automatic)技术,由于本门课程是一门硬件学习课程,所以实验必不可少。通过课程最后实验,我体会一些VHDL语言相对于其他编程语言的特点。

在接触VHDL语言之前,我已经学习了C语言,汇编语言,而相对于这些语言的学习,VHDL 具有明显的特点。这不仅仅是由于VHDL 作为一种硬件描述语言的学习需要了解较多的数字逻辑方面的硬件电路知识,包括目标芯片基本结构方面的知识更重要的是由于VHDL 描述的对象始终是客观的电路系统。由于电路系统内部的子系统乃至部分元器件的工作状态和工作方式可以是相互独立、互不相关的,也可以是互为因果的。这表明,在任一时刻,电路系统可以有许多相关和不相关的事件同时并行发生。因此,任何复杂的程序在一个单CPU 的计算机中的运行,永远是单向和一维的。因而程序设计者也几乎只需以一维的思维模式就可以编程和工作了。

在学习的过程中,我深深体会到,学习不单单要将理论知识学扎实了,更重要的是实际动手操作能力,学完了课本知识,我并没有觉得自己有多大的提高,感觉学到的很没用,我们现在学到的还很少,只是编写一些简单的程序。相反的,每次做完实验之后,都会感觉自己收获不少,每次都会有问题,因此,我认为在老师今后的教学当中,应当更加注重动手实验,把理论与实践很好的结合起来,才能使同学融会贯通。现在感觉到对这门课还只有很少的认识,所以希望很认真的续下去

推荐第5篇:EDA分频器实验教案

实验三:整数分频器的设计

一 实验目的

了解利用类属设计可配置的重用设计技术。 二 实验原理

利用类属n 可以改变分频器的分频系数,输出q的频率是输入信号clk频率的1/n。 通过给n赋不同的值,就可以得到需要的频率。 三 实验器材 EDA实验箱 四 实验内容

1.参考教材第5章中5.3.1,完成整数分频器的设计。

2.修改5.3.1中的分频系数n,观察仿真波形和实验箱输入/输出信号的变化。3.在试验系统上硬件验证分频器的功能。

在实验三中,建议将实验箱的实验电路结构模式设定为模式7。输入信号clk由键7的输出来模拟,输入信号reset_n由键8模拟,输出信号q接至LED:D14。当然,也可以由实验者设定到其它功能相似的键或者LED。

代码:(参考教材第5章中5.3.1) library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity div is

generic(n:integer:=8);

port(clk,reset_n:in std_logic;

q: out std_logic); end div; architecture behavl_div of div is

signal count:integer range n-1 downto 0; begin

proce(reset_n,clk)

begin

if reset_n=\'0\' then q

elsif(clk\'event and clk=\'1\' and clk\'last_value=\'0\')then

count

if count>=(n/2)then q

else q

end if;

if count

end if;

end if; end proce; end behavl_div;

五 实验注意事项

1.编写代码时一定要书写规范

2模式的选择和引脚的配置一定要合理 六 实验报告

简述实验过程,将实验项目分析设计,仿真和测试写入实验报告。

推荐第6篇:EDA实验六131521

《电子设计自动化实验》课程设计

题 目: 十六位硬件乘加器电路 姓 名: 江 璐 学院班级: 13级电子信息工程2班 学 号: 1315212017 指导老师: 邱应强老师 时 间: 20151122 目 录 一:摘要……………………………………………………3 二: 正文……………………………………………………3 (一)系统设计………………………………………………3 (二)单元电路设计…………………………………………4 (三)仿真结果………………………………………………9 (四)软件设计………………………………………………11 (五)系统测试………………………………………………11 (六)结论……………………………………………………14 三:参考文献………………………………………………14 四:附录……………………………………………………15 六:心得体会………………………………………………16

2 一:摘要

1.实验要求:采用并行、串行或流水线方式来实现对8个16位数据进行乘法和加法运算(yout=a0b0+a1b1+a2b2+a3b3),位宽16位。

2.实验方法:使用乘法器lpm_mult

2、16位加法器ADDER16B、计数器cnt16以及锁存器en_dff四个模块。当clock出现上升沿时,对输入端输入的两个数dataa、datab进行乘法运算。将结果输入锁存器中,锁存上一阶段计算得到的值, 16位加法器ADDER16B将锁存器锁存的上一阶段的值与进行完乘法计算得到的值dataa*datab加起来,并输出结果。计数器cnt16用于区分四组乘加所得数,当有一个上升沿脉冲送入cnt16时,若计数不到5,则进行计数+1,若计数达到5,COUT输出进位信号到锁存器en_dff的reset端口,将锁存器复位清零,重新进行计数。

3.实验结论:经过仿真与硬件测试检验后证实可行,但是是对8个8位数据进行乘法和加法运算。

二:正文

(一)系统设计

1.设计要求

采用并行、串行或流水线方式来实现对8个16位数据进行乘法和加法运算(yout=a0*b0+a1*b1+a2*b2+a3*b3),位宽16位。

2.系统设计方案

(1)系统设计思路:由十六位加法器构成以时序逻辑方式设计的十六位乘加器,流水线方式 ,以移位加法为核心器件。 (2)总体方案的论证与比较

方案一:采用四个乘法器,以串行方式输入各数据。

方案二:采用一个乘法器,先输入两数据进行运算,将得到结果保存,并与下一组乘法运算得到的结果相加。

方案的选择:第一种方案浪费大量的资源,考虑到实验箱条件限制,采用第二种方案。尽管速度较慢,但可省下相当多的资源,并且实验室可以实现。 (3)各功能块的划分与组成

3 共有4个设计模块,分别是乘法器lpm_mult0、16位加法器ADDER16B、计数器cnt16以及锁存器en_dff。 (4)系统的工作原理

以上是电路原理图。乘数dataa与被乘数datab输入乘法器lpm_mult0中,当START有上升沿出现时,乘法器计算出dataa*datab的结果并有result[15..0]输出。result[15..0]输出的结果送入8位加法器ADDER8B的A[15..0]输入端,加法器的B[15..0]输入端连接到锁存器en_dff的输出端q[15..0],这样锁存器锁存的值就可以与加法器所得到的值相加,得到两对乘法计算后值得和,以此类推,可以得到不断累加的值。而CIN端口接地,这样可以确保CIN端口不影响加法器的计算。加法器计算A[15..0](dataa*datab)和锁存器锁存的值B[15..0]的和从输出端S[15..0]输出,输入锁存器en_dff的输入端d[15..0],将数值锁存起来,同时输出端S[15..0]接到输出端YOUT[15..0],从而从仿真中可以看到每一阶段累加的结果。而计数器cnt16的作用是区分四组乘加所得数与四组乘加所得数。EN接高电平,rst接低电平,保证计数器可用,clk接到START,每当有一个上升沿脉冲送入cnt16时,若计数不到5,则进行计数+1,若计数达到5,COUT输出进位信号到锁存器en_dff的reset端口,将锁存器复位清零,重新进行计数。

(二)单元电路设计

总共有四大模块,分别为乘法器lpm_mult0、16位加法器ADDER16B、计数器cnt16以及锁存器en_dff。

1.乘法器lpm_mult0:当clock出现上升沿时,对输入端输入的两个数dataa、datab进行乘法运算。程序:

-- megafunction wizard: %LPM_MULT% 4 -- GENERATION: STANDARD -- VERSION: WM1.0 -- MODULE: lpm_mult -- ============== -- File Name: lpm_mult0.vhd -- Megafunction Name(s): -- -- -- Simulation Library Files(s): -- lpm -- ============== -- ************************************************************ -- THIS IS A WIZARD-GENERATED FILE.DO NOT EDIT THIS FILE! -- -- 7.2 Build 151 09/26/2007 SJ Full Version -- ************************************************************ --Copyright (C) 1991-2007 Altera Corporation --Your use of Altera Corporation\'s design tools, logic functions --and other software and tools, and its AMPP partner logic --functions, and any output files from any of the foregoing --(including device programming or simulation files), and any --aociated documentation or information are exprely subject --to the terms and conditions of the Altera Program License --Subscription Agreement, Altera MegaCore Function License --Agreement, or other applicable license agreement, including, --without limitation, that your use is for the sole purpose of --programming logic devices manufactured by Altera and sold by --Altera or its authorized distributors.Please refer to the --applicable agreement for further details.LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY lpm; USE lpm.all; ENTITY lpm_mult0 IS PORT (

); END lpm_mult0; ARCHITECTURE SYN OF lpm_mult0 IS SIGNAL sub_wire0 : STD_LOGIC_VECTOR (15 DOWNTO 0); clock dataa datab result

: IN STD_LOGIC ;

: IN STD_LOGIC_VECTOR (7 DOWNTO 0); : IN STD_LOGIC_VECTOR (7 DOWNTO 0); : OUT STD_LOGIC_VECTOR (15 DOWNTO 0) lpm_mult 5 COMPONENT lpm_mult GENERIC (

); PORT (

); END COMPONENT; BEGIN result

) PORT MAP (

); END SYN; -- ============== -- CNX file retrieval info -- ============== -- Retrieval info: PRIVATE: AutoSizeResult NUMERIC \"1\" -- Retrieval info: PRIVATE: B_isConstant NUMERIC \"0\" -- Retrieval info: PRIVATE: ConstantB NUMERIC \"0\" -- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING \"Cyclone II\" -- Retrieval info: PRIVATE: LPM_PIPELINE NUMERIC \"1\" dataa =>dataa, datab =>datab, clock =>clock, result =>sub_wire0 lpm_hint =>\"DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=5\", lpm_pipeline =>1, lpm_representation =>\"UNSIGNED\", lpm_type =>\"LPM_MULT\", lpm_widtha =>8, lpm_widthb =>8, lpm_widthp =>16

dataa datab clock result

: IN STD_LOGIC_VECTOR (7 DOWNTO 0); : IN STD_LOGIC_VECTOR (7 DOWNTO 0); : IN STD_LOGIC ;

: OUT STD_LOGIC_VECTOR (15 DOWNTO 0) lpm_hint

: STRING;

: NATURAL;

: STRING; lpm_pipeline lpm_type lpm_widtha lpm_widthb lpm_widthp lpm_representation

: STRING;

: NATURAL; : NATURAL; : NATURAL 6 -- Retrieval info: PRIVATE: Latency NUMERIC \"1\" -- Retrieval info: PRIVATE: OptionalSum NUMERIC \"0\" -- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING \"1\" -- Retrieval info: PRIVATE: SignedMult NUMERIC \"0\" -- Retrieval info: PRIVATE: USE_MULT NUMERIC \"1\" -- Retrieval info: PRIVATE: ValidConstant NUMERIC \"0\" -- Retrieval info: PRIVATE: WidthA NUMERIC \"8\" -- Retrieval info: PRIVATE: WidthB NUMERIC \"8\" -- Retrieval info: PRIVATE: WidthP NUMERIC \"16\" -- Retrieval info: PRIVATE: WidthS NUMERIC \"1\" -- Retrieval info: PRIVATE: aclr NUMERIC \"0\" -- Retrieval info: PRIVATE: clken NUMERIC \"0\" -- Retrieval info: PRIVATE: optimize NUMERIC \"0\" -- Retrieval

info:

CONSTANT:

LPM_HINT

STRING \"DEDICATED_MULTIPLIER_CIRCUITRY=YES,MAXIMIZE_SPEED=5\" -- Retrieval info: CONSTANT: LPM_PIPELINE NUMERIC \"1\" -- Retrieval info: CONSTANT: LPM_REPRESENTATION STRING \"UNSIGNED\" -- Retrieval info: CONSTANT: LPM_TYPE STRING \"LPM_MULT\" -- Retrieval info: CONSTANT: LPM_WIDTHA NUMERIC \"8\" -- Retrieval info: CONSTANT: LPM_WIDTHB NUMERIC \"8\" -- Retrieval info: CONSTANT: LPM_WIDTHP NUMERIC \"16\" -- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL clock -- Retrieval info: USED_PORT: dataa 0 0 8 0 INPUT NODEFVAL dataa[7..0] -- Retrieval info: USED_PORT: datab 0 0 8 0 INPUT NODEFVAL datab[7..0] -- Retrieval info: USED_PORT: result 0 0 16 0 OUTPUT NODEFVAL result[15..0] -- Retrieval info: CONNECT: @dataa 0 0 8 0 dataa 0 0 8 0 -- Retrieval info: CONNECT: result 0 0 16 0 @result 0 0 16 0 -- Retrieval info: CONNECT: @datab 0 0 8 0 datab 0 0 8 0 -- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0 -- Retrieval info: LIBRARY: lpm lpm.lpm_components.all -- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mult0.vhd TRUE -- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mult0.inc FALSE -- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mult0.cmp TRUE -- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mult0.bsf TRUE FALSE -- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mult0_inst.vhd FALSE -- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mult0_waveforms.html TRUE -- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mult0_wave*.jpg FALSE -- Retrieval info: GEN_FILE: TYPE_NORMAL lpm_mult0_syn.v TRUE -- Retrieval info: LIB_FILE: lpm

2.16位加法器ADDER16B:将锁存器锁存的上一阶段的值与进行完乘法计算得到的值dataa*datab加起来,并输出结果。程序:

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;

7 USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADDER16B IS PORT( CIN:IN STD_LOGIC; A,B :IN STD_LOGIC_VECTOR(15 DOWNTO 0); S :OUT STD_LOGIC_VECTOR(15 DOWNTO 0); COUT:OUT STD_LOGIC); END ADDER16B; ARCHITECTURE behav OF ADDER16B IS SIGNAL SINT,AA,BB:STD_LOGIC_VECTOR(16 DOWNTO 0); BEGIN AA

3.计数器cnt16:区分每两组乘加所得数。clk接到START,每当有一个上升沿脉冲送入cnt16时,若计数不到5,则进行计数+1,若计数达到5,COUT输出进位信号到锁存器en_dff的reset端口,将锁存器复位清零,重新进行计数。 程序:

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cnt16 IS PORT(CLK,RST,EN:IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT:OUT STD_LOGIC); END cnt16; ARCHITECTURE behav OF cnt16 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 \'0\'); END IF; END IF; END IF; IF CQI=5 THEN COUT

library ieee; use ieee.std_logic_1164.all; entity en_dff is port (d: in std_logic_VECTOR(15 DOWNTO 0); reset,EN,clk:in std_logic; q: buffer std_logic_VECTOR(15 DOWNTO 0)); end en_dff; architecture behavior of en_dff is begin proce (reset,clk) begin if reset=\'1\' then q

(三)仿真结果

(1)乘法器

给clock一个时钟信号,验证得当clock处于上升沿时result=dataa*datab

(2)16位加法器ADDER16B

9 将CIN接低电平,随意设置A、B的值,S为A、B的和。

(3)计数器cnt16 给CLK一个时钟信号。首先将RST置低电平,EN置高电平,验证计数器的计数功能。再分别将RST置高电平、EN置低电平,验证计数器的复位清零以及使能端控制功能。

(4)锁存器en_dff 给clk一个时钟信号。当reset=1时,锁存器清零,当reset=0时有上升沿且使能端EN=1时,d锁存进锁存器中;当有上升沿但是使能端EN=0时,d值不锁存进锁存器中,锁存器的值不改变。

(四)软件设计

1.软件设计平台:QuartusII 7.2 2.实现方法:通过QuartusII 7.2进行VHDL语言编程、方阵、引脚配置,然后烧入 GW48实验平台,选择模式NO.1,进行硬件验证。

3.程序的流程方框图:

4.实现的功能:位宽16位;能对8个16位数据进行乘法和加法运算(yout=a0*b0+a1*b1+a2*b2+a3*b3),并行、串行或流水线方式。

(五)系统测试

1.系统的性能指标 (1)总图

11 (2)乘法器lpm_mult0

(3)8位加法器ADDER8B

(4)计数器cnt16

12 (5)锁存器en_dff

2.功能仿真

3.引脚绑定

确定波形仿真成功后,再配置管脚,将程序烧录进EP2C5T144C8中,进行测试。选择模式1,管脚配置图如下(START设置为键8,使得人为可控,更方便调试)

(六)结论

根据硬件验证:键1和键2输入一个十六位数,键3和键4输入另一个十六位数,数码管

1、2显示第一个数,

3、4显示第二个数,键8是运算键,每点击一次运算一次,为一组运算,运算结果显示在数码管

5、

6、

7、8,将显示这两个数的积,再次输入两个十六位数,数码管

5、

6、

7、8将显示这两个数的积与前一组数积的和,依次输入四组十六位数,完成一次十六位乘加的运算,且结果显示在数码管

5、

6、

7、8。能够实现对8个16位数据进行乘法和加法运算(yout=a0*b0+a1*b1+a2*b2+a3*b3)

三:参考文献

潘松,黄继业.EDA技术与VHDL(第3版)——清华大学出版社

潘松,黄继业.EDA技术实用教程—VHDL版(第4班)——科学出版社

14 四:附录

1.实验电路结构图

2.GW48系统引脚对照表

五.心得体会

本次的课程设计选题时间较短,由于不怎么会写程序,所以乘法器使用Quartus II生成,而其他模块是在网上找的资料,自己输入编译反复修改而成。总体来说过程比较顺利,但不足之处是不能完全实现设计要求。

推荐第7篇:EDA实验总结(材料)

EDA 实验总结

系别:物理系 专业:电子信息科学与技术 姓名:马亚伟 学号:2010171135

在本学期短短6周的EDA实验学习中,我初步对这一新的领域有了一个较为系统的理解,也为我的专业学习打开了一个新的思路,那就是EDA技术。

首先,通过对这门课程相关理论的学习,我掌握了EDA的一些基本的的知识,现代电子产品的性能越来越高,复杂度越来越大,更新步伐也越来越快。实现这种进步的主要原因就是微电子技术和电子技术的发展。前者以微细加工技术为代表,目前已进入超深亚微米阶段,可以在几平方厘米的芯片上集成几千万个晶体管;后者的核心就是电子设计自动化EDA技术。

EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言HDL完成的设计文件,自动完成逻辑编译、化简、分割、综合、优化、布局布线及仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

其次,通过对课程的实验的学习,我对EDA的学习和理解有了更深刻的认识和体会。因为只对课本知识的学习,我对实验做成功的把握不是很大。

EDA实验,作为一门实实在在的实验学科,它可以帮助我们进一步理解巩固电路学设计的知识,激发我们对EDA设计的学习兴趣。通过这六个实验,我对EDA实验有了更深刻的了解,体会到了EDA的神奇与奥妙。

不过说实话在做这次实验之前,我以为不会难做,就像以前做的实验一样,操作应该不会很难,做完实验之后两下子就将实验报告写完,直到做完这次EDA实验时,我才知道其实并不容易做。它真的不像我想象中的那么简单,天真的以为自己把平时的理论课学好就可以很顺利的完成实验,事实证明我错了,当我走上试验台,我意识到要想以优秀的成绩完成此次所有的实验,难度很大,但我知道这个难度是与学到的知识成正比的,因此我想说,虽然我在实验的过程中遇到了不少困难,但最后的成绩还是不错的,因为我毕竟在这次实验中学到了许多在课堂上学不到的东西,终究使我在这次实验中受益匪浅。

下面我想谈谈我在所做的实验中的心得体会:

我想无论你是学习理论知识还是进行实际操作,只要抓住这个中心,我想可能你所遇到的续都问题就可以迎刃而解。不过在做这个实验,我想我们应该注意Quarter Ⅱ使用 ,尽管它的操作很简单,但如果你马虎大意也是完全有可能出错的,是你整个的实验前功尽弃!

在接下来的实验中,我们通过对EDA设计软件Quarter Ⅱ使用,初步学会了EDA设计软件Quarter Ⅱ使用方法。在实验中我们编写程序,pin脚编写,时序仿真等。在完成VHDL的编辑以后,进行编译,结果出现了很多错误,在我们细心的检查和排查之下,最终将VHDL描述修改成功并且通过了编译。在编译过程中我了解到很多在书本上没有理解的知识。比如信号不能在多个并行进程中赋值,顺序语句必须在进程中才能描述等等。在时序仿真这一块我们也遇到了问题,起初我们没有考虑到信号赋值的延迟,也没有考虑到仿真延迟δ,取时钟周期为默认值10ns,这样仿真得到的结果就与预期的结果不符合,找到问题后我们采用了1us的始终周期,最终得到了想要的波形。

总的来说,通过实验,我激发了EDA学习的兴趣,也对这门课程有了更深的理解,对EDA设计软件Quarter Ⅱ的使用也更加熟练。更重要的是在此次实验过程中,更好的培养了我们的具体实验的能力。又因为在在实验过程中有许多实验现象,需要我们仔细的观察,并且分析现象的原因。特别有时当实验现象与我们预计的结果不相符时,就更加的需要我们仔细的思考和分析了,并且进行适当的调节。

推荐第8篇:EDA实验二总结报告

实验二

数字秒表设计

一、实验目的

1、理解计时器的原理与Verilog/VHDL 的编程方法;

2、掌握多模块设计及层次设计的方法。

二、实验原理

秒计时器是由计数器和译码器、显示器组成,其核心是计数器与译码器。 60 秒计时器可由二个计数器分别完成:个位为十进制计数器,十位为 6 进 制计数。 个位计数器的计数信号由实验开发板上主频20MHZ分频产生的1Hz 时钟信号提供, 十位计数器的计数信号由个位的进位信号提供。然后由译码器 对计数结果进行译码,送LED 数码管进行显示。 Clr为清零,

se t为开始。

三、实验框图

四、实验任务

1、采用层次设计的方法,设计一个包括顶层及底层模块的60 秒计时器,底 层模块用Verilog/VHDL 设计,顶层用原理图设计。

2、秒计时器应当具有系统复位功能;

3、每十秒发出提示信号及计满60 秒时发出报警信号。 (选做)

五、实验步骤与要求

1、分模块设计:首先分别设计10 进制、6 进制计数器、译码器模块;

2、顶层原理图如图7-1 所示;

3、编译完成后进行波形仿真;

4、进行引脚锁定,并下载至开发系统验证。

六、分模块设计 1.十进制计数器 (1)程序代码:

module CNT10(CLK,RST,EN,COUT,DOUT);

input CLK,EN,RST;

output [3:0]DOUT;

output COUT;

reg[3:0]Q1;

reg COUT;

aign DOUT=Q1;

always@(posedge CLK or negedge RST)

begin

if(!RST) Q1

else if(EN)begin

if(Q1

else Q1

end

always@(Q1)

if(Q1==4\'h9)COUT=1\'b1;

else COUT=1\'b0; endmodule

(2)仿真波形

(3)模块符号

2.六进制计数器 (1)程序代码:

module CNT6(CLK,RST,EN,COUT,DOUT);

input CLK,EN,RST;

output [3:0]DOUT;

output COUT;

reg[3:0]Q2;

reg COUT;

aign DOUT=Q2;

always@(posedge CLK or negedge RST)

begin

if(!RST) Q2

else if(EN)begin

if(Q2

else Q2

end

always@(Q2)

if(Q2==3\'h5)COUT=1\'b1;

else COUT=1\'b0; endmodule

(2)仿真波形

(3)模块符号

3.分频器

(1)程序代码:

module FPQ(clk0,clk1);

input clk0;

output clk1;

reg[26:0] Q1;

reg clk1; always@(posedge clk0)

if(Q1

else

begin Q1

clk1

end endmodule (2)模块符号

七.顶层原理图:

八.仿真波形

九.结果分析

当输入端CLK,EN,RST都不为0时,首先是十进制计数器开始进行计时,直到DOUT1输出端大于9时产生进位,并且自身变为0,同时使六进制计数器也开始计时,六进制输出端DOUT2大于5时产生进位,使COUT输出为1.

推荐第9篇:eda课程设计心得体会

eda课程设计心得体会

写心得体会是困扰很多人的问题,心中有很多想法,想说却不知道怎么写下来。下面本栏目搜集了eda课程设计心得体会,欢迎查看,希望帮助到大家。

eda课程设计心得体会一

这次EDA课程设计历时两个星期,在整整两个星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示:在设定输入的时钟信号后,数字秒表开始计数,但是始终看不到秒和小时的循环计数。后来,在数十次的调试之后,才发现是因为输入的时钟信号对于器件的延迟时间来说太短了。经过屡次调试,终于找到了比较合适的输入数值:时钟周期设置在15秒左右比较合适。另外,Endtime的值需要设置的长一点:500us左右,这样就可以观察到完整的仿真结果。

其次,在连接各个模块的时候一定要注意各个输入、输出引脚的线宽,因为每个线宽是不一样的,只要让各个线宽互相匹配,才能得出正确的结果,否则,出现任何一点小的误差就会导致整个文件系统的编译出现错误提示,在器件的选择上也有一定的技巧,只有选择了合适当前电路所适合的器件,编译才能得到完满成功。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

总的来说,这次设计的数字秒表还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

eda课程设计心得体会二

短暂的一周实训已经过去了,对于我来说这一周的实训赋予了我太多实用的东西了,不仅让我更深层次的对课本的理论知识深入了理解,而且还让我对分析事物的逻辑思维能力得到了锻炼,提高了实际动手能力,下面谈一下就这一周实训中我自己的一些心得体会。

一周的实训已经过去了,我们在老师提供的实践平台上通过自己的实践学到了很多课本上学不到的宝贵东西,熟悉了对Quartus Ⅱ软件的一般项目的操作和学到了处理简单问题的基本方法,更重要的是掌握了VHDL语言的基本设计思路和方法,我想这些会对我今后的学习起到很大的助推作用。此外,还要在今后的课本理论知识学习过程中要一步一个脚印的扎实学习,灵活的掌握和运用专业理论知识这样才能在以后出去工作的实践过程中有所成果。

最后还要感谢学校为我们提供这样专业的实践平台还有X老师在一周实训以来的不断指导和同学的热情帮助。总的来说,这次实训我收获很大。

同时,感谢大专两年来所有的老师,是你们为我解惑受业,不仅教授我专业知识,更教会我做人的道理。

这次EDA实训让我感觉收获颇多,在这一周的实训中我们不仅巩固了以前学过的知识,而且还学到了怎样运用EDA设计三种波形的整个过程和思路,更加强了我们动手能力,同时也提高了我们的思考能力的锻炼,我们在写程序的同时还要学会要改程序,根据错误的地方去修改程序。

本文基于Verilog HDL的乒乓球游戏机设计,利用Verilog HDL语言编写程序实现其波形数据功能在分析了CPLD技术的基础上,利用CPLD开发工具对电路进行了设计和仿真,从分离器件到系统的分布,每一步都经过严格的波形仿真,以确保功能正常。

从整体上看来,实训课题的内容实现的功能都能实现,但也存在着不足和需要进一步改进的地方,为我今后的学习和工作奠下了坚实的基础。通过此次的实训课题,掌握了制作乒乓球游戏机技术的原理及设计要领,学习并掌握了可编程逻辑电路的设计,掌握了软件、CPLD元件的应用,受益匪浅, 非常感谢X老师这一学期来的指导与教诲,感谢老师在学习上给予的指导,老师平常的工作也很忙,但是在我们学习的过程中,重来没有耽搁过,我们遇到问题问他,他重来都是很有耐心,不管问的学生有多少,他都细心的为每个学生讲解,学生们遇到的不能解决的,他都配合同学极力解决。最后祝愿X老师身体健康,全家幸福。

通过这次课程设计,我进一步熟悉了Verilog HDL语言的结构,语言规则和语言类型。对编程软件的界面及操作有了更好的熟悉。在编程过程中,我们虽然碰到了很多困难和问题,到最后还是靠自己的努力与坚持独立的完成了任务。当遇到了自己无法解决的困难与问题的时候,要有耐心,要学会一步步的去找问题的根源,才能解决问题,还请教老师给予指导和帮助。这次实训给我最深的印象就是扩大自己的知识面,知道要培养哪些技能对我们的专业很重要。通过这次课程设计,培养了我们共同合作的能力。但是此次设计中参考了其他程序段实际思想,显示出我们在程序设计方面还有不足之处。

在此次实训的过程中,我了解到了要加强培养动手能力,要明白理论与实践结合的重要性,只有理论知识也是不够的,只有把理论知识和实践相结合,才能真正提高我们的实际动手能力与独立思考的能力 。感谢学院给我们提供这次实训的机会,感谢X老师对我们的指导,他是为了教会我们如何运用所学的知识去解决实际的问题,此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。

本次设计过程中得到我们老师的悉心指导。X老师多次询问设计进程,并为我们指点迷津,帮助我们理顺设计思路,精心点拨。X老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,并将积极影响我今后的学习和工作。

eda课程设计心得体会三

本学期末我们进行了EDA实训,我们组做的是四路智能抢答器,不过本次实训与以往最大的不同是在熟练并掌握Verilog硬件描述语言的基础上,运用Quartus软件,对其进行波形以及功能的仿真。我们组抢答器的设计要求是:可容纳四组参赛者,每组设置一个抢答按钮供抢答者使用,电路具有第一抢答信号的鉴别和锁存功能,系统具有计分、倒计时和倒计时锁存等电路,输入信号有:各组的抢答按钮A、B、C、D,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮可以用如TA、TB表示;系统的输出信号有:四个组抢答成功与否的指示灯控制信号输出口可用如LEDA、LEDB、LEDC、LEDD表示,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。整个系统至少有三个主要模块:抢答鉴别模块、抢答计时模块、抢答计分模块。

实训的第一天我们组三个人就开始对抢答器的各部分源程序进行调试,由于刚开始对于quartus2软件用的不是很熟练,所以在第一天几乎上没有啥大的进展,一直都在改程序中的错误。在不停的重复的编译、改错。拿着EDA修改稿、资料书检查出错的地方,一边又一遍的校对分析其中的错误。

在实训中我们遇到了很多的问题。为了解决这些问题我和他们两个都在的想办法通过各种渠道寻找解决问题的方法。上网查资料、问同学、图书馆查资料、问老师、自己想办法,其实最有效的方法还是自己去想那样学到的东西才会更加的深刻记得时间也是最长的,他人的帮助当然是很好的,但只是暂时的要想真正的学到东西还是要靠自己去想办法。不能一有问题就希望要他人帮忙,一定自己先好好想想实在解决不了的再去问老师找同学。

由于在一开始的时候对quartus2软件的不熟悉耽误了很多的时间,在接下来的几天里遇到了不少的问题。刚开始的时候是源程序中的错误一直在那改,好不容易几个模块中的错误都一个个排除了,但当把他们放到一起时问题就又出现了。于是又开始了检查修改,可是弄了好长时间也没有弄明白,最后找了一个在实验室的同学说是顶层文件有问题。于是晚上又找了些关于顶层文件资料还有课本上的例子。最后对步骤已经有了很熟练的掌握,很快就完成了程序编译、仿真、下载到最后的调试。

纸上谈来终觉浅,绝知此事要躬行。在这短暂的两周实训中深深的感觉到了自己要学的东西实在是太多了,自己知道的是多么的有限,由于自身专业知识的欠缺导致了这次实训不是进行的很顺利,通过这次实训暴露了我们自身的诸多的不足之处,我们会引以为鉴,在以后的生活中更应该努力的学习。

虽然实训仅仅进行了两个星期就匆匆的结束了,但在这两个星期中收获还是很多的。实训的目的是要把学过的东西拿出来用这一个星期的实训中不仅用了而且对于quartus2软件的使用也更加的得心应手,这次实训提高了我们的动手能力、理论联系实际的能力、发现问题分析问题解决问题的能力。实训只要你认真做了都是对自己能力一次很大的提高。

本次设计过程中得到我们老师的悉心指导。X老师多次询问设计进程,并为我们指点迷津,帮助我们理顺设计思路,精心点拨,时刻在帮助着我们去提高自己。X老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅是我学习的楷模,并将积极影响我今后的学习和工作。在此诚挚地向X老师致谢。

推荐第10篇:EDA技术基础实验教案

实验一 2选1多路选择器VHDL设计

一、实验目的:

熟悉利用MAX+plusⅡ的VHDL文本设计流程全过程,学习简单组合逻辑电路的设计、多层次电路的设计、仿真和硬件测试。

二、实验内容:

按照MAX+plusⅡ的文本输入设计方法与流程完成2选1多路选择器的输入(mux21a.vhd)和仿真测试等步骤,给出仿真波形图。最后在实验系统上进行硬件测试,实际验证本项设计的功能。

三、实验步骤:

1、根据2选1多路选择器的工作原理,编写2选1的VHDL源程序,并输入计算机,mux21a.vhd文件名将源程序存盘。2选1多路选择器的参考程序如下:

【例1-1】

ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGIN d

【例1-2】

ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS BEGIN y

【例1-3】 ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = \'0\' THEN y

2、对mux21a.vhd文件编译后,再进行波形仿真,完成输入信号a、b、s 输入电平的设置,启动仿真器Simulator,观察输出波形的情况。

3、锁定引脚、编译并编程下载。参选实验电路模式5和附表一,键

1、键

2、键3为输入信号a、b、s分别锁定在EP1K30/50144-PIN TQFP 目标芯片的

8、

9、10引脚,输出信号y锁定在目标芯片的20引脚。

4、硬件实测2选1多路选择器的逻辑功能。按动GW48实验板上的高低电平输入键

1、键

2、键3,得到不同的s、b、a输入组合;观察输出发光二极管D1的亮灭,检查2选1多路选择器的设计结果是否正确。

思考题

用以上同样的方法设计4选1数据选择器mux41a.vhd,并仿真设计结果。

实验报告要求:

写出实验源程序,画出仿真波形。分析实验结果,以及它们的硬件测试实验结果写进实验报告。写出心得体会。

实验二 D触发器的VHDL设计

一、实验目的:

熟悉利用MAX+plusⅡ的VHDL文本设计流程全过程,学习简单时序电路的设计、仿真和硬件测试。

二、实验内容:

按MAX+plusⅡ的文本输入设计方法与流程完成D触发器的VHDL设计、软件编译、仿真分析、硬件测试及详细实验过程。

D触发器的VHDL设计的参考程序如下:

【例2-1】

LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS BEGIN SIGNAL Q1 : STD_LOGIC ; --类似于在芯片内部定义一个数据的暂存节点 BEGIN PROCESS (CLK) BEGIN IF CLK\'EVENT AND CLK = \'1\' THEN Q1

三、实验步骤:

1、打开文本编辑器,输入D触发器的VHDL源程序,并用D_ff.vhd文件名将源程序存盘。

2、选择目标器件EP1K30/50144-PIN TQFP。

3、对D_ff.vhd文件编译后,再进行波形仿真,完成输入信号d、clk输入电平的设置,启动仿真器Simulator,观察输出波形的情况。

4、锁定引脚、编译并编程下载。参选实验电路模式5和附表一,键1为输入信号d锁定在EP1K30/50144-PIN TQFP 目标芯片的8引脚,输出信号q和nq锁定在目标芯片的20和21引脚。

实验报告要求:

写出实验源程序,画出仿真波形。分析实验结果,以及它们的硬件测试实验结果写进实验报告。写出心得体会。

实验三 含异步清0同步时钟使能的4位加法计数器设计

一、实验目的:

学习时序电路的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。

二、实验原理:

图4-1 含计数使能、异步复位和计数值并行预置功能4位加法计数器

图4-1是一含计数使能、异步复位和计数值并行预置功能4位加法计数器,例4-1是其VHDL描述。由图4-1所示,图中间是4位锁存器;rst是异步清信号,高电平有效;clk是锁存信号;D[3..0]是4位数据输入端。当ENA为\'1\'时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA为\'0\'时将\"0000\"加载于锁存器。

三、实验内容:

1、按照VHDL文本输入设计方法和步骤,在MAX+plusII上对例4-1 进行编辑、编译、综合、适配、仿真。说明例4-1中各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。

[例4-1] LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT4B IS PORT (CLK : IN STD_LOGIC; RST : IN STD_LOGIC; ENA : IN STD_LOGIC; OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT4B; ARCHITECTURE behav OF CNT4B IS SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN P_REG: PROCESS(CLK, RST, ENA) BEGIN IF RST = \'1\' THEN CQI

OUTY

COUT

2、引脚锁定以及硬件下载测试。

建议选实验电路模式5,用键8(PIO7)控制RST;用键7(PIO6)控制ENA;计数溢出COUT接发光管D8(PIO15);OUTY是计数输出,接数码1(PIO19-PIO16,低位靠右);时钟CLK接clock0(引脚号为54),通过短路帽选择4Hz信号。引脚锁定窗后进行编译、下载和硬件测试实验。将实验过程和实验结果写进实验报告。

结合第五章例题使学生能够提高对具有计数使能、异步复位和计数值并行预置功能功能的计数器中各功能的实现的认识、并能完成设计。

思考题1:

在例4-1 中是否可以不定义信号 CQI,而直接用输出端口信号完成加法运算,即 : OUTY

思考题2:

修改例4-1 ,用进程语句和IF语句实现进位信号的检出。

实验报告要求:

写出实验源程序,画出仿真波形。分析实验结果,以及它们的硬件测试实验结果和附加内容实验情况写进实验报告。写出心得体会。

实验四 7段数码显示译码器设计

一、实验目的:

学习7段数码显示译码器设计;学习多层次设计方法。

二、实验原理:

7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA或CPLD中实现。本项实验很容易实现这一目的。例5-1作为7段BCD码译码器的设计,输出信号LED7S的7位分别接如图5- 1数码管的7个段,高位在左,低位在右。例如当LED7S输出为 \"1101101\" 时,数码管的7个段:g、f、e、d、c、b、a分别接

1、

1、0、

1、

1、0、1,接有高电平的段发亮,于是数码管显示“5”。

三、实验内容:

1、说明例5-1中各语句的含义,以及该例的整体功能。在MAX+plusII上对以下该例进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形(提示:用输入总线的方式给出输入信号仿真数据)。

[例5-1] LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DecL7S IS PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ; END ; ARCHITECTURE one OF DecL7S IS BEGIN PROCESS( A ) BEGIN CASE A(3 DOWNTO 0) IS WHEN \"0000\" =>LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S NULL ; END CASE ; END PROCESS ; END ;

2、引脚锁定以及硬件下载测试。建议选实验电路模式6,用数码8显示译码输出(PIO46--PIO40),键

8、键

7、键

6、键5四位控制输入,硬件验证译码器的工作性能。

3、用VHDL例化语句(参考实验1中的1位全加VHDL文本输入设计)按图5-2 的方式,以例4-1和例5-1为底层元件,完成顶层文件设计,并重复以上实验过程。注意图5-2中的tmp是4位总线,led是7位总线。对于引脚锁定和实验,建议仍选实验电路模式6,用数码8显示译码输出,用键3作为时钟输入(每按2次键为1个时钟脉冲),或直接时钟信号clock0。

实验报告要求:

写出实验源程序,画出仿真波形。分析实验结果,以及它们的硬件测试实验结果写进实验报告。写出心得体会。

实验五 2位数的十进制计数器的设计

一、实验目的:

通过实验让读者掌握复杂时序逻辑电路的EDA原理图输入设计法和文本输入设计法,通过电路仿真,进一步了解有时钟使能的2位十进制计数器的功能和特性。

二、实验原理:

有时钟使能的2位十进制计数器是频率计的核心元件之一,这里用2个74162来设计完成。

三、实验内容:

1.用文本输入设计方法编写2位十进制计数器的VHDL源程序,并用twin10_g.vhd文件名存盘,参考程序如下: LIBRARY ieee;

USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENTITY twin10_v IS PORT(

Clrn,Ent1,Enp,Clk : IN STD_LOGIC;

Qa,Qb

: OUT STD_LOGIC_VECTOR(3 downto 0);

Co

: OUT STD_LOGIC

); END twin10_v; ARCHITECTURE a OF twin10_v IS SIGNAL Ent2 : STD_LOGIC; BEGIN

PROCESS (Clk)

VARIABLE tmpa,tmpb :STD_LOGIC_VECTOR(3 downto 0);

BEGIN IF (Clk\'event AND Clk=\'1\') THEN

IF Clrn=\'0\' THEN tmpa := \"0000\"; tmpb := \"0000\";

ELSIF (Ent1 AND Enp)=\'1\' THEN

IF tmpa=\"1001\" THEN

tmpa:=\"0000\";

IF tmpb=\"1001\" THEN tmpb:=\"0000\";

ELSE tmpb:= tmpb+1;

END IF;

ELSE tmpa := tmpa+1;

END IF;

END IF;

END IF;

Qa

Qb

按照波形仿真的操作步骤,对2位十进制计数器进行波形仿真。

3.锁定引脚、编译并编程下载。参选实验电路模式5和附表一,引脚锁定目标芯片为EP1K30/50144-PIN TQFP 实验报告要求:

写出实验源程序,画出仿真波形。对设计的2位十进制计数器进行实验结果的分析,以及硬件测试实验结果写进实验报告。写出心得体会。

第11篇:EDA课程设计心得体会[材料]

EDA课程设计心得体会

这次EDA课程设计历时两个星期,在整整两个星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示:在设定输入的时钟信号后,数字秒表开始计数,但是始终看不到秒和小时的循环计数。后来,在数十次的调试之后,才发现是因为输入的时钟信号对于器件的延迟时间来说太短了。经过屡次调试,终于找到了比较合适的输入数值:时钟周期设置在15秒左右比较合适。另外,Endtime的值需要设置的长一点:500us左右,这样就可以观察到完整的仿真结果。

其次,在连接各个模块的时候一定要注意各个输入、输出引脚的线宽,因为每个线宽是不一样的,只要让各个线宽互相匹配,才能得出正确的结果,否则,出现任何一点小的误差就会导致整个文件系统的编译出现错误提示,在器件的选择上也有一定的技巧,只有选择了合适当前电路所适合的器件,编译才能得到完满成功。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

总的来说,这次设计的数字秒表还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

PLC实训心得

和学别的学科一样,在学完PLC理论课程后我们做了课程设计,此次设计以分组的方式进行,每组有一个题目。我们做的是一个由三个部分组成的浇灌系统。由于平时大家都是学理论,没有过实际开发设计的经验,拿到的时候都不知道怎么做。但通过各方面的查资料并学习。我们基本学会了PLC设计的步聚和基本方法。分组工作的方式给了我与同学合作的机会,提高了与人合作的意识与能力。

通过这次设计实践。我学会了PLC的基本编程方法,对PLC的工作原理和使用方法也有了更深刻的理解。在对理论的运用中,提高了我们的工程素质,在没有做实践设计以前,我们对知道的撑握都是思想上的,对一些细节不加重视,当我们把自己想出来的程序与到PLC中的时候,问题出现了,不是不能运行,就是运行的结果和要求的结果不相符合。能过解决一个个在调试中出现的问题,我们对PLC 的理解得到加强,看到了实践与理论的差距。

通过合作,我们的合作意识得到加强。合作能力得到提高。上大学后,很多同学都没有过深入的交流,在设计的过程中,我们用了分工与合作的方式,每个人互责一定的部分,同时在一定的阶段共同讨论,以解决分工中个人不能解决的问题,在交流中大家积极发言,和提出意见,同时我们还向别的同学请教。在此过程中,每个人都想自己的方案得到实现,积极向同学说明自己的想法。能过比较选出最好的方案。在这过程也提高了我们的表过能力。

在设计的过程中我们还得到了老师的帮助与意见。在学习的过程中,不是每一个问题都能自己解决,向老师请教或向同学讨论是一个很好的方法,不是有句话叫做思而不学者殆。做事要学思结合。

通过本次设计,让我很好的锻炼了理论联系实际,与具体项目、课题相结合开发、设计产品的能力。既让我们懂得了怎样把理论应用于实际,又让我们懂得了在实践中遇到的问题怎样用理论去解决。

在本次设计中,我们还需要大量的以前没有学到过的知识,于是图书馆和INTERNET成了我们很好的助手。在查阅资料的过程中,我们要判断优劣、取舍相关知识,不知不觉中我们查阅资料的能力也得到了很好的锻炼。我们学习的知识是有限的,在以后的工作中我们肯定会遇到许多未知的领域,这方面的能力便会使我们受益非浅。

在设计过程中,总是遇到这样或那样的问题。有时发现一个问题的时候,需要做大量的工作,花大量的时间才能解决。自然而然,我的耐心便在其中建立起来了。为以后的工作积累了经验,增强了信心

第12篇:EDA实训心得体会

EDA实训心得体会

经过一周的EDA实训,我也基本掌握了这个软件的使用方法,也体会到了这款软件的实用性。如下是小编给大家整理的EDA实训心得体会,希望对大家有所作用。

EDA实训心得体会篇【一】

大三时候开始了专业课的学习,其中EDA就是要学的一门专业课,课程刚开始的时候,对EDA技术很陌生,也感到很茫然,也非常没有信心,当接触到可编程器件的时候,看到大家同样感到很迷惘。首先,通过对这门课程相关理论的学习,我掌握了EDA的一些基本的的知识,现代电子产品的性能越来越高,复杂度越来越大,更新步伐也越来越快。实现这种进步的主要原因就是微电子技术和电子技术的发展。前者以微细加工技术为代表,目前已进入超深亚微米阶段,可以在几平方厘米的芯片上集成几千万个晶体管;后者的核心就是电子设计自动化EDA技术,由于本门课程是一门硬件学习课程,所以实验必不可少。通过课程最后实验,我体会一些VHDL语言相对于其他编程语言的特点。

在接触VHDL语言之前,我已经学习了C语言,汇编语言,而相对于这些语言的学习,VHDL 具有明显的特点。这不仅仅是由于VHDL 作为一种硬件描述语言的学习需要了解较多的数字逻辑方面的硬件电路知识,包括目标芯片基本结构方面的知识更重要的是由于VHDL 描述的对象始终是客观的电路系统。由于电路系统内部的子系统乃至部分元器件的工作状态和工作方式可以是相互独立、互不相关的,也可以是互为因果的。这表明,在任一时刻,电路系统可以有许多相关和不相关的事件同时并行发生。因此,任何复杂的程序在一个单CPU 的计算机中的运行,永远是单向和一维的。因而程序设计者也几乎只需以一维的思维模式就可以编程和工作了。

在学习的过程中,我深深体会到,学习不单单要将理论知识学扎实了,更重要的是实际动手操作能力,学完了课本知识,我并没有觉得自己有多大的提高,感觉学到的很没用,我们现在学到的还很少,只是编写一些简单的程序。相反的,每次做完实验之后,都会感觉自己收获不少,每次都会有问题,因此,我认为在老师今后的教学当中,应当更加注重动手实验,把理论与实践很好的结合起来,才能使同学融会贯通。现在感觉到对这门课还只有很少的认识,所以希望很认真的续下去。

EDA实训心得体会篇【二】

短暂的一周实训已经过去了,对于我来说这一周的实训赋予了我太多实用的东西了,不仅让我更深层次的对课本的理论知识深入了理解,而且还让我对分析事物的逻辑思维能力得到了锻炼,提高了实际动手能力,下面谈一下就这一周实训中我自己的一些心得体会。 一周的实训已经过去了,我们在老师提供的实践平台上通过自己的实践学到了很多课本上学不到的宝贵东西,熟悉了对Quartus Ⅱ软件的一般项目的操作和学到了处理简单问题的基本方法,更重要的是掌握了VHDL语言的基本设计思路和方法,我想这些会对我今后的学习起到很大的助推作用。此外,还要在今后的课本理论知识学习过程中要一步一个脚印的扎实学习,灵活的掌握和运用专业理论知识这样才能在以后出去工作的实践过程中有所成果。

最后还要感谢学校为我们提供这样专业的实践平台还有瓮老师在一周实训以来的不断指导和同学的热情帮助。总的来说,这次实训我收获很大。

同时,感谢大专两年来所有的老师,是你们为我解惑受业,不仅教授我专业知识,更教会我做人的道理。

这次EDA实训让我感觉收获颇多,在这一周的实训中我们不仅巩固了以前学过的知识,而且还学到了怎样运用EDA设计三种波形的整个过程和思路,更加强了我们动手能力,同时也提高了我们的思考能力的锻炼,我们在写程序的同时还要学会要改程序,根据错误的地方去修改程序。

本文基于Verilog HDL的乒乓球游戏机设计,利用Verilog HDL语言编写程序实现其波形数据功能在分析了CPLD技术的基础上,利用CPLD开发工具对电路进行了设计和仿真,从分离器件到系统的分布,每一步都经过严格的波形仿真,以确保功能正常。

从整体上看来,实训课题的内容实现的功能都能实现,但也存在着不足和需要进一步改进的地方,

为我今后的学习和工作奠下了坚实的基础。通过此次的实训课题,掌握了制作乒乓球游戏机技术的原理及设计要领,学习并掌握了可编程逻辑电路的设计,掌握了软件、CPLD元件的应用,受益匪浅, 非常感谢瓮老师这一学期来的指导与教诲,感谢老师在学习上给予的指导,老师平常的工作也很忙,但是在我们学习的过程中,重来没有耽搁过,我们遇到问题问他,他重来都是很有耐心,不管问的学生有多少,他都细心的为每个学生讲解,学生们遇到的不能解决的,他都配合同学极力解决。最后祝愿瓮老师身体健康,全家幸福。

通过这次课程设计,我进一步熟悉了Verilog HDL语言的结构,语言规则和语言类型。对编程软件的界面及操作有了更好的熟悉。在编程过程中,我们虽然碰到了很多困难和问题,到最后还是靠自己的努力与坚持独立的完成了任务。当遇到了自己无法解决的困难与问题的时候,要有耐心,要学会一步步的去找问题的根源,才能解决问题,还请教老师给予指导和帮助。这次实训给我最深的印象就是扩大自己的知识面,知道要培养哪些技能对我们的专业很重要。通过这次课程设计,培养了我们共同合作的能力。但是此次设计中参考了其他程序段实际思想,显示出我们在程序设计方面还有不足之处。

在此次实训的过程中,我了解到了要加强培养动手能力,要明白理论与实践结合的重要性,只有理论知识也是不够的,只有把理论知识和实践相结合,才能真正提高我们的实际动手能力与独立思考的能力 。感谢学院给我们提供这次实训的机会,感谢瓮老师对我们的指导,他是为了教会我们如何运用所学的知识去解决实际的问题,此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。

本次设计过程中得到我们老师的悉心指导。瓮老师多次询问设计进程,并为我们指点迷津,帮助我们理顺设计思路,精心点拨。瓮老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,并将积极影响我今后的学习和工作。在此诚挚地向瓮老师致谢。

第13篇:《EDA技术基础》实验总结报告及要求

电工电子中心2009年5月绘制

湖北师范学院电工电子实验教学省级示范中心电子版实验报告

什么什么设计(研究)

红色部分提交时请删除!!!

题目:“什么内容”的设计或“什么内容”的研究,例如: 基于FPGA的数字抢答器设计 基于FPGA的等精度数字频率计设计 Verilog HDL同步时序电路研究 一种简易数字频率计设计

基于FPGA的DDS信号发生器的设计

更多参考“大学生电子实验室”论坛设计选题指南 一.任务解析

根据对设计选题的理解,明确要做什么,要达到什么要求(参数、指标)。 二.方案论证

对所要完成的设计任务,参考相关资料,提出设计方案,拿不同方案进行对比分析,选择你能够实现的方案,并明确指出为什么要选择此方案,较其它方案有何优点。 三.实验步骤

方案的具体实施,按实际实施过程认真做好原始记录,可以包括单元电路仿真分析,部分指标测试(实际效果)等等,描述演示效果要明确所用设备,说明实验箱,使用了什么仪器等。 四.结果分析

对所测试结果(演示现象)做分析,得出结论(描述现象)。 五.经验总结

对完成任务情况进行总结,是否达到预期的设计,效果如何,还有哪些可以改进的,改进建议,特别是错误分析。

如果是自己独立完成的,我相信一定会有很多心得体会可以总结的,挫折的苦恼,成功的喜悦。如果你完成了一个设计性实验,一点体会都没有,那么我相信你一定是走捷径完成了任务,而没有真正独立完成本设计任务!老师批改报告,往往把学生的心得体会看成一个亮点。心得体会一定要认真写,把自己做设计性实验的过程认真总结,让老师感受到你是一步一步完成该设计性实验选题的。

第2页,共2页

第14篇:eda课程设计实训心得体会

导语:对eda课程设计实训,同学们有什么样的心得体会呢?下面是小编收集整理的eda课程设计实训心得体会,供各位 阅读和参考。

eda课程设计实训心得体会【一】

本学期末我们进行了EDA实训,我们组做的是四路智能抢答器,不过本次实训与以往最大的不同是在熟练并掌握Verilog硬件描述语言的基础上,运用Quartus软件,对其进行波形以及功能的仿真。我们组抢答器的设计要求是:可容纳四组参赛者,每组设置一个抢答按钮供抢答者使用,电路具有第一抢答信号的鉴别和锁存功能,系统具有计分、倒计时和倒计时锁存等电路,输入信号有:各组的抢答按钮A、B、C、D,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮可以用如TA、TB表示;系统的输出信号有:四个组抢答成功与否的指示灯控制信号输出口可用如LEDA、LEDB、LEDC、LEDD表示,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。整个系统至少有三个主要模块:抢答鉴别模块、抢答计时模块、抢答计分模块。

实训的第一天我们组三个人就开始对抢答器的各部分源程序进行调试,由于刚开始对于quartus2软件用的不是很熟练,所以在第一天几乎上没有啥大的进展,一直都在改程序中的错误。在不停的重复的编译、改错。拿着EDA修改稿、资料书检查出错的地方,一边又一遍的校对分析其中的错误。

在实训中我们遇到了很多的问题。为了解决这些问题我和他们两个都在的想办法通过各种渠道寻找解决问题的方法。上网查资料、问同学、图书馆查资料、问老师、自己想办法,其实最有效的方法还是自己去想那样学到的东西才会更加的深刻记得时间也是最长的,他人的帮助当然是很好的,但只是暂时的要想真正的学到东西还是要靠自己去想办法。不能一有问题就希望要他人帮忙,一定自己先好好想想实在解决不了的再去问老师找同学。

由于在一开始的时候对quartus2软件的不熟悉耽误了很多的时间,在接下来的几天里遇到了不少的问题。刚开始的时候是源程序中的错误一直在那改,好不容易几个模块中的错误都一个个排除了,但当把他们放到一起时问题就又出现了。于是又开始了检查修改,可是弄了好长时间也没有弄明白,最后找了一个在实验室的同学说是顶层文件有问题。于是晚上又找了些关于顶层文件资料还有课本上的例子。最后对步骤已经有了很熟练的掌握,很快就完成了程序编译、仿真、下载到最后的调试。

纸上谈来终觉浅,绝知此事要躬行。在这短暂的两周实训中深深的感觉到了自己要学的东西实在是太多了,自己知道的是多么的有限,由于自身专业知识的欠缺导致了这次实训不是进行的很顺利,通过这次实训暴露了我们自身的诸多的不足之处,我们会引以为鉴,在以后的生活中更应该努力的学习。

虽然实训仅仅进行了两个星期就匆匆的结束了,但在这两个星期中收获还是很多的。实训的目的是要把学过的东西拿出来用这一个星期的实训中不仅用了而且对于quartus2软件的使用也更加的得心应手,这次实训提高了我们的动手能力、理论联系实际的能力、发现问题分析问题解决问题的能力。实训只要你认真做了都是对自己能力一次很大的提高。

本次设计过程中得到我们老师的悉心指导。瓮老师多次询问设计进程,并为我们指点迷津,帮助我们理顺设计思路,精心点拨,时刻在帮助着我们去提高自己。瓮老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅是我学习的楷模,并将积极影响我今后的学习和工作。在此诚挚地向瓮老师致谢。

eda课程设计实训心得体会【二】

短暂的一周实训已经过去了,对于我来说这一周的实训赋予了我太多实用的东西了,不仅让我更深层次的对课本的理论知识深入了理解,而且还让我对分析事物的逻辑思维能力得到了锻炼,提高了实际动手能力,下面谈一下就这一周实训中我自己的一些心得体会。 一周的实训已经过去了,我们在老师提供的实践平台上通过自己的实践学到了很多课本上学不到的宝贵东西,熟悉了对Quartus Ⅱ软件的一般项目的操作和学到了处理简单问题的基本方法,更重要的是掌握了VHDL语言的基本设计思路和方法,我想这些会对我今后的学习起到很大的助推作用。此外,还要在今后的课本理论知识学习过程中要一步一个脚印的扎实学习,灵活的掌握和运用专业理论知识这样才能在以后出去工作的实践过程中有所成果。

最后还要感谢学校为我们提供这样专业的实践平台还有瓮老师在一周实训以来的不断指导和同学的热情帮助。总的来说,这次实训我收获很大。

同时,感谢大专两年来所有的老师,是你们为我解惑受业,不仅教授我专业知识,更教会我做人的道理。

这次EDA实训让我感觉收获颇多,在这一周的实训中我们不仅巩固了以前学过的知识,而且还学到了怎样运用EDA设计三种波形的整个过程和思路,更加强了我们动手能力,同时也提高了我们的思考能力的锻炼,我们在写程序的同时还要学会要改程序,根据错误的地方去修改程序。

本文基于Verilog HDL的乒乓球游戏机设计,利用Verilog HDL语言编写程序实现其波形数据功能在分析了CPLD技术的基础上,利用CPLD开发工具对电路进行了设计和仿真,从分离器件到系统的分布,每一步都经过严格的波形仿真,以确保功能正常。

从整体上看来,实训课题的内容实现的功能都能实现,但也存在着不足和需要进一步改进的地方,为我今后的学习和工作奠下了坚实的基础。通过此次的实训课题,掌握了制作乒乓球游戏机技术的原理及设计要领,学习并掌握了可编程逻辑电路的设计,掌握了软件、CPLD元件的应用,受益匪浅, 非常感谢瓮老师这一学期来的指导与教诲,感谢老师在学习上给予的指导,老师平常的工作也很忙,但是在我们学习的过程中,重来没有耽搁过,我们遇到问题问他,他重来都是很有耐心,不管问的学生有多少,他都细心的为每个学生讲解,学生们遇到的不能解决的,他都配合同学极力解决。最后祝愿瓮老师身体健康,全家幸福。

通过这次课程设计,我进一步熟悉了Verilog HDL语言的结构,语言规则和语言类型。对编程软件的界面及操作有了更好的熟悉。在编程过程中,我们虽然碰到了很多困难和问题,到最后还是靠自己的努力与坚持独立的完成了任务。当遇到了自己无法解决的困难与问题的时候,要有耐心,要学会一步步的去找问题的根源,才能解决问题,还请教老师给予指导和帮助。这次实训给我最深的印象就是扩大自己的知识面,知道要培养哪些技能对我们的专业很重要。通过这次课程设计,培养了我们共同合作的能力。但是此次设计中参考了其他程序段实际思想,显示出我们在程序设计方面还有不足之处。

在此次实训的过程中,我了解到了要加强培养动手能力,要明白理论与实践结合的重要性,只有理论知识也是不够的,只有把理论知识和实践相结合,才能真正提高我们的实际动手能力与独立思考的能力 。感谢学院给我们提供这次实训的机会,感谢瓮老师对我们的指导,他是为了教会我们如何运用所学的知识去解决实际的问题,此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。

本次设计过程中得到我们老师的悉心指导。瓮老师多次询问设计进程,并为我们指点迷津,帮助我们理顺设计思路,精心点拨。瓮老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,并将积极影响我今后的学习和工作。

第15篇:EDA学习心得

EDA 学习心得

姓名:贺鑫

学号:20081001164 班号:072085-10 在本学期短短5周的EDA学习中,我初步对这一新的领域有了一个较为系统的理解,也为我的专业学习打开了一个新的思路,那就是电子设计自动化(EDA)技术。

首先,通过对这门课程相关理论的学习,我掌握了EDA的一些基本的的知识,现代电子产品的性能越来越高,复杂度越来越大,更新步伐也越来越快。实现这种进步的主要原因就是微电子技术和电子技术的发展。前者以微细加工技术为代表,目前已进入超深亚微米阶段,可以在几平方厘米的芯片上集成几千万个晶体管;后者的核心就是电子设计自动化EDA(Electronic Design Automatic)技术。

EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言HDL完成的设计文件,自动完成逻辑编译、化简、分割、综合、优化、布局布线及仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

其次,通过对课程的实验的学习,我对EDA的学习和理解有了更深刻的认识和体会。我们团队共四个人,做的是两层电梯控制器,作为这个实验的一员与负责人,我感到很有压力。因为只对课本知识的学习,我对实验做成功的把握不是很大。因为我们是机械专业,学习电的知识也主要是通过大二学的《电工学》 ,因此只能对数字逻辑与数字电路有初步的了解,而EDA是在数字电路发展到一定阶段的产物,因此学习起来也很费力。

然而,在我们团队的共同努力下,我们最终成功地完成了这个实验,包括时序仿真和硬件测试仿真,都取得了非常成功地效果。

在上实验课的时候,那个周六下午,整个实验室只有那寥寥几人,我很庆幸我是其中的一人,因为在那里我学习到了很多,我完成了上次实验没有完成的扫描显示的实验,也完成了步进电机控制器的实验,还在老师的指导下完成了梁祝音乐演示实验,最后在晚上我也去了实验室,和我们团队成员开始进行两层电梯控制器的设计,通过一个晚上的努力,我们最终把它给调试了出来。

通过实验,我激发了EDA学习的兴趣,也对这门课程有了更深的理解,对EDA设计软件Quarter Ⅱ的使用也更加熟练。老师给我们的材料中,用的是GAL器件,我们最终用的是FPGA器件,也就是EP1K10TC100—3芯片,我们分析了电梯在整个运行过程中的状态,并参考资料写出了状态图,然后根据状态图用有限状态机来实现了各个状态之间的转换,进而实现了对电梯的控制。

在设计过程中,我们遇到了很多困难,尤其是在电梯开门于关门那个自动控制方面,起初我想用一个延迟信号赋值语句解决这个问题,但是由于这个延迟在综合器里面不能得到体现,综合器在综合是会忽略after之后的延迟,因此我该用了一个计数器溢出的底层元件。通过元件例化语句实现在顶层文件中对其的调用。

在完成VHDL的编辑以后,进行编译,结果出现了很多错误,在我们细心的检查和排

查之下,最终将VHDL描述修改成功并且通过了编译。在编译过程中我了解到很多在书本上没有理解的知识。比如信号不能在多个并行进程中赋值,顺序语句必须在进程中才能描述等等。在时序仿真这一块我们也遇到了问题,起初我们没有考虑到信号赋值的延迟,也没有考虑到仿真延迟δ,取时钟周期为默认值10ns,这样仿真得到的结果就与预期的结果不符合,找到问题后我们采用了1us的始终周期,最终得到了想要的波形。

对这门课程的最大收获除了学习到了知识以外,更重要的是让我明白了一个道理:只要全身心的投入到一件事中,并且要有持之以恒的决心,就一定会有收获。有的人觉得自己做不出来,就网上搜一个了事,但是,放弃一次黑暗中摸索的经历,就放弃了一次成长的机会!如果你付出了,没有收获。那只能说,是付出的还不够多。

我想我对EDA的学习只能算是个入门,这个领域的发展空间非常大,应用范围也非常广泛,而且我相信在将来还会有更加广阔的应用前景。因此在以后的学习过程中,我不能因为课程学习的结束而结束了我对这个领域的探索,相反我会更加努力的去学习它。感谢老师孜孜不倦的教诲,让我不仅学到了知识,也学到了做人做事的一些道理,为我提供了很多帮助。在接下来的学习生涯中,我会继续努力,努力扎实地学习专业知识,实现自己的理想。

第16篇:EDA毕业论文

现代EDA技术及其发展

引言

随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、航天、医学、工业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,EDA技术的含量正以惊人的速度上升;电子类的高新技术项目的开发也逾益依赖于EDA技术的应用。即使是普通的电子产品的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性能价格比大幅提高。不言而喻,EDA技术将迅速成为电子设计领域中的极其重要的组成部分。

EDA技 术

即电子设计自动( Electronic DesignAutomation)技术,以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计电子系统到硬件系统的一门技术。EDA技术是一种实现电子系统或电子产品自动化设计的技术,与电子技术、微电子技术的发展密切相关。同时它吸收了计算机科学领域的大多数最新研究成果,以计算机作为基本工作平台,利用计算机图形学、拓扑逻辑学、计算数学以至人工智能学等多种计算机应用学科的最新成果而开发出来的一整套电子CAD通用软件工具,是一种帮助电子设计工程师从事电子组件产品和系统设计的综合技术。EDA技术的出现,为电子系统设计带来了一场革命性的变化。没有EDA技术的支持,想要完成上述超大规模集成电路的设计制造是不可想象的。

EDA技术的主要内容

EDA技术涉及面很广,内容丰富,从教学和实用的角度看,主要应掌握如下四个方面的内容:1)大规模可编程逻辑器件;2)硬件描述语言;3)软件开发工具;4)实验开发系统。其中,大规模可编程逻辑器件是利用EDA技术进行电子系统设计的载体,硬件描述语言是利用EDA技术进行电子系统设计的主要表达手段,软件开发工具是利用EDA技术进行电子系统设计的智能化的自动设计工具,实验开发系统则是利用EDA

技术进行电子系统设计的下载工具及硬件验证工具。大规模可编程逻辑器件PLD(Programmable Logic Device,可编程逻辑器件)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。FPGA和CPLD分别是现场可编程门阵列和复杂可编程逻辑器件的简称,两者的功能基本相同,只是实现原理略有不同,所以我们有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/FPGA。PLD是电子设计领域中最具活力和发展前途的一项技术,PLD能完成任何数字器件的功能。PLD如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统,通过软件仿真,我们可以事先验证设计的正确性。在PCB完成以后,还可以利用PLD的在线修改能力,随时修改设计而不必改动硬件电路。使用PLD来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。PLD的这些优点使得PLD技术在20世纪90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言(HDL)的进步。硬件描述语言(HDL)硬件描述语言(HDL)是相对于一般的计算机软件语言如C、Pascal而言的。HDL是用于设计硬件电子系统的计算机语言,它描述电子系统的逻辑功能、电路结构和连接方式。HDL具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力,并在语言易读性和层次化结构化设计方面,表现了强大的生命力和应用潜力。用HDL进行电子系统设计的一个很大的优点是设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。就FPGA/CPLD开发来说,比较常用和流行的HDL主要有VHDL、Verilog HDL、ABEL、AHDL、SystemVerilog和SystemC。其中VHDL、Verilog在现在EDA设计中使用最多,也拥有几乎所有的主流EDA工具的支持。而Sys-temVerilog和SystemC这两种HDL语言还处于完善过程中。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL与Verilog HDL语言将承担起大部分的数字系统设计任务。

软件开发工具

这类软件一般由PLD/FPGA芯片厂家提供,基本都可以完成所有的设计输入(原理图或HDL),仿真,综合,布线,下载等工作。集成的PLD/FPGA开发环境供应商开发环境简介AlteraMAXPLUSIIAltera的MaxplusII曾经是最优秀的PLD开发平台之一,适合开发早期的中小规

模PLD/FPGA使用者众多。目前Altera已经停止开发MaxplusII,而转向QuartusII软件平台QuartusIIAltera公司新一代PLD开发软件,适合大规模FPGA的开发XilinxFoundationXilinx公司上一代的PLD开发软件,目前Xilinx已经停止开发Foundation转向ISE软件平台ISE Xilinx公司目前的FPGA/PLD开发软件

LatticeispDesignEXPERTLattice公司的PLD开发软件,目前最新软件改名为ispLEVERispLEVERLattice推出的最新一代PLD集成开发软件,取代ispEXPERT成为FPGA和PLD设计的主要工具。实验开发系统提供芯片下载电路及EDA实验/开发的外围资源(类似于用于单片机开发的仿真器),供硬件验证用。一般包括:1)实验或开发所需的各类基本信号发生模块,包括时钟、脉冲、高低电平等2) FPGA/CPLD输出信息显示模块,包括数据显示、发光管显示、声响指示等3)监控程序模块,提供“电路重构软配置4)目标芯片适配座以及上面的FPGA/CPLD目标芯片和编程下载电路。

EDA技术的应用展望

EDA技术将广泛应用于高校电类专业的实践教学和科研工作中与世界各知名高校相比,我国高等院校在EDA及微电子方面的教学和科研工作有着明显的差距,我们的学生现在做的课程实验普遍陈旧,动手能力较差。从某种意义上来说,EDA教学科研情况如何,代表着一个学校电类专业教学及科研水平的高低,而EDA教学科研工作开展起来后,还会对微电子类、计算机类学科产生积极的影响,从而带动各高校相应学科的同步发展。EDA技术将广泛应用于专用集成电路和新产品的开发研制中由于可编程逻辑器件性能价格比的不断提高,开发软件功能的不断完善,而且由于用EDA技术设计电子系统具有用软件的方式设计硬件;设计过程中可用有关软件进行各种仿真;系统可现场编程,在线升级;整个系统可集成在一个芯片上等特点,使其将广泛应用于专用集成电路和机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域新产品的开发研制中。EDA技术将广泛应用于传统机电设备的升级换代和技术改造传统机电设备的电器控制系统,如果利用EDA技术进行重新设计或进行技术改造,不但设计周期短、设计成本低,而且将提高产品或设备的性能,缩小产品体积,提高产品的技术含量,提高产品的附加值。EDA技术将在国防现代化建设中发挥重要的作用EDA技术是电子设计领域的一场革命,目前正处于高速发展阶段,每年都有新的EDA工具问世,我国EDA技术的应用水平长期落后于发达国

家,如果说用于民品的核心集成电路芯片还可以从国外买的到的话,那么军用集成电路就必须依靠自己的力量研制开发,因为用钱是买不到国防现代化的,特别是中国作为一支稳定世界的重要力量,更要走自主开发的道路。强大的现代国防必须建立在自主开发的基础上,因此,广大电子工程技术人员应该尽早掌握这一先进技术,这不仅是提高设计效率和我国电子工业在世界市场上生存、竟争与发展的需要,更是建立强大现代国防的需要。

我国EDA技术的出路

中国IC设计公司任重道远近年来我国的半导体市场发展突飞猛进,政府积极扶植EDA产业,加大招商引资力度,大力建设EDA制造业基地,国务院颁布的软件产业和集成电路产业发展的若干政策从政策上为EDA的发展营造了良好的外部环境,同时世界领先的一些供应商也看好中国市场的潜在优势,向中国出口先进的设计工具,但具备了工具只是解决了设计手段,而中国的设计师在EDA的总体应用能力方面与世界发达国家相比还存在一定的差距,突出表现为专业人才紧缺,缺乏成熟化的整合性集成设计环境,供应商技术服务支持不够,中国EDA技术的现在和未来都应重视设计方法、工具和设计语言等方面的问题,从整体上看,中国市场对设计工具的需求已越来越与国际接轨,但是尽管中国EDA设计领域中前端的设计相对成熟,但后端例如从网表到C++等的设计却面临着更大的挑战。无论是EDA的使用还是EDA工具本身,我国与先进国家相比都有很大差距。EDA标准化工作在我国刚刚起步,我国有庞大的市场需求和快的增长速度,同时还有后发优势,这是我国EDA发展的楔机。在EDA标准化方面,目前主要应采用国际和国外先进标准,一方面引进和转化适用的标准,更重要的是加强转化后标准的宣传和推广,通过标准化工作促进我国EDA及集成电路产业的发展。

我国如何应对EDA技术的挑战

①充分发挥EDA仿真技术在教学中的应用,培养更多适应新技术要求的人才。人才需求的变化,技术的发展之快更是需要教育工作者有着人才培养的超前意识。这一意识必须是科学的、崭新的、快速的、甚至是跳跃的。特别是人才的培养需要有掌握新技术的专业教师,还要有新技术的设备才能满足人才培养的要求。新技术、新设备的大量投入可能会影响到进入人才市场最前沿的机遇。这就需要我们思维创新,教学手段创新。作者认为学校实验教学就应该以EDA仿真技术

为突破口,引入计算机辅助教学手段,从而加快高素质人才培养的速度,建立雄厚的EDA技术人才基础。②以半导体的研究创新促进EDA技术发展半导体工艺技术在过去5年中正以飞快的速度发展。硅的生产率每18个就会增加,而设计生产率仍旧严重滞后。自从半导体行业步入0.13μm时代以来,集成电路设计所面临的挑战已被多次提及,范围包括了数字和模拟电路领域。相关的内容包括:功率管理,功能验证,漏电流,对于超过1.5亿个晶体管的复杂设计管理,还有0.13μm以下的混合信号和数字设计等等。过去那些令人生畏的巨大挑战总会被解决,所以说没有人会怀疑半导体技术会适时而及时地找出解决所面临的挑战方案,来击败ITRS的预言。但是,为了在设计效率和设计技术有效上取得长足进步和避免成本重复,EDA产业应该支持相应的一整套标准,如设计工具的全球战略、可制造性设计、统计设计方法、低功率设计和系统级确认等。③开发实用性更强的EDA软件在EDA软件开发方面,目前主要集中在美国。但各国也正在努力开发相应的工具。日本、韩国都有ASIC设计工具,但不对外开放。中国华大集成电路设计中心,也提供IC设计软件,但性能不是很强。相信在不久的将来会有更多更好的功能强大、界面友好、使用方便的设计工具在各地开花并结果。④外设技术与EDA工程相结合外设技术与EDA工程相结合的市场前景看好,如组合超大屏幕的相关连接,多屏幕技术也有所发展。中国自1995年以来加速开发半导体产业,先后建立了几所设计中心,推动系列设计活动以应对亚太地区其它EDA市场的竞争。在信息通信领域,要优先发展高速宽带信息网、深亚微米集成电路、新型元器件、计算机及软件技术、第三代移动通信技术、信息管理、信息安全技术,积极开拓以数字技术、网络技术为基础的新一代信息产品,发展新兴产业,培育新的经济增长点。要大力推进制造业信息化,积极开展计算机辅助设计

(CAD)、计算机辅助工程(CAE)、计算机辅助工艺(CAPP)、计算机辅助制造(CAM)、产品数据管理(PDM)、制造资源计划(MRPII)及企业资源管理(ERP)等。有条件的企业可开展“网络制造”,便于合作设计、合作制造,参与国内和国际竞争。开展“数控化”工程和“数字化”工程。自动化仪表的技术发展趋势的测试技术、控制技术与计算机技术、通信技术进一步融合,形成测量、控制、通信与计算机(M3C)结构。在ASIC和PLD设计方面,向超高速、高密度、低功耗、低电压方面发展。

第17篇:EDA课程设计

考试序号:28

自动打铃系统设计说明书

学 生 姓 名:周文江

号:14112502521

专 业 班 级:1102

报告提交日期:2013.11.26

湖 南 理 工 学 院 物 电 学 院

目录

一、题目及要求简介……………3 1.设计题目…………………3 2.总体要求简介……………3

二、设计方案说明……………3

三、系统采用器件以及模块说明………3 1.系统框图…………4 2.选择的FPGA芯片及配置………4 3.系统端口和模块说明…………5

四、各部分仿真结果………5

五、调试及总结………6

六、参考文献……7

七、附录………7

一、题目及要求简介

1、设计题目

设计一个多功能自动打铃系统

2、总体要求简介

① 基本计时和显示功能(24小时制显示),包括:

1.24小时制显示 2.动态扫描显示; 3.显示格式:88-88-88 ② 能设置当前时间(含时、分) ③ 能实现基本打铃功能,规定:

06:00起床铃,打铃5s

二、设计方案说明

本次设计主要采用Verilog HDL硬件描述性语言、分模块法设计的自动打铃系统。由于这次用的开发板提供的是50M晶振。首先要对时钟进行分频,当计时到2FA_F07F时完成1s分频,通过计时到60s产生分钟进位信号,再通过60分钟产生时钟进位信号。最后通过6个寄存器对时分秒进行锁存最终输出到8个数码管上完成显示。当显示时钟和默认闹钟时钟相等时,驱动打铃模块。通过key_mode,key_turn,key_change查看闹钟,时钟显示,调整时钟。

三、系统采用器件以及模块说明

1.系统框图如下:

:下如图框统系

2.选择的FPGA芯片及配置:本次系统设计采用的FPGA芯片是Alter公司生产的Cyclone II EP2C8Q208C8。该芯片是208个管脚,138个IO,并且具有两个内部PLL,而且内嵌乘法器,8K的逻辑门,资源相当丰富。完成这次自动打铃系统的设计总共消耗250个LE单元,22个IO口,131个寄存器。经过综合后,本系统最高能实现145M的运行速度。通过Quartus II 软件观察到内部的RTL图如下

3.系统端口和模块说明

(1)分频部分

分频器的作用是对50Mhz的系统时钟信号进行分频,得到频率为1hz的信号,即为1S的计时信号。

(2)按键部分

按键key_mode--0为显示计时,1为闹钟显示,2为调整时间。 按键key_turn—0为调整小时,1为调整分钟。 按键key_change—每按一次加1 (3)计时部分

通过sec_L,sec_H,min_L,min_H,hour_L,hour_H 6个寄存器对时分秒进行锁存然后送入数码管显示

(4) 闹钟模块

当设定的闹钟时间和数码管上显示的时间相等时驱动闹钟,完成打铃,持续时间5s。

(5)数码管显示模块

显示模块是由8个位选8个段选构成的显示模块,利用人眼的余晖效果完成动态扫描,显示时间。

四、各部分仿真结果

测试文件如下:

module clock_tb; reg sysclk,rst_b; reg key_mode,key_turn,key_change; wire buzzer;

wire [7:0] led_sel,led_data; clock I_clock( .sysclk (sysclk),.rst_b (rst_b),.key_mode (key_mode), .key_change (key_change),.key_turn (key_turn),.buzzer (buzzer),.led_sel (led_sel),.led_data (led_data)); initial begin sysclk = 1\'b1; rst_b = 1\'b0; //复位信号

#30 rst_b = 1\'b1; end always #10 sysclk = ~sysclk; //输入的系统时钟,20ns的周期 endmodule

五、调试及总结

本次课程设计总共花费了四天左右的时间,设计了自动打铃系统。通过这次的设计更加熟悉了对EDA技术的了解和认识,在中也发现许多不足的地方。使用了自顶而下的设计方法,使得设计更加的简单和明了。在调试过程中,有些代码的设计不规范性,导致时序相当缓慢,甚至编译综合都会报错。在不断的修改下,发现时序电路和组合逻辑最好分开写,这样便于查错,和修改代码。毕竟Verilog HDL语言不同于C语言,不能以软件的思想来设计,而是要利用电路的思想来编程,这样可以更好的节省资源,使得时序也比较的简单明了。在以后的学习及程序设计当中,我们一定要倍加小心,在程序出现不正常运行的情况下要耐心调试,尽量做到精益求精。

最后通过这次EDA方面的课程设计, 提高了我们对EDA领域及通信电路设计领域的认识,有利于培养我们在通信电路EDA方面的设计能力。有利于锻炼我们独立分析问题和解决问题的能力。

六、文献参考

[1] .王金明、左自强 编,《EDA技术与Verilog设计》科学出版社

2008.8 [2] .杜慧敏、李宥谋、赵全良 编,《基于Verilog的FPGA设计基础》 西安电子科技大学出版社 2006.2 [3] .韩彬 编,《从零开始走进FPGA世界》杭州无线电爱好者协会出版社 2011.8.20

七、附录(实物图及源码)

module clock(//Input

sysclk,rst_b,key_mode,key_change,key_turn,

//Output

buzzer,led_sel,led_data );

input sysclk,rst_b; //sysclk--global system clock,rst_b--global reset signal input key_mode;//mode choose .0--Timing function.1--Alarm clock function.2--adjust function input key_turn;//choose adjust minute or hour input key_change;//count add 1 output buzzer; //device buzzer output [7:0] led_sel;//led tube bit choose

output [7:0] led_data;//led_tube 8 bit data choose

parameter init_hour = 8\'h12; parameter init_min = 8\'h59; parameter init_sec = 8\'h50; //initial time :12:59:50 parameter init_alarm_hour = 8\'h06; parameter init_alarm_min = 8\'h30;//initial alarm time : 06:30:0 parameter Count_1s = 28\'h2FA_F07F; //count time 1s;

reg [7:0] sec; reg [7:0] min; reg [7:0] hour; reg [3:0] min_L; //minute low 4 bit reg [3:0] min_H; //minute high 4 bit reg [3:0] hour_L; //hour low 4 bit reg [3:0] hour_H; //hour high 4 bit reg [23:0] key_time; //pre key away shake reg key_mode_n; //pre key_mode next state reg key_change_n; //pre key_change next state reg key_turn_n; //pre key_turn next state wire key_mode_pre;//sure Button pre key_mode wire key_turn_pre; //sure button pre key_turn wire key_change_pre;//sure button pre key_change

always @ (posedge sysclk ) key_mode_n

always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) key_time

key_time

end

reg [1:0] mode_num; //key mode ..0--Timing function.1--Alarm clock function.2--adjust function always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) mode_num

mode_num

always @ (*) begin if(mode_num == 2\'h1)begin

min = init_alarm_min; hour = init_alarm_hour; end else begin

min = {min_H,min_L}; hour = {hour_H,hour_L}; end end

reg fm; //choose turn hour or minute always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) fm

fm

reg [27:0] time_cnt; ///count time reg [27:0] time_cnt_n; //count time next state always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) time_cnt

always @ (*) begin if(time_cnt == Count_1s) time_cnt_n

reg [3:0] sec_L; //second low 4 bit reg [3:0] sec_H; //second high 4 bit wire sec_cb; //second carry bit signal aign sec_cb = (sec_L == 4\'h9) && (sec_H == 4\'h5); always @ (posedge sysclk or negedge rst_b) begin if(!rst_b)begin

sec_L

sec_L

sec_L

sec_L

wire min_cb; //minute carry bit signal aign min_cb = (min_L == 4\'h9) && (min_H == 4\'h5); always @ (posedge sysclk or negedge rst_b) begin if(!rst_b)begin

min_L

min_L

min_L

min_L

min_L = min_L + 4\'h1; else if((fm) && (mode_num == 2\'h2) &&(key_change_pre) && (key_time ==

24\'h0) && (min_L == 4\'h9) && (min_H !=4\'h5)) begin

min_L = 4\'h0; min_H = min_H + 4\'h1; end else if((fm) && (mode_num == 2\'h2) &&(key_change_pre) && (key_time == 24\'h0) && (min_L == 4\'h9) && (min_H ==4\'h5)) begin

min_L = 4\'h0; min_H = 4\'h0; end end

always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) begin

hour_L

hour_L

hour_L

hour_L

hour_L

hour_L

hour_L

hour_L

24\'h0) && (hour_L == 4\'h3) && (hour_H ==4\'h2)) begin

hour_L

wire buzzer_en; aign buzzer_en = (init_alarm_min == {min_H,min_L}) && (init_alarm_hour == {hour_H,hour_L});

led_tube I_led_tube ( .sysclk (sysclk), .rst_b (rst_b), .scan_time (24\'h1F090), .data0 ({1\'h1,sec_L}), .data1 ({1\'h1,sec_H}), .data2 ({1\'h1,4\'hA}), .data3 ({1\'h1,min[3:0]}), .data4 ({1\'h1,min[7:4]}), .data5 ({1\'h1,4\'hA}), .data6 ({1\'h1,hour[3:0]}), .data7 ({1\'h1,hour[7:4]}), .led_data (led_data), .led_sel (led_sel) ); buzzer I_buzzer ( .sysclk (sysclk), .rst_b (rst_b), .buzzer_en (buzzer_en), .buzzer (buzzer) ); endmodule

第18篇:EDA 课程设计

《电子系统设计自动化》课程设计报告

学 院: 机电工程学院

题 目: 数字时钟电路设计 课 程: 《电子系统设计自动化》课程设计 专业班级: 电信10级2 班 学生姓名: 刘星 秦玉杰 王艳艳 学 号: 1004101035 1004101036 1004101038

完成日期:2013年 12 月 27 日

- 2

摘要:

EDA(Electronic Design Automation)电子设计自动化,就是以大规模可编程器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,通过相关的软件,自动完成用软件方式设计的电子系统到硬件系统,最终形成集成电子系统或专用集成芯片。本次实习利用QuartusII为设计软件、VHDL为硬件描述语言,结合所学的数字电路的知识设计一个24时多功能数字钟,具有正常时、分、秒计时,动态显示,清零、快速校时校分、整点报时、花样显示等功能。利用硬件描述语言VHDL对设计系统的各个子模块进行逻辑描述,采用模块化的设计思想完成顶层模块的设计,通过软件编译、逻辑化简、逻辑分割、逻辑综合优化、逻辑布线、逻辑仿真,最终将设计的软件系统下载设计实验系统,对设计的系统进行硬件测试。

一、课程设计基本要求和任务

《EDA课程设计》是继《模拟电子技术基础》、《数字电子技术基础》课程后,电信专业学生在电子技术实验技能方面综合性质的实验训练课程,是电子技术基础的一个部分。 1.1 目的和任务

(1) 通过课程设计使学生能熟练掌握一种EDA软件(QUARTUSII)的使用方法,能熟练进行设计输入、编译、管脚分配、下载等过程,为以后进行工程实际问题的研究打下设计基础。

(2) 通过课程设计使学生能利用EDA软件(QUARTUSII)进行至少一 个电子技术综合问题的设计,设计输入可采用图形输入法或VHDL硬件描述语言输入法。 (3) 通过课程设计使学生初步具有分析、寻找和排除电子电路中常见 故障的能力。

(4) 通过课程设计使学生能独立写出严谨的、有理论根据的、实事求是的、文理通顺的字迹端正的课程设计报告。 1.2 功能要求:

(1) 具有时、分、秒计数显示功能,以24小时循环计时。 (2) 时钟计数显示时有LED灯的花样显示。 (3) 具有调节小时、分钟、秒及清零的功能。 (4) 具有整点报时功能。

1.3 总体方框图:

本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。显示:小时采用24进制,而分钟均是采用6进制和10进制的组合。 1.4 设计原理:

数字钟电路设计要求所设计电路就有以下功能:时、分、秒计时显示,清零,时、分调节,整点报时及花样显示。分、秒计时原理相似,可以采用60进制BCD码计数器进计时;小时采用24进制BCD码进行计时;在设计时采用试验电路箱上的模式7电路,不需要进行译码电路的设计;所设计电路具有驱动扬声器和花样显示的LED灯信号产生。试验箱模式7的电路如图一所示:图一模式七实验电路图

1.5 性能指标及功能设计:

(1) 时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。

- 5

2.2 模块划分自顶向下分解

2.3 模块描述

时钟计时模块完成时、分、秒计数,及清零、调节时和分钟的功能。时、分、秒计数的原理相同,均为BCD码输出的计数器,其中分和秒均为六十进制BCD码计数器,小时为二十四进制BCD码计数器。设计一个具有异步清零和设置输出功能的六十进制BCD码计数器,再设计一个具有异步清零和设置输出功能的二十四进制计数器,然后将它们通过一定的组合构成时钟计时模块。 各个输入/输出端口的作用为:

(1) clk为计时时钟信号,reset为异步清零信号;

(2) sethour为小时设置信号,setmin为分钟设置信号; (3) daout[5„0]为小时的BCD码输出, daout[6...0]为秒和分钟的BCD码输出,enmin和enhour为使能输出信号。

(4) 在时钟整点的时候产生扬声器驱动信号和花样显示信号。由时钟计时模块中分钟的进行信号进行控制。当contr_en为高电平时,将输入信号clk送到输出端speak用于驱动扬声器,同时在clk的控制下,输出端lamp[2..0]进行循环移位,从而控制LED灯进行花样显示。输出控制模块有扬声器控制器和花样显示控制器两个子模块组成 2.4 顶层电路图

顶层文件是由四个模块组成,分别是时、分、秒计数器和报警的VHDL语言封装而成。经过锁定引脚再重新编译获得如下顶层原理电路图:

三、方案实现

3.1 各模块仿真及描述

(1) 秒计数器模块仿真图:将标准秒信号送入”秒计数器”,秒计数器采用60进制计数器,每累计60秒发出一个分脉冲信号,该信号将作为分计数器的时钟脉冲,daout代表秒输出。

(2) 分计数器电路仿真图:也采用60进制计数器,每累计60分钟,发出一个时脉冲信号,该信号将被送到时计数器,daout端口代表分钟输出

(3)小时计数器电路仿真图:时计数器采用12进制计时器,可实现对24小时累 计。每累计12小时,发出一个脉冲信号。

- 9

引脚配置完成后再进行一次全程编译,无误则可以下载到试验箱上进行硬件测试。硬件验证的方法如下:选择实验模式7;时钟脉冲clk与clock0(1024Hz)信号相连;键8和键5均为低电平,时钟正常计时,数码管1和2显示秒,数码管4和5显示分钟,数码管7和8显示小时;键8为高电平时,时钟清零;键5为高电平时,按下键7和键4进行调时调分操作;当时钟为整点的时候,三个发光二极管进行循环移位操作,同时扬声器发声。

五、心得体会

经过源程序的编辑、逻辑综合、逻辑适配、编程下载成功后,在EDA实验开发系统进行硬件验证时却发现实验结果不正确,扬声器无法发声。经检查,自己设计的管脚文件有错。将管脚锁定文件修改后,重新进行逻辑适配、编程下载成功后,实验结果仍然不正确,百思不得其解。无奈之下,决定重头开始排查每一步的细节,确定各个模块的功能完全实现并且顶层模块功能正确。修改之后,重新进行逻辑适配、编程下载验证,实验结果完全正确。

这次EDA课程设计历时两个星期,在整整两个星期的日子里,不仅巩固了以前所学过的知识,而且学到了很多书本上学不到的知识,同时锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,对未来有了更多的信心。这次课程设计,进一步加深了我对EDA的了解,使我对QuartusII的基本操作有所了解,使我对应用软件的方法设计硬件系统有了更加浓厚的兴趣。 通过这次课程设计,我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合,从实践中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程中,我遇到许多问题,毕竟是第一次应用VHDL进行硬件电路系统的设计,许多EDA的知识还没有充分的掌握,遇到困难也是在所难免的,同时发现了自己的不足之处:学习知识表面化,没有深入了解它们的原理。 总的来说,这次设计的数字时钟电路还是比较成功的,尽管在设计中遇到了很多问题,最后在老师的辛勤指导、同学的帮助和自己不断思考下,终于迎刃而解,有点小小的成就感,觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的。最后,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!

参考文献

[1] 崔健明.《电子电工EDA仿真技术》 高等教育出版社 2000年 [2] 卢杰,赖毅.《VHDL与数字电路设计》 科学出版社 2001年 [3] 潘松,黄继业.《EDA技术实用教程》 科学出版社 2002年 [4] 朱运利.《EDA技术应用》 电子工业出版社 2004年 [5] 张明.《VHDL实用教程》 电子科技大学出版社 1999年

[6] 彭介华.《电子技术课程设计与指导》 高等教育出版 1997年

- 11

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY minute IS PORT(clk,clk1,reset,sethour:IN STD_LOGIC; enhour:OUT STD_LOGIC; daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END ENTITY minute ; ARCHITECTURE fun OF minute IS SIGNAL count :STD_LOGIC_VECTOR (6 DOWNTO 0); SIGNAL enhour_1, enhour_2: STD_LOGIC; --enmin_1为59分时的进位信号 BEGIN --enmin_2由clk调制后的手动调时脉冲信号串 daout

3、时计数器模块的VHDL语言:

LIBRARY IEEE; use IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

- 14

IF(clk\'event and clk=\'1\')THEN IF(dain=\"0000000\")THEN speak=\"10\")THEN count1

循环点亮三只灯

第19篇:《EDA课程设计》

《EDA课程设计》

课程设计题目:

基于单片机的温湿度采集系统

名:

xxx

号:

xxxx

级:

xxxx

间:

2014.4.21~ 2013.5.5

点:

xxxxx

指 导

师:

xxxxx

一、电路原理图 ..................................................................................2

二、电路PCB图(或实物图) .........................................................2

三、电路效果图 ..................................................................................3

四、设计总结 ......................................................................................3 附录(单片机源代码) ......................................................................4

1

一、电路原理图

二、电路PCB图(或实物图)

2

三、电路效果图

四、设计总结

EDA的实验还是挺有趣的,比较讲究动手能力,当然也不能忽略团体合作。总的来说本次实验还是成功了,虽然每个环节都遇到了困难。在生成原理图的过程中,就曾把导线画成了Placeline而不是Placewire,还有芯片的引脚应该用NET符号而不是用文本符号,所以这些错误都导致我花在原理图上的时间多了点。而在生成PCB电路图的过程中遇到的困难则是自动布线之后,还有电源的几个脚需要手动布线,所以各个元件之间的位置要布置好,以免发生短路。腐蚀的时候,由于腐蚀的时间太长了,有些碳都化开了,导致里面的铜被腐蚀掉了,所以又为我的工作增加了困难。在焊接的时候,要注意元件的正负极,还要检测锡是否都与那些铜连接上了。最终把LED和

3 DHT11的程序烧进去就行了。

本次实验我还是能多多少少学到点什么的,总的来说还是希望能有多一点这样的实习。

附录(单片机源代码)

//51单片机控制温湿度传感器DHT11

LCD1602上显示当前机最小系统。 //LCD 读进去 写出来 #include #include typedef unsigned char BYTE; typedef unsigned int WORD; #define uint unsigned int

//定义无符号整型 #define uchar unsigned char typedef bit BOOL;

//此声明一个布尔型变量即真或假// uchar data_byte,num,i; uchar RH,RL,TH,TL,flag; uchar shuzi[4]; unsigned char code num1[11]={0xc0,0xf9,0xa4,0xb0,0x99,

4

0x92,0x82,0xf8,0x80,0x90,0x7f} ;

sbit dht=P2^4;

//dht11data端接单片机的P2^4口//

//***************

数************************************* void delay(uchar ms) //延时模块//延时1毫秒

{

}

void delay1()

//一个for循环大概需要8个多机器周期

//一个机器周期为1us晶振为12MHz也就是说本函数延时8us{

}

5 uchar i;

while(ms--)

for(i=0;i

uchar i;

for(i=0;i

P2=0x07;

P0=num1[shuzi[2]]; delay(1); // }

// if(flag==1) // {

P2=0x0b;

P0=num1[shuzi[3]]; delay(1); // } // if(flag==2) // {

P2=0x0d;

P0=num1[shuzi[0]]; delay(1); // } // if(flag==3)

6 // {

P2=0x0e; P0=num1[shuzi[1]]; delay(1); // } }

//**************************dht11

块*************************************// void start()//开始信号

{

dht=1;

delay1();

//主机发出8us高电平,开始信号开始发出 dht=0;

delay(25);

// 主机把总线拉低必须大于18ms

DHT11能检测到起始信号

dht=1;

//delay1();

//以下三个延时函数差不多为24usdelay1(); delay1();

20-40us

}

uchar receive_byte()

//接收一个字节 8位// {

uchar i,temp;

for(i=0;i

{

while(!dht);

//等待40-50us的低电平开始信号结束

delay1();

//开始信号结束之后延时26us-28us

delay1(); delay1();

temp=0;

//时间为26us-28usif(dht==1)

temp=1;

//如果26us-28us

\'0\'

数据为\'1\'

while(dht);

//

\'0\'为26us-28us

\'1\'为70us

} data_byte

//data_byte|=temp;

//接收每一位的数据,相或保存数据

return data_byte;

8 }

void receive() //接收数据// {

uchar T_H,T_L,R_H,R_L,check,num_check,i; start();

//开始信号//调用开始信号子函数

dht=1;

//主机设为输入判断从机DHT11响应信号

if(!dht)

//判断从机是否有低电平响应信号// {

while(!dht); //判断从机发出 40us 的低电平响应信号是否结束//

while(dht);

//判断从机发出 40us 的高电平是否结束 如结束则从机进入发送数据状态,主机进入数据接收状态

//两个while语句加起来就是DHT11的响应信号

R_H=receive_byte(); //湿度高位

调用接受一个字节的子函

R_L=receive_byte(); //湿度低位

T_H=receive_byte(); //温度高位

T_L=receive_byte(); //温度低位

check=receive_byte(); //校验位

//结束信号

dht=0;

//当最后一bit数据接完毕后主机拉低电平50us// for(i=0;i

delay1();

dht=1;

//总线由上拉电阻拉高进入空闲状态

num_check=R_H+R_L+T_H+T_L;

if(num_check==check) //判断读到的四个数据之和是否与校验位相同

{

RH=R_H;

RL=R_L;

TH=T_H;

TL=T_L;

check=num_check; }

shuzi[0]=RH/10; shuzi[1]=RH%10; shuzi[2]=TH/10; shuzi[3]=TH%10;

} }

void main()//主函数模块// {

10 while(1)

//进入死循环

{

receive();

//接收数据

display();

} }

第20篇:eda课程设计

数字钟

一、设计要求

设计一个数字钟,具体要求如下:

1、具有时、分、秒计数显示功能,以24小时循环计时。

2、具有清零、校时、校分功能。

3、具有整点蜂鸣器报时以及LED花样显示功能。

二、设计方案

根据设计要求,数字钟的结构如图8-3所示,包括:时hour、分minute、秒second计数模块,显示控制模块sel_clock,七段译码模块deled,报时模块alert。

三、VHDL程序

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code.--library UNISIM;

--use UNISIM.VComponents.all;

entityddz is port(rst,clk: in std_logic; hour_h: out std_logic_vector( 6 downto 0); hour_l: out std_logic_vector( 6 downto 0); min_h: out std_logic_vector( 6 downto 0);

min_l: out std_logic_vector( 6 downto 0);

sec_h: out std_logic_vector( 6 downto 0);

sec_l: out std_logic_vector( 6 downto 0)

); endddz;

architecture Behavioral of ddz is signalcnt: std_logic_vector(15 downto 0); signalsec_h_in: std_logic_vector( 3 downto 0); signalsec_l_in: std_logic_vector( 3 downto 0); signalmin_h_in: std_logic_vector( 3 downto 0); signalmin_l_in: std_logic_vector( 3 downto 0); signalhour_h_in: std_logic_vector(3 downto 0); signalhour_l_in: std_logic_vector(3 downto 0);

signalclk_s,clk_m,clk_h: std_logic; begin proce(rst,clk) begin if rst=\'0\' then

sec_h_in\'0\');

sec_l_in\'0\');

clk_m

sec_l_in

ifsec_h_in=5 then

sec_h_in

clk_m

else

sec_h_in

clk_m

end if; else sec_l_in

clk_m

end if; end if; end proce;

proce(rst,clk_m) begin if rst=\'0\' then

-- min_h_in\'0\');

min_l_in\'0\'); -- clk_h

min_l_in

min_h_in

clk_m

end if; else min_l_in

end if; end if; end proce;

proce(rst,clk_n) begin if rst=\'0\' then

-- hour_h_in\'0\');

hour_l_in\'0\'); -- clk_h

hour_l_in

hour_h_in

clk_n

end if; else hour_l_in

end if; end if; end proce;

proce(sec_l_in) begin casesec_l_in is

when \"0000\" =>sec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_l

proce(sec_h_in) begin casesec_h_in is

when \"0000\" =>sec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_h

proce(min_l_in) begin casemin_l_in is

when \"0000\" =>min_lmin_lmin_l

when \"0011\" =>min_lmin_lmin_lmin_lmin_lmin_lmin_lmin_l

proce(min_h_in) begin casemin_h_in is

when \"0000\" =>min_hmin _h min _hmin _hmin _h min _hmin _hmin _hmin _hmin _hmin _h

end case; end proce;

proce(hour_l_in) begin casehour_l_in is

when \"0000\" =>hour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_l

proce(hour_h_in) begin casehour_h_in is

when \"0000\" =>hour_hhour_hhour_hhour_h hour _h hour _h hour _h hour _h hour _hhour_h hour _h

四、VHDL仿真结果

五、课程设计心得

通过这次课程设计,有效得巩固了课本所学的知识,而且通过上机仿真不断发现问题并及时改正,加深了我们对该课程设计的印象。这次课程设计,进一步加深了我对EDA的了解,使我对isp有了更深的了解,使我对应用软件的方法设计硬件系统有了更加浓厚的兴趣。 除此之外,我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合,从实践中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。

总之,这次课程设计让我学会了很多,对今后的生活工作用处也颇深。

eda实验心得体会
《eda实验心得体会.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题
点击下载本文文档