elseL<=’1’;G<=’0’;M<=’0’;
endif;
endprocessp1;
endbehave;
仿真波形图:
管脚分配:
试验3并行加法器设计
一、试验目的
1.设计一个4位加法器。
2.体会用VHDL进行逻辑描述的优点。
3,熟悉层次化设计方法。
二、试验仪器与器材
1.EDA开发软件一套
2.微机一台
3.试验开发系统一台
4.打印机一台
5.其他器材和材料若干
三、试验说明
本试验实现一个4位二进制数加法器,其功能框图如图所示。
试验时用高低电平开关作为输入,用数码管作为输出(或用发光二极管),管脚锁定可根据试验系统自行安排。
四、实验要求
1.用硬件描述语言编写4位二进制数全加器的源文件;
2.对设计文件进行编译;
3.仿真设计文件;
4.编程下载并进行试验验证。
五、试验结果
4位二进制全加器的源文件:
libraryieee;
useieee.std_logic_1164.all;
entityadder4is
port(a,b:
instd_logic_vector(3downto0);
cin:
instd_logic_vector(3downto0);
sum:
outstd_logic_vector(3downto0);
count:
outstd_logic);
endadder4;
architecturebehavioralofadder4is
begin
p1:
process(a,b,cin)
variablevsum:
std_logic_vector(3downto0);
variablecarry:
std_logic;
begin
carry:
=cin;
foriin0to3loop
vsum(i):
=(a(i)xorb(i))xorcarry;
carry:
=(a(i)andb(i))or(carryand(a(i)orb(i)));
endloop;
sum<=vsum;
count<=carry;
endprocessp1;
endbehavioral;
仿真波形图:
管脚分配:
实验4计数器设计
一、实验目的
计数器是实际中最为常用的时序电路模块之一,本实验的主要目的是掌握使用HDL描述计数器类型模块的基本方法。
二、实验仪器与器材
1.EDA开发软件一套
2.微机一台
3.实验开发系统一台
4.打印机一台
5.其他器材与材料若干
三、实验说明
计数器是数字电路系统中最重要的功能模块之一,设计时可以采用原理图或HDL语言完成。
下载验证时的计数时钟可选连续或单脉冲,并用数码管显示计数值。
四、实验要求
1.设计一个带有计数允许输入端、复位输入端和进位输入端的十进制计数器。
2.编制仿真测试文件,并进行功能仿真。
3.下载并验证计数器功能。
4.为上述设计建立元件符号。
5.在上述基础上分别设计按8421BCD码和二进制计数的100进制同步计数器。
五、实验结果
十进制计数器程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycounter10is
port(en,reset,clk:
instd_logic;
q:
bufferstd_logic_vector(3downto0);
co:
outstd_logic);
endcounter10;
architecturebehavofcounter10is
begin
process(clk,en)
begin
ifclk'eventandclk='1'then
ifreset='1'thenq<="0000";
elsifen='1'then
ifq<"1001"thenq<=q+'1';
elseq<="0000";
endif;
endif;
endif;
endprocess;
co<='1'whenq="1001"else'0';
endbehav;
仿真波形图:
管脚分配:
4_7译码器程序:
libraryieee;
useieee.std_logic_1164.all;
entitydecoder4_7is
port(insign:
instd_logic_vector(3downto0);
outsign:
outstd_logic_vector(6downto0));
enddecoder4_7;
architecturebehaveofdecoder4_7is
begin
process(insign)
begin
caseinsignis
when"0000"=>outsign<="0000001";
when"0001"=>outsign<="1001111";
when"0010"=>outsign<="0010010";
when"0011"=>outsign<="0000110";
when"0100"=>outsign<="1001100";
when"0101"=>outsign<="0100100";
when"0110"=>outsign<="1100000";
when"0111"=>outsign<="0001111";
when"1000"=>outsign<="0000000";
when"1001"=>outsign<="0001100";
whenOTHERS=>outsign<="1111111";
endcase;
endprocess;
endbehave;
100进制计数器原理图:
仿真波形图:
管脚分配:
实验5巴克码发生器
一、实验目的
1.实现一个在通信领域中经常使用的巴克码发生器。
2.掌握用大规模可编程逻辑器件实现时序电路的方法。
二、实验仪器与器材
1.EDA开发软件一套
2.微机一台
3.实验开发系统一台
4.打印机一台
5.其它器件与材料若干
三、实验说明
巴克码发生器在数据通信、雷达和遥控领域有相当广泛的应用。
它能自动产生周期性的序列码。
本实验要求产生的序列码信号为(1110010),可以用寄存器或同步时序电路实现。
为了能够通过实验开发系统验证试验结果,可以使用两个输入端,其中一个输出端同时输出巴克码,另一个输出端输出节拍。
巴克码发生器的功能框图如图所示。
四、实验要求
1.写出全部设计文件。
2.编写测试向量,进行功能仿真。
3.下载并用实验板验证。
五、实验结果
巴克码发生器程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitybackis
port(clk,reset:
instd_logic;
dout1,dout2:
outstd_logic);
endback;
architecturebehaveofbackis
signalcount7:
integerrange0to6;
begin
process(clk,reset)
begin
ifreset='1'thencount7<=0;
elsifclk'eventandclk='1'then
ifcount7<6then
count7<=count7+1;
elsecount7<=0;
endif;
endif;
dout2<=clk;
endprocess;
process(count7)
begin
casecount7is
when0=>dout1<='1';
when1=>dout1<='1';
when2=>dout1<='1';
when3=>dout1<='0';
when4=>dout1<='0';
when5=>dout1<='1';
when6=>dout1<='0';
whenothers=>dout1<='0';
endcase;
endprocess;
endbehave;
仿真波形图:
管脚分配: