当前位置:文档之家› 北邮数电实验报告4人表决器北邮电子-数电综合实验报告

北邮数电实验报告4人表决器北邮电子-数电综合实验报告

北邮数电实验报告4人表决器_北邮电子-数电综合实验报告

数字电路综合实验设计

简易出租车计价器的设计与实现

学院:电子工程学院班级:2011211203学号:2011210876姓名:孙月鹏班内序号:04

摘要

本文介绍了利用QuartusII综合性PLD/FPGA开发软件,在MAXII数字逻辑实验开发板上实现简易出租车计价器功能的设计与实现方法。本方案采用自上而下的设计理念,将整体电路按照功能划分为分频、计数、控制、数码管显示电路、点阵显示电路等若干模块,模块内用VHDL语言完成逻辑设计,模块间用原理图进行连接,使整体可实现计费、计时等功能。

关键字:可编程器件模块化设计出租车计价器VHDL语言

一、设计任务要求

基本要求:

1.行驶公里:用时钟2秒钟表示出租车匀速行驶1公里。在行车5公里以内,按起步价13元收费,超过5公里部分,以每公里2元收费。燃油附加费每运次1元。

2.途中等待:用按键控制中途等待,等待少于(包括)5秒不收费,超过5秒后没等待3秒钟加收1元。

3.用数码管分时显示计费金额、行驶里程和等候时间。字母A表示当前处于显示计费金额状态,字母B表示当前处于显示行驶里程状态,字母C表示当前处于显示等候时间状态。

4.用按键控制出租车空驶、载客状态。

提高要求:

1.用点阵滚动显示收费单据。

2.具有夜间模式,基本单价加收20%的费用。出租车收费以元为单位,元以下四舍五入。

3.出租车行驶速度可调可控。4.多人乘车,分段计价。5.自拟其他功能。

二、设计思路与结构框图

1.设计思路

图1结构框图

由结构框图可以分析得出,该系统的的主体是计数控制器。该系统由外部控制载客控制信号和等待控制信号,以时钟信号的翻转为计数依据,完成对时间、里程和费用的计数,并将结果通过数码管译码电路显示出来。

该系统的控制信号可由拨码或按键输入,时钟由开发板内部时钟分频得出,输出有点阵输出和数码管输出。因此,可将系统分为分频器、计数控制器、数码管译码和显示以及点阵显示四部分。并以此得出系统的逻辑框图如下:图2逻辑框图

2.控制器部分的状态转移图

该控制器一共有三个基本状态:空驶状态、载客状态和等待状态。分别由v、和w来进行控制。

三、分块电路和总体电路设计

(一)总体电路设计

图3状态转移图

整体电路由数码管译码电路、转换电路、点阵译码电路、技术控制电路、分频电路五部分构成。

分频电路将开发板内部的50MHz时钟分为500hz(供给数码管和点阵)、

1Hz(控制器计时)、0.5Hz(行驶路程计费)、0.3Hz(等待时间计费)以及用于提高分频效率的其他若按频率。

计数控制电路由四部分构成,整体完成行驶距离的计数、等待时间的计

数以及费用的计数。输出为三组十位二进制数。

转换电路有转换数据类型和在数码管上分时显示两个功能。首先将输入

的十位二进制数转换为4位十进制数,并且利用除法和取余数的运算提取出个位、十位、百位、千位,并转换为四位二进制BCD码。其次利用0.5hz的时钟,将行驶里程、等待时间、计费金额以2秒为周期依次out1~4,供给数码管以便分时显示。

数码管译码电路以500HZ实现动态扫描,并将转换电路输出的5组BCD 码依次译码,完成显示。

点阵译码器根据载客控制信号,分别显示“O”、“X”静态图案。

(二)分块电路设计1.分频器(以100分频为例)

1.1电路模块1.2关键代码

ENTITYdiv_100ISPORT(

clk100:INSTD_LOGIC;--clear:INSTD_LOGIC;

clk1:OUTSTD_LOGIC);--ENDdiv_100;

ARCHITECTUREa100OFdiv_100IS

SIGNALtmp100:INTEGERRANGE0TO99;--BEGIN

p1:PROCESS(clear,clk100)--p1BEGIN

IFclear=“0”THENtmp100

ELSIFclk100”eventANDclk100=“1”THENIFtmp100=99THENtmp100

tmp100

ENDPROCESSp1;

clk100:输入时钟

clear:复位端clk1:输出时钟输入时钟输出时钟计数信号进行100进制的计数

p2:PROCESS(clk100)--p2输出占空比为50%的新时钟BEGIN IFclk100”eventANDclk100=“1”THE NIFtmp10049THENclk1

clk1

ENDPROCESSp2;ENDa100;

1.3

仿真波形

图5200分频仿真波形

图65分频仿真波形

2.计数控制器

2.1电路模块

计数控制器由四部分组成,输入为三个不同频率的时钟、载客控制信号v

