这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » FPGA防火墙系统设计 V2.0(3)

共1条 1/1 1 跳转至

FPGA防火墙系统设计 V2.0(3)

工程师
2008-07-13 11:22:21     打赏
.      fpga逻辑模块详细设计 5.1       预处理模块(pre_prcs_top)

pre_prcs_top模块由三个子模块组成:hd_rmv, len_cal和fc。

5.1.1.   功能说明

hd_rmv模块:a) 把输入的八位数据转换为32位数据;

b) 检测包头为ISL,VLAN和MPLS的数据包,并将其包头去除。

len_cal模块: a) 计算数据包的长度;

             b) 根据用户的配置来判断过长和过短的数据包,并做标记。

fc模块:     a) 丢弃过长、过短和错误的数据包;

             b) 缓存数据包。

5.1.2.   模块框图

 pre_prcs_top模块由三个子模块hd_rmv, len_cal和fc组成,其内部框图如下:

 

 

5.1.3.   模块接口信号定义

接口信号

方向

功能描述

全局信号

sys_clk

input

系统时钟, 25M

sys_rst_n

input

系统复位信号, 低电平有效

与tri_mode_eth_mac_locallink模块的接口信号

rd_data_out[7:0]

input

MAC core输出的数据包数据

rd_sof_n

input

标记数据包开始,低电平有效

rd_eof_n

input

标记数据包结束,低电平有效

rd_src_rdy_n

input

数据源数据有效信号,低电平有效

rd_dst_rdy_n

output

可以接收信号,低电平有效

 

rx_fifo_status[3:0]

output

前端fifo状态

与flow_sts模块的接口信号

pre_sop_st

output

数据包头

pre_eop_st

output

数据包尾

pre_dvld_st

output

数据有效

pre_dat_st[31:0]

output

数据

pre_mod_st[1:0]

output

模式选择,eop时候的数据有效的byte数

00:4位有效

01:高三位有效

10:高两位有效

11:高一位有效

st_pb_pre

input

Push back,表示不能继续收包

与conf_if模块的接口信号

conf_wr_cal

input

ppc写使能信号

conf_rd_cal

input

ppc读使能信号

conf_clr_cal

input

ppc清零信号

conf_addr[3:0]

input

ppc读写地址信号

conf_wdat[15:0]

input

ppc读数据

cal_rdat_conf[15:0]

output

ppc写数据

5.2       流量统计模块 (flow_sts) 5.2.1.   功能说明

Ø        统计数据包的各种sip或者dip或者sp或者dp的流量信息

Ø        提供powerpc读取接口用以读取流量信息

5.2.2.   模块框图

 

5.2.3.   模块接口信号定义

说明:功能描述为空的信号表示已经在前面模块中描述过

接口信号

方向

功能描述

全局信号

sys_clk

input

系统时钟, 25M

sys_rst_n

input

系统复位信号, 低电平有效

pre_prcs_top模块的接口信号

pre_sop_st

input

 

pre_eop_st

input

 

pre_dat_st[31:0]

input

 

pre_mod_st[1:0]

input

 

pre_dvld_st

input

 

st_pb_pre

output

 

与key模块的接口信号

st_sop_key

output

 

st_eop_ key

output

 

st_dat_ key [31:0]

output

 

st_mod_ key [1:0]

output

 

st_dvld_ key

output

 

key _pb_st

input

 

与conf_if模块的接口信号

conf_wr_fs

input

 

conf_rd_fs

input

 

conf_clr_fs

input

 

conf_wdat[15:0]

input

 

conf_addr[7:0]

input

 

fs_rdat_conf[15:0]

output

 

 

