编辑: Cerise银子 2019-07-03
ALOHA 模型构建与仿真 1.

实验原理 设计 ALOHA 网络模型将使用一个发射机节点传送数据包, 并且使用一个接 收器节点模型执行网络监测.模型结构如图

1 所示. 图1理论上,ALOHA 系统可以模拟成一个简单的资源发生器和一个总线发射器. 我们在此将设计更多通用的模型,在后面设计 CSMA 时便可以在此基础上轻松 实现. 通用网络:cct_net 通用传输节点模型: cct_tx 通用接收节点模型: cct_rx 通用接收进程模型: cct_rx Aloha 传输进程模型: aloha_tx CSMA 传输进程模型: csma_tx 2. 实验原理步骤 2.1.创建发射节点的进程模型 1)打开 OPNET. 2)选择 File >

New... 然后在下拉菜单中选择 Process Model ,单击 OK. 3)使用 Create State 工具按钮, 在编辑窗口放置三个状态. 图2-1 4)接着对这三个状态做如下设置 (a)将第一个状态的 name 属性改为 init ,将其 status 属性改为 forced. (b)对于第二个状态,将其 name 属性改为 idle. (c)对于第三个状态将其 name 属性改为 tx_pkt,将其 status 属性改为 forced 图2-2 5)在状态之间添加转移线 (a)按照下图所示连接转移线 图3-3 (b)将idle 状态到 tx_pkt 状态转移线的 condition 属性改为 PKT_ARVL . PKT_ARVL 宏用来判断是否收到了流中断,在这个进程中,只会收到来自 generator, 模块的流中断,所以在定义宏的时候不需要指定流中断来自于哪个 包流线. 6) 在Header Block 中添加如下代码,并保存 /* Input stream from generator module */ #define IN_STRM

0 /* Output stream to bus transmitter module */ #define OUT_STRM

0 /* Conditional macros */ #define PKT_ARVL (op_intrpt_type() == OPC_INTRPT_STRM) /* Global Variable */ extern int subm_pkts;

7) 打开 State Variable Block 进行如图 2-4 所示设置 图2-4 8) 定义 init 状态的动作,并添加如下执行代码 /* Get the maximum packet count, */ /* set at simulation run-time */ op_ima_sim_attr_get_int32 ( max packet count , &

max_packet_count);

9) 定义 tx_pkt 状态的动作,并添加如下执行代码 /* Outgoing packet */ Packet *out_pkt;

/* A packet has arrived for transmission. Acquire */ /* the packet from the input stream, send the packet */ /* and update the global submitted packet counter. */ out_pkt = op_pk_get (IN_STRM);

op_pk_send (out_pkt, OUT_STRM);

++subm_pkts;

/* Compare the total number of packets submitted with */ /* the maximum set for this simulation run. If equal */ /* end the simulation run. */ if (subm_pkts == max_packet_count) op_sim_end ( max packet count reached. 保存,并关闭对话框 10) 定义仿真属性 (a)选择 Interfaces >

Global Attributes. (b)输入下图所示信息 图2-5 (c)单击 OK,保存 11) 设置进程模型接口 (a)选择 Interfaces >

Process Interfaces. (b)将begsim intrpt 属性改为 enabled. (c)将其他属性的 Status 改为 hidden. (d)单击 OK,关闭对话框 12) 编译进程,保存名字为_aloha_tx,编译成功后,关闭进程模型 编辑器. 2.2.创建发射节点的节点模型 1)选择 File >

New?,然后从下拉菜单中选择 Node Model,单击 OK. 2)编辑窗口放置两个 processor 和一个 bus transmitter. 3)按照下图所示修改每个模块的名字,并连接包流线. 图2-6 4)提升 gen 模块的 interarrival time 属性. (a)右键单击 gen 模块,打开其属性对话框. (b)将process model 属性改为 simple_source. (c)右键单击 Packet Interarrival Time,选择 Promote Attribute to Higher Level,则在 右边 Value 会显示 promoted,如图 图2-7 (d)单击 OK,关闭属性对话框. 5)设置 tx_proc 模块的属性 (a)打开 tx_proc 的属性对话框,将process model 属性设置为_aloha_tx. (b)单击 OK,关闭属性对话框. 6) 对上述所创建的节点模型进行功能增强. 图2-8 (a) 在原有基础上增加一个 process 模块和一个 bus transmitter, 分别命名为 sink 和bus_rx, 并用包流线按照下图方式连接. 图2-9 (b)使用 Create Statistic Wire 工具按钮,按照下图方式连接 bus_rx 和tx_proc. 图2-10 (c) 右键单击橙色的 statistic wire, 打开其属性对话框, 将rising edge trigger 和falling edge trigger 属性都改为 disabled.单击 OK,关闭属性对话框. 7) 检查包流线的连接是否正确 (a)右键单击 tx_proc 模块,选择 Show Connectivity,确定和下图一致. 图2-11 (b)如果不一致,则做如下修改 ? 右键单击 gen 到tx_proc 模块之间的包流线,选择 Edit Attributes,打开属性对话 框. ? 将src stream 属性的值改为 src stream [0]. ? 单击 OK,关闭属性对话框. ? 右键单击 bus_rx 到tx_proc 之间的统计线,选择 Edit Attributes,打开属性对话 框. ? 将dest stat 属性的值修改为 instat [0]. ? 单击 OK,关闭属性对话框. 8) 设置节点模型接口 (a)选择 Interfaces >

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题