电路与模拟电子技术实验报告

电路与模拟电子技术实验报告 本文关键词:电子技术,电路,模拟,实验,报告

电路与模拟电子技术实验报告 本文简介:肇庆学院计算机学院软件学院电路与模拟电子技术实验报告专业计算机科学与技术班级11科技3班学号201124132135学生姓名黄斯博黄斯博指导教师连连晋晋平平完成时间2012年5月30日完成情况完成情况成绩成绩实验一实验一实验二实验二实验三实验三实验四实验四指导教师签名:日期:_I目录目录实验一实验一

电路与模拟电子技术实验报告 本文内容:

肇庆学院

计算机学院

软件学院

电路与模拟电子技术

实验报告

计算机科学与技术

11

科技

3

201124132135

学生姓名

黄斯博黄斯博

指导教师

连连晋晋平平

完成时间

2012

5

30

完成情况完成情况成绩成绩

实验一实验一

实验二实验二

实验三实验三

实验四实验四

指导教师签名:

期:_

I

目录目录

实验一实验一

EWB

仿真软件仿真软件.1

1

实验目的.1

2

实验设备.1

3

实验内容、方法、步骤.1

4

实验体会.1

实验二实验二

基尔霍夫定律基尔霍夫定律

.2

1

实验目的.2

2

实验原理.2

3

实验设备.2

4

实验内容.2

5

预习与思考.3

6

实验体会.3

实验三实验三

基本放大电路基本放大电路

.4

1.1

实验目的4

1.2

实验设备与器件4

1.3

实验内容4

实验四实验四

集成运算电路集成运算电路

.7

3.1

实验目的7

3.2

实验设备与器件7

3.3

实验内容7

1

实验一实验一

EWB

仿真软件仿真软件

1

实验目的实验目的

(1)

学会用

EWB

仿真软的使用方法。

(2)

学会用

EWB

仿真软件验证电路定律。

2

实验设备实验设备

(1)

计算机系统。

(2)

EWB

仿真软件。

3

实验内容、方法、步骤实验内容、方法、步骤

(1)熟悉

EWB

的使用方法及操作步骤;

(2)使用

EWB

模拟连接电路;

(3)创建电路、使用各种虚拟仪器,完成电路连接。

4

实验体会实验体会

通过使用

EWB

进行实验仿真,在缺乏电子器件的情况下我依然完成了实验。虽然这

个软件小巧,但是其仿真功能十分强大。可以说

100%地模拟了真实的电路,解决了缺乏

实验仪器而对学习和实验过程所造成的限制。而且它很容易上手,内里又包含了各种各样

的实验仪器,对计算机硬件要求比较低,运行速度也比较快,对学习电子电路知识的人提

供了一个便捷的平台,并且在仿真过程中还可以随意更改各元器件参数,实在是很方便。

它的工作界面非常直观,原理图和各种工具都在同一个窗口内,未接触过它的人稍加学习

就可以很熟练地使用该软件。对于电子设计工作者来说,它是个极好的

EDA

工具,许多

电路你无需动用烙铁就可得知它的结果。这真的是一款非常实用的软件。

2

实验二实验二

基尔霍夫定律基尔霍夫定律

1

实验目的实验目的

(1)验证基尔霍夫定律的正确性,加深对基尔霍夫定律的理解。

(2)学会用

EWB

仿真软件验证电路定律。

2

实验原理实验原理

由于电路中的任一节点均不能堆积电荷,因此流人电流等于流出电流,即∑I=0。对

任何一个闭合回路而言,电路中电位升应等于电位降,即∑U=0。因此测量某电路的各支

略电流及多个元件两端的电压时,应分别满足基尔霍夫电流定律和电压定律。

运用上述定律时必须注意电流的参考方向,此方向可预先任意设定。

3

实验设备实验设备

(1)

计算机系统。

(2)

EWB

仿真软件。

4

实验内容实验内容

(1)EDA

模拟实验内容

EWB

按下图

2-1

连接,检查无误后,打开开关,显示结果如图

2-2,观察并记录电路参

数到表

2-1

中。

2-1

EWB

基尔霍夫定律验证电路

3

2-2

基尔霍夫定律验证电路结果

测量

UR1UR2UR3UR4UR5US1US2IR1IR2IR3

显示

-663.3mV4.327V-4.327V9.664V-12.00V6V12V-1.301mA-8.654mA-9.95mA

验证

结果

-663.3mV4.327V-4.327V9.664V-12.00V6V12V-1.301mA-8.654mA-9.95mA

2-2

待测量

I1/mAI2/mAI3/mAU1/VU2/VUR1/

V

UR2/

V

UR3/

V

UR4/

V

UR5/

V

计算值

1.935.997.926.0012.000.98-5.994.040.98-1.97

测量值

2.086.388.436.0511.990.93-6.244.020.97-2.08

相对

误差

7.77%6.51%6.43%0.8%0.08%-5.10%4.17%-0.5%-1.02%-5.58%

5

预习与思考预习与思考

根据图

2-1

的电路参数,计算出待测的电流

I1、I2、I3和各电阻上的电压值,记

入表

2-2

中,以便实验测量时,可正确地选定毫安表和电压表的量程。

6

实验实验体会体会

(1)根据实验数据,选定实验电路中的任一个节点,验证基尔霍夫电流定律的正确性。

(2)根据实验数据,选定实验电路中的任一个闭合回路,验证基尔霍夫电压定律的正确

性。

4

实验三实验三

基本放大电路基本放大电路

1.1

实验目的实验目的

1.学会放大器静态工作点的调试方法,分析静态工作点对放大器性能的影响。

2.掌握放大器电压放大倍数、输入电阻、输出电阻及最大不失真输出电压的测试方

法。

3.熟悉常用电子仪器及模拟电路实验设备的使用。

1.2

实验设备与器件实验设备与器件

(1)+12V

直流电源;

(2)函数信号发生器:

(3)双踪示波器;

(4)晶体三极管(小信号放大)或

9011

1

只:

(5)万用电表:

(6)晶体管毫伏表;

(7)电阻器、电容器若干。

(8)EDA

软件

1.3

实验内容实验内容

(1)EWB

仿真实验内容

EWB

按下图

3-1

连接,检查无误后,打开开关,观察并记录数据。

3.1

EWB

单管共射放大实验电路

5

(2)实验箱实验内容

实验电路如图

3-2

所示。各仪器的公共端必须连在一起。

3-2

单管共射放大实验电路

1.测量静态工作点

接通+12V

电源、调节

RP,使(即),用万用表直流电压档测

VUE0

.

2?mAIC0

.

2?

量、及用万用电表测量值。记入表

3-1

中。

B

U

CE

UU

1B

R

3-1

实验数据

测量值计算值

)(VUB)(VUE)(VUC)(

1

?kRB)(VUBE)(VUCE)(mAIC

1.482.011.98600.795.22

2.测量电压放大倍数

在放大器输入端加入频率为

1kHz

的正弦信号,调节信号发生器的输出旋钮,

s

u

使=10mV,同时用示波器观察放大器输出电压的波形,在波形不失真的条件下用交流

i

U

0

u

毫伏表测量下述三种情况下的值,并用双踪示波器观察和的相位关系,记入表

3-2

0

u

0

u

i

u

中。

3-2

实验数据

)(

?kRC)(

?kRL)(

0

VU

V

A观察记录一组和的波形

0

u

i

u

2.4?1.14114

1.2?0.5757

2.42.40.5757

3.静态工作点对电压放大倍数的影响

置,,适量,调节

RP,用示波器监视输出电压波形,在不??kRC4

.

2??

L

R

i

u

0

u

6

失真的条件下,测量的值,记入表

3-3

中。

0

UIC、

3-3

实验数据

)(mAIC

1.41.41.61.6

2.02.42.42.62.6

)(

0

VU

0.960.961.031.031.141.141.221.221.261.26

V

A

9696103103114114122122126126

注:测量时,要先将信号源输出旋钮旋至零(即使=0)。

C

I

i

u

4.观察静态工作点对输出波形失真的影响

置调节

RP

使,测出的值,再、、、04

.

24

.

2?????

iLC

ukRkRmAIC0

.

2?

CE

U

逐步加大输入信号,使输出电压足够大但不失真。然后保持输入信号不变,分别增大和

0

u

减小

RP,使波形出现失真,绘出的波形,并测出失真情况下的和值,记入表

3-

0

u

C

I

CE

U

4

中。

注:每次测和时都要将信号源的输出旋钮旋至零。

C

I

CE

U

3-4

实验数据

)(mAIC(V)

CE

U波形

0

u失真情况

管子工作状

0.7239.536

截止放大

1.2067.887

放大

0.91488.889

饱和饱和

5.不失真输出电压

置,按照实验

4

中所述方法,同时调节输入信号的幅度、、????kRkR

LC

4

.

24

.

2

和电位器

RP,用示波器和交流毫伏表测量值,记入表

3-5

中。

0

UUOPP、

3-5

实验数据

)(mAIC)(mVUim)(VUcm)(VUOPP

2.62.630305.755.751.81.8

7

实验四实验四

集成运算电路集成运算电路

3.1

实验目的实验目的

(1)掌握由运算放大器组成的比例、加法、减法和积分等基本运算电路的原理。

(2)熟悉运算放大电路的基本特点和性能。

(3)了解运算放大器在实际应用时应考虑的一些问题。

3.2

实验设备与器件实验设备与器件

(1)

12V

直流电源;?

(2)函数信号发生器:

(3)晶体管毫伏表:

(4)万用电表;

(5)集成运算放大器

μA741

1

只;

(6)电阻、电容器若干。

3.3

实验内容实验内容

EWB

仿真实验内容

EWB

按图

3-8

连接,检查无误后,打开开关,观察并记录数据。

(1).反相加法运算电路

3-8

EWB

反相加法运算电路

实验箱实验内容

集成运算放大器是一种模拟集成电路,本实验采用的运算放大器的型号为

μA741。

1.反相比例运算电路

(1)按图

3-9

连接实验电路,接通12V

电源,将输入端接地,用万用表测量输出电?

8

压,调节

RP,使=0。并保持

RP

不变。

0

U

0

U

(2)输入=100Hz,调节输入电压的大小,测量输出电压,填入表

3-9

中,f

i

U

0

U

计算其电压放大倍数,并与理论值比较。同时,用双踪示波器观察输入、输出电压波形是

否反相。

3-9

反相比例运算电路数据

)(VUi(V)

0

U

iV

UUA

0

?波形

i

U波形

0

U

0.2210

0.4410

3-9

反相比例运算电路

3-10

同相比例运算电路

2.同相比例运算电路

(1)

按图

3-10

连接电路,实验步骤同上,将结果填入表

3-10

中。

3-10

同相比例运算电路数据

)(VUi(V)

0

U

iV

UUA

0

?波形

i

U波形

0

U

0.20.21

0.40.41

(2)将图中的

R1

断开,电路为电压跟随器,重复内容(1),填入表

3-11

中。

3-11

电压跟随器数据

)(VUi(V)

0

U

iV

UUA

0

?波形

i

U波形

0

U

0.20.21

9

0.40.21

3-11

反相加法运算电路

3-12

减法运算电路

3.反相加法运算电路

按图

3-11

连接电路,在输入端加直流信号,调节的大小,测量输出电压,

21ii

UU

0

U

填入表

3-12

中,计算其输出电压,并与理论值比较。

3-12

反相加法运算电路数据

)(

1

VUi

0.10.2

)(

2

VUi

0.10.3

)(

0

VU

-1.5-3.5

4.差动放大电路(减法器)

按图

3-12

连接电路,在输入端加直流信号,调节的大小,测量输出电压,

21ii

UU

0

U

填入表

3-13

中,计算其输出电压,并与理论值比较。

3-13

差动放大电路数据

)(

1

VUi

0.20.2

)(

2

VUi

-0.30.3

)(

0

VU

-51

篇2:现代电子技术综合实验报告

现代电子技术综合实验报告 本文关键词:电子技术,实验,报告,综合

现代电子技术综合实验报告 本文简介:电子科技大学机械电子工程学院实验报告实验名称现代电子技术综合实验姓名:靳忠忠学号:2011084010006评分:教师签字电子科技大学教务处制电子科技大学实验报告学生姓名:靳忠忠学号:2011084010006指导教师:熊万安实验地点:科A333实验时间:2014年4月8号一、实验室名称:电子技术综

现代电子技术综合实验报告 本文内容:

电子科技大学机械电子工程学院

实验名称

现代电子技术综合实验

姓名:靳忠忠

学号:2011084010006

评分:

教师签字

电子科技大学教务处制

学生姓名:靳忠忠

学号:

2011084010006

指导教师:熊万安

实验地点:

科A333

实验时间:

2014年4月8号

一、

实验室名称:

电子技术综合实验室

二、

实验项目名称:电子技术综合设计实验

三、

实验学时:

32

四、

实验目的与任务:

1、

熟悉系统设计与实现原理

2、

掌握KEIL

C51的基本使用方法

3、

熟悉SMART

SOPC实验箱的应用

4、

连接电路,编程调试,实现各部分的功能

5、

完成系统软件的编写与调试

五、

实验器材

1、

PC机一台

2、

SMART

SOPC实验箱一套

六、

实验原理、步骤及内容

1、在数码管的第一、二个显示设定温度,第三、六个数码管显示“-”号,第四、五个数码管显示当前环境温度,第七、八个数码管显示电机转速;设定温度初值为(当前环境温度-2)度,每隔3秒设定温度值加1,加到(当前环境温度+2)度后,隔3秒,设定温度值变回(当前环境温度-2)度,进入循环状态。

2、根据设定温度和实际环境温度的温差驱动直流电机。设定温度等于环境温度,直流电机停转;设定温度和环境温度温差的绝对值越大,直流电机转速越快(最大转速在100以内)。

3、增加一个按键,当其按下,数码管显示学号(后8位)再次按下,恢复温度和转速的显示,按键时,蜂鸣器响0.2秒。

1、

硬件设计

请参照《Quick51跳线设置表》检查Quick51电路板上跳线JP1~JP7是否为默认设置;

Quick51实验板J14的PB-LE用杜邦线连接到J9;

Quick51实验板的P1端口用8芯排线连接到SmartSOPC实验箱B3区的COM6;

Quick51的J11(PB端口)用8芯排线连接到SmartSOPC实验箱B3区的COM3;

Quick51实验板J5的/INT0用杜邦线连接到SmartSOPC实验箱D4区的nCS;

Quick51实验板J5的/INT1用杜邦线连接到SmartSOPC实验箱D4区的DAT;

Quick51实验板J5的T0用杜邦线连接到SmartSOPC实验箱D4区的CLK;

Quick51实验板P2.6用杜邦线连接到SmartSOPC实验箱B2区中的MotorA;

Quick51实验板P2.0用杜邦线连接到SmartSOPC实验箱B2区中的KEY1;

Quick51实验板P2.1用杜邦线连接到SmartSOPC实验箱B2区中的BEEP;

SmartSOPC实验箱A6区跳线JP7用跳线帽短接。

2、

各部分硬件原理

开始

3、

软件设计流程图

显示秒表/电压/温度

显示学号并响铃0.6s

显示秒表/电压/温度并响铃0.6s

七、

总结及心得体会

首先,进行综合实验之前要把它所包含的每个小部分都弄清楚,为综合实验打下基础。

其次,要把综合实验分解,并安排好先实现什么再实现什么,事先规划好步骤,这样在进行综合实验的设计时才能有条不紊。

最后,在进行实验编程调试时,不要先把所有程序写完再调试,而是没完成一项功能就进行一次调试,并在硬件上实现,这样方便我们及时的发现错误并纠正。

综合实验不是很段时间就可以完成得,尤其是在考虑到自己对单片机掌握的基础的前提下,综合实验的完成必然不是一件容易的事情。所以,在一开始就做了相当的准备。计划好每一次都完成什么样的功能,同时,在每一次出现问题时,能够冷静的思考并检查,当实在难以解决的时候,请教会做的人也是一个明智的决定。但请教绝不等同于抄袭。例如,此次实验中,在如何及时的将按键的作用反映到显示上去的问题上,经同学点拨思路后,自行实现,虽然调试过程显得颇为繁琐,但如此一来,至少问心无愧。

在实验中要有二“心”,耐心和细心。本次实验的顺利完成得益于同学的提醒及老师的点拨,足以见得,学习的过程绝对不会是单凭个人就可以的。

八、

对本实验过程及方法、手段的改进建议

对于综合实验的小建议:综合实验的题不要仅仅局限于某一两个,多准备一些让同学自行选择。这样既可以降低同学间程序雷同的可能性,有可以为同学提供多种选择。

九、

附录

#include

“Disp.h“#include

“I2C.h“#include

//#include

“VolTab.h“sbit

BUZZER

=

P2^3;

sbit

CS

=

P3^2;

sbit

DAT

=

P3^3;

sbit

CLK

=

P3^4;

sbit

KEY1

=

P2^0;

/*

函数:ReadAdc()

功能:读取A/D转换结果

返回:8位ADC代码/

unsigned

char

ReadAdc()

{

unsigned

char

d;

unsigned

char

n;

CS

=

0;

n

=

5;

while

(

--n

!=

0

);

n

=

8;

do

{

d

>=

5;//去掉无关位

return

t;

}

/*

函数:ByteToStr()

功能:字节型变量c转换为十进制字符串/

void

ByteToStr(unsigned

char

idatas,unsigned

char

c)

{

code

unsigned

char

Tab[]

=

{100,10};

unsigned

char

i;

unsigned

char

t;

for

(

i=0;

i<2;

i++

)

{

t

=

c

/

Tab[i];s++

=

0

+

t;

c

-=

t

Tab[i];

}s++

=

0

+

c;s

=

/0

;

}

/*

函数:DispTemp()

功能:在数码管上显示出温度值

参数:

t:补码,除以8以后才是真正温度值/

void

DispTemp(int

t)

{

unsigned

char

Tab[8]=“01345689“;

unsigned

char

buf[4];

unsigned

char

i;//整数部分

unsigned

char

d;//小数部分

//分离出符号

//分离出整数和小数部分

i

=

t

/

8;

d

=

t

%

8;

ByteToStr(buf,i);

DispChar(0,buf[1]);

DispChar(1,buf[2]);

DispDotOn(1);

DispChar(2,Tab[d]);

}

void

Sng()

{

code

unsigned

char

s[]

=

“0123456789“;

unsigned

char

xs;

unsigned

char

buf2[4];

unsigned

char

v;//电压值

unsigned

char

buf1[4];

int

t;

SysInit();

xs=0;

for

(;;)

{

t

=

LM75A_GetTemp();

DispTemp(t);

DispDotOn(3);

v

=

ReadAdc();//读取ADC值

ByteToStr(buf1,v);

DispStr(5,buf1);

DispDotOn(5);

if

(

KEY1

==

0

)break;

for(;;)

{

if(xs<100)

{

Delay(1500);

ByteToStr(buf2,xs);

DispChar(3,buf2[1]);

DispChar(4,buf2[2]);

xs++;

}

else

{

xs=0;

}

break;

}

}

}

void

main()

{

unsigned

char

xh[]=“84010003“;

int

i;

SysInit();

Sng();

for

(;;)

{

for

(;;)

{

if

(

KEY1

==

0

)

break;

}

for(i=0;i<320;i++)

{

Delay(19);

BUZZER

=

!BUZZER;

}

DispStr(0,xh);

for

(;;)

{

if

(

KEY1

!=

0)

break;

}

for

(;;)

{

if

(

KEY1

==

0

)

break;

}

for

(;;)

{

if

(

KEY1

!=

0)

break;

}

for(i=0;i<370;i++)

{

Delay(17);

BUZZER

=

!BUZZER;

}

Sng();

}

}

篇3:西安交大数子电子技术实验报告

西安交大数子电子技术实验报告 本文关键词:电子技术,西安交大,实验,报告

西安交大数子电子技术实验报告 本文简介:西安交通大学数字电子技术实验报告姓名:高加西班级:电气12学号:2110401039ISE基础实验一、设计要求1)通过使用ISE软件和FPGA实现带有置位和清零端的边沿D触发器的逻辑图。2)练习verilog语法编写,掌握用HDL实现基本逻辑功能。二、HDL综合实验任务边沿D触发器的设计1.实验方法

西安交大数子电子技术实验报告 本文内容:

西安交通大学

数字电子技术

实验报告

姓名:高加西

班级:电气12

学号:2110401039

ISE基础实验

一、

设计要求

1)

通过使用ISE软件和FPGA实现带有置位和清零端的边沿D触发器的逻辑图。

2)

练习verilog语法编写,掌握用HDL实现基本逻辑功能。

二、

HDL综合实验任务

边沿D触发器的设计

1.

实验方法和步骤

(1)

建立工程文件,输入HDL程序如下:

module

D_Flip_Flop(

input

clk,input

set,input

D,input

clr,output

reg

q//注意:always模块中的输出必须是寄存器型变量

);

always

@(posedge

clk

or

posedge

clr

or

posedge

set)

begin

if(clr)

q<=0;

else

if(set)

q<=1;

else

q<=D;

end

endmodule

(2)

编写约束文件:

NET

“clk“LOC

=“B8“;

//时钟

NET

“D“LOC

=“N3“;

//SW7

NET

“set“LOC

=“L3“;

//SW1

NET

“clr“LOC

=“P11“;

//SW0

NET

“q“LOC

=“G1“;

//LD7

(3)

综合、实现及生成编程文件;仿真,设计下载:

仿真测试文件如下:

module

test_D_Flip_Flop;

//

Inputs

reg

clk;

reg

set;

reg

D;

reg

clr;

//

Outputs

wire

q;

//

Instantiate

the

Unit

Under

Test

(UUT)

D_Flip_Flop

uut

(

.clk(clk),.set(set),.D(D),.clr(clr),.q(q)

);

initial

begin

//

Initialize

Inputs

clk=0;

set=1;

D=0;

clr=0;

//

Wait

100

ns

for

global

reset

to

finish

#100;

//

Add

stimulus

here

End

always#10clk=~clk;

always#12D=~D;

always#33clk=~clk;

always#42set=~set;

endmodule

仿真结果:

三、分析与讨论

由仿真结果可以看出该电路完成了想要实现的逻辑功能(即边沿D触发器),通过这次实验我大体了解了ISE软件和Verilog程序语言.

组合逻辑电路实验

一、

实验目的及其设计要求

1)学习使用ISE软件生成一个新工程文件

2)学习使用HDL进行电路设计

3)学会编辑顶层文件和用户约束文件

4)熟悉仿真及综合及实现还有FPGA配置等

5)

熟悉在BASYS2开发板上的简单外围设备的控制

6)使用HDL设计一个新的逻辑功能并验证,本实验设计的逻辑功能函数表达式为:。

7)

设计一个4选1多路选择器,并在开发板上验证。

8)

完成4位数码管动态显示设计,实现将8个SW输入的两位十六进制对应的8421BCD码,显示在数码管上。

二、

组合逻辑电路实验任务

任务1:逻辑功能函数表达式设计

实验方法和步骤

(1)

建立工程文件,输入HDL程序如下:

(2)

module

gate2(

(3)

input

a,(4)

input

b,(5)

input

c,(6)

input

d,(7)

output

z

(8)

);

(9)

assign

z=~((a

(10)

endmodule

(11)

编写约束文件:

NET

“a“LOC=P11;

NET

“b“LOC=L3;

NET

“c“LOC=K3;

NET

“d“LOC=B4;

NET

“z“LOC=M5;

(12)

综合、实现及生成编程文件;仿真,设计下载:

仿真测试文件如下:

module

gates2test;

//

Inputs

reg

a;

reg

b;

reg

c;

reg

d;

//

Outputs

wire

y;

//

Instantiate

the

Unit

Under

Test

(UUT)

gates4uut

(

.a(a),.b(b),.c(c),.d(d),.y(y)

);

initial

begin

//

Initialize

Inputs

a

=

0;b

=

0;c

=

0;d

=

0;

//

Wait

100

ns

for

global

reset

to

finish

#100;

//

Add

stimulus

here

#100;a<=0;b<=0;c<=0;d<=1;

#200;a<=0;b<=0;c<=1;d<=0;

#200;a<=0;b<=0;c<=1;d<=1;

#200;a<=0;b<=1;c<=0;d<=0;

#200;a<=0;b<=1;c<=0;d<=1;

#200;a<=0;b<=1;c<=1;d<=0;

#200;a<=0;b<=1;c<=1;d<=1;

#200;a<=1;b<=0;c<=0;d<=0;

#200;a<=1;b<=0;c<=0;d<=1;

#200;a<=1;b<=0;c<=1;d<=0;

#200;a<=1;b<=0;c<=1;d<=1;

#200;a<=1;b<=1;c<=0;d<=0;

#200;a<=1;b<=1;c<=0;d<=1;

#200;a<=1;b<=1;c<=1;d<=0;

#200;a<=1;b<=1;c<=1;d<=1;

#200;

end

endmodule

仿真结果:

任务2:4选1多路选择器的设计与验证

实验方法和步骤

(1)建立工程文件,输入HDL程序如下:

module

MUX(

input

wire

a,input

wire

b,input

wire

c,input

wire

d,input

wire

s1,input

wire

s2,output

wire

y

);

assign

y=(a

(2)

编写约束文件:

NET“s1“LOC=P11;

NET“s2“LOC=L3;

NET“a“LOC=K3;

NET“b“LOC=B4;

NET“c“LOC=G3;

NET“d“LOC=F3;

NET“y“LOC=M5;

(3)综合、实现及生成编程文件;仿真,设计下载:

仿真测试文件如下:

#100

a<=1;

b<=0;

c<=0;

d<=0;

s1<=0;

s2<=0;

#400

a<=0;

b<=1;

c<=0;

d<=0;

s1<=0;

s2<=1;

#400

a<=0;

b<=0;

c<=1;

d<=0;

s1<=1;

s2<=0;

#400

a<=0;

b<=0;

c<=0;

d<=1;

s1<=1;

s2<=1;

end

仿真结果:

任务3:4位数码管动态显示设计

实验方法和步骤

建立工程文件,输入HDL程序如下:

module

x7seg(

input

wire[7:0]x,input

wire

clk,input

wire

clr,output

reg[6:0]a_to_g,output

reg[3:0]an

);

wire

[1:0]s;

reg

[3:0]digit;

reg[19:0]clkdiv;

assign

s=clkdiv[19:18];

[email protected](*)

case(s)

0:digit=x[7:4];

1:digit=x[3:0];

2:digit=0;

3:digit=0;

default:digit=x[7:4];

endcase

[email protected](*)

case(digit)

0:a_to_g=7

b0000001;

1:a_to_g=7

b1001111;

2:a_to_g=7

b0010010;

3:a_to_g=7

b0000110;

4:a_to_g=7

b1001100;

5:a_to_g=7

b0100100;

6:a_to_g=7

b0100000;

7:a_to_g=7

b0001111;

8:a_to_g=7

b0000000;

9:a_to_g=7

b0000100;

hA:a_to_g=7

b0001000;

hB:a_to_g=7

b1100000;

hC:a_to_g=7

b0110001;

hD:a_to_g=7

b1000010;

hE:a_to_g=7

b0110000;

hF:a_to_g=7

b0111000;

default:a_to_g=7

b0000001;

endcase

[email protected](*)

begin

an=4

b1111;

an[s]=0;

end

[email protected](posedge

clk

or

posedge

clr)

begin

if(clr==1)

clkdiv<=0;

else

clkdiv<=clkdiv+1;

end

endmodule

(2)

编写约束文件:

NET“a_to_g[0]“LOC=M12;

NET“a_to_g[1]“LOC=L13;

NET“a_to_g[2]“LOC=P12;

NET“a_to_g[3]“LOC=N11;

NET“a_to_g[4]“LOC=N14;

NET“a_to_g[5]“LOC=H12;

NET“a_to_g[6]“LOC=L14;

NET“an[3]“LOC=K14;

NET“an[2]“LOC=M13;

NET“an[1]“LOC=J12;

NET“an[0]“LOC=F12;

NET“clk“LOC=B8;

NET“clr“LOC=G12;

NET“x[0]“LOC=P11;

NET“x[1]“LOC=L3;

NET“x[2]“LOC=K3;

NET“x[3]“LOC=B4;

NET“x[4]“LOC=G3;

NET“x[5]“LOC=F3;

NET“x[6]“LOC=E2;

NET“x[7]“LOC=N3;

(3)综合、实现及生成编程文件,设计下载。

三、讨论与分析

由任务一仿真结果可以看出该设计完成了想要实现的逻辑功能(即),仿真图中a=1、b=1、c=0、d=1时,

y=1,与理论结果相同;

由任务二仿真结果可以看出该设计完成了想要实现的逻辑功能(即4选1多路选择器),与理论结果相同。

将任务三的程序下载到BASYS2板子上后,通过改变选择八个开关的0-1状态,我们发现每两个数码管将分别显示一位16进制数(按10进制显示),实现了4位数码管动态显示的功能。

通过这次实验我对组合逻辑电路有了进一步的认识,并对verilog语言有了初步的了解,为下一步实验打好了基础。

时序逻辑电路实验

一、

设计要求

1)

设计一个秒脉冲发生器,用LED指示秒脉冲的发放。(检查秒脉冲发生器的精度,能将1秒的脉冲周期改为2秒或3秒等)。

2)

试设计一个带有异步清零和同步置数信号的4位寄存器,并在开发板上验证。实验前编写好HDL源文件、用户约束文件和仿真文件,并给出仿真波形。

二、

时序逻辑电路实验任务

任务1:秒脉冲发生器的设计

实验方法和步骤

(1)

建立工程文件,输入HDL程序如下:

module

miaomaichong(

input

clk,clr,output

reg[6:0]

a_to_g,output

wire[3:0]

an,output

reg[3:0]q

);

assign

an=4

b1110;

reg

[26:0]

counter;

always

@(posedge

clk)

if(counter==25000000)

counter

<=

0;

else

counter

<=

counter+1;

reg

clk_div;

always

@(posedge

clk)

if(counter==25000000)

clk_div

<=

~clk_div;

[email protected](posedge

clk_div

or

posedge

clr)

begin

if(clr==1)

q<=0;

else

if(q==9)

q<=0;

else

q<=q+1;

end

[email protected](*)

case(q)

0:a_to_g=7

b0000001;

1:a_to_g=7

b1001111;

2:a_to_g=7

b0010010;

3:a_to_g=7

b0000110;

4:a_to_g=7

b1001100;

5:a_to_g=7

b0100100;

6:a_to_g=7

b0100000;

7:a_to_g=7

b0001111;

8:a_to_g=7

b0000000;

9:a_to_g=7

b0000100;

default:a_to_g=7

b0000001;

endcase

endmodule

(2)

编写约束文件:

NET“a_to_g[0]“LOC=M12;

NET“a_to_g[1]“LOC=L13;

NET“a_to_g[2]“LOC=P12;

NET“a_to_g[3]“LOC=N11;

NET“a_to_g[4]“LOC=N14;

NET“a_to_g[5]“LOC=H12;

NET“a_to_g[6]“LOC=L14;

NET“an[0]“LOC=F12;

NET“an[1]“LOC=J12;

NET“an[2]“LOC=M13;

NET“an[3]“LOC=K14;

NET“clk“LOC=B8;

NET“clr“LOC=P11;

NET“q[3]“LOC=G1;

//LED7

NET“q[2]“LOC=P4;

//LED6

NET“q[1]“LOC=N4;

//LED5

NET“q[0]“LOC=N5;

//LED4

(3)

综合、实现及生成编程文件,设计下载。

任务2:带有异步清零和同步置数信号的4位寄存器设计

实验方法和步骤

(1)建立工程文件,输入HDL程序如下:

module

register(

input

load,inputclk,inputclr,input

wire[3:0]d,outputreg[3:0]q

);

//定义足够大的计数器,使时钟脉冲的周期可分辨

reg

[27:0]q1;

[email protected](posedgeclk

or

posedgeclr)

begin

if(clr==1)

q1<=0;

else

q1<=q1+1;

end

assignmclk=q1[27];

//实现异步清零,同步置数功能

[email protected](posedgemclk

or

posedgeclr)

if(clr==1)

q<=0;

else

if(load==1)

q<=d;

endmodule

(2)

编写约束文件:

Project→New

Source→选Implantation

Constraints

File→输入文件名:register→点击Next按钮→点击Finish按钮→输入ucf文件如下:

NET“clk“LOC=“B8“;

NET“clr“LOC=“P11“;

NET“load“LOC=“L3“;

NET“d[0]“LOC=“K3“;

NET“d[1]“LOC=“B4“;

NET“d[2]“LOC=“G3“;

NET“d[3]“LOC=“F3“;

NET“q[0]“LOC=“M5“;

NET“q[1]“LOC=“M11“;

NET“q[2]“LOC=“P7“;

NET“q[3]“LOC=“P6“;

(3)

综合、实现及生成编程文件;仿真,设计下载:

仿真测试文件如下:

moduleregistertest;

//

Inputs

reg

load;

regclk;

regclr;

reg

[3:0]

d;

//

Outputs

wire

[3:0]

q;

//

Instantiate

the

Unit

Under

Test

(UUT)

registeruut

(

.load(load),.clk(clk),.clr(clr),.d(d),.q(q)

);

initial

begin

//

Initialize

Inputs

load

=

0;

clk

=

0;

clr

=

0;

d

=

4

b0101;

//

Wait

100

ns

for

global

reset

to

finish

#100;

end

always

#24

load=~load;

always

#10

clk=~clk;

always

#42

clr=~clr;

endmodule

仿真结果:

寄存器清零信号有效时的仿真结果

寄存器置数信号有效时的仿真结果

三、讨论与分析

将任务一的程序下载到BASYS2板子上后,可实现秒脉冲发生器的功能。

由任务二的仿真结果可以看出,当清零信号有效时(clr=1),无论输入数据为何值(此时为0101),寄存器的数据都被清零(即q=0000);当置数信号有效且清零信号无效时(load=1且clr=0),输入数据(此时为0101)被寄存到寄存器中(即q=0101);

通过这次实验我学习使用HDL进行时序电路设计,并且学习编辑顶层文件和用户约束文件,并且熟悉了同步与异步的概念及实现方法,熟悉在Basys2开发板简单外围设备的控制,了解了时钟的分频方法及占空比的调节。

HDL综合实验

一、

设计要求

数字钟:设置一个完整的数字钟,小时和分钟用数码管显示,秒用发光二极管闪烁显示,每秒闪烁一次。如有可能,请增加校时功能。

二、

HDL综合实验任务

数字钟的设计

实验方法和步骤

(1)

建立工程文件,输入HDL程序如下:

moduleclocktjjs(

inputclk,inputclr,input

[1:0]FLAG,input

[5:0]Stime,inputSetH,inputSetM,outputSflash,outputreg[6:0]a_to_g,outputreg[3:0]an

);

reg

[3:0]cent60L;

reg

[3:0]cent60H;

reg

[3:0]cent24L;

reg

[3:0]cent24H;

reg

[3:0]LED1,LED2,LED3,LED4;

reg

[1:0]s;

reg

[3:0]digit;

reg

[16:0]clkdiv;

reg

[26:0]q1;

reg

sec;

integerss;

integeri;

initial

begin

cent60L=9;

cent60H=5;

cent24L=3;

cent24H=2;

ss=0;

LED4=cent60L;

LED3=cent60H;

LED2=cent24L;

LED1=cent24H;

end

[email protected](*)

begin

an=4

b1111;

s<=clkdiv[16:15];

an[s]=0;

case(s)

0:digit<=LED1;

1:digit<=LED2;

2:digit<=LED3;

3:digit<=LED4;

default:digit<=LED4;

endcase

case(digit)

0:a_to_g=7

b0000001;

1:a_to_g=7

b1001111;

2:a_to_g=7

b0010010;

3:a_to_g=7

b0000110;

4:a_to_g=7

b1001100;

5:a_to_g=7

b0100100;

6:a_to_g=7

b0100000;

7:a_to_g=7

b0001111;

8:a_to_g=7

b0000000;

9:a_to_g=7

b0001100;

hA:a_to_g=7

b0001000;

hB:a_to_g=7

b1100000;

hC:a_to_g=7

b0110001;

hD:a_to_g=7

b1000010;

hE:a_to_g=7

b0110000;

hF:a_to_g=7

b0111000;

default:a_to_g=7

b0000001;

endcase

end

[email protected](posedgeclk)

begin

clkdiv<=clkdiv+1;

end

//时钟程序,计时加校时

[email protected](posedgeclk

or

posedgeclr)

begin

if(clr==1)

begin

q1<=0;

LED1=0;

LED2=0;

LED3=0;

LED4=0;

cent60L<=0;

cent60H<=0;

cent24L<=0;

cent24H<=0;

ss<=0;

end

else

if(FLAG==2

b10)//调分状态

begin

if(SetM)

begin

if(Stime<=59)

begin

for(i=0;i<6;i=i+1)

begin

if(Stime[5:0]-i*10<10)

begin

cent60L<=Stime[5:0]-i*10;

cent60H<=i;

i=6;

end

end

end

else

begin

cent60H<=0;

cent60L<=0;

end

ss<=0;

LED4[3:0]=cent60L[3:0];

LED3[3:0]=cent60H[3:0];

end

end

else

if(FLAG==2

b11)//调时状态

begin

if(SetH)

begin

if(Stime<=23)

begin

for(i=0;i<=3;i=i+1)

begin

if(Stime[5:0]-i*10<10)

begin

cent24L<=Stime[5:0]-i*10;

cent24H<=i;

i=6;

end

end

end

else

begin

cent24L<=0;

cent24H<=0;

end

ss<=0;

LED2[3:0]=cent24L[3:0];

LED1[3:0]=cent24H[3:0];

end

end

else

if(FLAG==2

b00)

begin

if(q1==50000000)

begin

q1<=0;

sec=~sec;

LED4[3:0]=cent60L[3:0];

LED3[3:0]=cent60H[3:0];

LED2[3:0]=cent24L[3:0];

LED1[3:0]=cent24H[3:0];

ss<=ss+1;

if(ss==59)

begin

ss<=0;

cent60L<=cent60L+1;

if(cent60L==9)

begin

cent60L<=0;

cent60H<=cent60H+1;

end

if(cent60H==5

cent60H<=0;

cent24L<=cent24L+1;

if(cent24L==9)

begin

cent24L<=0;

cent24H<=cent24H+1;

end

if(cent24H==2

cent24H<=0;

end

end

end

end

else

q1<=q1+1;

end

end

assignSflash=sec;

endmodule

(2)

编写约束文件:

NET“a_to_g[6]“LOC=L14;

NET“a_to_g[5]“LOC=H12;

NET“a_to_g[4]“LOC=N14;

NET“a_to_g[3]“LOC=N11;

NET“a_to_g[2]“LOC=P12;

NET“a_to_g[1]“LOC=L13;

NET“a_to_g[0]“LOC=M12;

NET“an[3]“LOC=F12;

NET“an[2]“LOC=J12;

NET“an[1]“LOC=M13;

NET“an[0]“LOC=K14;

NET“clk“LOC=“B8“;

NET“clr“LOC=“G12“;

NET“Sflash“LOC=“M5“;

NET“FLAG[0]“LOC=“P11“;

NET“FLAG[1]“LOC=“L3“;

NET“Stime[5]“LOC=“N3“;

NET“Stime[4]“LOC=“E2“;

NET“Stime[3]“LOC=“F3“;

NET“Stime[2]“LOC=“G3“;

NET“Stime[1]“LOC=“B4“;

NET“Stime[0]“LOC=“K3“;

NET“SetH“LOC=“M4“;

NET“SetM“LOC=“C11“;

(3)

综合、实现及生成编程文件,设计下载。

三、分析与讨论

将程序下载到BASYS2板子上后,能够实现简易数字钟的功能,可以看到LED灯1s闪一下,4个数码管实现了数字钟小时和分钟的显示,而且通过开关控制可以将六位二进制数赋值给小时或分钟位,实现校表的功能。

在这次实验中,我熟悉了Verilog语言中的模块化设计方法,对于设计一个简单的数字系统有了初步的了解。通过这次试验,我认识到一个数字系统是很复杂的,为未来更深层次的学习打好了良好的基础。

结语:数字电子技术是一门以实验为基础的科学,数字概念、数字规律是人们对客观事实、客观现象的概括总结,是理性认识。数字电子技术实验是数字电子技术知识结构的基础,不仅可以有效地帮助我们建立概念,掌握规律,突破难点,而且对引导我们发展特长、拓展思维、培养创新能力有着独特的作用。我认为:第一,运用数字电子技术开放实验可以激发我们的学习数字电子技术的兴趣,使我们更自觉、更愉快地学习数字电子技术知识;第二,运用数字电子技术开放实验培养我们的创新能力,如观察能力、思维能力、实际操作能力等;第三,运用数字电子技术开放实验培养我们求实进取、刻苦创新、合作奉献的科学精神和细致周到,实事求是、服从真理的科学态度;第四,运用数字电子技术开放实验培养我们深入钻研,勇于思考,勇于探索,勇于创新的良好品质,能以科学家为榜样,面对困难力排干扰,持之以恒,脚踏实地,以顽强的意志争取成功。

数字电子技术开放实验为我们提供了一个可以在知识的天空里自由翱翔的空间;提供了一个可以在知识的海洋里扬帆远行的空间。他为我们的学习生活增添了一道亮丽的风景线,为我们的理想之塔增砖添瓦,为我们的知识小帆鼓风助力。我们必将坐着智慧小船乘千里风破万里浪,开拓进取,勇往直前,朝着我们的理想彼岸前进。在此感谢辛辛苦苦培养我们的宋竞梅老师和金印斌老师,你们让学生受益匪浅,谢谢您。

37