PB10011数字逻辑实验报告.docx

上传人:b****1 文档编号:151307 上传时间:2023-04-28 格式:DOCX 页数:35 大小:824.53KB
下载 相关 举报
PB10011数字逻辑实验报告.docx_第1页
第1页 / 共35页
PB10011数字逻辑实验报告.docx_第2页
第2页 / 共35页
PB10011数字逻辑实验报告.docx_第3页
第3页 / 共35页
PB10011数字逻辑实验报告.docx_第4页
第4页 / 共35页
PB10011数字逻辑实验报告.docx_第5页
第5页 / 共35页
PB10011数字逻辑实验报告.docx_第6页
第6页 / 共35页
PB10011数字逻辑实验报告.docx_第7页
第7页 / 共35页
PB10011数字逻辑实验报告.docx_第8页
第8页 / 共35页
PB10011数字逻辑实验报告.docx_第9页
第9页 / 共35页
PB10011数字逻辑实验报告.docx_第10页
第10页 / 共35页
PB10011数字逻辑实验报告.docx_第11页
第11页 / 共35页
PB10011数字逻辑实验报告.docx_第12页
第12页 / 共35页
PB10011数字逻辑实验报告.docx_第13页
第13页 / 共35页
PB10011数字逻辑实验报告.docx_第14页
第14页 / 共35页
PB10011数字逻辑实验报告.docx_第15页
第15页 / 共35页
PB10011数字逻辑实验报告.docx_第16页
第16页 / 共35页
PB10011数字逻辑实验报告.docx_第17页
第17页 / 共35页
PB10011数字逻辑实验报告.docx_第18页
第18页 / 共35页
PB10011数字逻辑实验报告.docx_第19页
第19页 / 共35页
PB10011数字逻辑实验报告.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

PB10011数字逻辑实验报告.docx

《PB10011数字逻辑实验报告.docx》由会员分享,可在线阅读,更多相关《PB10011数字逻辑实验报告.docx(35页珍藏版)》请在冰点文库上搜索。

PB10011数字逻辑实验报告.docx

PB10011数字逻辑实验报告

 

数字电路实验

实验报告

 

USTC10级11系

 

目录

●预习实验十进制代码——8421码转换电路2

●实验一海明码校验逻辑实验4

●实验二十六进制译码计数器设计9

●实验三时序脉冲分频分配延迟与整形电路13

●实验四八位数据串入—并出逻辑设计实验17

●实验五8位程序计数器21

●实验六16位运算器实验23

●实验七2K×8存储器27

预习实验十进制代码——8421码转换电路

实验目的:

1.熟悉和了解实验环境;

2.了解芯片的工作特点和使用方法;

3.了解实验的电路调试方法。

实验要求:

学生自己根据逻辑图填写逻辑表达式

独立完成电路调试

验证输入与输出的关系

根据上图写下表达式:

B8=D9+D8

B4=D4+D5+D6+D7

B2=D2+D3+D6+D7

B1=D1+D3+D5+D7+D9

实验设计:

实际实验时是用实验台上的芯片实现的,现用maxplus设计仿真并采用verilog仿真。

8421码转换电路

Verilog语言描述:

moduletrans8421(D,B);

input[9:

1]D;

output[4:

1]B;

B[4]=D[9]+D[8];

B[3]=D[4]+D[5]+D[6]+D[7];

B[2]=D[2]+D[3]+D[6]+D[7];

B[1]=D[1]+D[3]+D[5]+D[7]+D[9];

endmodule

实验小结:

作为数字逻辑实验的开始,这个实验主要目的在于使得大家熟悉实验操作流程,建立基本的数字逻辑实验思维。

因为是第一次的预备试验,所以对软件的上手和实验思维的培养,为以后的实验打下了基础,指明了实验的流程和方法。

也让我对数字电路实验产生了浓厚的兴趣。

实验一海明码校验逻辑实验

实验目的:

(1)掌握总线信息出错时发现错误和纠正错误的原理

(2)掌握奇偶校验的原理

(3)掌握海明校验的编码原理以及设计和调试方法

实验器材:

Max-Plus-II软件

实验原理:

1.一种代码具有检错和校错能力的必要条件:

L-1=C+D;

解释:

L为码组中的最小码距,C为可校错的位数,D为可检错的位数,且D≥C。

(定义:

码字——表示一个数(或字符)的若干位二进制代码;

码元——码字中的每位二进制数;

码组——满足一定规则的码字的集合;

最小码距——一个码组中任何两个码字之间不同码元的最小个数)

L

1

2

3

4

5

D

0

1

2

1

3

2

4

3

2

C

0

0

0

1

0

1

0

1

2

2.8421海明校验码

8421海明校验码是由8421码加三位校验位组成。

设8421码为I4I3I2I1,三位校验码为P3P2P1,则8421海明码为下列七位代码:

位序

7

6

5

4

3

2

1

8421海明码

I4

I3

I2

P3

I1

P2

P1

其中:

P3=I4⊕I3⊕I2,P2=I4⊕I3⊕I1,P1=I4⊕I2⊕I1

完整的8421海明码为

N

7

6

5

4

3

2

1

0

0

0

0

0

0

0

0

1

0

0

0

0

1

1

1

2

0

0

1

1

0

0

1

3

0

0

1

1

1

1

0

4

0

1

0

1

0

1

0

5

0

1

0

1

1

0

1

6

0

1

1

0

0

1

1

7

0

1

1

0

1

0

0

8

1

0

0

1

0

1

1

9

1

0

0

1

1

0

0

校验过程:

接收到海明码后计算校验和:

S3=I4⊕I3⊕I2⊕P3,S2=I4⊕I3⊕I1⊕P2,S1=I4⊕I2⊕I1⊕P1

若S3S2S1=000,说明收到的代码是正确的,否则由S3S2S1指出出错位。

实验要求:

(1)设计信息位为4位的内存的海明校验逻辑电路,在读内存储器时,具有一位出错报错和纠正一位错误的功能。

(2)为了难其正确性,在读出信息的通路上,要串入造错用逻辑,位数自定。

实验设计:

1.使用maxplus设计仿真

海明码设计电路图

2.使用verilog描述仿真

源代码如下:

modulehaming(l,w,o,s);

input[4:

1]l,w;

output[4:

1]o;

output[3:

1]s;

reg[7:

0]y;

wire[4:

1]lw;

wire[3:

1]p;

//makeerrors

assignlw[1]=l[1]^w[1];

assignlw[2]=l[2]^w[2];

assignlw[3]=l[3]^w[3];

assignlw[4]=l[4]^w[4];

assignp[1]=l[1]^l[2]^l[4];

assignp[2]=l[1]^l[3]^l[4];

assignp[3]=l[2]^l[3]^l[4];

assigns[1]=p[1]^lw[1]^lw[2]^lw[4];

assigns[2]=p[2]^lw[1]^lw[3]^lw[4];

assigns[3]=p[3]^lw[2]^lw[3]^lw[4];

//3-8decorder

always@(s)

begin

case(s)

3'd0:

y=8'b00000001;

3'd1:

y=8'b00000010;

3'd2:

y=8'b00000100;

3'd3:

y=8'b00001000;

3'd4:

y=8'b00010000;

3'd5:

y=8'b00100000;

3'd6:

y=8'b01000000;

3'd7:

y=8'b10000000;

endcase

end

assigno[1]=y[3]^lw[1];

assigno[2]=y[5]^lw[2];

assigno[3]=y[6]^lw[3];

assigno[4]=y[7]^lw[4];

endmodule

仿真波形如下:

l[3:

0]是输入数据,

w[3:

0]是造错码,

oi[3:

0]是纠错后输出,

s[2:

0]是错误的位置

调试验证:

在muxplus2中进行画图仿真和verilog语言仿真的调试。

实验小结:

在实际实验中,这是第一次使用maxplus软件进行设计仿真的实验,作为仿真设计软件的入门实验,在实验中我们慢慢学会了如何调用器件、如何进行布线、编译、仿真。

这为熟悉软件的使用打下了基础。

实验二十六进制译码计数器设计(GAL型)

实验目的:

(1)掌握组合逻辑电路设计的方法

(2)对比用不同的器件,不同设计方法之间的比较

(3)掌握数码关与译码器的电位关系

实验器材:

计算机及相关软件,实验教学板,GAL16V8芯片,插线等。

实验原理:

一、数码管是一种子常用器件,当你显示十进制数时,是有很多电路供你选用,一般根据所使用的数码管是共阳极还是共阴极来选择对应芯片的.七段发光二极管(LED)数码显示器的字形与七段荧光数码管一样,外观为平面型.它的a,b,c,d,e,f,g段是用发光二极管显示的,并且分为共阳极和共阴极两种.共阳极是七个发光二极管的阳极接在一起,接到高电平(正电源)上,阴极接到译码器的输出端,哪个发光二极管的阴极为低电平,哪个发光二极管就亮,而阴极为高电平的发光二极管就不亮.共阴极是七个发光二极管的阴极接到一起,,接到低电平处,哪个发光二极管的阳极接高电平,哪个发光二极管就亮,否则就不亮.这种数码特点是电源电压为5V,与TTL电源一致共阳弄数码管内部结构。

二、LED数码管的内部显示如图所示:

三、GAL芯片

74LS47芯片可以实现数字显示的功能,且操作方便,只需要按照芯片说明文档接线即可,但由于74LS47芯片自身设计的现实方式不好,驱动显示的数字中A~E显示地不够直观,而GAL芯片编程十分自由,故重新自己定义数码管的显示。

实验设计:

1.设计16位数码显示。

设I3,I2,I1,I0分别表示输入的四位(从高位到低位),不同的组合代表不同的数字,要在LED上显示出来。

I3

I2

I1

I0

显示

a

b

c

d

e

f

g

0

0

0

0

0

1

1

1

1

1

1

0

0

0

0

1

1

0

1

1

0

0

0

0

0

0

1

0

2

1

1

0

1

1

0

1

0

0

1

1

3

1

1

1

1

0

0

1

0

1

0

0

4

0

1

1

0

0

1

1

0

1

0

1

5

1

0

1

1

0

1

1

0

1

1

0

6

1

0

1

1

1

1

1

0

1

1

1

7

1

1

1

0

0

0

0

1

0

0

0

8

1

1

1

1

1

1

1

1

0

0

1

9

1

1

1

1

0

1

1

1

0

1

0

A

1

1

1

0

1

1

1

1

0

1

1

B

0

0

1

1

1

1

1

1

1

0

0

C

1

0

0

1

1

1

0

1

1

0

1

D

0

1

1

1

1

0

1

1

1

1

0

E

1

0

0

1

1

1

1

1

1

1

1

F

1

0

0

0

1

1

1

(*开始设计时,认为高电平为灯管亮)

画出a,b,c,d,e,f,g各个的卡诺图,得出它与I3,I2,I1,I0的逻辑关系:

2、16进制计数器GAL代码

PLD16V8

counter16CHIP

lsp2011.11.2

LAB406V1.0

CLKNCNCNCNCNCNCNCNCGND

NCQ4Q3Q2Q1NCNCNCNCVCC

Q1:

=Q1*/Q3+Q1*/Q2+Q1*/Q4+/Q1*Q2*Q3*Q4

Q2:

=Q2*/Q3+Q2*/Q4+/Q2*Q3*Q4

Q3:

=/Q3*Q4+Q3*/Q4

Q4:

=/Q4

DESCRIPTION

3、7段码显示驱动GAL代码

PLD16V8

DECODER16CHIPS

lsp2011.11.2

LAB406V1.0

Q1Q2Q3Q4NCNCNCNCNCGND

NCABCDEFGNCVCC

G=/Q1*/Q2*/Q3+/Q1*Q2*Q3*Q4+Q1*Q2*/Q3*/Q4

F=/Q1*/Q2*Q4+/Q1*/Q2*Q3+/Q1*Q3*Q4+Q1*Q2*/Q3*Q4

E=/Q1*Q4+/Q2*/Q3*Q4+/Q1*Q2*/Q3

D=Q2*Q3*Q4+/Q1*/Q2*/Q3*Q4+/Q1*Q2*/Q3*/Q4+Q1*/Q2*Q3*/Q4

C=Q1*Q2*/Q4+Q1*Q2*Q3+/Q1*/Q2*Q3*/Q4

B=/Q1*Q2*/Q3*Q4+Q2*Q3*/Q4+Q1*/Q2*Q3*Q4+Q1*Q2*/Q3*/Q4+Q1*Q2*Q3*Q4

A=/Q1*/Q2*/Q3*Q4+/Q1*Q2*/Q3*/Q4+Q1*/Q2*Q3*Q4+Q1*Q2*/Q3*Q4

DESCRIPTION

4、用verilog描述,代码如下:

modulevdisp(clk,Q,a,b,c,d,e,f,g);

inputclk;

output[4:

1]Q;

outputa,b,c,d,e,f,g;

reg[4:

1]Q;

always@(posedgeclk)

begin

