北邮数字电路实验-投骰子游戏

北邮数字电路实验-投骰子游戏
北邮数字电路实验-投骰子游戏

数电综合实验报告掷骰子游戏电路的设计与实现

姓名:xxx

班级:xxx

学号:xxx

目录

数电综合实验报告掷骰子游戏电路的设计与实现 (1)

一、实验要求: (3)

基本要求: (3)

提高要求: (3)

二、系统设计 (3)

设计思路 (3)

总体框图 (3)

三、仿真波形及波形分析 (7)

四、源程序 (7)

五、功能说明及资源利用情况 (19)

功能说明 (19)

资源利用情况 (20)

六、故障及问题分析 (20)

七、实验结果显示 (21)

八、总结和结论 (22)

一、实验要求:

基本要求:

1、电路可供甲乙二人游戏,游戏者甲使用的按键是BTN0,游戏者乙使用的按键

为BTN1。

2、每按一次按键,代表掷一次骰子,可随机得到1~6范围内的两个数字。

3、甲乙按键产生的随机数字分别用数码管DISP0~DISP1、DISP2~DISP3显示,并用

DISP7显示比赛局数,比赛结束用8×8点阵显示获胜方,并伴有声音效果。

4、具体游戏规则如下:

(1)第一局比赛,甲乙依次各按一次按键,按键所得两数之和为7或11者胜;若无人取胜,则进行第二局比赛;

(2)第二局比赛,甲乙每人各按一次按键,按键所得二数之和与第一局比赛相同者获胜,若无人获胜,则进行第三局比赛,重复进行步骤(2),直到出现胜

者为止。

(3)游戏局数最多进行六局。在第六局比赛时,若重复进行步骤(2)仍未出现胜者,以按键所得两数之和最大者为获胜方。

提高要求:

1、增加多人游戏的功能,数码管可分时记录显示每个游戏者的骰子点数。

2、点阵显示增加游戏开机动画、结束动画,并伴有乐曲播放。

3、自拟其它功能。

二、系统设计

设计思路

在设计该游戏时,我采用了自顶向下的设计方法,首先分析了这个掷骰子游戏的基本功能就是按照上述的游戏要求设计,然后看这个系统结构该怎么分解,会产

生哪些系统模型和子模块,根据上述要求最终我决定将该系统分解成以下五个模块:随机数产生模块、按键赋值模块、数码管显示模块、状态判断模块、结果输出(点

阵和蜂鸣器)模块,最后具体到各个模块该怎么实现,及代码的编写。

总体框图

具体框图见附加Visio文件

注:框图中||表示并行程序

1、分块设计

随机数产生与按键赋值模块

状态判断模块

结果显示模块

三、仿真波形及波形分析

由上图波形可以看出程序已经实现了基本功能,但在某些部分会出现毛刺,不影响整体性能。

四、源程序

------------------------------------------------主程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity zhishaizi is

port(

----------------

CLK:in std_logic;

SG: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); --段码

BT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0) ; --位码

----------------

buttoin1: in std_logic;

buttoin2: in std_logic;

beep:out std_logic;

row,lie1: out std_logic_vector(7 downto 0));

end zhishaizi;

architecture ab of zhishaizi is

----------------------------------------------------

type shu_zu is array (7 downto 0) of std_logic_vector(7 downto 0);

constant kaiji:shu_zu:= (

("00100001"),

("00100010"),

("00100100"),

("00100100"),

("11111111"),

("00100100"),

("00100100"),

("11111111")

);

constant jia:shu_zu:= (

("00011000"),

("00011000"),

("00011000"),

("11111111"),

("10011001"),

("11111111"),

("10011001"),

("11111111")

);

constant yi:shu_zu:= (

("11111110"),

("10000001"),

("00000010"),

("00000100"),

("00001000"),

("00010000"),

("00100000"),

("11111111") );

constant ping:shu_zu:= (

("00011000"),

("00011000"),

("00011000"),

("11111111"),

("00111100"),

("01011010"),

("10011001"),

("11111111")

);

constant jieshu:shu_zu:= (

("00001000"),

("00000100"),

("00000010"),

("11111111"),

("00000010"),

("00000100"),

("00001000"),

("00000000")

);

--------------------------------------------------------

SIGNAL clk_tmp: STD_LOGIC;

SIGNAL clk_tmpp: STD_LOGIC;

signal temp:integer range 0 to 1999;

signal tempp:integer range 0 to 1896;

signal ab:INTEGER RANGE 0 TO 7;

SIGNAL CNT6:INTEGER RANGE 0 TO 4;

SIGNAL cn:integer range 1 to 6;

SIGNAL cnn:integer range 1 to 6;

signal a1,a2,b1,b2: INTEGER range 1 to 6;

signal count: INTEGER range 1 to 6;

signal a3,b3: INTEGER range 2 to 12;

signal m1,m2: INTEGER range 1 to 12;

signal A:INTEGER RANGE 1 TO 6;

signal jieguo:INTEGER RANGE 0 TO 4;

signal judge: std_logic;

signal clear:integer range 0 to 1;

begin

-------------------------------------------------------------------------------------------- pp1:process(clk) --分频器1

begin

if clk'event and clk='1' then

if temp=999 then

temp<=0;

else temp<=temp+1;

end if;

end if;

end process pp1;

pp2:process(temp)

begin

if temp=999 then

clk_tmp<='1';

else

clk_tmp<='0';

end if;

end process pp2;

p0p1:process(clk) --分频器2

begin

if clk'event and clk='1' then

if tempp=896 then

tempp<=0;

else tempp<=tempp+1;

end if;

end if;

end process p0p1;

p0p2:process(tempp)

begin

if tempp=896 then

clk_tmpp<='1';

else

clk_tmpp<='0';

end if;

end process p0p2;

p02:process(clk_tmp) --点阵的扫描信号

begin

if(clk_tmp'event and clk_tmp='1')then

ab<=ab+1;

if(ab=8)then

ab<=0;

end if;

end if;

end process p02;

p0:process(ab)

begin

case jieguo is

when 0 =>----------------------------------------------开机动画

case ab is

when 0=>

lie1<=kaiji(ab);

row<="01111111";

when 1=>

lie1<=kaiji(ab);

row<="10111111";

when 2=>

lie1<=kaiji(ab);

row<="11011111";

when 3=>

lie1<=kaiji(ab);

row<="11101111";

when 4=>

lie1<=kaiji(ab);

row<="11110111";

lie1<=kaiji(ab);

row<="11111011";

when 6=>

lie1<=kaiji(ab);

row<="11111101";

when 7=>

lie1<=kaiji(ab);

row<="11111110";

end case;

when 1=>--------------------------------------------------显示甲

case ab is

when 0=>

lie1<=jia(ab);

row<="01111111";

when 1=>

lie1<=jia(ab);

row<="10111111";

when 2=>

lie1<=jia(ab);

row<="11011111";

when 3=>

lie1<=jia(ab);

row<="11101111";

when 4=>

lie1<=jia(ab);

row<="11110111";

when 5=>

lie1<=jia(ab);

row<="11111011";

when 6=>

lie1<=jia(ab);

row<="11111101";

when 7=>

lie1<=jia(ab);

row<="11111110";

end case;

when 2=>-----------------------------------显示乙

case ab is

lie1<=yi(ab);

row<="01111111";

when 1=>

lie1<=yi(ab);

row<="10111111";

when 2=>

lie1<=yi(ab);

row<="11011111";

when 3=>

lie1<=yi(ab);

row<="11101111";

when 4=>

lie1<=yi(ab);

row<="11110111";

when 5=>

lie1<=yi(ab);

row<="11111011";

when 6=>

lie1<=yi(ab);

row<="11111101";

when 7=>

lie1<=yi(ab);

row<="11111110";

end case;

when 3=>-------------------------------------显示平

case ab is

when 0=>

lie1<=ping(ab);

row<="01111111";

when 1=>

lie1<=ping(ab);

row<="10111111";

when 2=>

lie1<=ping(ab);

row<="11011111";

when 3=>

lie1<=ping(ab);

row<="11101111";

when 4=>

lie1<=ping(ab);

row<="11110111";

lie1<=ping(ab);

row<="11111011";

when 6=>

lie1<=ping(ab);

row<="11111101";

when 7=>

lie1<=ping(ab);

row<="11111110";

end case;

when 4=>-------------------------------------显示箭头

case ab is

when 0=>

lie1<=jieshu(ab);

row<="01111111";

when 1=>

lie1<=jieshu(ab);

row<="10111111";

when 2=>

lie1<=jieshu(ab);

row<="11011111";

when 3=>

lie1<=jieshu(ab);

row<="11101111";

when 4=>

lie1<=jieshu(ab);

row<="11110111";

when 5=>

lie1<=jieshu(ab);

row<="11111011";

when 6=>

lie1<=jieshu(ab);

row<="11111101";

when 7=>

lie1<=jieshu(ab);

row<="11111110";

end case;

end case;

end process p0;

P2:process(clk_tmp) ------控制码位

BEGIN

if(clk_tmp'event and clk_tmp='1')then

if(CNT6=4)THEN

CNT6<=0;

ELSE

CNT6<=CNT6+1;

END IF;

END IF;

END PROCESS P2;

P1:process(CNT6)

BEGIN

CASE CNT6 IS --3线至6线译码器

WHEN 0 => BT <= "011111" ; A<=a1;

WHEN 1 => BT <= "101111" ; A<=a2;

WHEN 2 => BT <= "111011" ; A<=count;

WHEN 3 => BT <= "111101" ; A<=b1;

WHEN 4 => BT <= "111110" ; A<=b2;

WHEN OTHERS => NULL ;

END CASE ;

END PROCESS P1;

P3:process(A)

BEGIN

CASE A IS --实现数码管的显示功能

WHEN 1 => SG <= "0110000";

WHEN 2 => SG <= "1101101";

WHEN 3 => SG <= "1111001";

WHEN 4 => SG <= "0110011";

WHEN 5 => SG <= "1011011";

when 6 => SG <= "1011111";

END CASE ;

END PROCESS P3;

--------------------------------------------------------- 两个分频器分别产生两个随机数p4:process(clk_tmp)

begin

if (clk_tmp'event and clk_tmp='1') then

if cn=6 then

cn<=1;

else cn<=cn+1;

end if;

end if;

end process p4;

pp4:process(clk_tmpp)

begin

if (clk_tmpp'event and clk_tmpp='1') then

if cnn=6 then

cnn<=1;

else cnn<=cnn+1;

end if;

end if;

end process pp4;

--------------------------------------------------------------------------------------------- 蜂鸣器

p5:process(clk_tmp)

begin

if clear=1 then

if clk='1' then

beep<='1'after 5ns;

else

beep<='0' after 5ns;

end if;

else null;

end if;

end process p5;

------------------------------------------------------- 当有按键按下时,根据按下的键取不同的值

p7p:process(buttoin1,buttoin2)

begin

if(buttoin1='1' )then

if judge='1' then

a1<=cn;

a2<=cnn;

judge<='0';

end if;

end if;

if(buttoin2='1' )then

if judge='0' then

b1<=cn;

b2<=cnn;

judge<='1';

end if;

end if;

end process p7p;

---------------------------------------------------------

p8:process(judge)

begin

if(judge'event and judge='1') then

if (count=6 ) then

count<=1;

else count<=count+1;

end if;

end if;

a3<=a1+a2;

b3<=b1+b2;

end process p8;

---------------------------------------------------------判断状态是第几局p9:process(count)

begin

if(clear=1)then ------------------如果清零信号为1则先置零m1<=1; ------------------防止被上局的结果影响

m2<=1;

clear<=0;

else null;

end if;

case count is

when 1 =>

if(a3=7 or a3=11) then

if( b3=7 or b3=11 )then

jieguo<=3;

--点阵显示平局,重新开始

else if(b3/=7 and b3/=11) then

jieguo<=1;

clear<=1; --点阵显示甲胜,重新开始

else null;

end if;

end if;

elsif(b3=7 or b3=11) then

jieguo<=2;

clear<=1; --点阵显示乙胜,重新开始

else m1<=a3;

m2<=b3;

jieguo<=0;

end if;

when 6 =>

if (a3=m1 and b3=m2) then

jieguo<=3;

--点阵显示平局,重新开始

elsif (a3=m1 and b3/=m2) then

jieguo<=1;

clear<=1; --点阵显示甲胜,重新开始

elsif(a3/=m1 and b3=m2) then

jieguo<=2;

clear<=1; --点阵显示乙胜,重新开始

else

if(a3>b3) then

jieguo<=1;

clear<=1; --点阵显示甲胜,重新开始

elsif(a3=b3) then

jieguo<=3;

--点阵显示平局,重新开始

elsif(a3

jieguo<= 2;

clear<=1; --点阵显示乙胜,重新开始

else null;

end if;

end if;

when others=>

if (a3=m1 and b3=m2) then

jieguo<=3;

--点阵显示平局,重新开始

elsif (a3=m1 and b3/=m2) then

jieguo<=1;

clear<=1; --点阵显示甲胜,重新开始

elsif(a3/=m1 and b3=m2) then

jieguo<=2;

clear<=1; --点阵显示乙胜,重新开始

else jieguo<=4;

end if;

end case;

--------------------------------------------------------------------

end process p9;

end ab;

五、功能说明及资源利用情况

功能说明

这段代码的主要功能就是实现了双人掷骰子游戏的基本功能,开始的时候点阵显示汉字“开”,之后两人需轮流按按键,各自产生两个随机数(1~6),并且显示

在数码管上,同时显示出本局局数,系统会自动根据当前状态以及两人本次的投掷

情况判断下一状态,直到分出胜负,点阵分局结果显示汉字“甲”或“乙”,蜂鸣

器响一下。如果直到第六局也没有分出胜负的话,则判断为平局,点阵显示汉字“平”。

之后清空计数器以及存储的信号值,开始下一次游戏。

资源利用情况

本系统使用了时钟信号,8×8点阵,8段数码管,按键BN0,BTN7,蜂鸣器等硬件。在代码方面,用了多进程并行处理来实现以上功能,用了两个分频器来产生两个随机数,用三个计数器,分别控制点阵与数码管的动态扫描以及局数的统计,用一个锁存器控制甲乙两人的数据在同一局之内。

六、故障及问题分析

在实验过程中,其实我遇到了各种各样的问题,语法方面的暂且不提,就VHDL本身对信号赋值的要求就让我难受了好久。

1、在产生随机数的时候,我本想将两个按键写成两个进程,但是遇到的问题就是为

了控制甲乙两人按下的数在同一局之中,必须设置一个锁存信号,可是信号不能在两个进程中同时赋值,否则会报错多重驱动。没办法只好写进一个进程中。写进一个进程又遇到另一个问题是,刚开始我的思路是用一个分频器,分别检测按键信号的上升沿和下降沿,这样就能由按下的时间和按下的时长决定出两个随机数,但由于一个进程只能检测一个信号的时钟,这样就需要将两个按键分开写。这与上一个问题几乎是不可调和的,最后只好放弃用一个分频器的想法,另外设置了一个频率不一样的分频器来产生另一个随机数。

2、在编译过之后,下载到板子上调试的时候,我曾出现过局数不是按照正常的计数

顺序进行的,比如会突然从第一局跳到第六局的情况,这个问题也让我郁闷了好久,按理说按键方面我设置了锁存器,甲按过按键之后再按一次是无效的,只能让乙按,这样的话就算有抖动也无所谓,而局数的累加信号是锁存器的上升沿跳变信号,应该不会出现跳局的现象,但结果是居然出现了。无奈只好老老实实的加了防抖,之后情况就有所改善了。

3、还是在调试的时候,有一段时间锁存器老是锁不住信号,现象就是不管是甲还是

乙,每按一下就会比较一次,显示一次比较结果,搞得我是真心郁闷了,按理说是真的不应该这样的,我就换了块板子试了试,倒是没那种问题了,只是有时候甲按一次按键,数码管没反应,乙的却能正常显示,但是乙按完虽然按甲没反应但还是必需要按一下,否则乙再按也没反应,这说明甲按一次是会被正常捕捉的,因为锁存器已经正常工作了,但是值却不能赋过去,虽然出现这种情况的频率不高,但是每次都要重启。没办法就去请教老师了,老师在听完我的情况又看了看我的代码,给出的建议是我用了比较多的不完整if语句,可能系统在分寄存器的时候会出问题,我只好把所有的不完整if后都加上了else null;,其实之后还

是会偶尔出现点小问题,但我已经尽力解决了,其余的我就真的不知道什么原因了,比如甲或乙的数码管有时候会只显示管脚C的那一段,下一局就会正常显示了,这个我是真不知道什么原因了。

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

数字电路综合实验报告 简易智能密码锁 一、实验课题及任务要求 设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。 基本要求: 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行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。由此可确定按键位置。

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

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

实验一 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 所以,可以用一个两输入异或门和一个两输入与门实现。

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

北京邮电大学 数字电路与逻辑设计实验 实验报告 实验名称: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实验四连接图

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

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

目录 实验1 Quartus II 原理图输入法设计与实现 (3) 一、实验目的 (3) 二、实验所用器材 (3) 三、实验任务要求 (3) 四、实验原理图 (3) 五、实验仿真波形图及分析 (4) 实验2 用VHDL 设计与实现组合逻辑电路 (5) 一、实验目的 (5) 二、实验所用器材 (5) 三、实验任务要求 (5) 四、VHDL代码 (5) 五、实验仿真波形图及分析 (7) 实验3 用VHDL 设计与实现时序逻辑电路 (8) 一、实验目的 (8) 二、实验所用器材 (8) 三、实验任务要求 (8) 四、模块端口说明及连接图 (8) 五、VHDL代码 (9) 六、实验仿真波形图及分析 (10) 实验4 用VHDL 设计与实现数码管动态扫描控制器 (10) 一、实验目的 (10) 二、实验所用器材 (11) 三、实验任务要求 (11) 四、模块端口说明及连接图 (11) 五、VHDL代码 (11) 六、实验仿真波形图及分析 (15) 故障及问题分析 (16) 总结和结论 (17)

实验1 Quartus II 原理图输入法设计与实现 一、实验目的 (1)熟悉用Quartus II原理图输入法进行电路设计和仿真; (2)掌握Quartus II 图形模块单元的生成与调用; (3)熟悉实验板的使用。 二、实验所用器材 (1)计算机; (2)直流稳压电源; (3)数字系统与逻辑设计实验开发板。 三、实验任务要求 (1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。 (2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。 (3)用3线-8线译码器(74LS138)和逻辑门设计实现函数+CBA,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 四、实验原理图 (1)半加器原理图 (2)全加器原理图

北京邮电大学电路实验报告-(小彩灯)

北京邮电大学电路实验报告-(小彩灯)

电子电路综合实验报告课题名称:基于运算放大器的彩灯显示电路的设计与实现 姓名:班级:学号: 一、摘要: 运用运算放大器设计一个彩灯显示电路,通过迟滞电压比较器和反向积分器构成方波—三角波发生器,三角波送入比较器与一系列直流电平比较,比较器输出端会分别输出高电平和低电平,从而顺序点亮或熄灭接在比较器输出端的发光管。 关键字: 模拟电路,高低电平,运算放大器,振荡,比较 二、设计任务要求: 利用运算放大器LM324设计一个彩灯显示电路,让排成一排的5个红色发光二极管(R1~R5)重复地依次点亮再依次熄灭(全灭→R1→R1R2→R1R2R3→R1R2R3R4→R1R2R3R4R5→R1R2R3R4→R1R2R3→R1R2→R1→全灭),同时让排成一排的6个绿色发光二极管(G1~G6)单光

三角波振荡电路可以采用如图2-28所示电路,这是一种常见的由集成运算放大器构成的方波和三角波发生器电路,图2-28中运放A1接成迟滞电压比较器,A2接成反相输入式积分器,积分器的输入电压取自迟滞电压比较器的输出,迟滞电压比较器的输入信号来自积分器的输出。假设迟滞电压比较器输出U o1初始值为高电平,该高电平经过积分器在U o2端得到线性下降的输出信号,此线性下降的信号又反馈至迟滞电压比较器的输入端,当其下降至比较器的下门限电压U th-时,比较器的输出发生跳变,由高电平跳变为低电平,该低电平经过积分器在U o2端得到线性上升的输出信号,此线性上升的信号又反馈至迟

滞电压比较器的输入端,当其上升至比较器的上门限电压U th+时,比较器的输出发生跳变,由低电平跳变为高电平,此后,不断重复上述过程,从而在迟滞电压比较器的输出端U o1得到方波信号,在反向积分器的输出端U o2得到三角波信号。假设稳压管反向击穿时的稳定电压为U Z,正向导通电压为U D,由理论分析可知,该电路方波和三角波的输出幅度分别为: 式(5)中R P2为电位器R P动头2端对地电阻,R P1为电位器1端对地的电阻。 由上述各式可知,该电路输出方波的幅度由稳压管的稳压值和正向导通电压决定,三角波的输 出幅度决定于稳压管的稳压值和正向导通电压以及反馈比R1/R f,而振荡频率与稳压管的稳压值和正向导通电压无关,因此,通过调换具有不同稳压值和正向 导通电压的稳压管可以成比例地改变方波和三角波的幅度而不改变振荡频率。 电位器的滑动比R P2/R P1和积分器的积分时间常数R2C的改变只影响振荡频率而 不影响振荡幅度,而反馈比R1/R f的改变会使振荡频率和振荡幅度同时发生变化。因此,一般用改变积分时间常数的方法进行频段的转换,用调节电位器滑动头 的位置来进行频段内的频率调节。

北邮数电实验报告

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

实验三:用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) );

北邮数字电路综合实验报告——交通灯控制器的VHDL实现

数字电路综合实验报告 班级: 姓名: 班内序号: 学号: 日期:

目录 一、实验摘要 (3) 二、实验任务 (3) 1.任务要求 (3) 2.任务解析 (3) 三、实验设计思路 (4) 1.状态转移图 (4) 2.流程图 (5) 3.模块确定 (5) 4.系统框图 (7) 四、程序代码 (7) ⒈主程序 (7) ⒉分频模块 (9) ⒊防抖模块 (10) ⒋交通灯控制模块 (11) ⒌数字译码模块 (14) 五、实验结果 (15) 1.仿真结果 (15) 2.实物结果 (17) 六、所遇问题分析 (17) 七、实验总结 (18)

交通灯控制器的VHDL实现 一、实验摘要 随着交通情况的日益复杂,交通灯在生活中所处的位置也越来越高。本实验就是基于VHDL语言编程实现了十字路口的交通灯控制器。对于交通等控制器的设计是分模块自顶向下的设计思想,软硬件结合来实现本设计。 关键字:交通灯、VHDL、控制器 二、实验任务 1.任务要求 1)南北和东西方向各有一组绿、黄、红灯用于指挥交通,绿灯、黄灯和红灯的持续时间分别为20秒、5 秒和25秒; 2)当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制 器恢复原来状态,继续正常运行; 3)用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间; 2.任务解析 东西(A车道)和南北(B车道)方向各有一组绿、黄、红灯用于指挥交通(如图1),绿灯、黄灯和红灯的持续时间分别为20 秒、5 秒和25 秒。 图1 十字路口交通灯模型

因此,可以设计如下四个状态,其关系为: 状态 亮灯情况 车辆行驶状况 持续时 间(秒)下一状态A车道B车道 S0 红亮红亮紧急状况,A/B车道均禁止通行~ S1 S1 绿亮红亮A车道通行,B车道禁止通行20 S2 S2 黄亮红亮A车道缓行,B车道禁止通行 5 S3 S3 红亮绿亮A车道禁止通行,B车道通行20 S4 S4 红亮黄亮A车道禁止通行,B车道缓行 5 S1 三、实验设计思路 1.状态转移图 图2 状态转移图

北邮-电子电路综合设计实验(函数信号发生器)报告

电子电路综合设计实验报告 实验1 函数信号发生器的设计与实现 姓名:------ 学号:---------- 班内序号:--

一. 实验名称: 函数信号发生器的设计与调试 二.实验摘要: 采用运放组成的积分电路产生方波-三角波,可得到比较理想的方波和三角波。根据所需振荡频率的高低和对方波前后沿陡度的要求以及对所需方波、三角波的幅度可以确定合适的运放以及稳压管的型号、所需电阻的大小和电容的值。三角波-正弦波的转换是利用差分放大器来完成的,选取合适的滑动变阻器来调节三角波的幅度以及电路的对称性。同时利用隔直电容、滤波电容来改善输出正弦波的波形。 关键词: 方波三角波正弦波频率可调 三、设计任务要求 1.基本要求: (1)输出频率能在1-10KHz范围内连续可调,无明显失真; (2)方波输出电压Uopp=12V,上升、下降沿小于10us,占空比可调范围30%-70%; (3)三角波Uopp=8V; (4)正弦波Uopp错误!未找到引用源。1V. (5)设计该电路的电源电路(不要求实际搭建) 2.提高要求: (1)正弦波、三角波和方波输出波形的峰峰值Uopp均可在1V-10V内连续可调。 (2)三种输出波形的输出端口的输出阻抗小于100Ω。 (3)三种波形从同一端口输出,并能够显示当前输出信号的种类、大小和频率 (4)用CPLD设计DDS信号源 (5)其他函数信号发生器的设计方案 四、设计思路以及总体结构框图 本课题中函数发生器结构组成如下所示:由比较器和积分器组成方波—三角波产生电

路,比较器输出的方波经积分器得到三角波,三角波到正弦波的变换电路主要由差分放大器来完成。差分放大器具有工作点稳定,输入阻抗高,抗干扰能力较强等优点。特别是作为直流放大器时,可以有效地抑制零点漂移,因此可将频率很低的三角波变换成正弦波。波形变换的原理是利用差分放大器传输特性曲线的非线性。 图4-1 函数信号发生器的总体框图 五.分块电路和总体电路的设计 (1)方波——三角波产生电路 图5-1 方波-三角波产生电路

北邮-数电实验报告

北邮-数电实验报告

数字电路实验报告 学院:信息与通信工程 专业:信息工程 班级: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 原理图输入法设计 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

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

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

一、实验设计的基本要求 沙漏是一种古老的计时工具,也是一种玩具。电子沙漏用发光二极管表示沙粒,模拟沙漏的运动过程。电子沙漏会像真正的沙漏一样,上部的沙粒(点亮的发光二极管)一粒一粒往下掉,下部的沙粒一粒一粒堆起来。 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按键的次数统计,将其分为奇数与偶数两种情况,在奇数时使功能正常运行,在统计为偶数时使时间暂停,以此来实现对此系统的控制。

北邮AGC电路实验报告

自动增益控制(AGC)电路的设计 与实现 实验报告 姓名: 班内序号: 学号: 学院: 班级:

一.课题名称:自动增益控制电路的设计与实现 二.实验目的 1.了解AGC(自动增益控制)的自适应前置放大器的应用; 2.掌握AGC电路的一种实现方法; 3.提高独立设计电路和验证实验的能力。 三.实验摘要 自动增益控制电路的功能是在输入信号幅度变化较大时,能使输出信号幅度稳定不变或限制在一个很小范围内变化的特殊功能电路,简称为 AGC 电路。本实验采用短路双极晶体管直接进行小信号控制的方法,简单有效地实现AGC功能。 关键词: 自动增益控制,直流耦合互补级,电压跟随器,反馈 四.设计任务要求 1.基本要求: 设计一个AGC电路,要求设计指标以及给定条件为: ·输入信号:0.5~50mVrms; ·输出信号:0.5~1.5Vrms; ·信号带宽:100~5KHz。 2.提高要求: 设计一种采用其他方式的AGC电路。 五.设计思路和总体结构框图 设计思路 在处理输入的模拟信号时,经常会遇到通信信道或传感器衰减强度大幅变化的情况;另外,在其他应用中,如监控系统中的多个相同传感器返回的信号中,频谱结构和动态范围大体相似,而最大波幅却相差很多。此时,可以使用带自动增益控制的自适应前置放大器,使其增益应能随信号强弱而自动调整,以保持输出相对稳定。 AGC电路的实现有反馈控制、前馈控制和混合控制等三种,典型的反馈控制AGC由可变增益放大器(VGA)以及检波整流控制组成,本实验中电路采用了短路双极晶体管直接进行小信号控制的方法,从而简单而有效的实现AGC功能。 在下图1中,可变分压器由一个固定电阻R 1 和一个可变电阻构成,控制信号的交流振幅。可变电阻由采用基极—集电极短路方式的双极晶体管微分电阻实 现,为改变Q 1的电阻,可从一个有电压源V 2 和大阻值电阻R 2 组成的电流源直接 向短路晶体管注入电流。为防止R 2影响电路的交流电压传输特性,R 2 的阻值必须 远大于R 1 。

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

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

北京邮电大学 数字电路与逻辑设计实验 实验报告 实验名称: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 ?+?⊕=)(

北京邮电大学数字电路实验迷宫游戏

数字电路综合实验报告 学院:信息与通信工程学院 班级: 班内序号: 姓名: 学号: 选作题目:简易迷宫游戏

一、课题的任务要求 1、基本要求: 1)用8×8点阵进行游戏显示。 2)迷宫游戏如下图所示,采用双色点阵显示,其中红色LED为迷宫墙壁, 绿色LED表示人物。通过BTN0~BTN3四个按键控制迷宫中的人物进 行上下左右移动,使人物从起始点出发,走到迷宫的出口,游戏结束。 3)普通计时模式:通过按键BTN7启动游戏,必须在30秒内找到出口,否 则游戏失败,用两个数码管进行倒计时显示。游戏胜利或者失败均要在 8×8点阵上有相应的画面出现。 4)迷宫中的人物在行走过程中,如果碰到墙壁,保持原地不动。 2、提高要求: 1)多种迷宫地图可以选择。 2)在计时的基础上增加计步的功能,每按一次控制按键步数加1,碰壁不计 算步数,计步结果用数码管显示。 3)为游戏增加提示音乐,在不同时间段采用不同频率的信号控制蜂鸣器发 声报警。 4)增加其他游戏模式。 5)自拟其它功能。 二、系统设计(包括设计思路、总体框图、分块设计) 1、整体设计思路: 通过分析迷宫游戏的特点,将迷宫游戏的实现分为三大核心功能模块,一是控制模块controller,是整个游戏的“枢纽”,负责处理玩家的输入信号,控制整个游戏阶段的跳转,游戏胜负的判断,以及输出相应显示模块的控制信号。二是计时兼数码管显示模块timer,负责倒计时以及倒计时的显示,游戏已走步数的显示,并产生蜂鸣器的控制信号。三是点阵显示模块lattice,通过接收控制模块的控制信号,控制不同游戏模式或状态下的点阵输出。其他次要模块主要为:分频模块,防抖模块,蜂鸣器驱动模块。 迷宫游戏的划分方框图如下: 图2.1 迷宫游戏的逻辑划分方框图

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

