ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:4.08MB ,
资源ID:9337732      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9337732.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(现代交换技术实验报告全.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

现代交换技术实验报告全.docx

1、现代交换技术实验报告全基础实验一时间表调度实验1.实验容 :实验目的 :实验原理与设计 :实验主要数据结构 :实验效果检验一.实验目的: 驱动交换网络实验用来考查学生对时间表调度原理的掌握情况。二.实验原理与设计: 在程控数字交换的体系结构中,周期级程序(例如摘挂机检测程序、脉冲识别程序、位间隔识别程序)是由时间表调度实现的。所谓时间表调度,是指每经过交换系统的最短有效时间(这通常是指各周期性程序周期的最大公约数),都会检查调度表的调度要求,如果某个程序在这时需要执行,则调度程序开始执行它。 在我们设计的时间表调度实验中,这个调度表的调度是静态的。所谓静态,是指我们的调度表是在系统初始化的时候

2、就建立起来的,在系统运行的情况下不再改动。 实验要求的就是这个调度表的初始化。这个调度表如下:时间(10ms) 任务0:摘挂机检测任务1:脉冲检测任务2:位间隔检测任务 0 0/1 0/1 0/1 1 0/1 0/1 0/1. . . 18 0/1 0/1 0/1 19 0/1 0/1 0/1 我们这个交换系统提供了三个周期性调度程度(摘挂机检测程序、脉冲识别程序和位间隔识别程序),它们的调用周期分别为200ms、10ms和100ms,所以我们系统的最小调度时间为10ms。如图所示,每隔10ms,我们就会检查这个表的一行,如果该行上某一列为1,我们就执列所对应的任务,如果为0,就什么都不做。每

3、当执行到这个表的最后一行,调度任务会返回第一行循环执行。而你所要做的就是按照你的理解来填写这个调度表。三.实验主要数据结构: 函数功能:完成调度表的初始化; 函数原型:initSchTable(int ScheduleTableSchTabLenSchTabWdh);其中SchTalLen和SchTabWdh为在bconstant.h中的宏定义: #define SchTabLen 20 /代表这个调度表为20行(相邻行之间的时间间隔为10ms); #define SchTabWdh 3 /代表三个周期性调度任务0:摘挂机检测任务;1:脉冲检测任务;2:位间隔检测任务;四.实验效果检验: 当调

4、度表初始化正确时,能够进行正常的通话;如果初始化不正确,可能会造成周期性程序的不正常调用,例如位间隔调度的延迟会造成识别位间隔的延误甚至丢失。 注:由于为循环程序,所以调度表的初始化方案不唯一。2.源代码#include bconstant.hextern C _declspec(dllexport) void initSchTable(int ScheduleTableSchTabLenSchTabWdh) int i; for(i=0;i=19;i+) ScheduleTablei0=0; ScheduleTable00=1; for(i=0;i=19;i+) ScheduleTablei

5、1=1; for(i=0;i=19;i+) ScheduleTablei2=0; ScheduleTable02=1; ScheduleTable102=1; return;基础实验二 摘挂机检测实验1.实验容:实验目的 :实验原理与设计 :实验主要数据结构 :实验主体流程图一.实验目的 摘挂机检测实验用来考查学生对摘挂机检测原理的掌握情况。二.实验原理与设计 设用户在挂机状态时扫描输出为“0”,用户在摘机状态时扫描输出为“1”,摘挂机扫描程序的执行周期为200ms,那么摘机识别,就是在200ms的周期性扫描中找到从“0”到“1”的变化点,挂机识别就是在200ms的周期性扫描中找到从“1”到“

6、0”的变化点,该原理的示意图如下所示: 在我们的实验中,我们把前200ms的线路状态保存以备这次可以读取,同时读出这次的线路状态,把前200ms的线路状态取反与这次的线路状态相与,如果为1,就说明检测到摘机消息了。同理,我们把这次的线路状态取反再与前200ms的线路状态相与,如果为1就说明检测到挂机消息了,然后把摘挂机信号作为事件放入摘挂机队列中。三.实验主要数据结构 函数功能为:检测到摘、挂机事件,并把该事件放入到摘挂机事件队列中。 函数原型:void scanfor200(int linestate200LINEMAX,int linestateLINEMAX,UpOnnode * hea

7、d1, UpOnnode* end1);其中LINEMAX为线路总数,是定义在bconstant.h中的一个宏,linestate200LINEMAX为已保存的200ms前线路状态,linestateLINEMAX为当前的线路状态,head1,end1为摘挂机队列的首尾指针,该队列已经在主程序中进行了初始化。我们所要做的就是把检测到的摘挂机事件以摘挂机队列节点的形式插入到摘挂机事件队列中。数据结构说明: 头文件:bconstant.h;(以下的数据结构都已在该文件中定义)LINEMAX:最大线路数;int linestate200LINEMAX,linestateLINEMAX:线路从0开始编

8、号;状态:1:有电流,0无电流;enum UporOn ehandup,ehandon :为摘挂机区别符:ehandup表示摘机,ehandon表示挂机; struct UpOnnode /摘挂机队列节点结构 UporOn phonestate; /摘挂机区别符; int linenum; /线路号(从0开始); struct UpOnnode* next; /指向下一节点的指针; ;注意事项: 1.我们编写的模块是基础实验部分预加载的本局交换系统的一个模块而已,在系统中head1头指针和end1尾指针已经完成初始化。为方便起见,我们的摘挂机事件队列是一个包含头节点的单向链表,并且头指针指向该

9、头节点,尾指针在初始化时也指向了该节点。所以在我们的函数编写中应保证头指针始终指向该头节点上、尾指针指向摘挂机事件队列的最末一个节点。2.注意把这次扫描的线路状态值保存在前200ms扫描线路状态数组中,以便主程周期调用。四.实验主体流程图2.源代码extern C _declspec(dllexport) void scanfor200(intlinestate200LINEMAX, int linestateLINEMAX,UpOnnode * head1,UpOnnode * end1)int i; UpOnnode * p; for(i=0;iphonestate=ehandup; p-

10、linenum=i; p-next=0; end1-next=p; end1=p; if(linestate200i&linestatei) p=new UpOnnode; p-phonestate=ehandon; p-linenum=i; p-next=0; end1-next=p; end1=p; if(i=LINEMAX)for(i=0;iLINEMAX;i+)linestate200i=linestatei; return; 基础实验三 脉冲计数实验1.实验容 :实验目的 :实验原理以与实验设计 :实验主要数据结构 :实验主体流程图一.实验目的 脉冲计数实验用来考察查学生对脉冲识别原

11、理的掌握情况。二.实验原理以与实验设计 拨号盘所发出的拨号脉冲有规定的参数。我国规定的号盘脉冲的参数有: 脉冲速度:即每秒钟送出的脉冲个数,规定的脉冲速度为每秒钟8-16个脉冲; 脉冲断续比:即脉冲宽度(断)和间隔宽度(续)之比,规定的脉冲断续比为1:1-3:1。1)脉冲识别程序扫描周期的确定:为确定脉冲识别扫描的周期,需要计算出最短的变化间隔(脉冲或间隔宽度),这样才能保证每个脉冲都能够识别而不至于丢失脉冲。由于号盘每秒发出的最快脉冲个数为16个,脉冲周期T=1000/16=62.5ms,在这种情况下断续时间比为3:1时续的时间最短,为1/4*T,所以最短变化周期为1/4*(1000/16)

12、=15.625ms,脉冲识别扫描程序的周期15.625ms。2)拨号脉冲识别原理:在下图中,采用了10ms的扫描周期,其中的变化识别标志了状态的变化。对于一个脉冲来说,是前沿和后沿各识别一次,我们可以任取一个来识别脉冲,下图中采用了前沿识别。从逻辑上讲,也就是说(这前)前=!这前相当于前面所说的挂机识别,同样(这前)!前=这!前相当于摘机识别。在这里采用比较麻烦的逻辑运算的原因是需要“变化识别”这个结果。这在位间隔识别中要用到,下面是脉冲识别原理原理示意图: 在我们设计的实验中,用一个数组保留各线路10ms前的状态,用另一个数组保留各线路当前的状态,并且提供了保存“变化识别”的数组(以供后面的

13、位间隔识别使用),另外提供给学生使用的是保存已检测的脉冲值的数组,学生编程检测到一个脉冲以后,就将该线路对应的脉冲值加一。三.实验主要数据结构 函数功能:识别出一个脉冲,然后把该线路对应的脉冲数加一。函数原型:void scanpulse(int linestateLINEMAX,int linestate10LINEMAX,int change LINEMAX,int fchangeLINEMAX,int pulsenumLINEMAX) 其中LINEMAX为最大线路数,linestate为当前线路状态,linestate10为10ms前的线路状态,change为状态改变,fchange为首

