EDA实验报告四选一四位比较器加法器计数器巴克码发生器Word文档格式.docx
《EDA实验报告四选一四位比较器加法器计数器巴克码发生器Word文档格式.docx》由会员分享,可在线阅读,更多相关《EDA实验报告四选一四位比较器加法器计数器巴克码发生器Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
4选1数据选择器的原理图:
仿真波形图:
管脚分配:
实验2四位比较器
1.设计四位二进制码比较器,并在实验开发系统上验证。
2.学习层次化设计方法。
5.其它器件与材料若干
本实验实现两个4位二进制码的比较器,输入为两个4位二进制码和,输出为M(A=B),G(A>
B)和L(A<
B)(如图所示)。
用高低电平开关作为输入,发光二极管作为输出,具体管脚安排可根据试验系统的实际情况自行定义。
1.用硬件描述语言编写四位二进制码
比较器的源文件;
2.对设计进行仿真验证;
3.编程下载并在实验开发系统上进行
硬件验证。
四位比较器功能框图
四位比较器VHDL源文件:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitycomp4is
port(A:
instd_logic_vector(3downto0);
B:
M,G,L:
outstd_logic);
endcomp4;
architecturebehaveofcomp4is
begin
p1:
process(A,B)
begin
if(A>
B)thenG<
='
1'
;
M<
0'
L<
elsif(A<
elsif(A=B)thenG<
elseG<
endif;
endprocessp1;
endbehave;
试验3并行加法器设计
一、试验目的
1.设计一个4位加法器。
2.体会用VHDL进行逻辑描述的优点。
3,熟悉层次化设计方法。
二、试验仪器与器材
1.EDA开发软件一套
2.微机一台
3.试验开发系统一台
4.打印机一台
5.其他器材和材料若干
三、试验说明
a3
本试验实现一个4位二进制数加法器,其功能框图如图所示。
试验时用高低电平开关作为输入,用数码管作为输出(或用发光二极管),管脚锁定可根据试验系统自行安排。
adder4
a2
a1
a0
b3
b2
b1
b0
ci
s3
s2
s1
s0
co
全加器功能框图
1.用硬件描述语言编写4位二进制数全加器的源文件;
2.对设计文件进行编译;
3.仿真设计文件;
4.编程下载并进行试验验证。
五、试验结果
4位二进制全加器的源文件:
entityadd4is
port(a:
b:
ci:
instd_logic;
s:
outstd_logic_vector(3downto0);
co:
endadd4;
architecturebehaveofadd4is
signalaa,bb,sum:
std_logic_vector(4downto0);
aa<
&
a;
bb<
b;
sum<
=aa+bb+ci;
s<
=sum(3downto0);
co<
=sum(4);
实验4计数器设计
计数器是实际中最为常用的时序电路模块之一,本实验的主要目的是掌握使用HDL描述计数器类型模块的基本方法。
1.EDA开发软件一套
2.微机一台
3.实验开发系统一台
4.打印机一台
5.其他器材与材料若干
计数器是数字电路系统中最重要的功能模块之一,设计时可以采用原理图或HDL语言完成。
下载验证时的计数时钟可选连续或单脉冲,并用数码管显示计数值。
1.设计一个带有计数允许输入端、复位输入端和进位输入端的十进制计数器。
2.编制仿真测试文件,并进行功能仿真。
3.下载并验证计数器功能。
4.为上述设计建立元件符号。
5.在上述基础上分别设计按8421BCD码和二进制计数的100进制同步计数器。
十进制计数器程序:
libraryieee;
entitycounter10is
port(
reset,clk,en:
inbit;
co:
outbit;
q:
outstd_logic_vector(0to3)
);
endentitycounter10;
architecturear_counter10ofcounter10is
signalcq:
std_logic_vector(0to3);
p1:
process(clk,en,reset)
variablecnt:
integerrange0to10:
=0;
if(reset='
)then
if(clk'
eventandclk='
if(en='
)then
cnt:
=cnt+1;
cq<
=cq+1;
if(cnt=10)then
co<
cnt:
=0;
cq<
="
0000"
else
endif;
endif;
else
cnt:
cq<
endif;
q<
=cq;
endprocessp1;
endarchitecturear_counter10;
4_7译码器程序:
entityBCDis
port(a:
b:
outstd_logic_vector(6downto0));
endBCD;
architecturertofBCDis
signalindata:
std_logic_vector(3downto0);
indata<
=a;
process(indata)
begin
caseindatais
when"
=>
b<
1000000"
0001"
1111001"
0010"
0100100"
0011"
0110000"
0100"
0011001"
0101"
0010010"
0110"
0000010"
0111"
1111000"
1000"
0000000"
1001"
0010000"
whenothers=>
1111111"
endcase;
endprocess;
endrt;
BCD引脚分配
BCD仿真波形
分频器程序
entityfenpinqiis
clk:
oclk:
outbit
endentityfenpinqi;
architecturear_fpqoffenpinqiis
signalinclk:
bit;
signalnumber:
integerrange0to30000000:
p0:
process(clk)
if(clk'
)then
if(number=24999999)then
number<
inclk<
=notinclk;
else
number<
=number+1;
inclk<
=inclk;
endif;
oclk<
endprocessp0;
endarchitecturear_fpq;
10进制计数器原理图
100进制计数器原理图:
100进制计数器的另一种做法:
100进制计数器程序:
useieee.std_logic