和等待控制信号w。control1完成里程的计数cd和行驶费用cm1,control2完成等待时间ct的计数和等待开始计费(ct5s)信号outt,control3接收到outt 后输出为等待时间的计费cm2,control4为总费用(cm1+cm2+燃油附加费

1

图7电路控制器

设计关键思想是将费用、行驶里程、等待时间三个计数过程分开处理,并且将行驶计费和等待计费也分开处理。通过载客信号v、等待信号w分别触发不用的进程完成计数。因为行驶过程中每两秒1公里,每公里两元,等待过程中每三秒1元,因此分别用1hz、0.5hz、0.33hz的时钟完成计时、计费、记里程。 2.2模块control12.2.1电路模块

行驶里程计数cd和行驶计费cm1

2.2.2关键代码

ENTITYcontrol1ISPORT(

clk2:INSTD_LOGIC;--输入是0.5Hz的时钟v:INSTD_LOGIC;--载客控制输入信号w:INSTD_LOGIC;--等待信号

cm1:OUTSTD_LOGIC_VECTOR(9DOWNTO0);--里程计费

cd:OUTSTD_LOGIC_VECTOR(9DOWNTO0));--行驶距离ENDcontrol1;

ARCHITECTUREcOFcontrol1IS

SIGNALtemp1:STD_LOGIC_VECTOR(9DOWNTO0);

SIGNALtemp_cm:STD_LOGIC;BEGIN

p1:PROCESS(clk2,v,w)--p1里程计数BEGIN

IF(clk2”eventandclk2=“1”)THEN

IFv=“0”THEN--v=0时重新计数temp1

ELSIFw=“1”THEN--开始等待时里程保持不变temp1

ELSEtemp1

p2:PROCESS(clk2,temp1)BEGIN

IF(clk2”eventandclk2=“1”)THEN

IFtemp1

ELSEcm1

cd

ENDPROCESSp2;ENDc;

2.3模块control22.

3.1电路模块

等待时间计数ct和等待开始计费信号outt(ct5s)

2.3.2关键代码

ENTITYcontrol2ISPORT(

clk1:INSTD_LOGIC;--输入是1Hz的时钟v:INSTD_LOGIC;--载客控制输入信号w:INSTD_LOGIC;--等待信号

outt:outSTD_LOGIC;--若大于5秒,输出1

ct:outSTD_LOGIC_VECTOR(9DOWNTO0));--等待时间输出ENDcontrol2;

ARCHITECTUREcOFcontrol2ISSIGNALtempt:STD_LOGIC_VECTOR(9DOWNTO0);SIGNA Ltemp1:INTEGERRANGE0TO999;BEGIN

p3:PROCESS(clk1,v,w)--累加等待时间BEGIN

IF(clk1”eventandclk1=“1”)THENIFv=“0”THEN

tempt

ELSIFw=“0”THEN--行驶时保持状态tempt

temp1

ELSEtempt

IFtemp14THEN--大于5秒时outt=1outt

ENDIF;

ENDIF;ENDPROCESSp3;

p4:PROCESS(clk1,tempt)--将信号赋给输出ctBEGIN

ct

ENDPROCESSp4;ENDc;

2.4模块control32.4.1电路模块

当输入outt为1时,开始计数cm2为等待时间计费

2.4.2关键代码

ENTITYcontrol3ISPORT(

clk3:INSTD_LOGIC;--输入是0.3Hz的时钟

outt:INSTD_LOGIC;--为1时,等待时间大于5sv:INSTD_LOGIC;--载客控制输入信号w:INSTD_LOGIC;--等待信号

cm2:outSTD_LOGIC_VECTOR(9DOWNTO0));--等待计费ENDcontrol3;

ARCHITECTUREcOFcontrol3IS

SIGNALtempm:STD_LOGIC_VECTOR(9DOWNTO0);BEGIN

p5:PROCESS(clk3,outt,v,w)BEGIN

IFoutt=“1”THEN--大于5秒时开始计费

IF(clk3”eventandclk3=“1”)THENIFv=“0”THEN

tempm

ELSEtempm

ENDPROCESSp5;

p6:PROCESS(clk3,tempm)

BEGIN

IFV=“0”THEN

cm2

cm2

ENDPROCESSp6;ENDc;

2.5control42.5.1电路模块

将等待计费cm2和行驶计费cm1相加,并加上

燃油费1元,得到总费用cm

2.5.2关键代码

ENTITYcontrol4ISPORT(

clk2:INSTD_LOGIC;--输入是0.5Hz的时钟v:INSTD_LOGIC;--载客控制输入信号cm1:inSTD_LOGIC_VECTOR(9DOWNTO0);--行驶费用

cm2:inSTD_LOGIC_VECTOR(9DOWNTO0);--等待费用

cm:outSTD_LOGIC_VECTOR(9DOWNTO0));--总费用ENDcontrol4;

ARCHITECTUREcOFcontrol4ISBEGIN

p5:PROCESS(clk2,v)BEGIN

IF(clk2”eventandclk2=“1”)THENIFv=“0”THENcm

ENDPROCESSp5;ENDc;

2.6控制计数部分的总仿真波形

图8控制计数器仿真波形

3.转换器

3.1电路模块

由三个输入:行驶距离cd、等待时间ct、计费

金额cm

输出out1-5为四位二进制BCD码

实现功能:将十位二进制数按照位数转为为

BCD码

3.2关键代码

ENTITYtransformISPORT(

clk:INSTD_LOGIC;--0.5hz的时钟

v:INSTD_LOGIC;cd:inSTD_LOGIC_VECTOR(9DOWNTO0);--行驶距离

ct:inSTD_LOGIC_VECTOR(9DOWNTO0);--等待时间

cm:inSTD_LOGIC_VECTOR(9DOWNTO0);--总费用

out1:outstd_logic_vector(3downto0);--输出个位

out2:outstd_logic_vector(3downto0);--输出十位

out3:outstd_logic_vector(3downto0);--输出百位

out4:outstd_logic_vector(3downto0);--输出千位

out5:outstd_logic_vector(3downto0));--输出ABCENDtransform;

ARCHITECTUREcOFtransformIS

signalcc:integerrange0to1023;

signalt:std_logic_vector(1downto0);signalq1,q2,q3:integerrange0to1000 ;BEGIN

p1:PROCESS(clk,v)--p1进行3进制的计数BEGIN

IF(clk”eventandclk=“1”)THENIFv=“0”THENt

elsift=“00”thent

elsift=“01”thent

elsift=“10”thent

elset

ENDIF;

ENDIF;

ENDPROCESSp1;p2:process(clk,t)BEGIN

if(clk”eventandclk=“1”)then

CASEtis--实现分时显示

when”00”=cccccccc

q1

q3

out1

endprocessp2;ENDc;

4.数码管译码电路

4.1电路模块

4.2关键代码

ENTITYshumaguanISPORT(

clk1:INSTD_LOGIC;---500hz数码管扫描时钟

out5,out4,out3,out2,out1:INSTD_LOGIC_VECTOR(3DOWNTO0);g:OUTSTD_LOGIC_ VECTOR(6DOWNTO0);cat:OUTSTD_LOGIC_VECTOR(5DOWNTO0));ENDshumaguan;

ARCHITECTUREaOFshumaguanIS

SIGNALtmpg:STD_LOGIC_VECTOR(6DOWNTO0);SIGNALtmpn:STD_LOGIC_VECTOR(3DO WNTO0);SIGNALtmpc:INTEGERRANGE0TO5;BEGIN

p1:PROCESS(clk1)--六进制计数BEGIN

if(clk1”eventandclk1=“1”)then

iftmpc=5thentmpc

tmpc

ENDPROCESSp1;

p2:PROCESS(clk1)--数码管选通轮流显示BEGIN

if(clk1”eventandclk1=“1”)then--将个位、十位等赋给各个数码管casetmpcis

WHEN0=tmpntmpntmpntmpn

WHEN5=tmpntmpn

ENDPROCESSp2;

p3:PROCESS(tmpn)--译码电路BEGIN

CASEtmpnIS

WHEN”0000”=tmpgtmpgtmpgtmpgtmpgtmpgtmpgtmpgtmpgtm pgtmpgtmpgtmpgtmpg tmpg

5.点阵译码电路

5.1电路模块

5.2关键代码ENTITYdzisPORT(

clk500:INSTD_LOGIC;v:INSTD_LOGIC;

row:OUTSTD_LOGIC_VECTOR(7DOWNTO0);--行

col:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--列ENDdz;

ARCHITECTUREaOFdzIS

SIGNALtmp_row:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALtmp_col:STD_LOGIC_VECT OR(7DOWNTO0);begin

process(v,clk500)begin

if(clk500”eventandclk500=“1”)thenifv=“0”thencasetmp_colis

WHEN”11111110”=tmp_coltmp_coltmp_coltmp_coltmp_coltmp_coltmp_coltmp _coltmp_col

casetmp_colis

WHEN”11111110”=tmp_coltmp_coltmp_coltmp_coltmp_coltmp_col

WHEN”11111011”=tmp_col

WHEN”11111101”=tmp_coltmp_col

5.3仿真波形

图9空载时显示“〇”

图10载客时显示“X”

四、实现功能说明

1,实现功能

实现计时、计里程、计费功能

数码管可分时显示行驶距离、费用、等待时间点阵显示载客和空载状态2.器材的资源占用情况

图11编译报告

图12逻辑元件表

由图11可得:本电路一共用了576个逻辑元件,占总逻辑元件数的45%,总

管脚数37,占总管脚的32%。

由图12看到,除了transform模块之外,各模块占用资源均不大。transform 模块因为用到了除法、取余数等运算。因此占用资源较多,应在后期进行优化,降低资源利用率。

3.仿真波形图(见电路分析部分)

4.必要的测试方法

控制计数器整体仿真控制器与转换器整体仿真数码管赋值检查是否显示

故障时中间接输出,并且管脚设置为LED灯,看是否正常传输

五、故障与问题分析

1)计数显示不正确,有延迟解决办法:在控制计数器内部,将组合逻辑部分和计数部分分到不同的进程,避免在时序进程出现大量运算,造成延迟。

2)计数时采用十位二进制计数,无法逐位读取,赋给各个数码管解决办法1:先将二进制转为十进制,再利用除法和取余数运算得到各位数值(改动小,但运算量大,占用资源多)

2:计数时改为逐位计数,后一位满十后向前一位进1(改动大,但运算量减少)

3)仿真时计数器正常工作,但下载到板子时一直显示为0,无法确定是计数器的问题还是数码管的问题

解决办法:将计数器的一个输出作为LED的输入,发现LED不亮,说明控制器有问题。(后来经过检查发现是原理图连接有误)

六、总结和结论

这次数字电路综合实验是一次将理论、实验与现实应用结合在一起的实验。当第一次课拿到题目时,我感觉无从下手,几乎没有思路。但当三周后我基本完成了实验任务时,却又觉得整个电路结构无比清晰,甚至知道我的方案哪里做得好、哪里做得不好。在这三周的时间里,我觉得我有如下的收获:1.基础知识与动手操作并重由于我觉得自己基础不好,又加上是上学期的内容,因此在拿到题目后我并没有立即动手做,而是完整地阅读了一编实验教材,并且认真做了笔记。在之后的设计中,无论是对于具体语句还是设计思想,都有了成竹在胸的感觉,甚至还可以帮助同学们解决一些小的知识点,做一些小的改进。但光看书也是不够的,在编程的过程中,一开始仍有一些生涩,随着时间的推移,我的进度也逐渐加快。因此,这说明,在做具体的项目时一定首先要打好基础,不能过于着急动手,当然也不能一味地抠细节,忽视实验的重要性。2.整体的设计比具体的实现更重要在老师的讲课过程中,不止一遍强调数字电路的模块的划分、上层的设计要比具体的编程语句更重要。一开始我并没有意识到这一问题,在做逻辑框图时细节和准确性都不够。因为我习惯一边开始做,一边想下一步怎么做。但在老师检

查过程中我的框图被指出错误之后,我又重新做了逻辑框图。这一次,我感觉到在我认真思考后,我对整个电路的结构有了清晰地认识,特别是将电路划分为每一个细小的模块后,模块的具体实现就变得很简单,甚至很多都是现成的。这让我明白上层的设计、模块的划分才是最有创造性、最有技术含量的部分,我们作为设计师,应当将重点放在设计思想上,而不是具体的一个个语句。只有这样,我们的工作才是最具有价值的,而不是简单的模仿和重复。3.硬件编程语言与普通编程语言是有区别的硬件编程语言侧重于10的逻辑实现,任何一段程序有一部分电路与之对应。在编程的过程中,要养成做硬件的思维习惯。比如这次,计数部分用了10位二进制来表示。但后来的数码管显示需要提取出各位的数值。

不得已我用了除法和取余运算,造成的结果是用了大量的逻辑元件。但是我看到我的同学在计数时就将各位单独进行运算,比我节省了大量的元器件。这就是硬件语言的思维,在编程过程中应该尽量避免数据类型的转换、乘除法等,造成资源的浪费。4.测试是编程的重要环节

因为我们做比较大型的项目不多,而这次实验,因为用了大量的模块化设计,合理、准确的测试就很重要了。因为整体仿真的运算量太大,而且一旦出错很难发现什么地方出了问题,因此这就要求我们事先要对每一个模块都要进行仿真、测试。而且最好还要对相连的模块进行整体仿真,避免出现问题。而且在仿真、测试的过程中,选择合理的方法也很重要,设置适当的条件、选择合适的输入、输出等会让测试事半功倍。

总之,这次实验让我收获巨大。当我实现了生活中可能用到的一个功能时,不仅让我收获了成就感与信心,还让我对生活中各种数字电路的实现产生了浓厚的兴趣。看到生活中的电子产品时,有时候就会不自觉地思考这是怎么实现的?可能要分为哪些模块?这些模块有哪些功能,彼此又有什么联系?这让我对进一步了解数字电路的应用提供了强大的推动力。

七、完整源程序

电路原理图、源程序代码见电路分析部分

北邮数字电路与逻辑设计实验-实验报告(下)

北京邮电大学电路实验中心<数字电路与逻辑设计实验(下)> 实 验 报 告 班级: xxx 学院: xxx 实验室: xxx 审阅教师:姓名(班内序号): xxx 学号: xxx 实验时间: xxx 评定成绩:

目录 一、任务要求 (2) 1.基本要求 (2) 2.提高要求 (2) 二、系统设计 (2) 1.设计思路 (2) 2.总体框图 (4) 3.分块设计 (5) (1)分频器模块 (5) (2)4×4键盘输入模块 (5) (3)数码管显示模块 (6) (4)8×8 LED点阵显示模块 (6) (5)LCD液晶屏显示模块 (6) (6)中心模块 (6) 三、仿真波形及波形分析 (6) 1.分频器模块 (6) 2.4×4键盘输入模块 (7) 3.数码管显示模块 (7) 4.8×8 LED点阵显示模块 (8) 5.LCD液晶屏显示模块 (8) 6.中心模块 (8) 四、源程序 (9) 1.分频器模块 (9) 2.4×4键盘输入模块 (9) 3.数码管显示模块 (11) 4.8×8 LED点阵显示模块 (12) 5.LCD液晶屏显示模块 (19) 6.中心模块 (23) 五、功能说明及资源利用情况 (26) 六、故障及问题分析 (27) 七、总结和结论 (27)

一、任务要求 本电路可供甲乙二人进行猜拳游戏。通过不同的按键控制,选择多种出拳方式,显示猜拳的结果,实现猜拳游戏,防止了作弊的可能。 1.基本要求 1、甲乙双方各用4×4 键盘中的三个按键模拟“石头”、“剪刀”、“布”,一个按键为“确认”。4×4 键盘第一行为甲,第二行为乙; 2、裁判用4×4 键盘第三行的一个按键模拟“开”,一个按键为“准备”,一个按键为“复位”; 3、裁判宣布“准备”后,甲乙双方分别选择出拳方式并确认; 4、裁判“开”以后,用点阵的左右三列同时显示甲乙双方的猜拳选择(如下图所示),并用两个数码管显示甲乙的猜拳比分; 图1甲“布”,乙“剪刀”;甲“剪刀”,乙“石头” 5、猜拳游戏为五局三胜制。若甲乙双方出拳一致,则比分保持不变,双方重新出拳; 6、比赛结束后,用8×8 点阵显示甲乙获胜方; 7、复位后游戏重新开始。 2.提高要求 1、点阵显示增加游戏开机动画、结束动画; 2、为游戏增加音效; 3、在LCD1602 液晶屏上显示甲乙双方的猜拳比分; 4、自拟其他功能。 二、系统设计 1.设计思路 本电路分为6个模块,分别是中心模块(包含状态机)、8×8 LED点阵显示模块、数码管显示模块、LCD液晶屏显示模块、4×4键盘输入模块、分频器模块,各模块使用VHDL语言设计,顶层连接使

北邮数电实验报告

北邮数电实验报告 北邮数电实验报告 一、引言 数电实验是电子信息类专业学生必修的一门实验课程,通过实践操作,帮助学生巩固理论知识,培养实际动手能力。本次实验旨在通过设计和搭建一个简单的数字电路,来理解数字电路的基本原理和工作方式。 二、实验目的 本次实验的目的是设计一个4位二进制加法器,实现两个4位二进制数的相加运算。通过实验,我们可以加深对于数字电路的理解,掌握数字电路的设计和搭建方法。 三、实验原理 1. 二进制加法器 二进制加法器是一种用于计算二进制数相加的数字电路。它由若干个逻辑门和触发器组成,可以实现二进制数的加法运算。在本次实验中,我们将设计一个4位二进制加法器,即可以计算两个4位二进制数的相加结果。 2. 逻辑门 逻辑门是数字电路中常用的基本元件,用于实现逻辑运算。常见的逻辑门有与门、或门、非门、异或门等。在本次实验中,我们将使用与门和异或门来构建4位二进制加法器。 四、实验步骤 1. 设计4位二进制加法器的电路图 根据实验要求,我们需要设计一个能够计算两个4位二进制数相加的电路。首