电子电路综合实验报告课题名称:基于运算放大器的彩灯显示电路的设计与实现 姓名:班级:学号: 一、摘要: 运用运算放大器设计一个彩灯显示电路,通过迟滞电压比较器和反向积分器构成方波—三角波发生器,三角波送入比较器与一系列直流电平比较,比较器输出端会分别输出高电平和低电平,从而顺序点亮或熄灭接在比较器输出端的发光管。 关键字: 模拟电路,高低电平,运算放大器,振荡,比较 二、设计任务要求: 利用运算放大器LM324设计一个彩灯显示电路,让排成一排的5个红色发光二极管(R1~R5)重复地依次点亮再依次熄灭(全灭→R1→R1R2→R1R2R3→R1R2R3R4→R1R2R3R4R5→R1R2R3R4→R1R2R3→R1R2→R1→全灭),同时让排成一排的6个绿色发光二极管(G1~G6)单光点来回扫描点亮(G1→G2→G3→G4→G5→G6→G5→G4→G3→G2→G1)。要求:彩灯的变化速度均匀且可以调节,而且人眼能够识别彩灯的变化,所拥有的供电条件为直流电源±12V。 三、设计思路,总体结构框图: 根据任务要求,可以设计一个如图2-27所示的电路,图中振荡电路产生频率可调的三角波信号,三角波信号被送入比较器电路与一系列直流电平比较,根据三角波信号瞬时值的大小不同,比较器的输出端会分别输出高电平或低电平,这些高、低电平可以按照任务要求的顺序点亮或熄灭接在比较器输出端的发光管,达到任务要求的彩灯显示效果。 四、分块电路和总体电路的设计: 1、振荡电路的设计:

三角波振荡电路可以采用如图2-28所示电路,这是一种常见的由集成运算放大器构成的方波和三角波发生器电路,图2-28中运放A1接成迟滞电压比较器,A2接成反相输入式积分器,积分器的输入电压取自迟滞电压比较器的输出,迟滞电压比较器的输入信号来自积分器的输出。假设迟滞电压比较器输出U o1初始值为高电平,该高电平经过积分器在U o2端得到线性下降的输出信号,此线性下降的信号又反馈至迟滞电压比较器的输入端,当其下降至比较器的下门限电压U th-时,比较器的输出发生跳变,由高电平跳变为低电平,该低电平经过积分器在U o2端得到线性上升的输出信号,此线性上升的信号又反馈至迟滞电压比较器的输入端,当其上升至比较器的上门限电压U th+时,比较器的输出发生跳变,由低电平跳变为高电平,此后,不断重复上述过程,从而在迟滞电压比较器的输出端U o1得到方波信号,在反向积分器的输出端U o2得到三角波信号。假设稳压管反向击穿时的稳定电压为U Z,正向导通电压为U D,由理论分析可知,该电路方波和三角波的输出幅度分别为: 式(5)中R P2为电位器R P动头2端对地电阻,R P1为电位器1端对地的电阻。 由上述各式可知,该电路输出方波的幅度由稳压管的稳压值和正向导通电压决定,三角波的输出幅度决定于稳压管的稳压值和正向导通电压以及反馈比R1/R f,而振荡频率与稳压管的稳压值和正向导通电压无关,因此,通过调换具有不同稳压值和正向导通电压的稳压管可以成比例地改变方波和三角波的幅度而不改变振荡频

北邮模电综合实验报告

电子电路综合实验设计 简易声光控照明系统的设计与实现 学院:电子工程学院 班级: 2011211202 学号: 2011210876 姓名:孙月鹏 班内序号: 05

简易声光控照明系统的设计与实现 一、摘要 声光控照明系统由整流稳压电路,可控硅开关MCR,话筒放大电路,光敏控制电路,音频放大电路,检波电路,延迟电路七部分组成,是一种利用声、光双重控制的的无触点开关照明电路。它的主要功能是把声信号转化为电信号,经过两级放大电路,在光控电路的控制下,由可控硅开关实现灯的亮灭,并且利用延时器实现一定的延时时间。是一种又节能又方便的自动开关电路,在生活中有广泛的应用。 关键字: 声光控制自动照明延时电路 二、设计任务要求 1、基本要求 a)当环境明亮情况下,照明系统自动关闭; b)当环境昏暗情况下,可以通过声音自动触发照明系统; c)最小照明时间要求不低于10s; d)用PROTEL 软件绘制电路的印刷电路板图(PCB)。 2、提高要求 a) 最小照明时间可调节,调节范围为:5~60s; b) 照明亮度根据环境亮度可以调节,分为3个等级:暗、普通、高亮。 3、探究要求

采用非本资料提供的原理及方法,另外设计一种简易自动照明控制系统。 三、设计思路及总体结构框图 1.设计思路 仔细阅读实验原理及要求 查找资料,了解电路各部分工作 原理 若参数不合适重新计算 计算机仿真 计算各元件参数 在电路板上搭建电路认真连接保证正确 实验室调试 2总体结构框图 首先由整流稳压电路输出12V电压,灯泡在可控硅的控制下实现亮灭。在光照的情况下,可控硅只能达到低电压,灯泡不亮。在光暗的情况下,当MIC得到外界的一个声音信号,经由两级放大电路发大,是可控硅通过控制电路得到一个高电压,灯泡导通。并且由于延迟电

相关文档
最新文档