当前位置:文档之家› 数电实验报告-贪吃蛇-北邮

数电实验报告-贪吃蛇-北邮

1 / 13简易贪食蛇游戏机

学院:信息与通信工程

专业:

班级:

姓名:

学号:

班内序号:

简易贪食蛇游戏机

一.设计课题的任务要求

基本任务:

用一个 8×8 点阵做为基本显示屏,4 个连续移动的的发光点表示一条蛇,用任意

出现的一个亮点表示老鼠,用4 个排成一条线的发光点表示“墙”,用四个按键控制蛇的

运动方向,完成贪食蛇游戏,蛇撞“墙”、边或者游戏时间到,则游戏结束。

1. 老鼠出现的地方是随机的,在某个地点出现的时间是5 秒钟,如果5 秒钟之内没

有被吃掉,它就会在其它地方出现;

2. 用数码管显示得分情况和游戏的剩余时间,每吃掉一只老鼠就加一分;

提高要求:

1. 游戏时间和速度可以手动设置。

2. 增加游戏难度或自拟其它功能。

二.系统设计

1.设计思路

当复位键置为1时, 8*8点阵也初始化为全不亮,每来一个时钟脉冲就对8*8点阵进行一次扫描,并依次点亮四个蛇身点、一个老鼠点、四个墙点,由于扫描频率远远超出人眼所能分辨的范围,故人眼看来蛇身是连续的。在数码管上显示得分与倒计时情况。

用四个按键分别控制蛇的运动方向“上下左右”,每次按键时通过和蛇原来的运动方向进行比较来控制蛇接下来的运动方向。当蛇撞墙、出界、游戏时间到时游戏结束,点阵全亮。每当蛇吃到一个老鼠时则自动加一分并重设老鼠位置。老鼠存活5秒钟时重设老鼠位置。用M序列发生器实现老鼠位置的随机变化。

2.总体框架图:

复位开关方向输入按键3.逻辑划分框图

4.

6.分块电路设计

⑴点阵显示模块

此模块采用频率为1Mhz的时钟clk3。

每来一个时钟就对整个8*8点阵全部扫描一次,当某个点的行为低电平,列为高电平时被点亮。由于蛇身有4个移动的点,墙有4个固定的点以及一个老鼠的亮点,那么一共有9个点需要在8*8点阵上显示。所以我将时钟用point分成9个周期,每个周期扫描一个点。clk3频率很高,虽然是逐点扫描,但由于视觉暂留我们看到的是9个点同时亮。

当复位信号clear置为1时,点阵全不亮。当结束信号over置为1时,点阵全亮。

⑵数码管显示模块

当一个数码管要稳定显示需要频率不小于50hz,总共4个数码管,需要采用500hz 的时钟clk2.

用cat信号对数码管进行片选,用seven信号储存7个管脚的电平。共有4个数字需要显示,用数组shownum储存分数与游戏时间。用state变量将时钟clk2分成4个周期,每个周期显示state对应的shounum(state)。复位信号clear置为1时,数码管全不亮。

⑶控制器

倒记时和老鼠5秒换位置要分频出1赫兹的一个clk1。并且1赫兹的频率十分适合蛇的移动,所以我将clk1信号作为了蛇移动的触发信号。

复位信号clear=1将蛇的位置、方向、老鼠位置、墙的位置、游戏时间、分数等初始化。

①蛇身的移动。用4个点表示蛇,从蛇尾开始,依次等于前一个蛇身点坐标。

②蛇头的移动

按照状态转移图编写程序。实际编写时我将对出界情况的判断加了进去。

给定dir时,若出界,游戏结束。若否,当蛇头方向direction不和输入值dir

正好相反时,蛇头步进,将dir的值赋给蛇头当前方向direction;当蛇头方向

direction和输入值dir正好相反时,若蛇头出界,游戏结束,若不出界,蛇头按

照原来的direction方向步进。

③重设老鼠位置

设置一个重设老鼠标志setrat。当老鼠存活时间满5s或蛇吃到老鼠时,将setrat

标志置为1,否则为0.当setrat=1时,用M序列发生器随机重设老鼠位置。当重

设后的老鼠和墙的位置重合时,修改老鼠位置。

⑷分频器和外界输入方向寄存器

EPM1270T144C5数电实验开发板的时钟clk频率为50Mhz。控制器需要一个频率为1hz的时钟clk1,数码管显示需要一个频率为500hz的时钟clk2,点阵显示需要一个频率为1Mhz的时钟clk3.由于游戏结束时只有数码管需要保持显示结束时的时间和分数,所以当over置为1时,clk1和clk3的分频器停止,只有clk2的分频器继续工作。

外界输入的方向用key表示,key值为“1000”、“0100”、“0010”、“0001”时分别表示上、下、左、右。将输入的方向值赋给dir。dir设置为两位二进制变量:“00”

表示“上”,“01”表示“下”,“10”表示“左”,“11”表示“右”。

三.仿真波形及波形分析

为方便仿真,将时钟clk改为1Mhz,将clk3改为100khz,将点阵显示、数码管显示的时钟频率都改为clk,将控制模块显示的时钟改为clk3。

1.点阵显示仿真:

如图所示,当clear=1时,点阵的行都为高电平,列都为低电平,点阵全不亮。从clear 置为0后clk的第一个上升沿开始,点阵扫描显示蛇、鼠、墙。先显示前四个蛇点(蛇点初始位置:行为0,1,2,3;列为1),然后显示鼠,接着显示四个墙点(行为3,4,5,6;列为4)。然后重新扫描蛇、鼠、墙。

如上图,over=1时,点阵行都变成低电平,列都变成高电平,点阵全亮。

2.数码管显示仿真

如图,clear=1时数码管全不亮。clear置为0后,数码管轮流开始显示shounum数组中的元素。当cat=011111和101111时,分别显示得分的十位和个位。由于得分为0,所以这两个数码管的管脚电平为1111110,即都显示为0. 此时时间为59,当cat=111101时显示游戏时间的十位,所以该数码管的seven值为1011011,即显示为5.当cat=111110时,显示游戏时间的个位9,该数码管的seven值为1111011,即显示为9。从图中可以看出,当游戏时间为58时,显示游戏时间的个位的cat=111110的数码管对应的seven值变为1111110,即显示为8.

3.控制模块仿真

从图中可以看到,clear置为1时,蛇的位置被初始化。时间初始化为59。clear=0后,每个clk3的上升沿,蛇头移动一步,蛇身分别跟着前一个点移动。当游戏进行了5秒时,蛇头到达点阵最上边,这时由于对方向输入键key的设置,蛇开始向右走。当倒计时为49s 时,蛇头到达点阵最右边。此时蛇继续向右走,出界,over置为1,游戏结束。

从图中可以看出,老鼠每5秒重置一次位置。

四.源程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity tanshishe is

port(

clk,clear:in std_logic; --时钟、复位/开始开关

key:in std_logic_vector(3 downto 0); --方向控制键

seven:out std_logic_vector(6 downto 0); --七位数码管的7根二极管

cat:out std_logic_vector(5 downto 0); --控制数码管显示

row,col:out std_logic_vector(7 downto 0)); --点阵行、列坐标

end tanshishe;

architecture game of tanshishe is

signal setrat,over:std_logic; -- 重设老鼠、游戏结束信号

signal ratr,ratc,rat:integer range 0 to 7; --老鼠行、列坐标

signal t: std_logic_vector(2 downto 0);

signal rattime:integer range 0 to 4; --老鼠出现时间

type dots is array (integer range <>) of integer range 0 to 7;

signal snaker,snakec:dots(3 downto 0); --蛇行、列坐标

constant wallr:dots(3 downto 0):=(6,5,4,3);--墙的行坐标(常数)

constant wallc:dots(3 downto 0):=(4,4,4,4);--强的列坐标(常数)

signal clk1,clk2,clk3: std_logic;--clk1:1秒 clk2:500hz时钟

signal tmp1:integer range 0 to 49999999; --分频1

signal tmp2:integer range 0 to 99999; --分频2

signal tmp3:integer range 0 to 49; --分频3

signal dir:std_logic_vector(1 downto 0); --保存下一时刻方向

signal direction:integer range 0 to 3; --当前蛇方向:0->上,1->下,2->左,3->右

signal point:integer range 0 to 8; --当前点阵上显示的点

type figure is array (integer range <>) of integer range 0 to 9;

signal shownum:figure(3 downto 0); --shownum(3)和shownum(2)分别为得分的高位和地位,shownum(1)和shownum(0)分别为剩余时间的高位和地位

begin

p1:process(clk,over,clear) --分频同时保存下一时刻蛇的移动方向

begin

if clear='1' then

dir<="00";tmp1<=0;tmp2<=0;

elsif clk'event and clk='1' then

if (tmp2=99999) then

tmp2<=0;clk2<='1';

else

tmp2<=tmp2+1;

clk2<='0';

end if;

if over/='1' then

if (tmp1=49999999) then

tmp1<=0;clk1<='1';

else

tmp1<=tmp1+1;

clk1<='0';

end if;

if (tmp3=49) then

tmp3<=0;clk3<='1';

else

tmp3<=tmp3+1;

clk3<='0';

end if;

case key is

when "1000"=> dir<="00";

when "0100"=> dir<="01";

when "0010"=> dir<="10";

when "0001"=> dir<="11";

when others=> null;

end case;

end if;

end if;

end process;

p2:process(clear,clk3,over) --点阵显示模块begin

if clear='1' then

row<="11111111";

col<="00000000";

point<=0;

else

if (over='1')then--游戏结束

col<="11111111";

row<="00000000";

else

if clk3'event and clk3='1' then

col<="00000000";

row<="11111111";

if point=8 then

point<=0;

else point<=point+1;

end if;

case point is

when 0|1|2|3=> row(snaker(point))<='0';

col(snakec(point))<='1';

when 4=> row(ratr)<='0';

col(ratc)<='1';

when 5|6|7|8=> row(wallr(point-5))<='0';

col(wallc(point-5))<='1';

when others=>col<="00000000";row<="11111111";

end case;

end if;

end if;

end if;

end process;

p3:process(clear,clk1,shownum(0),dir) --控制模块

variable ratr1,ratc1:integer range 0 to 7;

begin

if clear='1' then --复位

snaker<=(3,2,1,0);

snakec<=(1,1,1,1);

direction<=0;

over<='0';

shownum(3)<=0;

shownum(2)<=0;

shownum(1)<=5;

shownum(0)<=9;

setrat<='1';

else

if clk1'event and clk1='1' then

if rattime=4 then rattime<=0; --老鼠出现时间

else rattime<=rattime+1;

end if;

if shownum(0)=0 then --剩余时间

shownum(0)<=9;

shownum(1)<=shownum(1)-1;

else

shownum(0)<=shownum(0)-1;

end if;

for i in 0 to 2 loop --the snake moves --蛇的步进

snaker(i)<=snaker(i+1);

snakec(i)<=snakec(i+1);

end loop;

case dir is

when "00"=> if snaker(3)=7 then--向上出界游戏结束

over<='1';

elsif direction/=1 then--蛇头向上步进(蛇头方向不和输入值相反时)

snaker(3)<=snaker(3)+1;

snakec(3)<=snakec(3);

direction<=0;

else

if snaker(3)=0 then--蛇头方向和输入值相反,若蛇头向下出界,游戏结束

over<='1';

else

snaker(3)<=snaker(3)-1;--蛇头向下未出界,向下步进

snakec(3)<=snakec(3);

end if;

end if;

when "01"=> if snaker(3)=0 then--若蛇头向下出界,游戏结束

over<='1';

elsif direction/=0 then--蛇头方向不和输入值相反,向下步进

snaker(3)<=snaker(3)-1;

snakec(3)<=snakec(3);

direction<=1;

elsif snaker(3)=7 then--蛇头方向和输入值相反,若蛇头向上出界游戏结束

over<='1';

else

snaker(3)<=snaker(3)+1;--蛇头向上未出界,向上步进

snakec(3)<=snakec(3);

end if;

when "10"=> if snakec(3)=0 then--左

over<='1';

elsif direction/=3 then

snakec(3)<=snakec(3)-1;

snaker(3)<=snaker(3);

direction<=2;

elsif snakec(3)=7 then

over<='1';

else

snakec(3)<=snakec(3)+1;

snaker(3)<=snaker(3);

end if;

when "11"=> if snakec(3)=7 then--右

over<='1';

elsif direction/=2 then

snakec(3)<=snakec(3)+1;

snaker(3)<=snaker(3);

direction<=3;

elsif snakec(3)=0 then

over<='1';

else

snakec(3)<=snakec(3)-1;

snaker(3)<=snaker(3);

end if;

end case;

if setrat='1' then --重设老鼠位置

ratr1:=rat;

ratc1:=rat+2;

for i in 0 to 3 loop

if ratr1=wallr(i) and ratc1=wallc(i) then

ratr1:=ratr1+1;

ratc1:=ratc1+1;

exit;

end if;

end loop;

ratr<=ratr1;

ratc<=ratc1;

rattime<=0;

setrat<='0';

end if;

if (shownum(1)=0 and shownum(0)=0) then --游戏时间到

over<='1';

else

if rattime=4 then setrat<='1'; --重设老鼠位置

end if;

if snaker(3)=ratr and snakec(3)=ratc then --吃到老鼠

setrat<='1';

if shownum(2)=9 then--加一分

shownum(2)<=0;

shownum(3)<=shownum(3)+1;

else

shownum(2)<=shownum(2)+1;

end if;

else

for i in 0 to 3 loop

if snaker(3)=wallr(i) and snakec(3)=wallc(i) then --蛇撞墙

over<='1';

exit;

end if;

end loop;

end if;

end if;

end if;

end if;

end process;

p4:process(clear,clk2) --在数码管上显示得分和剩余时间

variable state:integer range 0 to 3:=0;

begin

if clear='1' then cat<="111111";

elsif clk2'event and clk2='1' then

state:=state+1;

case state is

when 3=>cat<="011111";

when 2=>cat<="101111";

when 1=>cat<="111101";

when 0=>cat<="111110";

end case;

case shownum(state) is

when 0=>seven<="1111110";

when 1=>seven<="0110000";

when 2=>seven<="1101101";

when 3=>seven<="1111001";

when 4=>seven<="0110011";

when 5=>seven<="1011011";

when 6=>seven<="1011111";

when 7=>seven<="1110000";

when 8=>seven<="1111111";

when 9=>seven<="1111011";

when others=>seven<="0000000";

end case;

end if;

end process;

p5:process(clk1,t) --M序列发生器

begin

if t="000" then t<="001";

elsif clk1'event and clk1='1' then

t(0)<=t(0) xor t(2);

t(1)<=t(0);

t(2)<=t(1);

end if;

case t is

when"000"=>rat<=0;

when"001"=>rat<=1;

when"010"=>rat<=2;

when"011"=>rat<=3;

when"100"=>rat<=4;

when"101"=>rat<=5;

when"110"=>rat<=6;

when"111"=>rat<=7;

end case;

end process;

end game;

五、功能说明

用一个 8×8 点阵做为基本显示屏,4 个连续移动的的发光点表示一条蛇,用任意

出现的一个亮点表示老鼠,用4 个排成一条线的发光点表示“墙”,用四个按键控制蛇的

运动方向,完成贪食蛇游戏,蛇撞“墙”、边或者游戏时间到,则游戏结束。

1. 老鼠出现的地方是随机的,在某个地点出现的时间是5 秒钟,如果5 秒钟之内没

有被吃掉,它就会在其它地方出现;

2. 用数码管显示得分情况和游戏的剩余时间,每吃掉一只老鼠就加一分;

3.有一个复位开关,按下复位键时,游戏信息初始化,点阵、数码管全不亮。游戏结束时点阵全亮,数码管保持显示结束时的分数与时间。

六.元器件清单及资源利用情况

1.计算机;

2.示波器;

3.直流稳压电源;

4.万用表;

5. EDA 开发板及相应元器件。

七.故障及问题分析

1.故障:下载到EPM1270T144C5数电实验板上时,点阵的蛇、鼠、墙是暗的,其余点是亮的。分析:实验室的EPM1270T144C5板上的点阵的点当行为低电平、列为高电平时亮,和教材上的刚好相反

解决:重写代码中点阵显示部分,将高电平改为低电平,低电平改为高电平。

2.故障:改正电平问题后,点阵显示时一些点显示模糊,还有多余的暗点,数码管显示数字时有一些管脚暗淡。

分析:点阵显示模块和数码管显示模块的时钟频率为50Mhz,太高

解决:改写分频器模块,增加1Mhz的分频和500hz的分频。点阵显示用1Mhz的时钟,数码管显示用500Mhz的时钟。

八.总结和结论

学习并熟悉了VHDL语言的编写、VHDL程序设计。VHDL程序设计,不用拘泥用某种具体器件的选择和使用,使设计者能专注于工程各部分所需要完成的功能,逻辑感强,可读性强、可移植性好。因为很喜欢做游戏类的编程,所以没有犹豫就选择了贪吃蛇,虽然听到这个程序很容易超出宏单元,并且编程过程中也不是很容易实现。但既然喜欢我觉得就能做的更好。在实验的第二周我就很快的将程序写了一个完整的,但是在接下来的调试过程中波形一直不能正常运行。对程序进行了很多次大的调整才达到了可以运行的程度,期间因为一定想要自己做出贪吃蛇的程序,用了好多的时间来更改代码和思考程序编写上的逻辑问题。贪吃蛇的波形图也是比较不容易观察的,在本次实验中我收获到了很多的东西,选择做贪吃蛇是很值得的。

在本次试验中我负责数码管显示和点阵显示模块的调试和仿真。整个小组分工明确,各司其职。

在贪吃蛇实验的完成中我还浏览了电路中心论坛,受到了同学用方向随机性控制鼠的随机放置功能。在与同班一起做贪吃蛇同学的交流中也学到了一些知识,在程序下载问题很大的时候同学的一些意见也给了我极大的帮助。

北邮通信原理实验报告

北京邮电大学 通信原理实验报告 学院:信息与通信工程学院 班级: 姓名: 姓名: 实验一:双边带抑制载波调幅(DSB-SC AM)

一、实验目的 1、了解DSB-SC AM 信号的产生以及相干解调的原理和实现方法。 2、了解DSB-SC AM 信号波形以及振幅频谱特点,并掌握其测量方法。 3、了解在发送DSB-SC AM 信号加导频分量的条件下,收端用锁相环提取载波的原理及其实现方法。 4、掌握锁相环的同步带和捕捉带的测量方法,掌握锁相环提取载波的调试方法。 二、实验原理 DSB 信号的时域表达式为 ()()cos DSB c s t m t t ω= 频域表达式为 1 ()[()()] 2DSB c c S M M ωωωωω=-++ 其波形和频谱如下图所示 DSB-SC AM 信号的产生及相干解调原理框图如下图所示

将均值为零的模拟基带信号m(t)与正弦载波c(t)相乘得到DSB—SC AM信号,其频谱不包含离散的载波分量。 DSB—SC AM信号的解调只能采用相干解调。为了能在接收端获取载波,一种方法是在发送端加导频,如上图所示。收端可用锁相环来提取导频信号作为恢复载波。此锁相环必须是窄带锁相,仅用来跟踪导频信号。 在锁相环锁定时,VCO输出信号sin(2πf c t+φ)与输入的导频信号cos(2πf c t)的频率相同,但二者的相位差为(φ+90°),其中很小。锁相环中乘法器的两个输入信号分别为发来的信号s(t)(已调信号加导频)与锁相环中VCO的输出信号,二者相乘得到 [A C m(t)cos(2πf c t)+A p cos(2πf c t)]?sin(2πf c t+φ) =A c 2 m(t)[sinφ+sin(4πf c t+φ)]+ A p 2 [sinφ+sin(4πf c t+φ)] 在锁相环中的LPF带宽窄,能通过A p 2 sinφ分量,滤除m(t)的频率分量及四倍频载频分量,因为很小,所以约等于。LPF的输出以负反馈的方式控制VCO,使其保持在锁相状态。锁定后的VCO输出信号sin(2πf c t+φ)经90度移相后,以cos(2πf c t+φ)作为相干解调的恢复载波,它与输入的导频信号cos(2πf c t)同频,几乎同相。 相干解调是将发来的信号s(t)与恢复载波相乘,再经过低通滤波后输出模拟基带信号 [A C m(t)cos(2πf c t)+A p cos(2πf c t)]?cos(2πf c t+φ) =A c 2 m(t)[cosφ+cos(4πf c t+φ)]+ A p 2 [cosφ+cos(4πf c t+φ)] 经过低通滤波可以滤除四倍载频分量,而A p 2 cosφ是直流分量,可以通过隔直流电路滤 除,于是输出为A c 2 m(t)cosφ。 三、实验框图 1、根据原理图得到产生DSB-SC AM信号的实验连接框图如图所示

北邮通信原理软件实验报告

通信原理软件实验报告 学院:信息与通信工程学院班级:

一、通信原理Matlab仿真实验 实验八 一、实验内容 假设基带信号为m(t)=sin(2000*pi*t)+2cos(1000*pi*t),载波频率为20kHz,请仿真出AM、DSB-SC、SSB信号,观察已调信号的波形和频谱。 二、实验原理 1、具有离散大载波的双边带幅度调制信号AM 该幅度调制是由DSB-SC AM信号加上离散的大载波分量得到,其表达式及时间波形图为: 应当注意的是,m(t)的绝对值必须小于等于1,否则会出现下图的过调制: AM信号的频谱特性如下图所示: 由图可以发现,AM信号的频谱是双边带抑制载波调幅信号的频谱加上离散的大载波分量。

2、双边带抑制载波调幅(DSB—SC AM)信号的产生 双边带抑制载波调幅信号s(t)是利用均值为0的模拟基带信号m(t)和正弦载波c(t)相乘得到,如图所示: m(t)和正弦载波s(t)的信号波形如图所示: 若调制信号m(t)是确定的,其相应的傅立叶频谱为M(f),载波信号c(t)的傅立叶频谱是C(f),调制信号s(t)的傅立叶频谱S(f)由M(f)和C(f)相卷积得到,因此经过调制之后,基带信号的频谱被搬移到了载频fc处,若模拟基带信号带宽为W,则调制信号带宽为2W,并且频谱中不含有离散的载频分量,只是由于模拟基带信号的频谱成分中不含离散的直流分量。 3、单边带条幅SSB信号 双边带抑制载波调幅信号要求信道带宽B=2W, 其中W是模拟基带信号带宽。从信息论关点开看,此双边带是有剩余度的,因而只要利用双边带中的任一边带来传输,仍能在接收机解调出原基带信号,这样可减少传送已调信号的信道带宽。 单边带条幅SSB AM信号的其表达式: 或 其频谱图为:

北邮数电实验报告

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

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

数电实验报告-贪吃蛇-北邮

1 / 13简易贪食蛇游戏机 学院:信息与通信工程 专业: 班级: 姓名: 学号: 班内序号:

简易贪食蛇游戏机 一.设计课题的任务要求 基本任务: 用一个 8×8 点阵做为基本显示屏,4 个连续移动的的发光点表示一条蛇,用任意 出现的一个亮点表示老鼠,用4 个排成一条线的发光点表示“墙”,用四个按键控制蛇的 运动方向,完成贪食蛇游戏,蛇撞“墙”、边或者游戏时间到,则游戏结束。 1. 老鼠出现的地方是随机的,在某个地点出现的时间是5 秒钟,如果5 秒钟之内没 有被吃掉,它就会在其它地方出现; 2. 用数码管显示得分情况和游戏的剩余时间,每吃掉一只老鼠就加一分; 提高要求: 1. 游戏时间和速度可以手动设置。 2. 增加游戏难度或自拟其它功能。 二.系统设计 1.设计思路 当复位键置为1时, 8*8点阵也初始化为全不亮,每来一个时钟脉冲就对8*8点阵进行一次扫描,并依次点亮四个蛇身点、一个老鼠点、四个墙点,由于扫描频率远远超出人眼所能分辨的范围,故人眼看来蛇身是连续的。在数码管上显示得分与倒计时情况。 用四个按键分别控制蛇的运动方向“上下左右”,每次按键时通过和蛇原来的运动方向进行比较来控制蛇接下来的运动方向。当蛇撞墙、出界、游戏时间到时游戏结束,点阵全亮。每当蛇吃到一个老鼠时则自动加一分并重设老鼠位置。老鼠存活5秒钟时重设老鼠位置。用M序列发生器实现老鼠位置的随机变化。 2.总体框架图: 复位开关方向输入按键3.逻辑划分框图

4.

6.分块电路设计 ⑴点阵显示模块 此模块采用频率为1Mhz的时钟clk3。 每来一个时钟就对整个8*8点阵全部扫描一次,当某个点的行为低电平,列为高电平时被点亮。由于蛇身有4个移动的点,墙有4个固定的点以及一个老鼠的亮点,那么一共有9个点需要在8*8点阵上显示。所以我将时钟用point分成9个周期,每个周期扫描一个点。clk3频率很高,虽然是逐点扫描,但由于视觉暂留我们看到的是9个点同时亮。 当复位信号clear置为1时,点阵全不亮。当结束信号over置为1时,点阵全亮。 ⑵数码管显示模块 当一个数码管要稳定显示需要频率不小于50hz,总共4个数码管,需要采用500hz 的时钟clk2. 用cat信号对数码管进行片选,用seven信号储存7个管脚的电平。共有4个数字需要显示,用数组shownum储存分数与游戏时间。用state变量将时钟clk2分成4个周期,每个周期显示state对应的shounum(state)。复位信号clear置为1时,数码管全不亮。 ⑶控制器 倒记时和老鼠5秒换位置要分频出1赫兹的一个clk1。并且1赫兹的频率十分适合蛇的移动,所以我将clk1信号作为了蛇移动的触发信号。 复位信号clear=1将蛇的位置、方向、老鼠位置、墙的位置、游戏时间、分数等初始化。 ①蛇身的移动。用4个点表示蛇,从蛇尾开始,依次等于前一个蛇身点坐标。 ②蛇头的移动 按照状态转移图编写程序。实际编写时我将对出界情况的判断加了进去。 给定dir时,若出界,游戏结束。若否,当蛇头方向direction不和输入值dir 正好相反时,蛇头步进,将dir的值赋给蛇头当前方向direction;当蛇头方向 direction和输入值dir正好相反时,若蛇头出界,游戏结束,若不出界,蛇头按 照原来的direction方向步进。 ③重设老鼠位置 设置一个重设老鼠标志setrat。当老鼠存活时间满5s或蛇吃到老鼠时,将setrat 标志置为1,否则为0.当setrat=1时,用M序列发生器随机重设老鼠位置。当重 设后的老鼠和墙的位置重合时,修改老鼠位置。 ⑷分频器和外界输入方向寄存器 EPM1270T144C5数电实验开发板的时钟clk频率为50Mhz。控制器需要一个频率为1hz的时钟clk1,数码管显示需要一个频率为500hz的时钟clk2,点阵显示需要一个频率为1Mhz的时钟clk3.由于游戏结束时只有数码管需要保持显示结束时的时间和分数,所以当over置为1时,clk1和clk3的分频器停止,只有clk2的分频器继续工作。 外界输入的方向用key表示,key值为“1000”、“0100”、“0010”、“0001”时分别表示上、下、左、右。将输入的方向值赋给dir。dir设置为两位二进制变量:“00” 表示“上”,“01”表示“下”,“10”表示“左”,“11”表示“右”。 三.仿真波形及波形分析 为方便仿真,将时钟clk改为1Mhz,将clk3改为100khz,将点阵显示、数码管显示的时钟频率都改为clk,将控制模块显示的时钟改为clk3。

北邮数电实验报告

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

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

北邮电子电路实验-函数信号发生器-实验报告

北京邮电大学 电子电路综合设计实验 实验报告 实验题目:函数信号发生器 院系:信息与通信工程学院 班级: 姓名: 学号: 班内序号: 一、课题名称: 函数信号发生器的设计

二、摘要: 方波-三角波产生电路主要有运放组成,其中由施密特触发器多谐振荡器产生方波,积分电路将方波转化为三角波,差分电路实现三角波-正弦波的变换。该电路振荡频率由第一个电位器调节,输出方波幅度的大小由稳压管的稳压值决定;正弦波幅度和电路的对称性分别由后两个电位器调节。 关键词:方波三角波正弦波频率可调幅度 三、设计任务要求: 1.基本要求: 设计制作一个方波-三角波-正弦波信号发生器,供电电源为±12V。 1)输出频率能在1-10KHZ范围内连续可调; 2)方波输出电压Uopp=12V(误差<20%),上升、下降沿小于10us; 3)三角波输出信号电压Uopp=8V(误差<20%); 4)正弦波信号输出电压Uopp≥1V,无明显失真。 2.提高要求: 1)正弦波、三角波和方波的输出信号的峰峰值Uopp均在1~10V范围内连续可调; 2)将输出方波改为占空比可调的矩形波,占空比可调范围30%--70% 四、设计思路 1. 结构框图 实验设计函数发生器实现方波、三角波和正弦波的输出,其可采用电路图有多种。此次实验采用迟滞比较器生成方波,RC积分器生成三角波,差分放大器生成正弦波。除保证良好波形输出外,还须实现频率、幅度、占空比的调节,即须在基本电路基础上进行改良。 由比较器与积分器组成的方波三角波发生器,比较器输出的方波信号经积分器生成三角波,再经由差分放大器生成正弦波信号。其中方波三角波生成电路为基本电路,添加电位器调节使其频率幅度改变;正弦波生成电路采用差分放大器,由于差分放大电路具有工作点稳定、输入阻抗高、抗干扰能力较强等优点,特别是作为直流放大器时,可以有效地抑制零点漂移,因此可将频率很低的三角波变换成正弦波。

北邮计算机网络技术实践_实验四实验报告

计算机网络技术实践实验报告实验名称:基本交换机使用及VLAN设置 姓名:胡春月 实验日期:2015.05.05 学号:2012211508 实验报告日期:2015.05.06 报告退发:( 订正、重做) 一、实验环境 1、运行的操作系统 Windows 7(在老师的指导下改了部分配置之后可以不安装XP虚拟机) 配置步骤: 控制面板-程序-程序和功能,打开或关闭windows功能,然后Telnet服务器和Telnet客户端打开(因为win7默认关闭)—> 控制面板-系统与安全-管理工具-服务,开启Telnet服务 2、网络平台:软件Dynamips环境下的虚拟网络 3、网络拓扑图

二、实验目的 1、掌握以太网交换机的使用方法,能够在模拟环境中使用以太网交换机组建局域网。 2、掌握以太网交换机的VLAN划分和配置方法,能够在模拟环境中使用以太网交换机组建虚拟局域网。 三、实验内容及步骤 1、设计网络物理拓扑和逻辑网段 2、修改拓扑文件 autostart = False [localhost] port = 7200 udp = 10000 workingdir = ..\tmp\ [[router SW1]]

image = ..\ios\unzip-c3640-js-mz.124-10.bin model = 3640 console = 3003 ram = 128 confreg = 0x2142 exec_area = 64 mmap = False slot1 = NM-16ESW f1/1 = SW2 f1/3 f1/2 = R1 f1/0 f1/11 = PC1 f0/0 f1/12 = PC2 f0/0 [[router SW2]] image = ..\ios\unzip-c3640-js-mz.124-10.bin model = 3640 console = 3004 ram = 128 confreg = 0x2142 exec_area = 64 mmap = False slot1 = NM-16ESW f1/1 = SW4 f1/2 f1/2 = SW4 f1/1 f1/4 = R1 f1/1 f1/5 = SW3 f1/1 f1/6 = R2 f1/0 f1/11= PC3 f0/0 [[router SW3]] image = ..\ios\unzip-c3640-js-mz.124-10.bin model = 3640 console = 3005 ram = 128 confreg = 0x2142 exec_area = 64 mmap = False slot1 = NM-16ESW f1/2 = R2 f1/1

北邮通信网性能分析实验二MM排队系统实验报告

北邮通信网性能分析实验二M M排队系统实验 报告 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

《通信网理论基础》 实验二:二次排队问题——M/M/1排队系统的级联一、实验目的 M/M/1是最简单的排队系统,其假设到达过程是一个参数为λ的Poisson 过程,服务时间是参数为μ的负指数分布,只有一个服务窗口,等待的位置有 无穷多个,排队的方式是FIFO。 M/M/1排队系统的稳态分布、平均队列长度,等待时间的分布以及平均等待时间,可通过泊松过程、负指数分布、生灭过程以及Little公式等进行理论上的分析与求解。 本次实验的目标有两个: 实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿 真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。 仿真两个M/M/1级联所组成的排队网络,统计各个队列的平均队列长度与平均系统 时间等值,验证Kleinrock有关数据包在从一个交换机出来后,进入下一个交换 机时,随机按负指数分布取一个新的长度的假设的合理性。 二、实验原理 1、M/M/1排队系统 根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。 设到达过程是一个参数为λ的Poisson过程,则长度为t的时间内到达k个 呼叫的概率 )(t P k服从Poisson分布,即 () () ! k t k t P t k eλ λ- = ,????????? =,2,1,0 k,其中λ>0为一常数,表示了平均到达率或Poisson呼叫流的强度。设每个呼叫的持续时间为i τ,服从参数为μ的负指数分布,即其分布 函数为 {}1,0 t P X t e t μ - <=-≥ .服务规则采用先进先服务的规则(FIFO)。

北邮数据库实验报告(2)

数据库实验报告(二) 学号:班级: 1.按照给出的表用SQL Server Management Studio(企业管理器)建立表B-1, 表B-2,表B-3 book: class:

course:

2.用Transact-SQL语句建立表B-5,表B-6,表B-7,表B-8,表B-9 createtable department( department_id nchar(10)notnull primarykey, department_name nchar(10), department_header nchar(10), teacher_num nchar(10) ) createtable student( student_id nchar(10)notnull primarykey, student_name nchar(10), sex nchar(10), birth nchar(10), entrance_date nchar(10), home_addr nchar(10), email nchar(10) ) createtable student_course( course_id nchar(10)notnull, student_id nchar(10)notnull, grade nchar(10), credit nchar(10), semester nchar(10), school_year nchar(10), constraint C2 primarykey(course_id,student_id) ) createtable teacher( teacher_id nchar(10)notnull primarykey, teacher_name nchar(10), sex nchar(10), birth nchar(10), department_id nchar(10), profession nchar(10), telephone nchar(10), home_addr nchar(10), postalcode nchar(10), email nchar(10) ) createtable teacher_course_class(

北邮数电综合实验报告

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

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

北邮数电实验报告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. 控制器部分的状态转移图 该控制器一共有三个基本状态:空驶状态、载客状态和等待状态。分

北邮数电上实验报告

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

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

2、全加器实验波形图。 五、仿真波形分析 由仿真波形可以看出,当a,b,ci有两个或者两个以上为1时,产生进位,即co输出为1,而输出s则是当a,b,ci输入偶数个1时为0,奇数个1时为1,满足实验原理,仿真波形正确。

实验三VHDL组合逻辑电路设计 一、实验目的: (1)熟悉Quartus II原理图输入法进行电路设计和仿真。 (2)掌握Quartus II 图形模块单元的生成与调 (3)熟悉实验板的使用 二、实验所用器材: (1)计算机 (2)直流稳压电源 (3)数字系统与逻辑设计实验开发板 三、实验任务要求 (1)用VHDL语言设计将8421计数器,分频器和数码管译码器连接使用,实现在指定数码管滚动显示0-9,其余数码管不亮,并带有清零功能,并下载到实验板显示计数结果。 四、实验VHDL代码和仿真波形图 (1)VHDL代码 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity xianshi is port( clk,clr:in std_logic;

北邮电子院专业实验报告

电子工程学院 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;

北邮光纤实验报告背向散射法测量光纤的衰减常数

信息与通信工程学院 光纤通信实验 ——背向散射法测量光纤的衰减常数

一、实验原理 背向散射法是测量光纤衰减常数的替代法。背向散射法是一种非破坏性的测量方法,测量时,只需在光纤的一端进行。这种方法不仅能测量光纤衰减常数,还能检测光纤的物理缺陷和断点位置,测定接头损耗位置,测量光纤的长度等。因此,这种方法被广泛应用在光纤光缆的研究、生产、工程施工和传输系统的维护中。利用背向散射法原理做成的测试仪表叫做光时域反射计(Optical Tine Domain Reflectometer,OTDR)。 背向散射法的原理与雷达相似,它在光纤的一端注入大功率的窄光脉冲,在光脉冲沿着光纤传输时,由于光纤各处存在着瑞利散射,其后向散射部分不断返回光纤的输入端;而当光信号遇到裂纹时反射回的光信号会比后向散射的光信号强很多。在光纤输入端通过适当的耦合和接收信号处理,可以得到光脉冲沿着光纤的衰减及其它信息。 OTDR的主要组成包括光源、光分路器/耦合器、信号处理部分和显示器等。光源是一个或几个脉冲激光器,可以提供单个波长或多个波长的不同脉冲度和重复频率的光脉冲。光分路器/耦合器将光脉冲信号耦合到被测光纤,并将后向散射光和反射光信号耦合到光接收器中。 信号处理部分完成电信号的放大和处理,并将处理过的电信号与从光脉冲中提取的触发信号同步扫描到显示器上,在显示器给出相关数据和结果。 背向散射法是测量光纤衰减常数的原理图

OTDR测得的背向散射法典型曲线 由于信号是通过对数放大器处理的,衰减曲线的纵坐标是对数标度。图中5个典型的曲线段分别表示: ①为光纤输入端的耦合器件产生的反射(菲涅耳反射); ②为恒定斜率区; ③为接头损耗点或耦合引起的不连续性; ④为波导缺陷引起的强反射点; ⑤为输出端菲涅耳反射。 图中A、B两点之间是一条直线,表明相应于光纤上AB段的衰减常数为一定值,由于后向光经过往返两次衰减,所以曲线AB段光纤的衰减为 二、实验步骤 (1)按上图所示连接OTDR和被测光纤;

北邮数字信号处理MATLAB实验报告

数字信号处理软件实验——MatLab仿真实验报告 学院:电子工程学院 班级:2013211202 姓名: 学号:

实验一:数字信号的 FFT 分析 1、实验内容及要求 (1) 离散信号的频谱分析: 设信号 此信号的0.3pi 和 0.302pi 两根谱线相距很近,谱线 0.45pi 的幅度很小,请选择合 适的序列长度 N 和窗函数,用 DFT 分析其频谱,要求得到清楚的三根谱线。 (2) DTMF 信号频谱分析 用计算机声卡采用一段通信系统中电话双音多频(DTMF )拨号数字 0~9的数据,采用快速傅立叶变换(FFT )分析这10个号码DTMF 拨号时的频谱。 2、实验目的 通过本次实验,应该掌握: (a) 用傅立叶变换进行信号分析时基本参数的选择。 (b) 经过离散时间傅立叶变换(DTFT )和有限长度离散傅立叶变换(DFT ) 后信号频谱上的区别,前者 DTFT 时间域是离散信号,频率域还是连续的,而 DFT 在两个域中都是离散的。 (c) 离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。 (d) 获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。 (e) 建立 DFT 从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如 DVD AC3 和MPEG Audio 。 3.设计思路及实验步骤 1)离散信号的频谱分析: 该信号中要求能够清楚的观察到三根谱线。由于频率0.3pi 和0.302pi 间隔非常小,要清楚的显示,必须采取足够大小的N ,使得分辨率足够好,至少到0.001单位级,而频率0.45pi 的幅度很小,要清楚的观察到它的谱线,必须采取幅度够大的窗函数,使得它的频谱幅度变大一些。同时还要注意频谱泄漏的问题,三个正弦函数的周期(2pi/w )分别为20,40,1000,所以为了避免产生频谱泄漏(k=w/w0为整数),采样点数N 必须为1000的整数倍。 2)DTMF 信号频谱分析 双音多频信号中4*4拨号盘中的每一个按键均对应两个频率,一个高频,一个低频,每个数字由两个不同频率的正弦波组成,高频为:1209HZ,1336HZ,1633HZ,1477HZ,低频为697HZ,770hz ,852hz,941hz 。分别用两个数组来装载高频频率和低频频率,然后再分别产生两路频率混叠的信号。再利用fft 频谱分析做出频谱图。 4.实验代码及实验结果 00010450303024().*cos(.)sin(.)cos(.) x n n n n π πππ=+--

北邮 嵌入式 实验报告

北邮嵌入式实验报告 北邮嵌入式实验报告 嵌入式系统是一种特殊的计算机系统,它被嵌入到其他设备中,以完成特定的 功能。在现代科技发展的浪潮中,嵌入式系统在各个领域得到了广泛的应用。 为了更好地了解和掌握嵌入式系统的原理和应用,我参加了北邮的嵌入式实验。实验的第一部分是关于嵌入式系统的基础知识。我们学习了嵌入式系统的定义、特点以及与普通计算机系统的区别。嵌入式系统具有高度可靠性、实时性和低 功耗的特点,主要应用于汽车、家电、医疗设备等领域。通过实验,我深刻理 解了嵌入式系统的重要性和广泛应用的前景。 在实验的第二部分,我们学习了嵌入式系统的硬件平台。我们使用了一款名为Raspberry Pi的开发板,它是一种低成本、高性能的嵌入式系统开发平台。通过连接各种外设,我们可以实现不同的功能,比如LED灯的控制、温度传感器的 读取等。在实验过程中,我学会了如何使用GPIO接口与外设进行交互,并通 过编写简单的程序实现了一些基本的功能。 第三部分是关于嵌入式系统的软件开发。我们学习了Linux操作系统的基本知识,并使用了嵌入式Linux系统进行开发。通过在Raspberry Pi上安装Linux系统,我们可以使用各种开发工具和语言进行软件开发。我学会了使用C语言编 写嵌入式程序,并通过交叉编译将程序烧录到开发板上运行。这个过程让我深 刻体会到了软件开发在嵌入式系统中的重要性。 实验的最后一部分是关于嵌入式系统的应用案例。我们学习了智能家居、智能 交通系统等领域的嵌入式应用,并通过实验进行了模拟。通过连接各种传感器 和执行器,我们实现了一套简单的智能家居系统,包括温度控制、灯光控制等

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

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