先,我们可以将两个4位二进制数分别用D0~D3和E0~E3表示,其中D0和 E0分别为最低位。然后,我们需要使用与门和异或门来实现加法器的功能。通 过逻辑运算,我们可以得到每一位的和以及进位。最后,将每一位的和连接起来,即可得到最终的结果。 2. 搭建电路 根据电路图,我们可以开始搭建实验电路。首先,将所需的逻辑门和触发器连 接起来,形成一个完整的电路。然后,将所需的输入信号和电源连接到电路上。最后,使用示波器等工具检查电路的工作状态,确保电路正常运行。 3. 进行实验测试 在搭建好电路后,我们可以进行实验测试。首先,将两个4位二进制数的输入 信号连接到电路上。然后,通过观察输出信号,判断电路是否正确计算了两个 二进制数的相加结果。如果输出信号与预期结果一致,说明电路设计和搭建成功。 五、实验结果与分析 在进行实验测试后,我们可以得到实验结果。通过观察输出信号,我们可以判 断电路是否正确计算了两个二进制数的相加结果。如果输出信号与预期结果一致,说明电路设计和搭建成功。如果输出信号与预期结果不一致,说明电路存 在问题,需要进一步检查和调试。 六、实验总结 通过本次实验,我们深入了解了数字电路的基本原理和工作方式。通过设计和 搭建一个4位二进制加法器,我们掌握了数字电路的设计和搭建方法。通过实 验测试,我们可以验证电路的正确性,并对电路进行进一步优化和改进。

北邮数据结构实验报告

北邮数据结构实验报告 北邮数据结构实验报告 一、引言 数据结构是计算机科学中的重要基础知识,对于计算机程序的设计和性能优化 起着至关重要的作用。本报告旨在总结北邮数据结构实验的相关内容,包括实 验目的、实验设计、实验过程和实验结果等。 二、实验目的 本次实验旨在通过实践操作,加深对数据结构的理解和应用能力。具体目的如下: 1. 掌握线性表、栈和队列等基本数据结构的实现方法; 2. 熟悉二叉树、图等非线性数据结构的构建和遍历算法; 3. 学会使用递归和非递归算法解决实际问题; 4. 培养编程实践能力和团队合作意识。 三、实验设计 本次实验包括以下几个部分: 1. 线性表实验:设计一个线性表类,实现线性表的基本操作,如插入、删除和 查找等。通过实验,了解线性表的顺序存储和链式存储结构的特点和应用场景。 2. 栈和队列实验:设计栈和队列类,实现栈和队列的基本操作,如入栈、出栈、入队和出队等。通过实验,掌握栈和队列的应用,如括号匹配、迷宫求解等。 3. 二叉树实验:设计二叉树类,实现二叉树的创建、遍历和查找等操作。通过 实验,熟悉二叉树的前序、中序和后序遍历算法,并了解二叉树的应用,如表 达式求值等。

4. 图实验:设计图类,实现图的创建、遍历和最短路径等操作。通过实验,掌 握图的邻接矩阵和邻接表表示方法,并了解图的深度优先搜索和广度优先搜索 算法。 四、实验过程 1. 线性表实验:根据实验要求,首先选择线性表的存储结构,然后设计线性表类,实现插入、删除和查找等基本操作。在实验过程中,遇到了一些问题,如 边界条件的处理和内存管理等,通过团队合作,最终解决了这些问题。 2. 栈和队列实验:根据实验要求,设计栈和队列类,实现入栈、出栈、入队和 出队等基本操作。在实验过程中,我们发现了栈和队列在实际应用中的重要性,如括号匹配和迷宫求解等,通过实验加深了对栈和队列的理解。 3. 二叉树实验:根据实验要求,设计二叉树类,实现二叉树的创建、遍历和查 找等操作。在实验过程中,我们发现了二叉树在表达式求值和排序等方面的应用,通过实验加深了对二叉树的理解。 4. 图实验:根据实验要求,设计图类,实现图的创建、遍历和最短路径等操作。在实验过程中,我们发现了图在社交网络和路线规划等方面的应用,通过实验 加深了对图的理解。 五、实验结果 通过实验,我们成功设计和实现了线性表、栈、队列、二叉树和图等数据结构 的基本操作,并解决了实际问题。实验结果表明,我们对数据结构的理解和应 用能力得到了提高,并且加深了对计算机科学的认识。 六、结论 本次北邮数据结构实验通过实践操作,加深了对数据结构的理解和应用能力。

数字电路与逻辑设计实验报告

竭诚为您提供优质文档/双击可除数字电路与逻辑设计实验报告 篇一:北邮数字电路与逻辑设计实验报告 北京邮电大学数字电路与逻辑 设计实验报告 学院: 班级: 姓名: 学号: 实验一QuartusII原理图输入法设计与实现 一、实验目的: (1)熟悉QuartusII原理图输入法进行电路设计和仿真; (2)掌握QuartusII图形模块单元的生成与调用; (3)熟悉实验板的使用; 二、实验所用器材: (1)计算机; (2)直流稳压电源; (3)数字系统与逻辑设计实验开发板。