if(Q==4'b1111)Q<=0;

elseQ<=Q+1;

end

assigna=~Q[4]*~Q[3]*~Q[2]*Q[1]|~Q[4]*Q[3]*~Q[2]*~Q[1]|Q[4]*~Q[3]*Q[2]*Q[1]|Q[4]*Q[3]*~Q[2]*Q[1];

assignb=~Q[4]*Q[3]*~Q[2]*Q[1]|Q[3]*Q[2]*~Q[1]|Q[4]*~Q[3]*Q[2]*Q[1]|Q[4]*Q[3]*~Q[2]*~Q[1]|Q[4]*Q[3]*Q[2]*Q[1];

assignc=Q[4]*Q[3]*~Q[1]|Q[4]*Q[3]*Q[2]|~Q[4]*~Q[3]*Q[2]*~Q[1];

assignd=Q[3]*Q[2]*Q[1]|~Q[4]*~Q[3]*~Q[2]*Q[1]|~Q[4]*Q[3]*~Q[2]*~Q[1]|Q[4]*~Q[3]*Q[2]*~Q[1];

assigne=~Q[4]*Q[1]|~Q[3]*~Q[2]*Q[1]|~Q[4]*Q[3]*~Q[2];

assignf=~Q[4]*~Q[3]*Q[1]|~Q[4]*~Q[3]*Q[2]|~Q[4]*Q[2]*Q[1]|Q[4]*Q[3]*~Q[2]*Q[1];

assigng=~Q[4]*~Q[3]*~Q[2]|~Q[4]*Q[3]*Q[2]*Q[1]|Q[4]*Q[3]*~Q[2]*~Q[1];

endmodule

仿真波形为

在上述波形中,clk不断输入脉冲,Q是其十六进制计数后的输出。

abcdefg是7段位输出,表示数码显示部分。

实验小结:

(1)通过本次实验,我了解到了一些组合逻辑电路设计的方法.并且意识到TTL芯片与GAL芯片的一些差异.当电路较为复杂时,用GAL芯片比用TTL芯片好,它会使工程会变得简单许多。

(2)通过本次实验,我了解到原来程序可以烧进芯片中,对计算机硬件方面多了一些兴趣,意识到作为一个计算机系的学生,不仅仅是要知道编程等方面的软件知识,也应该了解计算机的硬件.

实验三时序脉冲分频分配延迟与整形电路

实验目的:

掌握同步时序电路和分频,延迟整形的原理和设计方法,进一步提高实践能力。

实验器材:

MaxPlusII软件

实验要求:

在仿真软件上设计电路进行仿真,要求得到如下图所示的波形

图3.1分频实验波形图

其中CP为时钟输入源,Q3为CP的五分频波形,Q4是在Q3基础上的二分频波形,Q4b是Q4的相反波形,Q5是Q3的四分频(Q4的二分频)。

其余类似。

实验要求:

(1)脉冲源为10兆,要求得到主脉冲1兆,即周期T=1us脉宽500ns(占空比1:

1)

(2)在主脉冲CP下产生单拍脉冲CPO

(3)在主脉冲CP下产生三个周期T1-T2,每个周期包括2个主脉冲的分频分配器,输出系统波为CP1-CP2

(4)有CP1得到延迟200ns,波宽为200ns的脉冲CP1

(5)由CP2得波宽为700ns的脉冲CP2.

实验设计:

·五分频设计

现态

次态

Q3n

Q2n

Q1n

Q3n+1

Q2n+1

Q1n+1

0

0

0

0

0

1

0

0

1

0

1

0

0

1

0

0

1

1

0

1

1

1

0

0

1

0

0

0

0

0

计算得

·四分频设计

采用系统提供的74LS74,不再自己设计。

·三周期设计

现态

次态

T3n

T2n

T1n

T3n+1

T2n+1

T1n+1

0

0

1

0

1

0

0

1

0

1

0

0

1

0

0

0

0

1

计算得

·脉冲组合

(*CP和L为逻辑设计图中给定的标记)

3.实际电路图

·五分频

 

·四分频

·三周期

 

·综合实验图

分频整形电路设计图

分频电路仿真波形

使用verilog描述仿真

源代码如下:

modulemyfifth_clk(clk_in,clk_out);

inputclk_in;

outputclk_out;

regclk_q1;

regclk_q2;

regclk_out;

always@(posedgeclk_in)

begin

clk_out<=clk_q1&clk_q2;

clk_q2<=clk_q1^clk_q2;

clk_q1<=~clk_q1&~clk_out;

end

endmodule

modulemyhalf_clk(clk_in,clk_out);

inputclk_in;

outputclk_out;

regclk_out;

always@(posedgeclk_in)

clk_out=~clk_out;

endmodule

modulemythree_t(clk_in,clk_out1,clk_out2,clk_out3);

inputclk_in;

outputclk_out1,clk_out2,clk_out3;

regclk_out1,clk_out2,clk_out3;

always@(posedgeclk_in)

begin

clk_out1<=~clk_out1&~clk_out2;

clk_out2<=clk_out1;

clk_out3<=clk_out2;

end

endmodule

moduledivide(clk,Q3,Q4,Q4n,Q5,Q6,Q7,Q8,CP1,CP2,CP3,CP4,CP5,CP6);

inputclk;

outputQ3,Q4,Q4n,Q5,Q6,Q7,Q8,CP1,CP2,CP3,CP4,CP5,CP6;

wireQ4n;

wireQ5n;

assignQ4n=~Q4;

assignQ5n=~Q5;

assignCP1=Q4n&Q5&Q6;

assignCP2=Q4n&Q5n&Q6;

assignCP3=Q4n&Q5&Q7;

assignCP4=Q4n&Q5n&Q7;

assignCP5=Q4n&Q5&Q8;

assignCP6=Q4n&Q5n&Q8;

myfifth_clkfifth_clk(clk,Q3);

myhalf_clkhalf_clk1(Q3,Q4);

myhalf_clkhalf_clk2(Q4,Q5);

mythree_tthree_t(Q5,Q6,Q7,Q8);

endmodule

仿真波形如下:

调试验证:

实验中每完成一个模块就可以仿真一下看得到的波形是否符合要求,如五分频、二分频等可以单独调试验证,以保证后续设计的正确。

实验小结:

本实验涉及模块化设计的理念,尤其在verilog描述语言中存在各模块的调用,通过这次实验,对触发器和计数器的工作原理和应用有了更好的掌握,对时钟概念的理解也更深了。

实验四八位数据串入—并出逻辑设计实验

实验目的:

掌握数据的串行输入与并行输出,从而进一步掌握时序电路及其在计算机中的应用,以培养和提高实践技能。

实验器材:

Max+PlusII软件

实验原理:

实验中可用74164串行接收信号,用74273并行输出;这是总体的设计思路。

接着使用使能控制信号(模拟控制器功能)控制全局信号的接受与输出,可分为,判断信号是否为启动或终止信号,何时进行判断,前者用简单的组合逻辑即可实现,后者使用计数器来实现(TTL芯片74161),最重要的是考虑如何实现由启动与终止信号来控制74273芯片的输出,具体实现参看原理图。

实验基本要求:

10000001作起始位

01111110作停止位

实验设计:

2.实际电路图

 

·数据判断部分

串入-并出仿真波形

在波形中,当检测到起始位10000001后,则将后面8位输入的数据并行输出,当检测到停止位01111110后停止并行输出。

使用verilog描述仿真

源代码如下:

moduleshift_register_8(clk1,A1,Q1);

inputclk1,A1;

output[7:

0]Q1;

reg[7:

0]Q1;

always@(posedgeclk1)

begin

Q1[7]=Q1[6];

Q1[6]=Q1[5];

Q1[5]=Q1[4];

Q1[4]=Q1[3];

Q1[3]=Q1[2];

Q1[2]=Q1[1];

Q1[1]=Q1[0];

Q1[0]=A1;

end

endmodule

modulecrbc(clk,A,Q);

inputclk,A;

output[7:

0]Q;

reg[2:

0]num;

reg[7:

0]q_check,Q;

regopen;

shift_register_8f1(clk,A,q_check);

always@(posedgeclk)

begin

if(q_check==8'b10000001)

open=1;

else

if(q_check==8'b01111110)

open=0;

end

always@(posedgeclk)

if(open)

begin

if(num==3'b111)

begin

Q=q_check;

num=3'b000;

end

else

num=num+1;

end

else

Q=0;

endmodule

仿真波形如下:

与上述仿真波形类似,clk控制计数,当A是串行输入,Q[7..0]是8位数据的并行输出。

调试验证:

调试分设计的不同阶段进行了几次,先是做出了8位串进并出,然后增加了起始位和停止位的的校验部分。

实验小结:

这次实验不同于前几次的实验.前几次实验都有教材的指导及提示.这次只是提出实验要求,根据实验要求去完成实验.通过本次实验,我熟悉了一个设计性实验的具体设计思想过程及方法.这次实验是在自己与同学们的讨论中完成的,主要是8位数据输入的控制和对输入的数据进行计数。

通过本次实验,我再一次熟悉了模块化思想并最终将各模块合理的衔接到一起的思想方法.更重要的是,通过本次实验,我懂得了人与人之间的交流和互助的重要性.在同学的帮助和提示下,我完成了本次实验.这增添了自己的信心.也培养了一

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

当前位置:首页 > 解决方案 > 学习计划

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

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