14、次变化,pulsenum为脉冲计数数组。主要的数据结构:头文件:bconstant.h;(以下的数据结构都已在该文件中定义)LINEMAX:最大线路数;int linestateLINEMAX,linestate10LINEMAX:线路从0开始编号;状态:1:有电流,0无电流;int changeLINEMAX:线路状态变化数组,0表示无变化,1表示有变化;int fchangeLINEMAX:线路首次变化数组,1表示已发生首次变化,0表示没有;int pulsenumLINEMAX:线路当前的脉冲值;为方面大家操作,我们提供了两个预定义的函数:int nor_op(int a,int b);

15、int or_op(int a,int b);分别用于异或操作和或操作。注意事项:把这次的线路状态值保存到10ms前的线路状态数组中,以便主程序周期调用。四.实验主体流程图 2.源代码void scanpulse(int linestateLINEMAX,int linestate10LINEMAX,int changeLINEMAX,int fchangeLINEMAX,int pulsenumLINEMAX)int i; for(i=0;iLINEMAX;i+) changei=nor_op(linestatei,linestate10i); fchangei=or_op(fchangei

16、,changei); if(changei&(!linestate10i) pulsenumi=pulsenumi+1; for(i=0;i96ms无变化)。这时在再下一个周期仍能识别出“无变化”,但已经识别出一次了,不能再作重复识别。 对上面的讨论加以概括,只要识别两个变量就可以了:(1)上一个96ms周期无变化;(2)再上一个周期有变化就可确定为“位间隔”了。在上面的图中的“首次变化”是识别变量(1)的,首次变化=1是说明上一周期无变化,否则有变化。上图中前次“首次变化”是识别后一个变量(2)的,前次“首次变化”是读取“首次变化”的存储容,不过96ms读一次,读的正是再上一个周期的最后结果

17、。前次“首次变化”=1,说明再上一个周期有过变化,否则无变化。将“首次变化”取反后与前次“首次变化”相与,结果为“1”,表示有位间隔。 值得注意的是,仅上面识别出的“位间隔”还是不够的,因为它只能说明前一次变化在96ms以前,那么用户中途挂机也可以达到这个条件,因此必须区别是“位间隔”还是“中途挂机”。区别这个很容易,只要区别一下现在用户处于挂机还是摘机状态就可以了。前者是中途挂机,后者是位间隔。方法可以是查一下当前的用户线状态,如果为“1”,说明用户已经挂机,那么识别的是“中途挂机”,否则为“位间隔”。 在我们的实验中提供了前100ms的线路状态数组和当前的线路状态数组,以与用来保存“变化识

18、别”、“首次变化”和“前次首次变化”的数组等供学生使用,学生通过编程检测位间隔的位置,当学生检测到位间隔以后,学生把与该线路对应的脉冲值放入到一个接收队列中,并且放在接收队列中的事件需保存着与该对应的线路号,因为几个线路接收到的都是放在同一个队列中的。(然后,一个外部程序将扫描该接收队列,逐一把各个接收事件发送给交换系统中央控制系统。学生只要做到将事件按照接收队列节点格式放入队列即可。) 三.实验主要数据结构 函数功能:识别出一位,将该放入到接收队列中; 函数原型为:void scandigit(int linestateLINEMAX,int linestate100 LINEMAX,int

19、 pulsenumLINEMAX,int fchangeLINEMAX,int lfchange LINEMAX, Digitnode * head2,Digitnode * end2)。其中LINEMAX为线路总数,是定义在bconstant.h中的一个宏,linestateLINEMAX为当前的线路状态linestate100LINEMAX为100ms前的线路状态,pulsenum为当前已经检测到的脉冲计数值,fchange为首次变化,lfchange为前次首次变化,head2,end2为接收队列的首尾指针,该队列已经完成了初始化。本次实验就是把检测到位间隔的线路的值插入这个队列中。 数据

20、结构说明: 头文件:bconstant.h;(以下的数据结构都已在该文件中定义)LINEMAX:最大线路数;int linestateLINEMAX,linestate100LINEMAX:线路从0开始编号;状态:1:有电流,0无电流;int pulsenumLINEMAX:线路已检测到的脉冲值数;int fchangeLINEMAX,lfchange LINEMAX:首次变化数组,前次首次变化数组,有变化为1。 struct Digitnode /接收队列节点数据结构 int num; /值int linenum; /线号struct Digitnode * next;/指向下一节点的指针

21、注意事项: 1.我们编写的模块是基础实验部分预加载的本局交换系统的一个模块而已,在系统中head2头指针和end2尾指针已经完成初始化。为方便起见,我们的接收队列是一个包含头节点的单向链表,并且头指针指向该头节点,尾指针在初始化时也指向了该节点。所以在我们的函数编写中应保证头指针始终指向该头节点上、尾指针指向接收队列的最末一个节点。 2.当某条线路检测到位间隔以后,该线路的脉冲值数应清0;在函数末尾应将当前线路状态保存在100ms前的线路状态中、首次变化保存在前首次变化中、首次变化再清0。 细心的您可能会问:“如果线路当前的脉冲数为10,需要把10做为值也插入吗”,的确,我们的值0是产生了10

22、个脉冲,脉冲数组中脉冲数也会出现10,不过在您把脉冲值10插入到接收队列后,我们的后续程序会把它转化为0,传给交换控制系统的。四.实验主体流程图1.源代码Voidscandigit(int linestate2LINEMAX,int linestate100LINEMAX,int pulsenumLINEMAX,int fchangeLINEMAX,int lfchangeLINEMAX,Digitnode * head2,Digitnode * end2) int i;Digitnode * p; for(i=0;inum=pulsenumi; p-linenum=i; p-next=0;

23、end2-next=p; end2=p; pulsenumi=0; for(i=0;iLINEMAX;i+) lfchangei=fchangei; fchangei=0; linestate100i=linestate2i; return; 基础实验五 软件送音实验1.实验容:实验目的 :实验原理与设计 :实验主要数据结构 :实验检验标准一.实验目的 软件送音实验用来考查学生对各种信号音发送情况的掌握情况。二.实验原理与设计 交换机需要向用户发送各种信号音,如拨号音、忙音和回铃音等,也需要向其他交换机发送和接收各种局间信令,如多频信号。这些信号都是音频模拟信号,而信号设备是接在数字交换网络上

24、的,它通过数字交换网络所提供的路由来传送。因此这些模拟信号必须是“数字化了的”,信号音的产生不外乎单频音和双频音两种。对于单频信号音的产生,是按照一定的时间间隔抽样、量化和编码运算,得到各抽样点的pcm信号,然后保存在ROM中,在需要发送时按序发送。对于双频信号音的产生,是取得两种信号音周期的最小公倍数,作为pcm的抽样周期,然后保存在ROM中,在需要时按序取出发送。 由于用软件来模拟信号音的产生比较困难,所以在我们的实验中,我们发送的信号音都是预先准备好的信号音文件,并且伴随有界面的送音显示。那么如何考查学生对软件送音的理解呢?我的设计是提供给学生一些需要送音的情况,由学生编程确定该送音的类型,该送音的情况和送音的类别都是在主程序中预先安排好的,学生只需在送音情况和送音类型间“牵线搭桥”。三.实验主要数据结构 函数功能:根据输入的状态决定送音的类型; 函数原型:int decide(Userstate state);其中state为输入的状态类型,输出为发送的信号音类型; 头文件:bconstant.h(以下的数据结构均定义在该头文件中) enum Userstate caller_ehandup, /主叫摘机caller_calledbusy, /被叫忙theoth

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2