西电电院EDA实验报告.docx
- 文档编号:16082450
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:15
- 大小:50.99KB
西电电院EDA实验报告.docx
《西电电院EDA实验报告.docx》由会员分享,可在线阅读,更多相关《西电电院EDA实验报告.docx(15页珍藏版)》请在冰点文库上搜索。
西电电院EDA实验报告
EDA实验报告
老师:
杨明磊
姓名:
同作者:
学号:
学院:
电子工程学院
实验一:
QUARTUSII软件使用及组合电路设计仿真
/、
一、实验目的:
学习QUARTUSII软件的使用,掌握软件工程的建立、VHDL源文件的设计和波形仿真等基本内容;
二、实验内容:
1.四选一多路选择器的设计
首先利用QuartusU完成4选1多路选择器的文本编辑输入和仿真测试等步
骤,给出仿真波形。
1.、功能及原理
原理:
数据选择器又称为多路转换器或多路开关,它是数字系统中常用的一种典型电路。
其主要功能是从多路数据中选择其中一路信号发送出去。
所以它是一个多输入、单输出的组合逻辑电路。
功能:
当选择控制端s10=00时,输出;s10=01时,输出;s10=10时,输出;s10=11时,输出。
2.、逻辑器件符号
3.、VHDL语言
4.、波形仿真
5.、仿真分析
由波形可知:
当s10=00时,y的波形与a相同;
当s10=01时,
当s10=10时,
当s10=11时,
y的波形与b相同;y的波形与c相同;y的波形与d相同;
与所要实现的功能相符,源程序正确。
2.七段译码器程序设计仿真
1.、功能及原理
7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA或CPLD中实现。
实验中的数码管为共阳极,接有低电平的段发亮。
例如当LED7S输出为"0010010"时,数码管的7个段:
g、f、e、d、c、b、a分别接0、0、1、0、0、1、0,于是数码管显示“5”。
2.、逻辑器件符号
3.、VHDL语言
4.、波形仿真
5.、仿真分析
由仿真波形可以直观看到,当A=“0000”时,led7s=1000000,数码管显示为0;A=“0001”时,Ied7s=1111001,数码管显示为1;....依此可验证波形仿真结果完全符合预期,源程序正确。
3.实验心得
在第一次上机实验中,我们通过对EDA设计软件QuartusU使用,初步学会了它的使用方法。
在实验中我们编写程序,编译,进行时序仿真以验证程序对错等。
在完成VHDL的编辑以后,进行编译,结果出现了很多错误,在细心的检查之下,最终将VHDL苗述修改成功并且通过了编译,在编译过程中我了解到很多在书本上没有理解的知识。
总的来说,通过上机实验,我激发了对EDA学习
的兴趣,也对这门课程有了更深的理解,对EDA设计软件QuarterU的使用
也更加熟练。
实验二计数器设计与显示
一、实验目的
(1)、熟悉利用QUARTUSII中的原理图输入法设计组合电路,掌握层次化设计的方法;
(2)、学习计数器设计、多层次设计方法和总线数据输入方式的仿真,并进行电路板下载演示验证。
二、实验内容
1、完成计数器设计(4位二进制加减可控计数器)
(1)、功能及原理
含有异步清零和计数使能的4位二进制加减可控计数器:
清零端reset:
低电平有效,异步清零,即reset=0时,无论时钟处于什么状态,输出立即置零。
使能端enable:
高电平有效,即enable=1时,计数器开始计数;enable=0时,计数器停止计数。
加减控制端updown当updown=0时,为减法计数器;当updown=1时,为加法计数器。
2.、逻辑器件符号
3.、VHDL语言
4.、波形仿真
updown=1时,为加法计数:
updown=0时,为减法计数:
5.、仿真分析
由以上两个波形很容易看出,enable=1时,计数器开始计数;reset=0时,计数器置零;updown=0时,减法计数;updown=1时,加法计数;co为进位端。
符合设计初衷。
2、50M分频器的设计
(1)、功能及原理
50M分频器的作用主要是控制后面的数码管显示的快慢。
即一个模为50M的
计数器,由时钟控制,分频器的基本原理与上述计数器基本相同。
分频器的进位端co用来控制加减计数器的时钟,将两个器件连接起来。
(2)、逻辑器件符号
(3)、VHDL语言
(4)、波形仿真
(5)、仿真分析
由波形仿真可以看出,enable=1时,由0开始计数,由于计数器模值较大,故只显示了一部分波形,计数范围由0到50M。
3、七段译码器程序设计
在实验一中已给出具体程序及仿真结果,不再赘述。
4、计数器显示译码设计与下载
以前面设计的七段译码器decl7s和计数器为底层元件,完成“计数器显示译码”的顶层文件设计。
计数器和译码器连接电路的顶层文件原理图如下:
原理图连接好之后就可以进行引脚的锁定,然后将整个程序下载到已经安装好的电路板上,即可进行仿真演示。
3.实验心得
实验三:
大作业设计
(循环彩灯)
一、实验目的:
综合应用数字电路的各种设计方法,完成一个较为复杂的电路设计;
2.设计目标
设计一个循环彩灯控制器,该控制器可控制10个发光二极管循环点亮、间隔点亮或者闪烁等花型。
要求至少设计三种以上花型,用按键控制花型之间的转换,并用数码管显示当前花型。
3.实验分工
陈硕负责代码搜查与编写,
王卓负责电路连接与引脚编写
4.设计流程
1、分频器的设计
所用50M分频器在实验二中已有具体说明,不再赘述。
2.彩灯控制器的设计
1.、功能及原理
清零端reset:
高电平有效,异步清零。
即当reset=1时,灯全灭。
使能端enable:
enable=1时,彩灯工作。
花样控制端s10:
s10取不同的值来控制花样的转换。
led10s:
控制10个led灯的亮灭。
(2)、逻辑器件符号
(3)、VHDL语言
3.七段译码器设计
(1)、功能原理原理在实验一中已详细说明,功能是显示花样序号
(2)、VHD语言
4.顶层文件原理图如下:
5.仿真波形
第一种波形:
(从左到右依次点亮,再从右到左依次点亮)
第二种波形:
(从左到右依次两两点亮,再从右到左依次两两点亮)
第三种波形:
(从内到外顺次展开点亮)
第四种波形:
(闪烁点亮)
6.仿真分析
由波形仿真结果可知,源程序正确。
5.实验心得
这次实验在参考资料的基础上,加以修改,使程序满足设计要求。
因为本次实验完全靠独立完成,在设计过程中出现了很多问题,编译和波形仿真的过程中都不顺利,在和同学交流探讨的过程中,一一将这些问题解决,最终成功设计出了四种花型。
通过这次实验,我真正体会到了EDA这门课的乐趣,提高了
自身的能力。
课后习题
ou
Ex1:
三态缓冲器
2选1多路选择器
sel
n1
tput
Ex2:
ENTITY
mux4
IS
PORT
(A
B,
C,
D:
INBit
S
INBit_Vector
(3
DOWNTO0)
Y
:
OUTBit
)
END
mux4
7
I
n0
ARCHITECTURE
behav1
OF
mux4
IS
BEGIN
mux4_p1:
PROCESS(A
,B,
C,D
,S
)
BEGIN
IFS=
〃1110〃
THEN
Y<=
A
?
ELSIFS
=〃1101〃
THEN
Y<=
B
?
ELSIFS
=〃1011〃
THEN
Y<=
C
?
ELSES
="0111"
THEN
Y<=
D
?
ELSE
Y
<=
'1'
?
END
IF
?
END
PROCESS
mux4_p1
?
END
behav1
?
ARCHITECTURE
behav2
OF
mux4
IS
BEGIN
Y<=
AWHEN
S=
1110
ELSE
B
WHEN
S
=
1101
ELSE
C
WHEN
S
=
1011
ELSE
D
M»
WHEN
S
=
"0111"
ELSE
'1'
END
behav2
?
?
ARCHITECTURE
behav3
OF
mux4
IS
BEGIN
mux4_p2:
PROCESS(A,
B,
C,D
S)
BEGIN
CASE
S
IS
WHEN
〃1110〃
=>
Y
<=
A
?
WHEN
〃1101〃
=>
Y
<=
B
?
WHEN
〃1011〃
=>
Y
<=
C
?
WHEN
"0111"
=>
Y
<=
D
?
WHEN
OTHERS=>
Y
<=
"1"
?
END
CASE
?
END
PROCESS
mux4_p2
?
ENDbehav3;
Ex3:
libraryieee;
usemuxkis
port(a1,a2,a3:
instd_logic;--待选择变量
temp:
bufferstd_logic;--中间信号s1,s0:
instd_logic;--控制端output:
outstd_logic);--输出结果endmuxk;
architecturepr1ofmuxkis
begin
begin
--process2
使用case语句
cases0is
when'0'=>temp<=a2;
when'1'=>temp<=a3;endcase;
endprocess;
process(a1,temp,s1)begin
cases1is
when'0'=>output<=a1;
when'1'=>output<=temp;endcase;
endprocess;
endpr1;
Ex4:
LIBRARYIEEE;
USEMULTIIS
PORT(CL:
INSTD_LOGIC;--输入选择信号
CLK0:
INSTD_LOGIC;--输入信号
OUT1:
OUTSTD_LOGIC);--输出端
ENDENTITY;
ARCHITECTUREONEOFMULTIISSIGNALQ:
STD_LOGIC;
BEGIN
PR01:
PROCESS(CLK0)
BEGIN
IFCLK‘EVENTANDCLK='1'
THENQ<=NOT(CLORQ);ELSE
ENDIF;
ENDPROCESS;
PR02:
PROCESS(CLK0)
BEGIN
OUT1<=Q;
ENDPROCESS;
ENDARCHITECTUREONE;
ENDPROCESS;
Ex5:
libraryieee;useh_subisport(x,y:
instd_logic;diff,s_out:
outstd_logic);
endh_sub;architectureoneofh_subisbegindiff<=xxory;s_out<=(notx)andy;endone;libraryieee;useor_2isport(a,b:
instd_logic;
q:
outstd_logic);
endor_2;architectureoneofor_2isbeginq<=aorb;
endone;libraryieee;usef_subisport(x,y,sub_in:
instd_logic;diff,s_out:
outstd_logic);
endf_sub;architectureoneoff_subiscomponenth_subport(x,y:
instd_logic;
diff,s_out:
outstd_logic);endcomponent;componentor_2port(a,b:
instd_logic;
q:
outstd_logic);endcomponent;signale,f,g:
std_logic;beginh_suber1:
h_subportmap(x=>x,y=>y,diff=>e,s_out=>f);h_suber2:
h_subportmap(x=>e,y=>sub_in,diff=>diff,s_out=>g);or21:
or_2portmap(a=>g,b=>f,q=>s_out);
endone;libraryieee;usef_sub8isport(x,y:
instd_logic_vector(7downto0);
sub_in:
instd_logic;diff:
outstd_logic_vector(7downto0);
s_out:
outstd_logic);
endf_sub8;architectureoneoff_sub8iscomponentf_sub
port(x,y,sub_in:
instd_logic;
diff,s_out:
outstd_logic);
endcomponent;
signale:
std_logic_vector(6downto0);
beginh_suber1:
f_subportmap(x=>x(0),y=>y(0),sub_in=>sub_in,diff=>diff(0),s_out=>e(0));h_suber2:
f_subport
map(x=>x
(1),y=>y
(1),sub_in=>e(0),diff=>diff
(1),s_out=>e
(1));h_suber3:
f_subport
map(x=>x
(2),y=>y
(2),sub_in=>e
(1),diff=>diff
(2),s_out=>e
(2));h_suber4:
f_subport
map(x=>x(3),y=>y(3),sub_in=>e
(2),diff=>diff(3),s_out=>e(3));h_suber5:
f_subport
map(x=>x(4),y=>y(4),sub_in=>e(3),diff=>diff(4),s_out=>e(4));h_suber6:
f_subport
map(x=>x(5),y=>y(5),sub_in=>e(4),diff=>diff(5),s_out=>e(5));h_suber7:
f_subport
map(x=>x(6),y=>y(6),sub_in=>e(5),diff=>diff(6),s_out=>e(6));h_suber8:
f_subport
map(x=>x(7),y=>y(7),sub_in=>e(6),diff=>diff(7),s_out=>s_out);endone;
libraryieee;
usef_sub81is
port(x,y:
instd_logic_vector(7downto0);
sub_in:
instd_logic;
diff:
outstd_logic_vector(7downto0);s_out:
outstd_logic);
endf_sub81;
architectureoneoff_sub81is
componentf_subport(x,y,sub_in:
instd_logic;
diff,s_out:
outstd_logic);
endcomponent;
signale:
std_logic_vector(8downto0);
begine(0)<=sub_in;s_out<=e(8);
q1:
foriin0to7generateh_suber1:
f_subportmap(x=>x(i),y=>y(i),sub_in=>e(i),diff=>diff(i),s_out=>e(i+1));endgenerateq1;
endone;
Ex6:
设计框图为:
开始
(1)程序:
LIBRARYIEEE;
USEUSEENTITYcnt16IS
PORT(EN,RST,UPD,CLK:
INSTD_LOGIC;0UT1:
OUTSTD_LOGIC_VECTOR(15DOWNTO0));
ENDcnt16;
ARCHITECTUREDhvOFcnt16IS
SIGNALQQ:
STD_LOGIC_VECTOR(1I5OWNTO0);
BEGIN
PROCESS(EN,RST,UPD)
BEGIN
IFRST='1'THEN
QQ<=(OTHERS=>'0');--有复位信号零
ELSIFEN='1'THEN--EN位高电平开始计数
IFCLK'EVENTANDCLK='1'THEN
IFUPD='1'THEN--当UDP为1力卩计数
QQv=QQ+1;
ELSE--当UDP不为1减计数
IFQQ>"0"THEN--当减到0时
QQ<=QQ-1;--给QC全1
ELSE
QQ<=(OTHERS=>'1');
ENDIF;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
OUT1<=QQ;
ENDbhv;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西电电院 EDA 实验 报告