5.3       关键字产生模块(key_gen5.3.1.   功能说明

Ø        转发数据包至flow_sts模块

Ø        从数据包中提取关键字key,并发送到cam_if模块用于匹配。

5.3.2.   模块框图

 

5.3.3.   模块接口信号定义

说明:功能描述为空的信号表示已经在前面模块中描述过

接口信号

方向

功能描述

全局信号

sys_clk

input

系统时钟, 25M

sys_rst_n

input

系统复位信号, 低电平有效

flow_sts模块的接口信号

st_sop_key

input

 

st_eop_key

input

 

st_dat_key[31:0]

input

 

st_mod_key[1:0]

input

 

st_dvld_key

input

 

key_pb_st

output

 

与drop模块的接口信号

key_sop_drop

output

 

key_eop_drop

output

 

key_dat_drop[31:0]

output

 

key_mod_drop[1:0]

output

 

key_dvld_drop

output

 

drop_pb_key

input

 

与cam_if模块的接口信号

key_sok_ci

output

Key头(stat of key)

key_eok_ci l

output

Key 尾(end of key)

key_key_ci[31:0]

output

Key内容

key_kvld_ci

output

Key有效

 

5.4       CAM接口模块(cam_if) 5.4.1.   功能说明

Ø        接收配置信息,确定匹配规则

Ø        接收key_gen 产生的key,组成144位的查找关键字

Ø        将查找关键字送入cam中进行匹配

Ø        根据查找结果决定处理方式

Ø        将匹配结果返回到drop模块

5.4.2.   模块框图

 

5.4.3.   模块接口信号定义

说明:功能描述为空的信号表示已经在前面模块中描述过

接口信号

方向

功能描述

全局信号

sys_clk

input

系统时钟, 25M

sys_rst_n

input

系统复位信号, 低电平有效

与key_gen模块的接口信号

key_sok_ci

input

 

key_eok_ci

input

 

key_key_ci[31:0]

input

 

key_kvld_ci

input

 

与cam模块的接口信号

ci_din_cam[31:0]

output

Data in,写入cam的数据

ci_cmp_din_cam[31:0]

output

Compare data in需要匹配的数据

ci_cmp_dmsk_cam[31:0]

output

Compare data mask,用来屏蔽ci_cmp_din_cam[31:0]上某些不关心的位

ci_en_cam

output

片使能

ci_we_cam

output

写使能

ci_wr_addr_cam[7:0]

output

要写入数据的地址

cam_busy_ci

input

Cam忙,表示正在往cam写数据

cam_match_ci

input

匹配命中

cam_match_addr_ci[7:0]

input

匹配命中地址

与drop模块的接口信号

ci_vld_drop

output

查找结果有效,每个数据包对应一个周期

ci_drp_drop

output

丢包

ci_addr_drop[7:0]

output

匹配到的Cam地址

ci_dat_drop[3:0]

output

处理方式,留做扩展功能用

 

5.5       CAM模块(cam) 5.5.1.   功能说明

宽度为32位,深度为256,可以对32位的匹配关键字进行匹配,并返回给cam_if模块匹配的结果和匹配地址 。

5.5.2.   模块框图

 

5.5.3.   模块接口信号定义

说明:功能描述为空的信号表示已经在前面模块中描述过

接口信号

方向

功能描述

全局信号

sys_clk

input

系统时钟, 25M

cam_if模块的接口信号

ci_cmp_din_cam[31:0]

input

 

ci_din_cam[31:0]

input

 

ci_en_cam

input

 

ci_we_cam

input

 

ci_wr_addr_cam[7:0]

input

 

cam_busy_ci

output

 

cam_match_ci

output

 

cam_match_addr_ci[7:0]

output

 

 

5.6       包处理模块(drop5.6.1.   功能说明

Ø        根据cam_if返回的匹配结果对数据包进行处理

Ø        将转发的数据包数据包数据由32位转换为8位发送给Tri-Mode Ethernet MAC LogiCORE

5.6.2.   模块框图

 

5.6.3.   模块接口信号定义

说明:功能描述为空的信号表示已经在前面模块中描述过

接口信号

方向

功能描述

全局信号

sys_clk

input

系统时钟, 25M

sys_rst_n

input

系统复位信号, 低电平有效

与key_gen模块的接口信号

key_sop_drop

input

 

key_eop_drop

input

 

key_dat_drop[31:0]

input

 

key_mod_drop[1:0]

input

 

key_dvld_drop

input

 

drop_pb_key

output

 

与cam_if模块接口信号

ci_vld_drop

input

 

ci_drp_drop

input

 

ci_addr_drop[7:0]

input

 

ci_dat_drop[3:0]

input

 

与conf_if模块的接口信号

conf_wr_drop

input

 

conf_rd_drop

input

 

conf_clr_drop

input

 

conf_addr[3:0]

input

 

conf_wdat[15:0]

input

 

drop_rdat_conf[15:0]

output

 

与tri_mode_eth_mac_locallink模块的接口信号

wr_data[7:0]

output

 

wr_sof_n

output

 

wr_eof_n

output

 

wr_src_rdy_n

output

 

wr_dst_rdy_n

input

 

 

5.7       处理器配置模块(conf_if5.7.1.   功能说明

从ppc单元接收配置信息,对fpga内部逻辑进行配置。包括配置len_cal、cam_if、drop模块。

5.7.2.   模块框图

 

5.7.3.   模块接口说明

说明:功能描述为空的信号表示已经在前面模块中描述过

接口信号

方向

功能描述

全局信号

sys_clk

input

系统时钟, 25M

sys_rst_n

input

系统复位信号, 低电平有效

与UC II模块的接口信号

ppc_ce_n_conf

input

 

ppc_we_n_conf

input

 

ppc_re_n_conf

input

 

ppc_clr_n_conf

input

 

ppc_addr_conf[7:0]

input

 

ppc_wdat_conf[15:0]

input

 

conf_rdat_ppc[15:0]

output

 

与len_cal模块的接口信号

conf_wr_cal

output

 

conf_rd_cal

output

 

conf_clr_cal

output

 

conf_addr[3:0]

output

 

conf_wdat[15:0]

output

 

cal_rdat_conf[15:0]

input

 

与cam_if模块的接口信号

conf_wr_ci

output

 

conf_rd_ci

output

 

conf_clr_ci

output

 

conf_addr[3:0]

output

 

conf_wdat[15:0]

output

 

ci_rdat_conf[15:0]

input

 

与drop模块的接口信号

conf_wr_drop

output

 

conf_rd_drop

output

 

conf_clr_drop

output

 

conf_addr[3:0]

output

 

conf_wdat[15:0]

output

 

drop_rdat_conf[15:0]

input

 

5.8       系统寄存器定义

LEN_CAL模块

0x00 Reserved*

Bits

Name

Type

Default Value

Description

15:0

Reserved

R

0x0

Reserved

 

0x01 short packet size*

Bits

Name

Type

Default Value

Description

15:0

short_pkt_size

RW

16’d48

Short packet size

 

0x02 long packet size*

Bits

Name

Type

Default Value

Description

15:0

long_pkt_size

RW

160’d1536

Long packet size

 

0x03 short packet number*

Bits

Name

Type

Default Value

Description

15:0

short_pkt_cnt

R

0x0

Short packet number

 

0x04 long packet number*

Bits

Name

Type

Default Value

Description

15:0

long _pkt_cnt

R

0x0

Long packet number

 

CAM_IF模块

0x10 Cam write address

Bits

Name

Type

Default Value

Description

15:8

Reserved

R

0x0

Reserved

7:0

ci_wr_addr_cam

RW

0x0

The address of the data to be write to CAM.

Must be writen after 0x11-0x12

 

0x11 The data to be write to CAM

Bits

Name

Type

Default Value

Description

15:0

ci_din_cam[31:16]

RW

0x0

The data to be write to CAM

Sip[31:16]/dip[31:16]/sp

 

0x12 The data to be write to CAM*

Bits

Name

Type

Default Value

Description

15:0

ci_din_cam[15:0]

RW

0x0

The data to be write to CAM

Sip[15:0]/ dip[15:0]/dp

 

0x1A Result table control

Bits

Name

Type

Default Value

Description

15

rst_wea

RW

0x0

Red and write contol:  1:write 0:read

14:13

Reserved

R

0x0

Reserved

12

drop

RW

0x0

Packet drop control.

0:pass

1:drop

11

Sample enable

RW

0x0

Sample enable control

0:not enable

1:enable

10:8

Reserved

R

0x0

 

7:0

rst_addra

RW

0x0

The address of the data.

0x1B mac mask control

Bits

Name

Type

Default Value

Description

15:4

Reserved

R

0x0

Reserved

3

sip_mtch_en

RW

0x1

sip match enable signal

2

dip_mtch_en

RW

0x1

dip match enable signal

1

sp_mtch_en

RW

0x1

sp match enable signal

0

dp_mtch_en

RW

0x1

dp match enable signal.

One or more of the four bits can be 1

0x1C The sample data

Bits

Name

Type

Default Value

Description

15:0

sample data

RW

0x0

Sample enable data

If the corresponding bit is 1, and the sample is enabled(bit 11 of register 1A is 1), the packet will be droped.

The bit is determined by:

sp[15:12]^sp[11:8]^sp[7:4]^sp[3:0] dp[15:12]^dp[11:8]^dp[7:4]^dp[3:0]

FLOW_STS模块

0x30 sd_slect register

Bits

Name

Type

Default Value

Description

15:4

Reserved

R

0x0

Reserved

3:0

sd_slect

WR

0x0

Select what to be statistic: 0001:select sip, 0010:select dip, 0100:select sp, 1000:select dp

Only one of the four register should be 1. If more of them is 1, then the higher bit have a higher priority. If all of them are 0, then sip is selected.

0x31 init_start register

Bits

Name

Type

Default Value

Description

15:1

Reserved

R

0x0

Reserved

0

init_start

W

0x0

Initial the statistic memory

Must be write after system started

Write 1or 0 both mean start.

0x32 ppc_read_addr register

Bits

Name

Type

Default Value

Description

15

ppc_rd_start

W

0x0

Ppc start to read statistic register.

Ppc must write this register first before read statistic

Write 1or 0 both mean start.

14:8

Reserved

R

0x0

Reserved

7:0

ppc_addr

W

0x0

Ppc read address register

0x33 start time register

Bits

Name

Type

Default Value

Description

15:0

time[31:16]

RW

0x0

Start time of the stream

0x34 start time register

Bits

Name

Type

Default Value

Description

15:0

time[15:0]

RW

0x0

Start time of the stream

The time unit is: 42ms

0x35 byte count register

Bits

Name

Type

Default Value

Description

15:0

byte_cnt[26:11]

RW

0x0

byte count of the stream

0x36 byte count and packet count register

Bits

Name

Type

Default Value

Description

15:5

byte_cnt[10:0]

RW

0x0

byte count of the stream

4:0

pkt_cnt[20:16]

RW

0x0

packet count of the stream

0x37 packet count register

Bits

Name

Type

Default Value

Description

15:0

byte_cnt[15:0]

RW

0x0

Packet count of the stream

0x38 current time register

Bits

Name

Type

Default Value

Description

15:0

curt_time[31:16]

RW

0x0

Current time of the stream

0x39 current time register

Bits

Name

Type

Default Value

Description

15:0

curt_time[15:0]

RW

0x0

current time of the stream

The time unit is: 42ms

 

MAC_IF模块

0x40 MAC core configure data

Bits

Name

Type

Default Value

Description

15:0

tieemacconfigvec[15:0]

RW

0x0

MAC core configure data. For more detail, please refer to page 93 of Xilinx document: tri_mode_eth_mac_ug138.pdf

0x41 MAC core configure data

Bits

Name

Type

Default Value

Description

15:0

tieemacconfigvec[31:16]

RW

0x0

MAC core configure data. For more detail, please refer to page 93 of Xilinx document: tri_mode_eth_mac_ug138.pdf

0x42 MAC core configure data

Bits

Name

Type

Default Value

Description

15:0

tieemacconfigvec[47:32]

RW

0x0

MAC core configure data. For more detail, please refer to page 93 of Xilinx document: tri_mode_eth_mac_ug138.pdf

0x43 MAC core configure data

Bits

Name

Type

Default Value

Description

15:0

tieemacconfigvec[63:48]

RW

0x0

MAC core configure data. For more detail, please refer to page 93 of Xilinx document: tri_mode_eth_mac_ug138.pdf

0x44 MAC core configure data

Bits

Name

Type

Default Value

Description

15:0

tieemacconfigvec[66:64]

RW

0x0

MAC core configure data. For more detail, please refer to page 93 of Xilinx document: tri_mode_eth_mac_ug138.pdf




关键词: 防火墙     系统     设计     模块     功能     说明     数据     接口         

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]