通信实验课程设计报告 - 图文 联系客服

发布时间 : 星期三 文章通信实验课程设计报告 - 图文更新完毕开始阅读3e659f8cd0d233d4b14e69f0

return 1; }

int or_op(int a,int b) {

if((a==0)&&(b==0)) return 0; else return 1; } 2、

结果显示

拨号成功后的图:

实验四 位间隔识别实验

一、实验目的

位间隔识别实验用来考察自己对位间隔识别原理的掌握情况。

二、实验原理及设计

位间隔识别的目的是要识别两位号码之间的间隔,从而区分各位号码。首先来确定一下位间隔识别的扫描周期,一方面拨号盘的位间隔 ≥ 250ms,另一方面需要确定一下最长的脉冲或者间隔为多少毫秒。由于最慢的脉冲速度为每秒8个脉冲,这就是说脉冲周期T=1000/8=125ms,当断续比为3:1时,脉冲(断)时间应为125ms*3/4=93.75ms,所以位间隔识别程序要能鉴别93.75ms和250ms间的间隔。一般采用96ms扫描程序来识别,位间隔识别的原理图:

对于位间隔识别的基本原理,在这里要强调两个关键点

(1)识别在前96ms周期内没有发生过变化。这就排除了脉冲变化的因素。因为脉冲最长间隔如前面所计算的那样为93.75ms〈 96ms;

(2)识别出在此以前的最后一次变化是在96ms以前的那个周期内,这一条件可以保证在位间隔开始96ms后的第一个周期就能识别到,而且保证以后各次扫描不识别。

为此引入了“首次变化”这个变量,它标志首次遇到了“变化”。平时它为“0”,当在一个扫描周期内遇到变化后就变为“1”,在这个周期的后续时间里它都保持“1”不变。这个条件可由下面的逻辑关系来实现: 首次变化=首次变化∨变化识别。当首次变化为“0”时,只要8ms脉冲扫描的变化识别为“0”,则首次变化永远为“0”,一旦变化识别为“1”,则首次变化就变为“1”,而且以后无论变化识别如何改变都不能改变首次变化的“1”值。为确保以上“首次变化”平时为“0”,令每次96ms程序都把它清“0”,这样就写出下面的计算公式:首次变化=(首次变化∨变化识别)∧ /96 在每次96ms程序执行期间来检查“首次变化”这个变量,若为“0”,说明在前96周期内没有发生过变化;若为“1”,说明已发生变化,但这时还不能确定为何种变化,既可能为脉冲变化,也可能为位间隔变化。这就需要看下一个96ms周期,若仍有变化,则属于“脉冲变化”;若无变化,即属于“位间隔”变化(>96ms无变化)。这时在再下一个周期内仍能识别出“无变化”,但已经识别出一次了,不能再作重复识别。

对上面的讨论加以概括,只要识别两个变量就可以了:(1)上一个96ms周期内无变化;(2)再上一个周期内有变化就可确定为“位

间隔”了。在上面的图中的“首次变化”是识别变量(1)的,首次变化=1是说明上一周期内无变化,否则有变化。上图中前次“首次变化”是识别后一个变量(2)的,前次“首次变化”是读取“首次变化”的存储内容,不过96ms读一次,读的正是再上一个周期的最后结果。前次“首次变化”=1,说明再上一个周期有过变化,否则无变化。将“首次变化”取反后与前次“首次变化”相与,结果为“1”,表示有位间隔。

在我们的实验中提供了前100ms的线路状态数组和当前的线路状态数组,以及用来保存“变化识别”、“首次变化”和“前次首次变化”的数组等供学生使用,学生通过编程检测位间隔的位置,当学生检测到位间隔以后,学生把与该线路对应的脉冲值放入到一个接收号码队列中,并且放在接收号码队列中的事件需保存着与该号码对应的线路号,因为几个线路接收到的号码都是放在同一个队列中的。(然后,一个外部程序将扫描该接收号码队列,逐一把各个接收号码事件发送给交换系统中央控制系统。学生只要做到将号码事件按照接收号码队列节点格式放入队列即可。)

三、实验过程 1、实验主要数据结构:

函数功能:识别出一位号码,将该号码放入到号码接收队列中;