eda实习报告文档格式.docx

上传人:b****5 文档编号:19712730 上传时间:2023-01-09 格式:DOCX 页数:25 大小:126.06KB
下载 相关 举报
eda实习报告文档格式.docx_第1页
第1页 / 共25页
eda实习报告文档格式.docx_第2页
第2页 / 共25页
eda实习报告文档格式.docx_第3页
第3页 / 共25页
eda实习报告文档格式.docx_第4页
第4页 / 共25页
eda实习报告文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

eda实习报告文档格式.docx

《eda实习报告文档格式.docx》由会员分享,可在线阅读,更多相关《eda实习报告文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

eda实习报告文档格式.docx

PROCESS(A)

CASEAIS

WHEN"

000"

=>

DECODE38<

="

10000000"

;

001"

01000000"

010"

00100000"

011"

00010000"

100"

00001000"

101"

00000100"

110"

00000010"

111"

00000001"

WHENOTHERS=>

NULL;

ENDCASE;

ENDPROCESS;

END;

2、半加器

半加器是通过画出它的电路图来实现的,电路图为:

三、仿真波形

4、心得体会

通过这个实验我初步了解了Quartus2软件的用法,并能够用它编译程序、仿真及下载到试验箱上。

在画波形图时,由于时间没有设置好,所以使波形有些时延,但大体还是可以的。

在本次试验中,我感觉自己获益匪浅,在设计3/8译码器时,由于粗心打错了一些字母,导致在检查过程中出现了错误,所以在以后写程序时我会更加注意下,尽量减少这类错误的发生。

半加器的设计是通过画电路图实现的,这个在实验时没有出现错误,做完这个后,我还将半加器保存到库里面,从而画出了全加器的电路图,并下载到试验箱上面,也没有出现错误。

总的来说,我学会了运用这个软件来实现3/8译码器和半加器。

实验二、BCD七段显示译码器实验

1、BCD七段显示译码器

ENTITYDECL7SIS

INSTD_LOGIC_VECTOR(3DOWNTO0);

DECL7S:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ARCHITECTUREoneOFDECL7SIS

0000"

=>

DECL7S<

="

1111110"

0001"

0110000"

0010"

1101101"

0011"

1111001"

0100"

0110011"

0101"

1011011"

0110"

1011111"

0111"

1110000"

1000"

1111111"

1001"

1111011"

1010"

1110111"

1011"

0011111"

1100"

1001110"

1101"

0111101"

1110"

1001111"

1111"

1000111"

WHENOTHERS=>

NULL;

仿真波形:

2、动态七段译码显示器

ENTITYSHENGRIIS

PORT(CLK:

INSTD_LOGIC;

SG:

OUTSTD_LOGIC_VECTOR(6DOWNTO0);

BT:

BUFFERintegerrange7downto0);

ENDENTITYSHENGRI;

ARCHITECTUREoneOFSHENGRIIS

PROCESS(CLK)

IFCLK'

EVENTANDCLK='

1'

THENBT<

=BT+1;

ENDIF;

CASEBTIS

WHEN0=>

SG<

WHEN1=>

1110011"

WHEN2=>

WHEN3=>

WHEN4=>

WHEN5=>

WHEN6=>

WHEN7=>

3、心得体会

经过第一次实验的锻炼,第二次实验做的顺利了好多。

在写程序过程中,也没有出现打错字的错误了,同时速度也比上次提高了好多。

这次是做BCD七段显示译码器的实验,程序比第一次实验麻烦了一点,用了一些when...else语句,不过这是静态显示的。

做完这个以后,还做了动态七段译码显示器实验,写程序时把显示器部分的显示设置成为自己的生日。

在下载程序时出现了问题,一直不能下载好,后来换了一条下载线才好。

不过这次试验也是顺利做了出来,收获很大。

实验三、电子时钟

一、电子时钟实验心得

这次实验分成了几个模块,感觉比较的难。

首先是电子钟的实体部分,用元件例化语句连接起来。

有key_debounce、div_freq、control、counter、ring、display等。

首先是消抖部分,这个模块我一直不是很清楚,没有搞懂,所以程序在这个部分没能写好,在实验时消抖效果也不好,扳动开关后有可能状态没什么变化。

接下来是分频部分,我原先是给了它一个1024Hz的脉冲,然后再给其他几个部分进行分频,即:

clk_time<

=Q(9);

-----1Hz

ringtone2<

=Q(11);

----0.25Hz

clk_change<

=Q(8);

----2Hz

ringtone1<

----1Hz

clk_key<

=Q

(2);

----128Hz

clk_control<

-----128Hz

clk_dis<

=Q(0);

----512Hz

接下来是控制模块,利用setup来改变状态,同时将计时的小时和分钟、闹钟的小时和分钟分别用不同的状态控制,利用setup和ajust来调整。

接着是计时模块,计时的分钟小时秒都分别进行考虑,具体在程序中体现出来。

再就是响铃部分,响铃分为整点报时和闹钟响铃两个部分,分别用不同的状态进行控制。

然后就是显示管扫描部分。

这个实验我做了好久,在实验课上没能做好,在课下也花了好多时间,有些地方总是出现错误,所以再改了好久,也和同学商量了好多才能够做出来,但消抖部分仍然存在很大的问题,而且是在考试过后才验收的,不过收获还是很大。

二、源程序

1、代码

LIBRARYieee;

