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

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

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

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

合实验报告

数字电路综合实验设计

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

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

摘要

本文介绍了利用Quartus II综合性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 关键代码

ENTITY div_100 IS PORT(

clk100 : IN STD_LOGIC; -- clear: IN STD_LOGIC;

clk1: OUT STD_LOGIC); --END div_100;

ARCHITECTURE a100 OF div_100 IS

SIGNAL tmp100: INTEGER RANGE 0 TO 99; --BEGIN

p1:PROCESS(clear,clk100) --p1 BEGIN

IF clear ="0" THEN tmp100

ELSIF clk100"event AND clk100="1" THEN IF tmp100=99 THEN tmp100 tmp100

END PROCESS p1;

clk100 :输入时钟

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

p2:PROCESS(clk100) --p2输出占空比为50%的新时钟 BEGIN

IF clk100"event AND clk100="1" THEN IF tmp100>49 THEN clk1

clk1

END PROCESS p2; END a100;

1.3

仿真波形

图5 200分频仿真波形

图6 5分频仿真波形

2. 计数控制器

2.1 电路模块

计数控制器由四部分组成,输入为三个不同频率的时钟、载客控制信号v 和等待控制信号w 。control1完成里程的计数cd 和行驶费用cm1,control2完成等待时间ct 的计数和等待开始计费(ct>5s)信号outt ,control3接收到outt 后输出为等待时间的计费cm2,control4为总费用(cm1+cm2+燃油附加费

1

图7 电路控制器

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

2.2 模块control1 2.2.1 电路模块

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

2.2.2 关键代码

ENTITY control1 IS PORT(

clk2: IN STD_LOGIC; --输入是0.5Hz 的时钟 v: IN STD_LOGIC; --

载客控制输入信号 w: IN STD_LOGIC; --等待信号

cm1: OUT STD_LOGIC_VECTOR(9 DOWNTO 0); --里程计费 cd: OUT

STD_LOGIC_VECTOR(9 DOWNTO 0) ); --行驶距离 END control1 ;

ARCHITECTURE c OF control1 IS

SIGNAL temp1: STD_LOGIC_VECTOR(9 DOWNTO 0) ;

SIGNAL temp_cm: STD_LOGIC; BEGIN

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

IF (clk2"event and clk2="1") THEN

IF v="0" THEN --v=0时重新计数 temp1

ELSIF w="1" THEN --开始等待时里程保持不变 temp1

ELSE temp1

p2:PROCESS(clk2,temp1) BEGIN

IF (clk2"event and clk2="1") THEN

IF temp1

ELSE cm1

cd

END PROCESS p2; END c;

2.3 模块control2 2.

3.1电路模块

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

2.3.2关键代码

ENTITY control2 IS PORT(

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

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

ct: out STD_LOGIC_VECTOR(9 DOWNTO 0));--等待时间输出 END control2 ;

ARCHITECTURE c OF control2 IS SIGNAL tempt: STD_LOGIC_VECTOR(9

DOWNTO 0) ; SIGNAL temp1: INTEGER RANGE 0 TO 999; BEGIN

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

IF (clk1"event and clk1="1") THEN IF v="0" THEN

tempt

ELSIF w="0" THEN --行驶时保持状态 tempt

temp1

ELSE tempt

IF temp1>4 THEN --大于5秒时outt=1 outt

END IF;

END IF; END PROCESS p3;

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

ct

END PROCESS p4; END c;

2.4 模块control3 2.4.1电路模块

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

2.4.2关键代码

ENTITY control3 IS PORT(

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

outt: IN STD_LOGIC; --为1时,等待时间大于5s v: IN STD_LOGIC; --载客控制输入信号 w: IN STD_LOGIC; --等待信号

cm2: out STD_LOGIC_VECTOR(9 DOWNTO 0));--等待计费 END control3 ; ARCHITECTURE c OF control3 IS

SIGNAL tempm: STD_LOGIC_VECTOR(9 DOWNTO 0) ; BEGIN

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

IF outt="1"THEN --大于5秒时开始计费 IF (clk3"event and clk3="1") THEN IF v="0" THEN

tempm

ELSE tempm

END PROCESS p5;

p6: PROCESS(clk3,tempm)

BEGIN

IF V="0" THEN

cm2

cm2

END PROCESS p6; END c;

2.5 control4 2.5.1 电路模块

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

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

2.5.2 关键代码

ENTITY control4 IS PORT(

clk2: IN STD_LOGIC; --输入是0.5Hz 的时钟 v: IN STD_LOGIC; --

载客控制输入信号 cm1: in STD_LOGIC_VECTOR(9 DOWNTO 0);--行驶费用cm2: in STD_LOGIC_VECTOR(9 DOWNTO 0); --等待费用

cm: out STD_LOGIC_VECTOR(9 DOWNTO 0));--总费用 END control4 ;

ARCHITECTURE c OF control4 IS BEGIN

p5:PROCESS(clk2,v) BEGIN

IF (clk2"event and clk2="1") THEN IF v="0" THEN cm

END PROCESS p5; END c;

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

图8 控制计数器仿真波形

3. 转换器

3.1 电路模块

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

金额cm

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

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

BCD 码

3.2 关键代码

ENTITY transform IS PORT(

clk: IN STD_LOGIC; --0.5hz的时钟 v: IN STD_LOGIC; cd: in

STD_LOGIC_VECTOR(9 DOWNTO 0);--行驶距离 ct: in STD_LOGIC_VECTOR(9 DOWNTO 0); --等待时间 cm: in STD_LOGIC_VECTOR(9 DOWNTO 0) ;--总费用 out1: out std_logic_vector(3 downto 0) ;--输出个位 out2: out std_logic_vector(3 downto 0); --输出十位 out3: out

std_logic_vector(3 downto 0); --输出百位 out4: out

std_logic_vector(3 downto 0); --输出千位

out5: out std_logic_vector(3 downto 0)); --输出ABC END transform ;

ARCHITECTURE c OF transform IS

signal cc : integer range 0 to 1023 ;

signal t : std_logic_vector(1 downto 0) ; signal q1,q2,q3:integer range 0 to 1000; BEGIN

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

IF (clk"event and clk="1") THEN IF v="0" THEN t

elsif t="00" then t

elsif t="01" then t

elsif t="10" then t

else t

END IF;

END IF;

END PROCESS p1; p2:process(clk,t) BEGIN

if (clk"event and clk="1") then

CASE t is --实现分时显示

when "00" => cc cc cc cc

q1

q3

out1

end process p2; END c;

4. 数码管译码电路

4.1电路模块

4.2关键代码

ENTITY shumaguan IS PORT(

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

out5,out4,out3,out2,out1: IN STD_LOGIC_VECTOR(3 DOWNTO 0); g:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); cat:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END shumaguan;

ARCHITECTURE a OF shumaguan IS

SIGNAL tmpg:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL

tmpn:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL tmpc:INTEGER RANGE 0 TO 5; BEGIN

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

if(clk1"event and clk1="1")then

if tmpc = 5 then tmpc

tmpc

END PROCESS p1;

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

if(clk1"event and clk1="1")then --将个位、十位等赋给各个数码管case tmpc is

WHEN 0 => tmpn tmpn tmpn tmpn

WHEN 5 => tmpn tmpn

END PROCESS p2;

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

CASE tmpn IS

WHEN"0000"=> tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg tmpg

5. 点阵译码电路

5.1电路模块

5.2关键代码 ENTITY dz is PORT(

clk500: IN STD_LOGIC; v : IN STD_LOGIC;

row : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --行

col : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --列 END dz;

ARCHITECTURE a OF dz IS

SIGNAL tmp_row:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL

tmp_col:STD_LOGIC_VECTOR(7 DOWNTO 0); begin

process(v,clk500) begin

if (clk500"event and clk500="1")then if v = "0"then case tmp_col is

WHEN"11111110"=> tmp_col tmp_col tmp_col tmp_col tmp_col tmp_col tmp_col tmp_col tmp_col

case tmp_col is

WHEN"11111110"=> tmp_col tmp_col tmp_col tmp_col tmp_col tmp_col WHEN"11111011"=> tmp_col

WHEN"11111101"=> tmp_col tmp_col

5.3仿真波形

图9 空载时显示“〇”

图10 载客时显示“X ”

四、实现功能说明

1,实现功能

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

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

图11 编译报告

图逻辑元件表

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

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

由图看到,除了transform 模块之外,各模块占用资源均不大。transform

模块因为用到了除法、取余数等运算。因此占用资源较多,应在后期进行优化,降低资源利用率。

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

4. 必要的测试方法

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

显示

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

五、故障与问题分析

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

2)计数时采用十位二进制计数,无法逐位读取,赋给各个数码管

解决办法1:先将二进制转为十进制,再利用除法和取余数运算得到各位数值(改动小,但运算量大,占用资源多)

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

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

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

六、总结和结论

这次数字电路综合实验是一次将理论、实验与现实应用结合在一起的实验。当第一次课拿到题目时,我感觉无从下手,几乎没有思路。但当三周后我基本完成了实验任务时,却又觉得整个电路结构无比清晰,甚至知道我的方案哪里做得好、哪里做得不好。在这三周的时间里,我觉得我有如下的收获: 1. 基础知识与动手操作并重由于我觉得自己基础不好,又加上是上学期的内容,因此在拿到题目后我并没有立即动手做,而是完整地阅读了一编实验教材,并且认真做了笔记。在之后的设计中,无论是对于具体语句还是设计思想,都有了成竹在胸的感觉,甚至还可以帮助同学

们解决一些小的知识点,做一些小的改进。但光看书也是不够的,在编程的过程中,一开始仍有一些生涩,随着时间的推移,我的进度也逐渐加快。因此,这说明,在做具体的项目时一定首先要打好基础,不能过于着急动手,当然也不能一味地抠细节,忽视实验的重要性。 2. 整体的设计比具体的实现更重要在老师的讲课过程中,不止一遍强调数字电路的模块的划分、上层的设计要比具体的编程语句更重要。一开始我并没有意识到这一问题,在做逻辑框图时细节和准确性都不够。因为我习惯一边开始做,一边想下一步怎么做。但在老师检

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

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

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

七、完整源程序

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

北京邮电大学数电实验一实验报告

北京邮电大学数字电路与逻辑 设计实验 学院: 班级: 作者: 学号:

实验一 Quartus II原理图输入法设计 一、实验目的: (1)熟悉Quartus II原理图输入法进行电路设计和仿真 (2)掌握Quartus II 图形模块单元的生成与调 (3)熟悉实验板的使用 二、实验所用器材: (1)计算机 (2)直流稳压电源 (3)数字系统与逻辑设计实验开发板 三、实验任务要求 (1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模 块单元。 (2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能, 并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。 (3)用3线-8线译码器(74LS138)和逻辑门设计实现函数 ,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 四、设计思路和过程 (1)半加器的设计 半加器电路是指对两个输入数据位进行加法,输出一个结果位和进位,不产生进位输入的加法器电路。是实现两个一位二进制数的加法运算电路。数据输入AI被加数、BI加数,数据输出SO和数(半加和)、进位C0。 在数字电路设计中,最基本的方法是不管半加器是一个什么样的电路,按组合数字电路的分析方法和步骤进行。 1.列出真值表 半加器的真值表见下表。表中两个输入是加数A0和B0,输出有一个是和S0,另一个是进位C0。

2 该电路有两个输出端,属于多输出组合数字电路,电路的逻辑表达式如下函数的逻辑表达式为:SO=AI⊕BI CO=AB 所以,可以用一个两输入异或门和一个两输入与门实现。

北邮数字电路综合实验报告

数字电路综合实验报告 简易智能密码锁 一、实验课题及任务要求 设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。 基本要求: 1、密码设置:通过键盘进行4 位数字密码设定输入,在数码管上显示所输入数字。通过密码设置确定键(BTN 键)进行锁定。 2、开锁:在闭锁状态下,可以输入密码开锁,且每输入一位密码,在数码管上显示“-”,提示已输入密码的位数。输入四位核对密码后,按“开锁”键,若密码正确则系统开锁,若密码错误系统仍然处于闭锁状态,并用蜂鸣器或led 闪烁报警。 3、在开锁状态下,可以通过密码复位键(BTN 键)来清除密码,恢复初始密码“0000”。闭锁状态下不能清除密码。 4、用点阵显示开锁和闭锁状态。 提高要求: 1、输入密码数字由右向左依次显示,即:每输入一数字显示在最右边的数码管上,同时将先前输入的所有数字向左移动一位。 2、密码锁的密码位数(4~6 位)可调。

3、自拟其它功能。 二、系统设计 2.1系统总体框图 2.2逻辑流程图

2.3MDS图 2.4分块说明 程序主要分为6个模块:键盘模块,数码管模块,点阵模块,报警模块,防抖模块,控制模块。以下进行详细介绍。 1.键盘模块 本模块主要完成是4×4键盘扫描,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。 键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出高电平,在读入输出的行值时,通常高电平会被低电平拉低,当当前位置为高电平“1”时,没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。由此可确定按键位置。

北京邮电大学数字电路实验报告

北京邮电大学 数字电路与逻辑设计实验 实验报告 实验名称:QuartusII原理图输入 法设计与实现 学院:北京邮电大学 班级: 姓名: 学号:

一.实验名称和实验任务要求 实验名称:QuartusII原理图输入法设计与实现 实验目的:⑴熟悉用QuartusII原理图输入法进行电路设计和仿真。 ⑵掌握QuartusII图形模块单元的生成与调用; ⑶熟悉实验板的使用。 实验任务要求:⑴掌握QuartusII的基础上,利用QuartusII用逻辑 门设计实现一个半加器,生成新的半加器图像模 块。 ⑵用实验内容(1)中生成的半加器模块以及逻辑门 实现一个全加器,仿真验证其功能,并能下载到实 验板上进行测试,要求用拨码开关设定输入信号, 发光二级管显示输出信号。 ⑶用3线—8线译码器(74L138)和逻辑门实现要求 的函数:CBA F+ C + =,仿真验证其 + B C B A A A B C 功能,,并能下载到实验板上进行测试,要求用拨 码开关设定输入信号,发光二级管显示输出信号。二.设计思路和过程 半加器的设计实现过程:⑴半加器的应有两个输入值,两个输出值。 a表示加数,b表示被加数,s表示半加和, co表示向高位的进位。

⑵由数字电路与逻辑设计理论知识可知 b a s ⊕=;b a co ?= 选择两个逻辑门:异或门和与门。a,b 为异 或门和与门的输入,S 为异或门的输出,C 为与门的输出。 (3)利用QuartusII 仿真实现其逻辑功能, 并生成新的半加器图形模块单元。 (4)下载到电路板,并检验是否正确。 全加器的设计实现过程:⑴全加器可以由两个半加器和一个或门构 成。全加器有三个输入值a,b,ci ,两个输 出值s,co :a 为被加数,b 为加数,ci 为低 位向高位的进位。 ⑵全加器的逻辑表达式为: c b a s ⊕⊕= b a ci b a co ?+?⊕=)( ⑶利用全加器的逻辑表达式和半加器的逻 辑功能,实现全加器。 用3线—8线译码器(74L138)和逻辑门设计实现函数 CBA A B C A B C A B C F +++= 设计实现过程:⑴利用QuartusII 选择译码器(74L138)的图形模块

2016年北邮数电实验报告

数字电路与逻辑设计 实验报告 学院:电子工程学院 班级: 姓名: 学号: 班内序号:

目录 (一)实验名称及实验任务要求 (1) (二)模块端口说明及连接图 (2) 1.1实验三(3)模块端口说明 (2) 1.2实验三(3)连接图 (2) 2.1实验四模块端口说明 (2) 2.2实验四连接图 (2) (三)原理图或VHDL代码 (3) 1.实验一(2)原理图 (3) 2.实验三(3)VHDL代码 (4) 3.实验四VHDL代码 (7) (四)仿真波形 (10) 1.实验一(2)仿真波形 (10) 2.实验三(3)仿真波形 (11) 3.实验四仿真波形 (11) (五)仿真波形分析 (11) 1.实验一(2)仿真波形分析 (11) 2.实验三(3)仿真波形分析 (11) 3.实验四仿真波形分析 (11) (六)故障及问题分析 (12) (七)总结和结论 (13)

(一)实验名称及实验任务要求 实验一 名称:QuartusII原理图输入法设计与实现 实验任务要求:EDA基础实验1(1)、(2)、(3)必做,选做VHDL 实现加法器。 实验二 名称:用VHDL设计与实现组合逻辑电路 实验任务要求:四人表决器、8421码转格雷码、数码管译码器(下载测试)。 实验三 名称:用VHDL设计与实现时序逻辑电路 实验任务要求:分频器、8421十进制计数器、将分频器/8421十进制计数器/数码管译码器3个电路进行连接并下载。 实验四 名称:用VHDL设计与实现相关电路 实验任务要求:数码管动态扫描控制器、点阵扫描控制器。

(二)模块端口说明及连接图 1.1实验三(3)模块端口说明 cp:时钟信号输入; rst:8421十进制计数器异步置位; c[6...0]:七段二极管数码管显示; cat[7...0]:数码管显示。 1.2实验三(3)连接图 2.1实验四模块端口说明 cp:时钟信号输入; rst:8421计数器异步复位; lgt[6...0]:七段二极管数码管显示; cat[7...0]:数码管显示。 2.2实验四连接图

北邮数电实验报告

北京邮电大学实验报告 实验名称:数字电路与逻辑设计实验报告 学院:信息与通信工程学院 班级: 姓名: 学号: 序号: 日期:

实验三:用VHDL语言设计与实现逻辑电路 一、实验内容 1. 用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能,并下载到实验版测试。要求用按键设定输入信号,发光二极管显示输出信号; 2.用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器,仿真验证其功能; 3.将(1),(2)和数码管译码器3个电路进行连接,并下载到实验板显示计数结果。 二、模块端口说明及连接图 1.分频器 2. 计数器 clk: 时钟输入信号 clk: 时钟信号输入 clear: 复位信号输入 clear: 复位信号输入 clk_out: 时钟分频后的信号输出 q: 计数器的输出 3.数码管显示 b: 数码管的输入信号 seg: 译码显示输出 onoff: 数码管的输出控制

4.连接图 三、实验分析 1.设计思路 本实验将之前的分频器和计数器以及数码管显示模块组合起来,实现了单个数码管现显示0~9,每隔0.5s切换一次显示内容。 COMPONENT div_12实现了时钟分频,将50MHz的单片机晶振时钟进行分频,输出频率2HZ占空比50%的方波时钟,以此时钟作为内部时钟驱动计数器。 COMPONENT jishuqi是一个十进制计数器,NUM从“0000”到“1001”循环变化,模为10。计数器的输出传递给数码管译码显示电路。 COMPONENT seg7_1是数码管译码显示电路,将收到的信号NUM译码并控制数码管的段锁存来控制数码管的显示。 整体来看,div-12提供了分频后2Hz的时钟,驱动计数器计数,计数的结果作为数码管译码显示模块的输入,根据计数器实时的数进行数码管的显示。综合起来就实现了设计的功能。 在进行电路的连接时,可直接在代码中分成三个进程来实现,也可通过为每个模块建立符号,连接电路图来实现。 2. 具体代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fenpinjishu IS PORT( clear2 :IN STD_LOGIC; clk1:IN STD_LOGIC; b1:OUT STD_LOGIC_VECTOR(6 downto 0); CAT:OUT STD_LOGIC_VECTOR(7 downto 0) );

北邮数电实验报告

北京邮电大学 实验报告实验名称:数电电路与逻辑设计实验 学院:信息与通信工程学院 班级: 姓名: 学号: 班内序号: 日期:

一. 实验一:Quartus II 原理图输入法设计 1. 实验名称和实验任务要求 (1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块 元。 (2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号入信号。 (3)用3线-8线译码器(74LS138)和逻辑门设计实现函数 F=A B C +A B C +A B C + A B C 。 2. 实验原理图及波形图 (1)半加器 (2)全加器

(3)74LS38 3.仿真波形图分析 (1)半加器: 输入为a,b,输出S,CO(进位)。 当ab都为0时,半加和s=0,进位端co=0。 当ab都为1时,半加和s=0,进位端co=1。 当a=1,b=0 或a=0,b=1时,半加和s=1,进位端co=0。 (2)全加器:

输入a,b,输出S,CO(进位),ci(低进位)。 当a=0,b=0,ci=0,输出s=0,co=0。 当a=0,b=1或a=1,b=0又 ci=0,输出s=1,co=0。 当a=0,b=0,ci=1,输出s=1,co=0。 (3)74LS138 输入A,B,C,输出为3。 四个输出对应F中的四个最小项,Y0、Y2、Y4、Y7,以实现函数功能。 二.实验二:用 VHDL 设计与实现组合逻辑电路 1.实验名称和实验任务要求 (1)用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能。要求用拨码开关设定输入信号,7段数码管显示输出信号。 (2) 用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能。要求用拨码开关设定输入信号,发光二极管显示输出信号。 (3) 用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个’1’时,输出为’1’,否则输出’0’,仿真验证其功能。要求用拨码开关设定输入信号,发光二极管显示输出信号。 2.实验代码及波形图 (1)共阴极7段数码管译码器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY GUAN IS PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); C:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END GUAN; ARCHITECTURE encoder_arch OF GUAN IS BEGIN PROCESS(A) BEGIN C<="011111"; CASE A IS 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

数电实验实验报告

数字电路实验报告

实验一 组合逻辑电路分析 一.试验用集成电路引脚图 74LS00集成电路 74LS20集成电路 四2输入与非门 双4输入与非门 二.实验内容 1.实验一 自拟表格并记录: 2.实验二 密码锁的开锁条件是:拨对密码,钥匙插入锁眼将电源接通,当两个条件同时满足时,开锁信号为“1”,将锁打开。否则,报警信号为“1”,则接通警铃。试分析密码锁的密码ABCD 是什么? X1 2.5 V A B C D 示灯:灯亮表示“1”,灯灭表示“0” ABCD 按逻辑开关,“1”表示高电平,“0”表示低电平

ABCD 接逻辑电平开关。 最简表达式为:X1=AB ’C ’D 密码为: 1001 A B C D X1 X2 A B C D X1 X2 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 1 1 0 0 0 1 0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 0 1 1 0 1 0 1 0 0 0 1 1 1 0 0 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 三.实验体会: 1.分析组合逻辑电路时,可以通过逻辑表达式,电路图和真值表之间的相互转换来到达实验所要求的目的。 2.这次试验比较简单,熟悉了一些简单的组合逻辑电路和芯片 ,和使用仿真软件来设计和构造逻辑电路来求解。 实验二 组合逻辑实验(一) 半加器和全加器 一.实验目的 1. 熟悉用门电路设计组合电路的原理和方法步骤 二.预习内容 1. 复习用门电路设计组合逻辑电路的原理和方法步骤。 2. 复习二进制数的运算。 3. 用“与非门”设计半加器的逻辑图。 4. 完成用“异或门”、“与或非”门、“与 非”门设计全加器的逻辑图。 5. 完成用“异或”门设计的3变量判奇 电路的原理图。 三.元 件参考 U1A 74LS00D U1B 74LS00D U1C 74LS00D U1D 74LS00D U2A 74LS00D U2B 74LS00D U2C 74LS00D U3A 74LS20D X1 2.5 V X2 2.5 V VCC 5V A B C D

北邮-数电实验报告

北邮-数电实验报告

数字电路实验报告 学院:信息与通信工程 专业:信息工程 班级:2013211125 学号:2013210681 姓名:袁普

②:仿真波形图以及分析 波形图: 波形分析:通过分析ab ci三个输入在8中不同组合下的输出,发现与全加器的真值表吻合,说明实现了全加器的逻辑功能。同时看见波形中出现了毛刺(冒险),这也与事实一致。 ③:故障及问题分析 第一次在做全加器的时候发现找不到已经生成的半加器模块,后来发现是因为在建立工程时这两个项目没有建在同一个文件夹里,在调用的时候就找不到。后来我将全加器工程建在同一个文件夹里解决了此问题。

实验二:用VHDL设计和实现组合逻辑电路 一:实验要求 ①:用VHDL设计一个8421码转换为格雷码的代码转换器,仿真验证其功能。 ②:用VHDL设计一个4位二进制奇校验器,要求在为奇数个1时输出为1,偶数个1时输出为0,仿真验证其功能。 ③:用VHDL设计一个数码管译码器,仿真验证其功能,下载到实验板测试,要求用拨码开关设定输入信号,数码管显示输出信号,并且只使一个数码管有显示,其余为熄灭状态。 二:故障及问题分析 在刚开始实现让一个数码管显示的时候,我本来准备再设置6个输入和输出,通过实验板上的拨码来输入信息分别控制不同的数码管的的开闭状态,但是后来发现这样效率很低而且实验板上的拨码开关数量根本不够。在老师的提醒下,我最终在VHDL里直接增加了一个向量输出”011111”来直接控制cat0~5六个管脚,从而达到了实验的要求。

实验三:用VHDL设计和实现时序逻辑电路 一:实验要求 ①:用VHDL语言设计实现一个8421十进制计数器,要求有高电平复位功能,仿真验证其功能。 ②:用VHDL语言设计实现一个分频系数为12,输出为占空比50%方波的分频器,有高电平复位功能,仿真验证其功能。 ③:将(1),(2)和数码管译码器三个电路进行连接,仿真验证其功能,并下载到实验板进行测试,要求第三个数码管显示数字。二:报告内容 ①实验三(3)模块端口说明及模块代码 模块一:div12为一个有高电平复位功能的分频系数为12的分屏器,其输出是一个占空比50%的方波。此模块输入连接一个时钟输入,即可在输出端得到一个周期更大的方波输出。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity div12 is port( clear,clk:in std_logic; clk_out:out std_logic ); end div12; architecture struct of div12 is signal temp:integer range 0 to 5; signal clktmp:std_logic; begin process(clk,clear) begin if(clear='1') then

北邮数电实验分析报告-信息

北邮数电实验报告-信息

————————————————————————————————作者:————————————————————————————————日期:

数字电路与逻辑设计实验 姓名*** 学院信息与通信工程学院 专业信息工程 班级*** 学号**** 班内序号***

实验一 一、实验名称和实验任务要求 1.实验内容:QuartusII原理图输入法设计与实现。 2.实验目的: (1)熟悉用QuartusII原理图输入法进行电路设计和仿真。 (2)掌握QuartusII图形模块单元的生成与调用。 (3)熟悉实验板的使用。 3.实验任务要求: (1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图像模块。 (2)用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板上测试。要求用拨码开关设定输入信 号,发光二极管显示输出信号。 (3)用3线—8线译码器(74LS138)和逻辑门实现函数 F=(/)(/)(/)+(/)(/)+(/)(/)+,仿真验证其功能,并下载到实 验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 二、原理图 半加器模块和逻辑门设计实现的全加器: 三、仿真波形图及分析 电路实现了全加器的功能。全加器是实现两个1位二进制数及低位来的进位相加求得和数及向高位进位的逻辑电路。由其原理可得逻辑表达式:sum=ain⊕bin⊕cin

cout = (ain⊕bin)cin + ain*bin。 列出真值表: 输入输出 ain bin cin cout sum 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 仿真波形对比真值表,可以看出波形图与理论值完全符合。 四、故障及问题分析 1、问题:按照逻辑表达式连接了全加器电路后,仿真波形很乱。 解决方法:思考后知道了应该把输入信号依次设成2的n次方,这样的仿真波形清楚容易分析。 2、问题:把代码下载到板子上的过程中,进行到37%的时候停了,等了2分钟 也没继续下载。 解决方法:再次重连USB尝试下载,手紧握着接线口,下载成功了,分析可能是接线口接触不好。 实验二 一、实验名称和实验任务要求 1.实验内容:用VHDL设计与实现组合逻辑电路。 2.实验目的: (1)熟悉用VHDL语言设计组合逻辑电路的方法。 (2)熟悉用QuartusII文本输入法进行电路设计。 3.实验任务要求: (1)用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个‘1’时,输出为‘1’,否则输出‘0’,仿真验证其功能,并下载到实验板测 试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 (2)用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号, 发光二极管显示输出信号。

北邮大二下数电实验报告

邮电大学 数字电路与逻辑设计实验 学院: 班级: : 学号: 班序号:

实验一 一、实验名称 Quartus II 原理图输出法设计 (一)半加器 二、实验任务要求 用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。 三、设计思路和过程 ◎设计思路 半加器电路是指对两个输入数据位进行加法,输出一个结果位和进位,不产生进位输入的加法器电路,是实现两个一位二进制数的加法运算电路。 数据输入:被加数AI、加数BI 数据输出:半加和SO、进位CO ◎设计过程 (1)列出真值表

01 1 0 10 1 0 110 1 *表中两个输入是加数AI和BI,输出有一个是和SO,另一个是进位CO。(2)根据真值表写出输出逻辑表达式 该电路有两个输出端,属于多输出组合数字电路,电路的逻辑表达式如下: AI =。所以,可以用一个两输入异或门和一个两输入与门CO? SO⊕ BI AI =,BI 实现。 ◎实验原理图 四、仿真波形图及分析

根据仿真波形对比半加器真值表,可以确定电路实现了半加器的功能。但我们也可以发现输出SO出现了静态功能冒险,要消除该冒险可以加入相应的选通脉冲。 (二)全加器 二、实验任务要求 用实验容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。 三、设计思路和过程 ◎设计思路 全加器与半加器的区别在于全加器有一个低进位CI,从外部特性来看,它

是一个三输入两输出的器件。 ◎设计过程 (1)全加器的真值表如下 *其中AI 为被加数,BI 为加数,CI 为相邻低位来的进位数。输出本位和为SO ,向相邻高位进位数为CO 。 (2)根据真值表写出逻辑表达式: CI BI AI SO ⊕⊕=,BI AI CI BI AI CO ?+?⊕=)( 根据逻辑表达式,可以知道只要在半加器的基础上再加入一个异或门、一个两输入与门和两输入或门即可实现全加器。 ◎实验原理图

北邮数电综合实验电子沙漏的设计与实现

北京邮电大学数电综合实验报告 实验名称:电子沙漏的设计与实现 学院:信息与通信工程学院 姓名: 班级: 学号: 班内序号:

一、实验设计的基本要求 沙漏是一种古老的计时工具,也是一种玩具。电子沙漏用发光二极管表示沙粒,模拟沙漏的运动过程。电子沙漏会像真正的沙漏一样,上部的沙粒(点亮的发光二极管)一粒一粒往下掉,下部的沙粒一粒一粒堆起来。 1、采用 8*8 双色点阵显示电子沙漏的开机界面,如图 2 所示。其中红色 LED 代表沙漏的上半部分沙粒 VD0~VD15,绿色 LED 代表沙漏的下半部分 VD0'~VD15'。 2、用拨码开关 SW1 模拟重力感应器。当 SW1 为低电平时,沙粒从VD0~VD15 向 VD0'~VD15'移动;当 SW1 为高电平时,沙粒从 VD0'~VD15'向 VD0~VD15 移动。 3、按键 BTN0 作为计时启动停止按键,启动后沙粒即可按照 SW1 设定的方向移动, 以 SW1 为低电平时为例,LED 移动的顺序与对应关

系如图 3 的1~16所示(若 SW1 为高电平,则点阵显示移动顺序为 16~1)。每颗沙粒的移动时间为 1 秒,当移动到图 3 的16时,若 SW1 仍为低电平,则保持沙粒不动,但计时继续,直到 SW1 的电平发生变化或者 BTN0 计时停止。

4、设计实现一个 60 秒计时器,当按键 BTN0 启动时开始工作,用于在沙粒移动过程中进行计时校准,并用数码管 DISP0~DISP1 显示计时结果。 提高要求: 1、可以调节控制电子沙漏的流动速度。? 2、用多种方式呈现电子沙漏界面。? 3、自行设定沙粒的移动路径,显示每颗沙粒的移动过程。 4、外接重力感应器,实现真实的电子沙漏功能。? 5、自拟其它功能。 二、系统设计 1、设计思路 实验比较复杂,故采用分模块设计的思想,将模块分为了分频模块、控制模块、数码管显示模块、8*8点阵显示模块。 由于本实验需要用BTN0按键来控制时间和沙漏的开始运行以及时间的暂停功能,故需要检测输入,此时就要用到防抖模块,防止在按下按键时有多个上升沿产生导致开关并不能完美的发挥作用。 控制模块是用来实现具体的操作的,通过对按下BTN0按键的次数统计,将其分为奇数与偶数两种情况,在奇数时使功能正常运行,在统计为偶数时使时间暂停,以此来实现对此系统的控制。

北京邮电大学数字电路实验报告

北京邮电大学数字电路实验报告

北京邮电大学 数字电路与逻辑设计实验 实验报告 实验名称:QuartusII原理图输入 法设计与实现 学院:北京邮电大学 班级: 姓名: 学号:

一.实验名称和实验任务要求 实验名称:QuartusII原理图输入法设计与实现 实验目的:⑴熟悉用QuartusII原理图输入法进行电路设计和仿真。 ⑵掌握QuartusII图形模块单元的生成与调用; ⑶熟悉实验板的使用。 实验任务要求:⑴掌握QuartusII的基础上,利用QuartusII用逻辑 门设计实现一个半加器,生成新的半加器图像模 块。 ⑵用实验内容(1)中生成的半加器模块以及逻辑门 实现一个全加器,仿真验证其功能,并能下载到实 验板上进行测试,要求用拨码开关设定输入信号, 发光二级管显示输出信号。 ⑶用3线—8线译码器(74L138)和逻辑门实现要求 的函数:CBA F+ C + =,仿真验证其 + B C B A A A B C 功能,,并能下载到实验板上进行测试,要求用拨 码开关设定输入信号,发光二级管显示输出信号。二.设计思路和过程 半加器的设计实现过程:⑴半加器的应有两个输入值,两个输出值。 a表示加数,b表示被加数,s表示半加和, co表示向高位的进位。

⑵由数字电路与逻辑设计理论知识可知b a s ⊕=;b a co ?= 选择两个逻辑门:异或门和与门。a,b 为异或门和与门的输入,S 为异或门的输出,C 为与门的输出。 (3)利用QuartusII 仿真实现其逻辑功能,并生成新的半加器图形模块单元。 (4)下载到电路板,并检验是否正确。 全加器的设计实现过程:⑴全加器能够由两个半加器和一个或门构成。全加器有三个输入值a,b,ci ,两个输 出值s,co :a 为被加数,b 为加数,ci 为低 位向高位的进位。 ⑵全加器的逻辑表 示式为: c b a s ⊕⊕= b a ci b a co ?+?⊕=)(

北邮数电综合实验报告

数字电路与逻辑设计实验题目: 简易出租车计价器 学号: 姓名: 班级: 学院: 时间:2013/11/4

一.设计课题的任务要求 设计一台出租车计价器,不同情况具有不同的收费标准。 基本要求: 1、行驶公里:用时钟2 秒钟表示出租车匀速行驶1 公里,在行车5 公里以内,按起步 价13 元收费,超过5 公里部分,以每公里2 元收费。燃油附加费为每运次1 元。 2、途中等待:用按键控制中途等待,等待少于(包括)5 秒不收费,超过5 秒后每等待3 秒钟加收1 元。 3、用数码管分时显示计费金额、行驶里程和等候时间。字母A 表示当前处于显示计费金额状态,字母B 表示当前处于显示行驶里程状态,字母C 表示当前处于显示等候时间状态。 4、用按键控制出租车空驶、载客状态并用点阵显示空驶、载客状态。 二、系统设计(包括设计思路、总体框图、分块设计) 1、设计思路: 将整个计价器分为控制和计费模块,按键及防抖模块,数码管显示模块,点阵显示模块。其中控制和计费模块作为系统核心,负责给出所有控制和对外显示信号。按键及防抖模块提供输入按键信号,用于状态间切换。数码管用于显示计费金额、里程和等待时间信息。点阵模块用于显示出租车载客和空驶状态。

2、设计框图: 3、分块设计 ①控制和计费模块: 采用状态机的设计方式,根据计费计时方式的不同,分为了S0、S1、S2、S3四个状态,四个状态的含义和状态转移图如图所示:

②按键防抖模块: 如图:按键防抖模块的原理是利用信号延迟,每个防抖模块都有一个输入时钟,每按下一次按键后输出端将产生一个输入时钟宽度的脉冲,输入时钟频率与主控模块中的状态切换扫描时钟频率相同,使状态能够及时的切换。

北邮模电实验报告函数发生器

北京邮电大学 课程实验报告 课程名称:电子测量与电子电路 设计题目:函数信号发生器 院系:电子工程学院电子科学与技术专业 班级: 2013211209 学生姓名: 刘博闻 学号: 2013211049 指导教师:高惠平

摘要 函数信号发生器广泛地应用于各大院校和科研场所。随着科技的进步,社会的发展,单一的函数信号发生器已经不能满足人们的需求,本实验设计的正是多种波形发生器。 本实验由两个电路组成,方波—三角波发生电路和三角波—正弦波变换电路。方波—三角波发生电路由自激的单线比较器产生方波,通过RC积分电路产生三角波,在经过差分电路可实现三角波—正弦波的变换。 本电路振荡频率和幅度用电位器调节,输出方波幅度的大小由稳压管的稳压值决定;而正弦波幅度和电路的对称性也分别由两个电位器调节,以实现良好的正弦波输出图形。它的制作成本不高,电路简单,使用方便,有效的节省了人力,物力资源,具有实际的应用价值。 关键词:三角波方波正弦波幅度调节频率调节

目录 设计要求 (1) 1.前言 (1) 2.方波、三角波、正弦波发生器方案 (1) 2.1原理框图 (1) 2.2 系统组成框图 (2) 3.各组成部分的工作原理 (2) 3.1 方波-三角波产生电路的工作原理 (2) 3.2 三角波-正弦波转换电路的工作原理 (4) 3.3 总电路图 (6) 4.用Mutisim电路仿真 (7) 4.1方波—三角波电路的仿真 (7) 4.2方波—正弦波电路的仿真 (8) 5电路的实验结果及分析 (9) 5.1方波波形产生电路的实验结果 (9) 5.2 方波---三角波转换电路的实验结果 (10) 5.3正弦波发生电路的实验结果 (11) 5.4实验结果分析 (12) 6.实验总结 (12) 7.仪器仪表清单 (13) 7.1所用仪器及元器件: (13) 7.2仪器清单表 (13) 8.参考文献 (16) 9.致谢 (166)

北邮数电实验报告

北京邮电大学 实验报告 实验名称:数电实验学院:信息与通信工程学院 班级: 姓名: 学号: 日期:2015年5月

目录 1、实验一 (4) (1)实验名称和任务要求 (4) (2)原理图 (4) (3)仿真波形及分析 (5) 2、实验二 (5) (1)实验名称和任务要求 (5) (2)VHDL代码 (6) (3)模块连接图 (8) (4)仿真波形及分析 (8) 3、实验三 (9) (1)实验名称和任务要求 (9) (2)VHDL代码 (10) (3)连接VHDL代码 (11) (4)图形模块 (12) (5)仿真波形及分析 (12) (6)端口说明 (13) 4、实验四 (13) (1)实验名称和任务要求 (13) (2)VHDL代码 (13) (3)图形模块 (16)

(4)仿真波形及分析 (18) (5)端口说明 (21) 5、故障及问题分析 (21) 6、总结 (21)

一:实验一 1、实验名称和任务要求 实验名称:Quartus2原理图输入法设计 实验目的: 1、熟悉用Quartus2原理图输入法进行电路设计和仿真 2、掌握Quartus2图形模块单元的生成与调用 3、熟悉实验板的使用 实验内容: 1 、用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图 形模块单元。 2 、用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真 验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。 3 、用3线-8线译码器(74LS138)和逻辑门设计实现函数 F=/C/B/A+/CB/A+C/B/A+CBA,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 2、原理图 (1)半加器 (2)全加器

数电实验报告

实验2 组合逻辑电路(半加器全加器及逻辑运算) 一、实验目的 1.掌握组合逻辑电路的功能测试。 2.验证半加器和全加器的逻辑功能。 3.学会二进制数的运算规律。 二、实验仪器及材料 1.Dais或XK实验仪一台 2.万用表一台 3.器件:74LS00 三输入端四与非门3片 74LS86 三输入端四与或门1片 74LS55 四输入端双与或门1片 三、预习要求 1.预习组合逻辑电路的分析方法。 2.预习用与非门和异或门构成的半加器、全加器的工作原理。 3.学习二进制数的运算。 四、实验内容 1.组合逻辑电路功能测试。 图2-1 ⑴用2片74LS00组成图2-1所示逻辑电路。为便于接线和检查,在图中要注明芯片编号及各引脚对应的编号。 ⑵图中A、B、C接电平开关,Y1、Y2接发光管显示。 ⑶按表2-1要求,改变A、B、C的状态填表并写出Y1、Y2逻辑表达式。 ⑷将运算结果与实验比较。

(5)实验过程及实验图: 1)连线图: 2)实验图:

(6)实验总结: 用两片74ls00芯片可实现如图电路功能 2.测试用异或门(74LS86)和与非门组成的半加器的逻辑功能。 根据半加器的逻辑表达式可知,半加器Y是A、B的异或,而进位Z是A、B相与, 故半加器可用一个集成异或门和二个与非门组成如图2-2。 图2-2 ⑴在实验仪上用异或门和与门接成以上电路。A、B接电平开关S,Y、Z接电平显示。 ⑵按表2-2要求改变A、B状态,填表。 1)管脚图:

2)实验图 (4)实验总结:用异或门(74LS86)和与非门可组成半加器 3.测试全加器的逻辑功能。 ⑴写出图2-3电路的逻辑表达式。 ⑵根据逻辑表达式列真值表。 ⑶根据真值表画逻辑函数SiCi的卡诺图。

北邮数电实验电子琴

VHDL硬件描述语言程序设计简易电子琴演奏器 姓名:chi

目录 一、设计课题的任务要求 ............................................................. 错误!未定义书签。 二、系统设计................................................................................. 错误!未定义书签。 三、仿真波形及波形分析 ............................................................. 错误!未定义书签。 四、源程序..................................................................................... 错误!未定义书签。 五、功能说明................................................................................. 错误!未定义书签。 六、元器件清单及资源利用情况 ................................................. 错误!未定义书签。 七、故障及问题分析 ..................................................................... 错误!未定义书签。 八、总结和结论 ............................................................................. 错误!未定义书签。

北邮数电实验电子琴

. .. . VHDL硬件描述语言程序设计简易电子琴演奏器 :chi

目录 一、设计课题的任务要求 (3) 二、系统设计 (4) 三、仿真波形及波形分析 (7) 四、源程序 (9) 五、功能说明 (20) 六、元器件清单及资源利用情况 (21) 七、故障及问题分析 (23) 八、总结和结论 (23)

一、设计课题的任务要求 基本要求: 1、用8×8点阵显示“1 2 3 4 5 6 7”七个音符构成的电子琴键盘。其中点阵的第一列 用一个LED点亮表示音符“1”,第二列用二个LED点亮表示音符“2”,依此类推,如下图所示。 图1 点阵显示的电子琴键盘 2、用BTN1~BTN7七个按键模拟电子琴手动演奏时的“1 2 3 4 5 6 7”七个音符。当 某个按键按下时,数码管显示相应的音符,点阵上与之对应的音符显示列全灭,同 时蜂鸣器演奏相应的声音;当按键弹开时数码管显示的音符灭掉,点阵显示恢复, 蜂鸣器停止声音的输出。下图所示为按下BTN3按键时点阵的显示情况。 图2 按键按下后的点阵显示 3、由拨码开关切换选择高、中、低音,并用数码管进行相应的显示。 4、通过按键BTN0进行复位,控制点阵显示图1的初始状态。 提高要求: 1、可通过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自动演奏 乐曲的功能。 2、增加手动演奏的音符存储、播放功能。

二、系统设计 1.设计思路 简易电子琴的制作主要是利用不同频率的波来驱动蜂鸣器发出声响。通过输入不同的音符来设置不同的分频系数,使得50MHz的主频分频出不同频率的波。同时,演奏的音符还可以通过数码管和8*8点阵来动态显示。 根据系统设计要求,该电子琴设计采用自顶向下的设计方法。整体的功能通过不同的底层模块配合来完成电子琴的功能。底层模块主要包括乐曲自动演奏模块、分频预置值产生模块和数控分频模块,数码管显示模块,8*8点阵显示模块五部分组成。用这种设计思路把整个系统分为了若干个模块,然后再在顶层文件中将各个模块组合在一起,从而体现出超、高速硬件描述语言VHDL的优势, 关于提高要求过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自动演奏乐曲的功能,我打算将一首曲子的音符储存在自动播放的数组里面,然后通过计数器来顺序播放储存的音符。 关于提高要求中的手动演奏的音符存储、播放功能,我打算通过编程实现类似数据结构中队列的模块,来储存手动输入的音符,然后在要播放的时候,队列里面的音符依次出队,从而实现音符储存播放的功能。 2.总体框图 图3 简易电子琴总体结构框图

北邮数电实验报告-信息

北邮数电实验报告■信息

!掠玄卑堂走 皐 数字电路与逻辑设计实验班内序号

姓学专班学 *** 院信息与通信工程学院 信息工程 *** **** 班内序号

实验一 一、实验名称和实验任务要求 1. 实验内容:Quartusll原理图输入法设计与实现。 2. 实验目的: (1)熟悉用Quartusll原理图输入法进行电路设计和仿真。 (2)掌握Quartusll图形模块单元的生成与调用。 (3)熟悉实验板的使用。 3. 实验任务要求: (1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图像模块。 (2)用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板上测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 (3)用3线一8线译码器(74LS138)和逻辑门实现函数 F=(/?5(/??(/??+(/????/??+??7??(/??+????,?仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 、原理图 半加器模块和逻辑门设计实现的全加器: 三、仿真波形图及分析 sum=ain ? bin ? cin cout = (ain ? bin) cin + ain*bin 。

列出真值表: 仿真波形对比真值表,可以看出波形图与理论值完全符合。 四、故障及问题分析 1、问题:按照逻辑表达式连接了全加器电路后,仿真波形很乱。 解决方法:思考后知道了应该把输入信号依次设成2的n次方,这样的仿真波形清楚容易分析。 2、问题:把代码下载到板子上的过程中,进行到37%的时候停了,等了2分钟 也没继续下载。 解决方法:再次重连USB尝试下载,手紧握着接线口,下载成功了,分析可能是接线口接触不好。 实验二 、实验名称和实验任务要求 1. 实验内容:用VHDL设计与实现组合逻辑电路。 2. 实验目的: (1)熟悉用VHDL语言设计组合逻辑电路的方法。 (2)熟悉用Quartusll文本输入法进行电路设计。 3. 实验任务要求: (1)用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个‘ 1' 时,输出为‘ 1',否则输出‘ 0',仿真验证其功能,并下载到实验板测试。要求用拨码开关 设定输入信号,发光二极管显示输出信号。 (2)用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出 信号。

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