微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于网络编码的多信源组播通信系统,包括源代码,原理图等

基于网络编码的多信源组播通信系统,包括源代码,原理图等

时间:11-08 来源:3721RD 点击:

的算法和协议,或者处理一些异常情况,同时,对于系统开发人员,也应该是可控的,因为开发人员往往需要配置和调试硬件。使用通用的寄存器接口就可以使数据处理对软件透明化,这是靠映射内部的硬件寄存器来完成的,即所谓的存储映射技术。对于软件来讲,映射寄存器相当于一个I/O接口,它可以由软件访问和修改。

图2.5-1:系统中的register bus 和data bus

Register bus中每个模块的register连接在一起,组成一个信息环路。这些register块中存储了数据处理在每个模块中的状态和阶段,任何一个模块都可以响应来自PCI总线寄存器的访问和控制要求,而PCI总线寄存器可以通过软件来控制。也就是说,硬件和软件的通信是通过PCI总线完成的。

数据以及控信息在硬件和主机系统之间是通过PCI总线传输的,以Linux网络存储栈作为接口的。NetFPGA向主机发送分组数据的过程如图2.5-2a所示:

分组到达,发往CPU队列; 中断程序通知驱动程序有分组到达; 驱动程序设置和初始化DMA传送器; NetFPGA通过DMA总线发送分组; 中断程序发送DMA结束信号; 驱动程序把分组传递到网络存储栈;

图2.5-2a:NetFPGA向主机发送数据 图2.5-2b:主机向NetFPGA发送数据

主机向NetFPGA发送分组数据的过程如图2.5-2b所示:

控制软件通过网络socket发送分组,分组被递交给驱动程序; 驱动程序设置和初始化DMA传送器; 中断程序发送DMA结束信号;

主机访问寄存器是通过系统调用系统内核的ioctl( )函数作为接口的。读写寄存器的操作函数如下,这两个函数内部调用了ioctl( )函数。

readReg(nf2device *dev, int address, unsigned *rd_data)

writeReg(nf2device *dev, int address, unsigned *wr_data)

例如: readReg(&nf2, OQ_NUM_PKTS_STORED_0, &val);

主机访问NetFPGA寄存器的过程如下:

(1)控制软件调用ioctl( )函数操作网络socket,由函数ioctl传递给驱动程序;

(2)驱动程序完成PCI寄存器的读写;

3 系统的详细设计方案

3.1 概述

在组播网络的拓扑图中,编码路由器、转发路由器和解码路由器是三个独立的系统,各自完成编码、转发和解码的任务。前面讲过,分组的编码、解码主要在网络层完成。在网络层中数据通道中,data bus和ctrl bus是同步传输的,二者之间的关系和格式如图3.1-1所示:

ctrl bus(8位)

Data bus(64位)

ff

module header

00

Pkt data1

00

……

xy(xy≠00)

Last pkt data

图3.1-1 数据通道中的data bus和ctrl bus

Ctrl为ff时,表明为一个数据包的包头,xy为非零数据,指明最后一个有效的字节所在的位置,如01000000指明是第7个,即data[63:48]为有效数据。模块之间数据传输的过程是:若上一个模块已经处理完毕,想把数据传输到下一个模块,首先判断输入信号rdy是否有效,当rdy = 1时,将数据和控制信号同步发送出去,同时wr_vld信号有效,时序如图3.1-2所示:

图3.1-2 有效的数据传输时序

3.2 编码路由器详细设计方案

3.2.1编码系统整体模块如图3.2-1所示

图3.2-1:编码系统整体模块图

3.2.2系统中各单元模块的功能与时序

(1)Input arbiter

① Input arbiter内部结构如图3.2-2所示:

图3.2-2 Input arbiter内部结构图

② 本模块输入输出信号列表及说明

Signal name

Bit width

Input or output

description

Input_fifo_data_1

64

input

Input data bus from "input FIFO 1"

Input_fifo_ctrl_1

8

input

Input ctrl bus from "input FIFO 1"

Input_fifo_empty_1

1

input

1=input FIFO is empty,0=otherwise

Input_fifo_rd_en_1

1

output

Read enable

Input_fifo_data_2

64

input

Input data bus from "input FIFO 2"

Input_fifo_ctrl_2

8

input

Input ctrl bus from "input FIFO 2"

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top