USEieee.std_logic_1164.all;

USEieee.std_logic_unsigned.all;

ENTITYdigital_clock1IS

PORT

(setup_k:

INSTD_LOGIC;

adjust_k:

clk:

clr:

LEDout:

OUTSTD_LOGIC_VECTOR(6downto0);

SCAN:

OUTSTD_LOGIC_VECTOR(2downto0);

mode:

bufferstd_logic_vector(3downto0);

ringtone:

OUTSTD_LOGIC);

endentitydigital_clock1;

architecturebehofdigital_clock1is

componentkey_debounce

PORT(

clk_key:

INSTD_LOGIC;

setup_k:

INSTD_LOGIc;

adjust_k:

k_setup,k_adjust:

OUTSTD_LOGIC);

ENDcomponent;

componentdiv_freq

PORT

(clk:

clk_key:

OUTSTD_LOGIC;

clk_control:

clk_time:

clk_change:

ringtone1:

ringtone2:

clk_dis:

OUTSTD_LOGIC);

componentcontrol

port(k_adjust:

instd_logic;

k_setup:

clr:

clk_control:

mode:

outstd_logic_vector(3downto0));

endcomponent;

componentcounter

port(

clk_time,clk_change,clr:

mode:

instd_logic_vector(3downto0);

h1,h0:

outstd_logic_vector(3downto0);

min1,min0:

outstd_logic_vector(3downto0);

sec1,sec0:

componentring

h1,h0,min1,min0,sec1,sec0:

instd_logic_vector(3downto0);

clk_change:

ringtone1:

inSTD_LOGIC;

ringtone:

outstd_logic;

a_h1,a_h0,a_min1,a_min0:

outstd_logic_vector(3downto0));

componentdisplay

c_h1,c_h0,c_min1,c_min0,c_sec1,c_sec0:

a_h1,a_h0,a_min1,a_min0:

clk_dis:

sel:

outstd_logic_vector(2downto0);

y:

outstd_logic_vector(6downto0)

);

signalclk_change,k_setup,k_adjust,clk_control,clk_time,clk_key,ringtone1,ringtone2,clk_dis:

std_logic;

signalc_h1,c_h0,c_min1,c_min0,c_sec1,c_sec0:

std_logic_vector(3downto0);

signala_h1,a_h0,a_min1,a_min0:

begin

u1:

key_debounceportmap(clk_key,setup_k,adjust_k,k_setup,k_adjust);

u2:

controlportmap(k_adjust,k_setup,clr,clk_control,mode);

u3:

div_freqportmap(clk,clr,clk_key,clk_control,clk_time,clk_change,ringtone1,ringtone2,clk_dis);

u4:

counterportmap(clk_time,clk_change,clr,mode,c_h1,c_h0,c_min1,c_min0,c_sec1,c_sec0);

u5:

ringportmap(c_h1,c_h0,c_min1,c_min0,c_sec1,c_sec0,clk_change,mode,ringtone1,ringtone2,ringtone,a_h1,a_h0,a_min1,a_min0);

u6:

displayportmap(c_h1,c_h0,c_min1,c_min0,c_sec1,c_sec0,a_h1,a_h0,a_min1,a_min0,clk_dis,mode,SCAN,LEDout);

endarchitecturebeh;

USEIEEE.STD_LOGIC_Arith.ALL;

USEIEEE.STD_LOGIC_Unsigned.ALL;

ENTITYkey_debounceIS

ENDkey_debounce;

ARCHITECTUREoneOFkey_debounceIS

SIGNALdout1,dout2,dout3,dout4,dout5,dout6:

STD_LOGIC;

k_setup<

=dout1ORdout2ORdout3;

k_adjust<

=dout4ORdout5ORdout6;

PROCESS(clk_key)

IFRISING_EDGE(clk_key)THEN

dout1<

=setup_k;

dout2<

=dout1;

dout3<

=dout2;

dout4<

=adjust_k;

dout5<

=dout4;

dout6<

=dout5;

ENDIF;

ENDone;

ENTITYdiv_freqIS

OUTSTD_LOGIC

ENDdiv_freq;

ARCHITECTUREdiv_freq_architectureOFdiv_freqIS

BEGIN

process(clk,clr)

variableQ:

std_logic_vector(11downto0);

begin

ifclr='

thenQ:

000000000000"

elsifclk'

eventandclk='

then

ifQ="

111111111111"

elseQ:

=Q+1;

endif;

clk_dis<

endprocess;

ENDdiv_freq_architecture;

entitycontrolis

outstd_logic_vector(3downto0)

endentitycontrol;

ARCHITECTUREcontrol_architectureOFcontrolIS

typestatesis(timing,changehour,changemin,setalarmh,setalarmm);

signalcurrent_state,next_state:

states;

reg:

process(clr,clk_control)

thencurrent_state<

=timing;

elsifclk_control'

eventandclk_control='

=next_state;

com:

process(current_state,k_setup)

casecurrent_stateis

whentiming=>

ifk_setup='

thennext_state<

=changehour;

elsenext_state<

whenchangehour=>

=changemin;

whenchangemin=>

=setalarmh;

whensetalarmh=>

=setalarmm;

whensetalarmm=>

endcase;

endprocess;

output:

process(current_state,k_adjust)

mode<

ifk_adjust='

thenmode<

elsemode<

ENDcontrol_architecture;

entitycounteris

outstd

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 制度规范

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1