eda实习报告文档格式.docx
- 文档编号:19712730
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:25
- 大小:126.06KB
eda实习报告文档格式.docx
《eda实习报告文档格式.docx》由会员分享,可在线阅读,更多相关《eda实习报告文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- eda 实习 报告