三、实验任务要求 (1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。 (2)用(1)中生成的半加器模块和逻辑门设计实现一个 全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出 信号。 (3)用3线-8线译码器(74Ls138)和逻辑门设计实现函数,仿真验证其功能, 并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出 信号。 四、实验原理图及仿真波形图 (1)半加器 半加器原理图 仿真波形 仿真波形图分析:根据仿真波形对比半加器真值表,可以确定电路实现了半加器的功能。但 我们也可以发现输出so出现了静态功能冒险,要消除该冒险可以加入相应的选通脉冲。 (2)全加器 全加器原理图

仿真波形 仿真波形图分析:根据仿真波形对比半加器真值表,可以确定电路实现了全加器的功能 (2)741383线-8线译码器原理图 仿真波形图 仿真波形图分析;当且仅当Abc输入为000、010、100、111时,F=1,可知电路实现了函数。 实验二用VhDL设计与实现组合逻辑电路 一、实验目的: (1)熟悉用VhDL语言设计时序逻辑电路的方法; (2)熟悉用QuartusII文本输入法进行电路设计; (3)熟悉不同的编码及其之间的转换。 二、实验所用器材: (1)计算机; (2)直流稳压电源; (3)数字系统与逻辑设计实验开发板。 三、实验任务要求 (1)用VhDL语言设计实现一个共阴极7段数码管译码器; (2)用VhDL语言设计一个8421码转余三码的代码转换器; (3)用VhDL语言设计设计一个四位2进制奇校验器。

北邮数电综合实验报告

北邮数电综合实验报告 北邮数电综合实验报告 一、实验目的与背景 数电综合实验是北邮电子信息工程专业的重要实践环节,旨在通过实际操作, 巩固和应用学生在数字电路、模拟电路、通信原理等相关课程中所学到的理论 知识。本实验报告将对数电综合实验的内容、过程和结果进行详细描述和分析。 二、实验内容 本次数电综合实验的主要内容为设计一个数字电子钟。该电子钟具备显示时间、日期、闹钟功能,并能实现闹钟的设置、开关控制等基本操作。实验中,我们 需要使用数字集成电路、显示模块、按键开关、时钟模块等元件进行电路设计 和搭建。 三、实验过程 1. 硬件设计与连接 根据实验要求,我们首先进行电路设计。根据数字电子钟的功能需求,我们需 要选取适当的集成电路和模块。通过分析电路原理图,我们将各个模块进行连接,保证信号的正确传递和控制。 2. 软件编程与调试 在硬件连接完成后,我们需要进行软件编程。通过使用C语言或者Verilog等 编程语言,我们可以实现数字电子钟的各项功能。在编程过程中,我们需要考 虑到时钟频率、显示模块的控制、按键开关的响应等因素。 3. 实验调试与测试 完成软件编程后,我们需要进行实验调试和测试。通过连接电源,观察电子钟

的各项功能是否正常工作。如果发现问题,我们需要进行调试,找出问题所在,并进行修复。 四、实验结果与分析 经过实验调试和测试,我们成功实现了数字电子钟的设计和搭建。该电子钟能 够准确显示时间和日期,并能根据用户的设置进行闹钟的开关和响铃。通过实 验过程,我们对数字电路的原理和应用有了更深入的理解。 五、实验心得与收获 通过参与数电综合实验,我深刻体会到了理论与实践的结合的重要性。在实验中,我们需要将课堂上所学的知识应用到实际中,通过实际操作来巩固和加深 对知识的理解。同时,实验中也锻炼了我们的动手能力和解决问题的能力。 在实验过程中,我们还学会了团队合作的重要性。在设计和搭建电路的过程中,我们需要相互配合,互相帮助,共同解决问题。通过与同学们的合作,我们不 仅解决了实验中遇到的各种问题,还加深了与同学们的交流和友谊。 最后,数电综合实验为我们提供了一个实践的平台,让我们能够将理论知识与 实际操作相结合,更好地理解和掌握所学的知识。通过实验,我们不仅提高了 自己的专业技能,也培养了自己的创新意识和解决问题的能力。 六、总结 数电综合实验是北邮电子信息工程专业的重要实践环节,通过实际操作,巩固 和应用学生在数字电路、模拟电路、通信原理等相关课程中所学到的理论知识。通过实验,我们不仅提高了自己的专业技能,也培养了自己的创新意识和解决 问题的能力。数电综合实验是我们专业学习的重要一环,对我们未来的学习和 工作都具有重要意义。希望通过这次实验,我们能够更好地理解和掌握所学的

2021年北邮数电综合实验报告

点阵赛车游戏 学院: 信息与通信工程学院专业: 通信工程 班级: 姓名: 学号: 班内序号:

一、设计课题任务要求 用8×8点阵进行5秒倒计时显示, 当5秒倒计时结束后, 点阵显示赛道和赛车初始位置, 赛车游戏开始, 并开始计时, 用两个数码管显示时间。用红色表示赛道, 黄色表示赛车初始位置, 箭头表示赛车行进方向。用BTN1~BTN3三个按键分别控制赛车左移、前进、右移, 最终使赛车在不碰撞赛道情况下走完全程, 游戏结束, 点阵显示“V”图案, 数码管显示走完全程所花费时间。当游戏时间超出59秒, 或者赛车在行进过程中碰撞赛道, 游戏失败, 点阵显示“X”图案。经过按键BTN0进行复位, 控制点阵返回到初始状态。 二、系统设计 1、设计思绪 这个过程乍一看蛮复杂, 不过当我经过仔细分析后发觉, 我代码能够根据这个游戏运行过程来写。这个游戏分为4个状态, 即倒计时, 运行, 成功和失败。倒计时部分依据不一样数字在点阵上位置很轻易设计出来, 运行部分便是初始化赛道, 赛车位置, 然后用按键来控制赛车运动, 在这个过程中要不停判定赛车是否撞墙和抵达终点, 假如抵达终点便进入第三个状态, 成功, 即显示“V”; 若果撞墙便进入第四个状态, 失败, 即显示“X”。在游戏运行同时数码管还要计时。 2、总体框图 (1)系统结构图

(2)ASM 图 译码显示器 分频器 控制器 计时器 赛道及赛车 CP RESET BTN1 BTN2 BTN3 开启 N Y 是否碰到边界 是否抵达终点 显示“V ” 显示“×” 计时 移动 是否复位是否复位 Y N N Y N Y N

数字电子电路 数电 实验报告 组合逻辑电路设计

装 ……订 ……线 组合逻辑电路设计 一、实验目的 1、掌握用基本门电路实现组合电路的设计方法。 2、掌握实现组合电路的连接及调试方法。通过功能验证锻炼解决实际问题的能力。 二、实验内容 (一)概论 设计电路的一般过程:实际逻辑问题→抽象逻辑问题→列真值表→画卡诺图→图形化简→简化表达式→画出逻辑图 设计中应该注意的问题:卡诺图或公式化简是实现组合电路设计的关键步骤。为使电路简单,使用器件最少,往往要对不同的化简方法进行比较,得到一个合理的电路。对于多输出实现组合电路,为了使得总的逻辑电路最简,在各个输出函数化简时不能孤立地考虑各个输出函数如何化简,而应注意尽可能找出多个输出函数的同类项,使总体设计最简。 (二)实践 实验题目 实验要求:从实验内容所列的题目中选择一个题目进行设计,设计方法和方案不限。要求首先进行计算机仿真,实现题目功能。然后在数字实验系统中完成实际操作。自行设计测试表格,完成实际电路的测试。 (三)实验设计 (1)设计一个四人表决电路 要求:四人表决(用电平开关表决,当开关为高电平时表示同意,当开关为低电平时表示反对)时,当多数人通过时(三个以上开关为高电平)用发光二极管显示有效,否则发光二极管显示无效。试用基本逻辑门设计该电路。具体电路形式不限。并在实验台上进行调试及验证。 (2)器材:数字试验系统一台,TTL型集成电路与门74LS11,或门74LS32各一块。 (3)电路设计过程 根据设计任务要求建立输入、输出变量,并列出真值表:A、B、C、D为表决输入信号,Q为输出显示信号。

装 ……订 ……线三、实验步骤 1、选好芯片,并连线 布线图2、测试结果 真值表 根据真值表写出逻辑表达式 Q=ABCD+ ABC’D+AB’CD+A’BCD+ABCD=ABC+ABD+ACD+BCD′用逻辑表达式化简法简化逻辑表达式 Q=ABC+ABD+ACD+BCD=AB(C+D)+CD(A+B)=ABC′D′+A′B′CD 四、实验总结 本次实验总体效果较为满意,通过做表决器实验,了解到了芯片的用途,与书本相结合。各个方面都达到了预期的效果和目标。本次实验收获较大。

数字电路实训报告(四人表决电路、四人抢答电路)参考模板

广东交通职业技术学院 数 电 实 训 报 告 指导老师:丘SQ、陈QR

姓名:GDCP 班级:信息122 学号:1211111111

一、实训目的 数字电路实训的目的是使学生通过制作及创新设计数字应用系统,巩固和加深在“数字电子技术”课程中所学的理论知识和实践技能,基本掌握数字单元电路或部件的应用方法。实践证明,经过此实践性环节的训练,对学生毕业后从事电子技术方面的工作有很大帮助。 简介:这次实训主要包括数显抢答器制作、四人表决电路、数显抢答器创新设计1(五路抢答器)、数显抢答器设计2(分屏显示)等内容 二、实验原理 组合逻辑单元电路或部件的功能 1、门电路 与门的功能:实现与逻辑关系; 或门的功能:实现或逻辑关系; 非门的功能:实现非逻辑关系。 2、编码器与译码器 编码器的功能:将具有特定含义的信息编成相应二进制代码输出,常用的有二进制编码器、二-十进制编码器和优先编码器。 译码器的功能:将表示特定意义信息的二进制代码翻译出来,常用的有二进制译码器、二-十进制译码器和数码显示译码器。 3、数据选择器与数据分配器 数据选择器的功能:根据地址码的要求,从多路输入信号中选择其中一路输出。 数据分配器的功能:根据地址码的要求,将一路数据分配到指定输出通道上去。 4、触发器 CD4013双D触发器的引脚图: Q 14 13 12 11 10 9 8 V D D Q2 Q2 C P2 R2 D2 S2 CD4013 Q1Q1C P1 R1D1 S1 V S S

1 2 3 4 5 6 7 S CP D R 集成触发器:74LS175×1 16 15 14 13 12 11 10 9 V C C 4Q 4Q 4D 3D 3Q 3Q C P 74LS175 C R 1Q 1Q 1 D 2D 2Q 2Q G N D 1 2 3 4 5 6 7 8 5、按四人表决电路逻辑图,在数字电路实验箱上,用3片CC4012接成四人表决的实 际电路。 三、实验电路图 A B C D F 四人表决电路逻辑图

北邮电子院专业实验报告

电子工程学院 ASIC专业实验报告 班级: 姓名: 学号: 班内序号: 第一部分语言级仿真 LAB 1:简单的组合逻辑设计 一、实验目的 掌握基本组合逻辑电路的实现方法; 二、实验原理 本实验中描述的是一个可综合的二选一开关,它的功能是当sel = 0时,给出out = a,否则给出结果out = b;在Verilog HDL中,描述组合逻辑时常使用assign结构;equal=a==b1:0是一种在组合逻辑实现分支判断时常用的格式;parameter定义的size参数决定位宽;测试模块用于检测模块设计的是否正确,它给出模块的输入信号,观察模块的内部信号和输出信号; 三、源代码 module scale_muxout,sel,b,a; parameter size=1; outputsize-1:0 out; inputsize-1:0b,a; input sel; assign out = sela: selb: {size{1'bx}}; endmodule `define width 8 `timescale 1 ns/1 ns module mux_test; reg`width:1a,b;

wire`width:1out; reg sel; scale_mux`widthm1.outout,.selsel,.bb,.aa; initial begin $monitor$stime,,"sel=%b a=%b b=%b out=%b",sel,a,b,out; $dumpvars2,mux_test; sel=0;b={`width{1'b0}};a={`width{1'b1}}; 5sel=0;b={`width{1'b1}};a={`width{1'b0}}; 5sel=1;b={`width{1'b0}};a={`width{1'b1}}; 5sel=1;b={`width{1'b1}};a={`width{1'b0}}; 5 $finish; end endmodule 四、仿真结果与波形 LAB 2:简单时序逻辑电路的设计 一、实验目的 掌握基本时序逻辑电路的实现; 二、实验原理 在Verilog HDL中,相对于组合逻辑电路,时序逻辑电路也有规定的表述方式;在可综合的Verilog HDL模型中,我们常使用always块和posedge clk或negedge clk的结构来表述时序逻辑; 在always块中,被赋值的信号都必须定义为reg型,这是由时序逻辑电路的特点所决定的对于reg 型数据,如果未对它进行赋值,仿真工具会认为它是不定态;为了正确地观察到仿真结果,在可综合的模块中我们通常定义一个复位信号rst-,当它为低电平时对电路中的寄存器进行复位; 三、源代码 `timescale 1 ns/100 ps module countercnt,clk,data,rst_,load; output4:0cnt ; input 4:0data; input clk; input rst_; input load; reg 4:0cnt; alwaysposedge clk or negedge rst_ ifrst_ cnt<=0; else ifload cnt<=3 data;

北邮数电实验报告4人表决器北邮电子-数电综合实验报告

北邮数电实验报告4人表决器_北邮电子-数电综合实验报告 数字电路综合实验设计 简易出租车计价器的设计与实现 学院:电子工程学院班级:2011211203学号:2011210876姓名:孙月鹏班内序号:04 摘要 本文介绍了利用QuartusII综合性PLD/FPGA开发软件,在MAXII数字逻辑实验开发板上实现简易出租车计价器功能的设计与实现方法。本方案采用自上而下的设计理念,将整体电路按照功能划分为分频、计数、控制、数码管显示电路、点阵显示电路等若干模块,模块内用VHDL语言完成逻辑设计,模块间用原理图进行连接,使整体可实现计费、计时等功能。 关键字:可编程器件模块化设计出租车计价器VHDL语言 一、设计任务要求 基本要求: 1.行驶公里:用时钟2秒钟表示出租车匀速行驶1公里。在行车5公里以内,按起步价13元收费,超过5公里部分,以每公里2元收费。燃油附加费每运次1元。 2.途中等待:用按键控制中途等待,等待少于(包括)5秒不收费,超过5秒后没等待3秒钟加收1元。 3.用数码管分时显示计费金额、行驶里程和等候时间。字母A表示当前处于显示计费金额状态,字母B表示当前处于显示行驶里程状态,字母C表示当前处于显示等候时间状态。 4.用按键控制出租车空驶、载客状态。 提高要求: 1.用点阵滚动显示收费单据。 2.具有夜间模式,基本单价加收20%的费用。出租车收费以元为单位,元以下四舍五入。

3.出租车行驶速度可调可控。4.多人乘车,分段计价。5.自拟其他功能。 二、设计思路与结构框图 1.设计思路 图1结构框图 由结构框图可以分析得出,该系统的的主体是计数控制器。该系统由外部控制载客控制信号和等待控制信号,以时钟信号的翻转为计数依据,完成对时间、里程和费用的计数,并将结果通过数码管译码电路显示出来。 该系统的控制信号可由拨码或按键输入,时钟由开发板内部时钟分频得出,输出有点阵输出和数码管输出。因此,可将系统分为分频器、计数控制器、数码管译码和显示以及点阵显示四部分。并以此得出系统的逻辑框图如下:图2逻辑框图 2.控制器部分的状态转移图 该控制器一共有三个基本状态:空驶状态、载客状态和等待状态。分别由v、和w来进行控制。 三、分块电路和总体电路设计 (一)总体电路设计 图3状态转移图 整体电路由数码管译码电路、转换电路、点阵译码电路、技术控制电路、分频电路五部分构成。 分频电路将开发板内部的50MHz时钟分为500hz(供给数码管和点阵)、 1Hz(控制器计时)、0.5Hz(行驶路程计费)、0.3Hz(等待时间计费)以及用于提高分频效率的其他若按频率。 计数控制电路由四部分构成,整体完成行驶距离的计数、等待时间的计 数以及费用的计数。输出为三组十位二进制数。 转换电路有转换数据类型和在数码管上分时显示两个功能。首先将输入 的十位二进制数转换为4位十进制数,并且利用除法和取余数的运算提取出个位、十位、百位、千位,并转换为四位二进制BCD码。其次利用0.5hz的时钟,将行驶里程、等待时间、计费金额以2秒为周期依次out1~4,供给数码管以便分时显示。

数电实验仿真报告

数电实验仿真报告 实验一 组合逻辑电路设计与分析 一、实验目的 (1)学会组合逻辑的特点 (2)利用逻辑转换仪对组合逻辑电路进行分析与设计 二、实验原理 组合逻辑电路是一种重要的数字逻辑电路:特点是任何时候的输出仅仅取决于同一时刻输入信号的取值组合。根据电路确定功能,是分析组合逻辑电路的过程。 三、实验内容 (1)、利用逻辑转换仪对已知逻辑电路进行分析。 XLC1 A B U1A 74LS136D U2A 74LS136D U3A 74LS04D U4A 74LS04D U5B 74LS04D U6C 74LS136D 所以这是一个四位输入信号的奇偶校验电路。 (2)、根据要求利用逻辑转换仪进行逻辑电路分析。 火灾报警系统分析如下:

生成的报警控制信号电路如下: A B C 44 45 4647 4849 50

四、思考题 设计一个4人表决器,3人或3人以上同意则通过。利用逻辑转换仪得真值表和表达式如下: 根据真值表和表达式得逻辑电路如下: A B C D 65 66 67 6869 70 717273 74 75 7677 78 79 80 8182 83 84 利用逻辑转换仪对下图所示逻辑电路进行分析。

XLC1 A B U1A 74LS04D U2B 74LS04D U3C 74LS04D U4A 74LS00D U6B 74LS00D U7B 74LS10D U8A 74LS10D 5 6 2 34 7 8 9 10 分析如下 实验二 编码 器、译码器电路仿真实验 一、实验目的 (1)掌握编码器、译码器的工作原理。 (2)常见编码器、译码器的作用。 二、实验原理 (1)编码是指在选定的一系列二进制数码中,赋予每个二进制数码以某一固定含义。能完成编码功能的电路统称为编码器。 (2)译码是编码的逆过程,将输入的每个二进制代码赋予的含义翻译出来,给出相应的输出信号。 三、实验内容 (1)、8-3线优先译码器

相关主题
文本预览
相关文档 最新文档