大二下数电实验报告.docx

上传人:b****3 文档编号:6955635 上传时间:2023-05-10 格式:DOCX 页数:19 大小:478.74KB
下载 相关 举报
大二下数电实验报告.docx_第1页
第1页 / 共19页
大二下数电实验报告.docx_第2页
第2页 / 共19页
大二下数电实验报告.docx_第3页
第3页 / 共19页
大二下数电实验报告.docx_第4页
第4页 / 共19页
大二下数电实验报告.docx_第5页
第5页 / 共19页
大二下数电实验报告.docx_第6页
第6页 / 共19页
大二下数电实验报告.docx_第7页
第7页 / 共19页
大二下数电实验报告.docx_第8页
第8页 / 共19页
大二下数电实验报告.docx_第9页
第9页 / 共19页
大二下数电实验报告.docx_第10页
第10页 / 共19页
大二下数电实验报告.docx_第11页
第11页 / 共19页
大二下数电实验报告.docx_第12页
第12页 / 共19页
大二下数电实验报告.docx_第13页
第13页 / 共19页
大二下数电实验报告.docx_第14页
第14页 / 共19页
大二下数电实验报告.docx_第15页
第15页 / 共19页
大二下数电实验报告.docx_第16页
第16页 / 共19页
大二下数电实验报告.docx_第17页
第17页 / 共19页
大二下数电实验报告.docx_第18页
第18页 / 共19页
大二下数电实验报告.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

大二下数电实验报告.docx

《大二下数电实验报告.docx》由会员分享,可在线阅读,更多相关《大二下数电实验报告.docx(19页珍藏版)》请在冰点文库上搜索。

大二下数电实验报告.docx

大二下数电实验报告

数字电路与逻辑设计实验

 

班级:

___________

学号:

___________

姓名:

______________

日期:

___2015/5/30_________

一、实验目的

(1)熟悉QuartusII原理图输入法进行电路设计和仿真

(2)掌握QuartusII图形模块单元的生成与调用

(3)熟悉实验板的使用

(4)熟悉用VHDL语言设计组合逻辑电路的方法

(5)熟悉用QuartusII文本输入法进行电路设计

(6)熟悉不同的编码及其之间的转换

(7)熟悉用VHDL语言设计时序逻辑电路的方法

(8)熟悉计数器、分频器的设计方法

(9)掌握多个数码管动态扫描显示的原理及设计方法

二、实验器材

(1)计算机

(2)直流稳压电源

(3)数字系统与逻辑设计实验开发板

三、实验名称与要求

实验一QuartusII原理图输入法设计与实现

任务要求:

(1)用逻辑门设计一个半加器,仿真验证其功能,并生成新的半加器图形模块单元;

(2)实验内容

(1)中生成的半加器模块和逻辑门设计一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号;

(3)用74LS138译码器逻辑门设计实现函数

,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。

实验内容

1、半加器

连接图:

2、全加器

连接图:

仿真图:

仿真分析:

实验用生成的半加器模块单元设计一个全加器,有三个输入,ai,bi,ci-1分别为两加数以及上一级的进位输出。

有两个输出:

si为加数之和,ci为进位输出,实现了一位全加器功能。

3、3线-8线译码器74LS138和逻辑门设计实现函数F

连接图:

仿真图:

 

实验二用VHDL设计与实现组合逻辑电路

任务要求:

(1)用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,7段数码管显示输出信号;

(2)用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号;

(3)用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个“1”时输出为“1”,否则输出为“0”,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。

实验内容

1、数码管译码器

代码:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYPR1_CL2IS

PORT(

a:

INSTD_LOGIC_VECTOR(3downto0);

b:

OUTSTD_LOGIC_VECTOR(6downto0)

);

endPR1_CL2;

ARCHITECTUREPR1_CL2_archOFPR1_CL2IS

BEGIN

PROCESS(a)

BEGIN

CASEaIS

WHEN"0000"=>b<="1111110";--0

WHEN"0001"=>b<="0110000";--1

WHEN"0010"=>b<="1101101";--2

WHEN"0011"=>b<="1111001";--3

WHEN"0100"=>b<="0110011";--4

WHEN"0101"=>b<="1011011";--5

WHEN"0110"=>b<="1011111";--6

WHEN"0111"=>b<="1110000";--7

WHEN"1000"=>b<="1111111";--8

WHEN"1001"=>b<="1111011";--9

WHENOTHERS=>b<="0000000";

ENDCASE;

ENDPROCESS;

END;

仿真图:

 

2、8421码——余3码

代码:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYPR2_CL2IS

