以太网帧头检测电路设计.doc
《以太网帧头检测电路设计.doc》由会员分享,可在线阅读,更多相关《以太网帧头检测电路设计.doc(29页珍藏版)》请在沃文网上搜索。
1、2辽东学院信息技术学院可编程逻辑器件原理及应用教学实习报告以太网帧头检测电路设计学生姓名: 学 号: 班 级: B1106 专 业: 电子信息工程 指导教师: 2014年07月5可编程逻辑器件原理及应用课程设计报告【摘要】以太网帧头检测电路用于100M/10M网络物理层芯片MII接口的数据恢复与整理。主要是将输入的无数据结构的4比特顺序数据恢复为本地同步的16比特、具有帧结构的数据;验证方法是将一简单的ICMP数据包保存于本地SRAM,然后将其逐一显示在LED。本文详细介绍了依据功能要求进行电路方案设计的过程,并在此基础上将整体电路分为数据同步模块完成帧头捕捉、数据恢复与16比特变换、数据保存
2、控制模块将接收的数据保存于本地SRM、数据读取与显示驱动模块,同时例化使用片内SRAM,大小为1k。实现中采用VerilogHDL描述、ModelSim进行功能仿真、QuartusII进行逻辑综合和适配下载,最后在Altera公司的芯片cyclone器件上实现并完成测试。在此过程中,根据任务书中的设计分工,完整地建立了测试平台,完成了功能和时序仿真,从而保证了设计的功能与时序的正确性。关键词:Verilog HDL;FPGA;仿真;MII接口目录引 言11 总体电路结构设计21.1 电路功能与性能21.2 关键功能电路设计31.3 电路接口41.4 电路功能框图41.5 验证方案62 模块设计
3、62.1 数据同步与恢复模块data_sync设计62.2 计数模块cnt1536设计82.3 地址产生模块add_gen设计102.4 长度锁存模块length_cap设计123 代码输入与仿真133.1 HDL代码输入133.2仿真与测试的功能列表143.3 仿真平台构建153.4 电路功能仿真结果163.5 电路后仿真结果18结论18参考文献19附录A 设计源代码20引 言 近十几年来,可编程器件FPGA/CPLD成本的大幅度降低,且随着EDA技术的日益普及,FPGA/CPLD以其较好的集成度和稳定性、可编程实现与升级的特点,在电子设计领域得到了越来越多的应用1。 本设计要实现一个数据恢
4、复电路,完成10/100M以太网物理层MII接口与数据包存储之间的数据变换,将其恢复为16比特的数据存入本地SRAM;为便于验证,再将SRAM中的数据回显在LED上。一般情况下实现该功能已经有了现成的芯片可用,这里采用FPGA的方法主要便于进一步的数据处理,比如可以采用硬件的方法处理某些特定的IP数据,甚至是UDP/TCP数据,就象本设计验证中采用的办法,直接处理ICMP数据包。由此可见可编程逻辑FPGA/CPLD方式实时性更好,逻辑可扩展性也好,如在FPGA/CPLD中使用CPU核,则有着更明显的应用优势2。 本设计使用Altera的cycleII芯片,开发过程中采用Altera公司的集成工
5、具QuartusII实现设计。基本流程是这样的:首先根据设计任务要求进行方案的设计,包括引脚确定、时序关系、功能框图与模块划分、数据处理流程与方法等;然后依据模块设计进行模块HDL代码的输入与功能仿真,功能仿真采用HDL仿真工具Modelsim6.1f;完成功能仿真后,在QuartusII平台下进行电路的约束与综合;综合结果无误后进行布局与布线,生成配置文件;在下载前进行时序分析;最后下载、测试,从而完成设计。本设计主要完成前端功能设计部分,即方案设计、代码输入、功能仿真。 由于条件所限无法在现场进行接入网络验证,本设计采用开发板上现有资源进行:开发板上具有MII接口的物理层芯片与RJ45接口
6、,我们将其通过直连线插入电脑网卡,在电脑上用ping命令发送数据,设计电路将其捕捉之后会随着拨挡开关逐一显示在LED上。1 总体电路结构设计 1.1 电路功能与性能 以太网帧头检测电路功能主要集中在四方面。一是在输入的顺序的、无数据结构的、4比特的数据码流中捕捉帧头数据,依据IEEE802.3标准应该是0xaaab;二是以帧头数据作为标准初始相位,从目的MAC地址数据开始将数据恢复为16比特数据;三是例化一片内双口同步SRAM,利用线路时钟将恢复的数据写入,利用本地同步时钟将其读出,完成时钟域的切换;四是驱动LED逐一显示SRAM中的数据。电路的具体功能细节罗列如下: 1) MII接口输入数据
7、4比特,与其同步的时钟25M/2.5M。 2) 本地时钟20M,与线路时钟完全异步。 3) MII侧数据首先进行帧头0xaaab特征码字图样捕捉,连续捕捉到三次0xa之后, 再捕捉到0xb即认为确认帧头,下一个数据即认为是目的MAC地址前8比特(MSB)。 4) 帧头定位之后,从目的MAC地址开始进行数据的变换,将其变为16比特的具 有数据结构的802.3MAC帧数据。 5) 电路内设计有MAC帧长度域捕捉电路与帧长计数器,一帧接收完保存成之后给 出接收完成信号。 6) 恢复后的数据仍然用线路时钟将其存入片内同步双口SRAM中,称为数据写入。 7) SRAM中读出的数据直接驱动16个LED。
8、8) 完成一次接收后,为避免SRAM中的数据被下一帧覆盖,将接收使能信号的拨 挡开关关闭。 9) 读取SRAM信息时,地址由外部控制:可以同步复位、可以增量加一、可以减 一、可以通过拨挡开关设定10位任意值;并且SRAM读取地址通过7段数码管显示。 因为该设计仅完成接口电路的功能,每次从SRAM中读取数据时采用手工的方式来进行,数据的吞吐量很小,每次使能操作只进行一个MAC帧的处理。当正常使用时,同步侧的时钟为20M,处理能力为16bit * 20M = 320 Mbps,足以满足需要。1.2 关键功能电路设计 本电路设计的主要难点在于帧头捕捉与数据恢复。经过功能分析,决定采用移位寄存器的方式
9、进行帧头捕捉,利用数据选择器将移位寄存器中的结构化数据提取出来。根据MII接口可知,为了捕捉16比特帧头数据0xaaab,必须设置5级移位寄存器,每级移位寄存器由4个触发器构成。输入移位寄存器的数据可能具有下面形式中的任何一个,其中x值为不确定,可能为1,也可能为0;红色的0/1序列为需要检测的比特图样0xaaab;蓝色的MAC字样位MAC帧数据。 从图中可见,待检测比特图样与MAC数据的起始位可能位于4比特的任意位置,但整个16比特图样一定在5级移位寄存器的20比特当中,且顺序排列。因此,当帧头数据到来之时,只要从这20比特中顺序选四组16比特序列,一定有一组是定位数据。例如上图a中, 0-
10、15位的16比特是定位数据;b中1-16 位的16比特是定位数据;c中2-17位的16比特是定位数据;d中3-18位的16比特是定位数据。当4-19位的16比特是定位数据时,移位寄存器前一个周期就是a中所示的数据内容,应该在上一时钟周期捕捉到。 完成帧头捕捉之后,在20比特中提取定位信息的位置,每隔4个时钟周期就可以提取一次MAC数据,完成数据的变换。1.3 电路接口 整个设计接口可以分为5部分,分别是线路输入数据和时钟、接收使能与接收完成指示信号、本地同步时钟与系统复位、数据显示接口、地址控制与显示接口。 需要注意的是,这里的大部分输入信号都来自拨挡开关或者按键,与相应的时钟是异步信号,使用
11、之前需要对其进行同步化处理。注意拨挡开关设定读取SRAM的地址时,完成拨挡开关设定后,由一个控制信号addr_swc控制完成设定值的输入,该信号由按键完成。具体接口如下表1.1所示。1.4 电路功能框图 依照功能,将电路分为6个功能模块:输入同步模块data_sync,用于恢复帧定位和MAC数据;MAC帧长度域捕捉模块length_cap,用于捕捉MAC帧长度域;计数器模块cnt1024,用于对输入数据进行计数,并根据帧长捕捉模块length_cap得到的MAC帧长域判断当前帧保存操作结束;1k字节同步双口SRAM模块,用于保存接收的数据;读地址控制与显示模块addr,根据地址的产生规则产生地
12、址并显示于数码管;最后是异步信号处理模块sig_sync,用于处理异步单比特输入信号。电路的功能框图如下图1.2所示。 在图1.2中,模块data_sync只接收一帧数据,接收的机制是这样的:当电路收到启动命令(rxstart)之后开始接收数据,完成当前帧接收之后cnt1536模块会给出接收完成信号rx_ok,在data_sync模块中用该信号上升沿相位关闭接收模块,等待下一次接收启动命令,如此循环。帧头定位如1.2节所示,利用移位寄存器的机制进行帧头锁定和16比特数据的恢复。该模块给出16比特MAC数据、帧定位信息、有效数据指示信号等。 模块length_cap主要完成输入MAC帧中的帧长度
13、域数据的锁存,根据IEEE802.3标准中的帧结构,帧长度域位于第12个字节,16比特计数器应计到5就可以锁存该域数据,并送到模块cnt1024中用于产生rxok信号。 模块cnt1536是计数器(实际MAC帧长小于1536,这里只锁存ping命令产生的ICMP包),该计数器由帧头信号frm作为初始化信号;由有效数据指示信号rxdf作为计数对象;当计数值为6时(对应MAC帧中的长度域L/T)输出1比特高电平脉冲用于长度域捕捉;当计数值到达长度域数值后,计数停止,给出接收完成指示信号rxok;计数值作为写入数据的地址输出模块dpsram是双口同步SRAM,用于数据存储、时钟阈之间的变换。如图1.
14、2,dpsram左侧为线路时钟域;右侧为系统时钟域。模块add_gen用于产生读取存储SRAM的地址。地址产生有4钟机制:复位时为0;从任意值开始加1递增,直至0x3ff;从任意值逐一递减,直至0;或者设定为0-0x3ff之间的任意值。最后需要将当前的地址译码驱动7段数码管显示。1.5 验证方案 设计的验证主要有两方面的内容:一是代码输入过程中的仿真验证;二是在硬件电路板上的验证。仿真的验证比较简单,一方面构造MII接口的数据流,需要注意的是构造不同前导码相位的输入码流;另一方面模拟读取地址产生的各种信号,在这些输入的基础上查看sram的内容、输出信号的波形等。板级验证需要连接电脑网卡,用pi
15、ng命令发送数据包,利用各种地址产生的方式读取存在电路中的数据,在LED上即可看到各字段的信息以及相对应的位置地址,对照标准,即可得知接收的数据是否正确。2 模块设计 由图1.2可见,设计共有5个功能模块,分别是数据同步与恢复模块data_sync、计数模块cnt1536、长度域锁存模块length_cap、双端口SRAM模块dpsram、地址产生模块addr_gen。这里对模块的详细功能和时序关系进行细致说明。2.1 数据同步与恢复模块data_sync设计 输入数据同步与恢复电路模块data_sync主要完成帧头提取、数据结构恢复、数据变换的功能,具体如下。 1) 当接收使能脉冲rxsta
16、rt有效时启动数据接收,接收完成信号rxok有效后关闭接 收功能,等待下一次接收使能脉冲rxstart的到来。 2) 检测到帧头之后给出1比特指示信号,最少先于MAC数据一个时钟周期。 3) 恢复数据16比特,持续4个时钟周期;目的MAC地址(mac数据)作为第一 个有效数据传送。 4) 恢复的并行数据伴有1比特指示信号,指示信号位于4个时钟周期并行数据的 第一个周期。 5) 输入数据可为2.5M,也可为25M,线路时钟与之同步。 本模块的接口信号如下表2.1所示。数据同步与恢复电路模块data_sync的RTL级电路如下图2.1所示。图中首先处理接收使能信号,当使能信号有效时才进行数据处理。
17、使能信号的产生机制是这样的:设计为了便于验证,每次接收只保存一个数据包,因此接收之前都要手动启动一次,接收使能信号有效时间就是人工手动启动接收到当前帧接收完成,等待下一次接收启动信号后再产生有效信号。 MII接口输入数据送入5级移位寄存器,保存的数据如图1.1所示。每次移位操作之后都要在锁存的20比特中搜寻16比特帧头图样,分别为sr15:0sr18:3,sr19:4应该在sr15:0时捕获,如下图所示,产生信号frmafrmd。 当frmafrmd中有一个信号有效,表明该信号对应的相位是后续数据的相位,据此即可以恢复正确数据。比如数据sr15:0中检测到帧头数据,则信号frmd会有脉冲出现,
18、据此生成数据选择信号sel=2b00,从锁存数据中选择sr19:4(sr15:0下一个时钟周期的数据);若数据sr18:3中检测到帧头数据,则信号frma会有脉冲出现,据此生成数据选择信号sel=2b11,从锁存数据中选择sr22:7(sr18:3下一个时钟周期的数据);其余数据也如此恢复。数据的指示信号直接根据帧头信号将时钟4分频即可。2.2 计数模块cnt1536设计 该模块用于产生输入MAC帧的数据定位信息以及输入数据向双口SRAM写入时的地址。主要的功能如下: 1) 计数器由clr信号同步清零,该信号来自帧头指示信号。 2) 每一次计数使能信号到来,计数器加一计数,使之和输入数据顺序相
19、对应;使 能信号来自四个时钟来一次的数据指示信号。 3) 计数值为6时,输出1bit高脉冲,用于锁存MAC中长度/类型域;4) 当计数值等于从长度域中得到的长度值时,计数器停止,并给出接收完成信号 rxok。 该模块的功能比较简单,需要注意的是当初始化之后,输入的长度数据值为零,数据需要计到6才会将该数值取到,这期间要保证计数器正常工作;另外,电路工作的过程当中,有可能发生使能信号不足6个,这时也应保证电路下一次数据到来之时正常工作。cnt1536模块的接口信号如下表2.2所示。2.3 地址产生模块add_gen设计 地址产生模块add_gen主要用来产生对双口同步SRAM的读操作信号和相应的
20、地址数据,并将当前的读操作地址显示在7段数码管中。需要注意的是很多信号来自按钮或者拨挡开关,与接收时钟异步。具体如下。 1) 当异步信号add_rst到来之后,检测上升沿并用之同步清零地址。 2) 当异步信号add_swc到来之后,检测上升沿并用之同步锁存add_sw15:0的数据 到输出地址addr,并产生1bit高脉冲信号作为读信号rd,注意与地址addr相位同步。 3) 当异步信号add_inc到来之后,检测上升沿并用之对计数器进行累加操作,输出 地址addr,并产生1bit高脉冲信号作为读信号rd,与地址addr相位同步。 4) 当异步信号add_dec到来之后,检测上升沿并用之对计数
21、器进行递减操作,输 出地址addr,并产生1bit高脉冲信号作为读信号rd,与地址addr相位同步。 5) 7段数码管的显示机制是这样的:共有8个7段数码管由3bit选择信号进行扫 描选择,显示的时候,不进行bcd码变换,每个数码管完成4bit数据的显示:10101111可分别由A/B/C/D表示,其中B与数码8显示相同,可用附加P段(小数点)以示区别;D与数码0显示相同,同样附加P段。 本模块的接口信号如下表2.3所示。地址产生模块add_gen主要处理3方面的内容:将输入的异步信号同步化并产生有效的操作信号;根据控制信号对地址进行累加、递减、复位、载入等操作并相应产生操作信号;对地址数据进
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 以太网 检测 电路设计