PORT(A:

INSTD_LOGIC_VECTOR(3DOWNTO0);

B:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDPR2_CL2;

ARCHITECTUREbehaveOFPR2_CL2IS

BEGIN

PROCESS(A)

BEGIN

CASEAIS

WHEN"0000"=>B<="0011";

WHEN"0001"=>B<="0100";

WHEN"0010"=>B<="0101";

WHEN"0011"=>B<="0110";

WHEN"0100"=>b<="0111";

WHEN"0101"=>b<="1000";

WHEN"0110"=>b<="1001";

WHEN"0111"=>b<="1010";

WHEN"1000"=>b<="1011";

WHEN"1001"=>b<="1100";

WHENOTHERS=>B<="0000";

ENDCASE;

ENDPROCESS;

ENDbehave;

仿真图:

3、奇偶校验器

代码:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYPR3_CL2IS

PORT(

a:

INSTD_LOGIC_VECTOR(3downto0);

b:

OUTSTD_LOGIC_VECTOR(0downto0)

);

endPR3_CL2;

ARCHITECTUREPR3_CL2_archOFPR3_CL2IS

BEGIN

PROCESS(a)

BEGIN

CASEaIS

WHEN"0000"=>b<="0";

WHEN"0001"=>b<="1";

WHEN"0010"=>b<="1";

WHEN"0011"=>b<="0";

WHEN"0100"=>b<="1";

WHEN"0101"=>b<="0";

WHEN"0110"=>b<="0";

WHEN"0111"=>b<="1";

WHEN"1000"=>b<="1";

WHEN"1001"=>b<="0";

WHEN"1010"=>b<="0";

WHEN"1011"=>b<="1";

WHEN"1100"=>b<="0";

WHEN"1101"=>b<="1";

WHEN"1110"=>b<="1";

WHEN"1111"=>b<="0";

ENDCASE;

ENDPROCESS;

END;

仿真图:

 

实验三用VHDL设计与实现时序逻辑电路

任务要求:

(1)用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号;

(2)用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器,仿真验证其功能;

(3)将

(1)

(2)和数码管译码器三个电路进行连接,并下载到实验板显示计数结果。

实验内容

1、带异步复位的8421码十进制计数器

代码:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcount10IS

PORT(

clk,clear:

INSTD_LOGIC;

q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDcount10;

ARCHITECTUREbehaveOFcount10IS

SIGNALq_temp:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(clk,clear)

BEGIN

IFclear='1'THEN

q_temp<="0000";

ELSIF(clk'eventANDclk='1')THEN

IFq_temp="1001"THEN

q_temp<="0000";

ELSEq_temp<=q_temp+1;

ENDIF;

ENDIF;

ENDPROCESS;

q<=q_temp;

ENDbehave;

仿真图:

2、分频器

代码:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYdiv_12IS

PORT(

clk,clear:

INSTD_LOGIC;

clk_out:

OUTSTD_LOGIC);

ENDdiv_12;

ARCHITECTUREbehaveOFdiv_12IS

SIGNALtemp:

INTEGERRANGE0TO5;

SIGNALclktemp:

STD_LOGIC;

BEGIN

PROCESS(clk,clear)

BEGIN

IFclear='1'THEN

temp<=0;

ELSIF(clk'eventANDclk='1')THEN

IFtemp=5THEN

temp<=0;clktemp<=notclktemp;

ELSEtemp<=temp+1;

ENDIF;

ENDIF;

ENDPROCESS;

clk_out<=clktemp;

ENDbehave;

仿真图:

3、将1、2和数码管译码器3个电路进行链接,并下载到实验板显示计数结果

代码:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYlianjie1IS

PORT

CLK,CLEAR:

INSTD_LOGIC;

OP:

OUTSTD_LOGIC_VECTOR(6DOWNTO0);

CAT:

OUTSTD_LOGIC_VECTOR(5DOWNTO0));

ENDlianjie1;

ARCHITECTUREbehaveOFlianjie1IS

COMPONENTdiv_12

PORT(

clk,clear:

INSTD_LOGIC;

clk_out:

OUTSTD_LOGIC);

endcomponent;

COMPONENTcount10

PORT(

clk,clear:

INSTD_LOGIC;

q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

endcomponent;

COMPONENTPR1_CL2

PORT(

a:

INSTD_LOGIC_VECTOR(3downto0);

C:

OUTSTD_LOGIC_VECTOR(5DOWNTO0);

b:

OUTSTD_LOGIC_VECTOR(6downto0)

);

endcomponent;

SIGNALclktmp:

STD_LOGIC;

SIGNALclktemp:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

u1:

div_12

PORTMAP(clk=>CLK,clear=>CLEAR,clk_out=>clktmp);

u2:

count10

PORTMAP(clk=>clktmp,clear=>CLEAR,q=>clktemp);

u3:

PR1_CL2

PORTMAP(a=>clktemp,b=>OP,c=>CAT);

ENDbehave;

端口说明及连接图:

先分频器加外部时钟输入,然后其输出链接到异步复位10进制计数器作为时钟输入,再链接到数码管译码器的输入端,最后通过数码管译码器输出显示。

12分频器和异步复位10进制计数器的clear端高电平有效。

仿真图:

仿真分析:

每输入12个脉冲时计数器便计数一次,计数器为0-9循环计数,再根据0-9数字对应的数码管abcdefg字段输出b[6]…b[0],0对应的是1111110,1对应的是0110000,2对应的是1101101,3对应的是1111001,4对应的是0110011,5对应的是1011011,6对应的是1011111,7对应的是1110000,8对应的是1111111,9对应的是1111011.c[5]…c[0]对应6个数码管,由于过程中只需一个数码管显示且为共阴极,故设置c[5]为0,其余均为1.clear为异步复位信号,当clear为1时,计数器便回到0,重新开始计数,此时数码管也输出相应的“1111110”.

实验四用VHDL设计与实现相关电路

任务要求:

(1)用VHDL语言设计并实现六个数码管滚动显示电路

I、循环左滚动,始终点亮6个数码管,左出右进。

状态为:

012345—123450—234501—345012—450123—501234—012345—……

代码:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityPR2_CL4is

port(clear,clk_in:

instd_logic;

cat:

outstd_logic_vector(5downto0);

a_out:

outstd_logic_vector(6downto0));

end;

architecturearchofPR2_CL4is

signaltmp:

std_logic_vector(6downto0);

signalcount:

integerrange0to149;

signalcat_tmp:

std_logic_vector(5downto0);

begin

process(clk_in,clear)

begin

IF(clear=’1’)THENcat_tmp<=”111111”;

elsif(clk_in'eventandclk_in='1')then

ifcount=24then

cat_tmp<="011111";

count<=count+1;

elsifcount=49then

cat_tmp<="101111";

count<=count+1;

elsifcount=74then

cat_tmp<="110111";

count<=count+1;

elsifcount=99then

cat_tmp<="111011";

count<=count+1;

elsifcount=124then

cat_tmp<="111101";

count<=count+1;

elsifcount=149then

cat_tmp<="111110";

count<=0;

elsecount<=count+1;

endif;

endif;

endprocess;

process(cat_tmp)

begin

casecat_tmpis

when"011111"=>tmp<="1111110";

when"101111"=>tmp<="0110000";

when"110111"=>tmp<="1101101";

when"111011"=>tmp<="1111001";

when"111101"=>tmp<="0110011";

when"111110"=>tmp<="1011011";

whenothers=>tmp<="0000000";

endcase;

endprocess;

cat<=cat_tmp;

a_out<=tmp;

END;

分频器代码

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityPR2_CL3IS

generic(n:

integer:

=5);

port(clk,clr:

instd_logic;clkout:

outstd_logic);

endPR2_CL3;

architecturessofPR2_CL3IS

signaltemp:

integerrange0ton;

signalclktemp:

std_logic;

begin

process(clr,clk)

begin

if(clk'last_value='0'andclk'eventandclk='1')then

if(clr='1')then

temp<=0;

elsif(temp=n)then

temp<=0;clktemp<=notclktemp;

else

temp<=temp+1;

endif;

endif;

endprocess;

clkout<=clktemp;

endss;

端口连接图

先分频器加外部时钟输入,然后其输出链接到数码管译码器作为时钟输入,最后通过数码管译码器输出显示。

中间设置显示的数码管cat[5]…cat[0],控制器循环显示,再设置每个数码管显示数字a_out[6]…a_out[0],最终完成输出。

分频器的clear端高电平有效。

仿真结果:

仿真分析:

仿真时设置的是240分频,每输入240*6个脉冲,cat便在“011111”,“101111”,“110111”,“111011”,“111101”,“1111101”间循环一次,与此对应每个数码管输出也在123450,234501,345012,450123,501234,012345之间不断循环。

当clear为1是,cat输出为“111111”,a_out输出为“0000000”,对应实验板上便是数码管无任何输出。

三、故障分析

前两次实验都非常基础,书上也有详细的操作步骤,因此很容易完成。

第三次以及第四次实验需要设置复位信号clear,开始时按照之前设置其为周期16us的脉冲,发现扰乱实验,后学习了利用设置其占空比来有效处理这个信号。

实验三中先按照实验要求设置的12分频,下载到板子上测试时发现正常只显示8,后来了解到实验板是50M分频,在此处做了修改;而实验四中再次利用了50M分频,经老师指出扫描速度过慢。

经过两次实验学会了根据实际需要设置合适的分频。

四、实验总结

这学期是第一次接触到数电实验,感觉和模电实验有很大的不同,数电实验需要我们操作的是代码和连接图,灵活性非常高,而且误差较小。

相比电路的结构,我们更需要了解电路的功能。

代码也可以不断改进,寻找最优化的代码。

由于本学期实验都比较简单,所以我们忽视了冒险,经常会出现毛刺,但对我们的电路几乎没有影响所以我们没有处理,下学期做综合实验的时候应该考虑冒险带来的危害并寻找相应的措施消除。

 

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2