首页 以太网帧头检测电路设计

以太网帧头检测电路设计

举报
开通vip

以太网帧头检测电路设计以太网帧头检测电路设计 辽东学院信息技术学院 《可编程逻辑器件原理及应用》教学实习报告 以太网帧头检测电路设计 学生姓名: 学 号: 班 级: B1106 专 业: 电子信息工程 指导教师: 2014年07月 《可编程逻辑器件原理及应用》课程设计报告 【摘要】 以太网帧头检测电路用于100M/10M网络物理层芯片MII接口的数据恢复与整理。主要是将输入的无数据结构的4比特顺序数据恢复为本地同步的16比特、具有帧结构的数据;验证方法是将一简单的ICMP数据包保存于本地SRAM,然后将其逐一显示在LED。本...

以太网帧头检测电路设计
以太网帧头检测电路 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 辽东学院信息技术学院 《可编程逻辑器件原理及应用》教学实习 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 以太网帧头检测电路设计 学生姓名: 学 号: 班 级: B1106 专 业: 电子信息工程 指导教师: 2014年07月 《可编程逻辑器件原理及应用》课程设计报告 【摘要】 以太网帧头检测电路用于100M/10M网络物理层芯片MII接口的数据恢复与整理。主要是将输入的无数据结构的4比特顺序数据恢复为本地同步的16比特、具有帧结构的数据;验证 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 是将一简单的ICMP数据包保存于本地SRAM,然后将其逐一显示在LED。本文详细介绍了依据功能要求进行电路 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 设计的过程,并在此基础上将整体电路分为数据同步模块——完成帧头捕捉、数据恢复与16比特变换、数据保存控制模块——将接收的数据保存于本地SRM、数据读取与显示驱动模块,同时例化使用片内SRAM,大小为1k。 实现中采用Verilog HDL描述、ModelSim进行功能仿真、QuartusII进行逻辑综合和适配下载,最后在Altera公司的芯片cyclone器件上实现并完成测试。在此过程中,根据任务书中的设计分工,完整地建立了测试平台,完成了功能和时序仿真,从而保证了设计的功能与时序的正确性。 关键词:Verilog HDL;FPGA;仿真;MII接口 《可编程逻辑器件原理及应用》课程设计报告 目录 引 言 ............................................................ 1 1 总体电路结构设计 .............................................. 2 电路功能与性能 .............................................. 2 1.1 1.2 关键功能电路设计 ............................................ 3 1.3 电路接口 .................................................... 4 1.4 电路功能框图 ................................................ 4 1.5 验证方案 .................................................... 6 2 模块设计 ...................................................... 6 2.1 数据同步与恢复模块data_sync设计 ............................. 6 2.2 计数模块cnt1536设计 ......................................... 8 2.3 地址产生模块add_gen设计 .................................... 10 2.4 长度锁存模块length_cap设计 ................................. 12 3 代码输入与仿真 ................................................ 13 3.1 HDL代码输入 ................................................ 13 3.2仿真与测试的功能列表 ........................................ 14 3.3 仿真平台构建 ................................................ 15 3.4 电路功能仿真结果 ............................................ 16 3.5 电路后仿真结果 .............................................. 18 结论 ............................................................ 18 参考文献 ........................................................ 19 附录A 设计源代码 .............................................. 20 《可编程逻辑器件原理及应用》课程设计报告 引 言 近十几年来,可编程器件FPGA/CPLD成本的大幅度降低,且随着EDA技术的日益普及,FPGA/CPLD以其较好的集成度和稳定性、可编程实现与升级的特点,在电子设计领域得到了越来越多的应用[1]。 本设计要实现一个数据恢复电路,完成10/100M以太网物理层MII接口与数据包存储之间的数据变换,将其恢复为16比特的数据存入本地SRAM;为便于验证,再将SRAM中的数据回显在LED上。一般情况下实现该功能已经有了现成的芯片可用,这里采用FPGA的方法主要便于进一步的数据处理,比如可以采用硬件的方法处理某些特定的IP数据,甚至是UDP/TCP数据,就象本设计验证中采用的办法,直接处理ICMP数据包。由此可见可编程逻辑FPGA/CPLD方式实时性更好,逻辑可扩展性也好,如在FPGA/CPLD中使用CPU核,则有着更明显的应用优势[2]。 本设计使用Altera的cycleII芯片,开发过程中采用Altera公司的集成工具QuartusII实现设计。基本 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 是这样的:首先根据设计任务要求进行方案的设计,包括引脚确定、时序关系、功能框图与模块划分、数据处理流程与方法等;然后依据模块设计进行模块HDL代码的输入与功能仿真,功能仿真采用HDL仿真工具Modelsim6.1f;完成功能仿真后,在QuartusII平台下进行电路的约束与综合;综合结果无误后进行布局与布线,生成配置文件;在下载前进行时序分析;最后下载、测试,从而完成设计。本设计主要完成前端功能设计部分,即方案设计、代码输入、功能仿真。 由于条件所限无法在现场进行接入网络验证,本设计采用开发板上现有资源进行:开发板上具有MII接口的物理层芯片与RJ45接口,我们将其通过直连线插入电脑网卡,在电脑上用ping命令发送数据,设计电路将其捕捉之后会随着拨挡开关逐一显示在LED上。 1 《可编程逻辑器件原理及应用》课程设计报告 1 总体电路结构设计 1.1 电路功能与性能 以太网帧头检测电路功能主要集中在四方面。一是在输入的顺序的、无数据结构的、4比特的数据码流中捕捉帧头数据,依据IEEE802.3标准应该是0xaaab;二是以帧头数据作为标准初始相位,从目的MAC地址数据开始将数据恢复为16比特数据;三是例化一片内双口同步SRAM,利用线路时钟将恢复的数据写入,利用本地同步时钟将其读出,完成时钟域的切换;四是驱动LED逐一显示SRAM中的数据。电路的具体功能细节罗列如下: 1) MII接口输入数据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) 完成一次接收后,为避免SRAM中的数据被下一帧覆盖,将接收使能信号的拨 挡开关关闭。 9) 读取SRAM信息时,地址由外部控制:可以同步复位、可以增量加一、可以减 一、可以通过拨挡开关设定10位任意值;并且SRAM读取地址通过7段数码管显示。 2 《可编程逻辑器件原理及应用》课程设计报告 因为该设计仅完成接口电路的功能,每次从SRAM中读取数据时采用手工的方式来进行,数据的吞吐量很小,每次使能操作只进行一个MAC帧的处理。当正常使用时,同步侧的时钟为20M,处理能力为16bit * 20M = 320 Mbps,足以满足需要。 1.2 关键功能电路设计 本电路设计的主要难点在于帧头捕捉与数据恢复。经过功能分析,决定采用移位寄存器的方式进行帧头捕捉,利用数据选择器将移位寄存器中的结构化数据提取出来。根据MII接口可知,为了捕捉16比特帧头数据0xaaab,必须设置5级移位寄存器,每级移位寄存器由4个触发器构成。输入移位寄存器的数据可能具有下面形式中的任何一个,其中x值为不确定,可能为1,也可能为0;红色的0/1序列为需要检测的比特图样0xaaab;蓝色的MAC字样位MAC帧数据。 从 图 中 可 见 , 待 检 测比特图样与MAC数据的起始位可能位于4比特的任意位置,但整个16比特图样一定在5级移位寄存器的20比特当中,且顺序排列。因此,当帧头数据到来之时,只要从这20比特中顺序选四组16比特序列,一定有一组是定位数据。例如上图a中, 0-15位的16比特是定位数据;b中1-16 位的16比特是定位数据;c中2-17位的16比特是定位数据;d中3-18位的16比特是定位数据。当4-19位的16比特是定位数据时,移位寄存器前一个周期就是a中所示的数据内容,应该 3 《可编程逻辑器件原理及应用》课程设计报告 在上一时钟周期捕捉到。 完成帧头捕捉之后,在20比特中提取定位信息的位置,每隔4个时钟周期就可以提取一次MAC数据,完成数据的变换。 1.3 电路接口 整个设计接口可以分为5部分,分别是线路输入数据和时钟、接收使能与接收完成指示信号、本地同步时钟与系统复位、数据显示接口、地址控制与显示接口。 需要注意的是,这里的大部分输入信号都来自拨挡开关或者按键,与相应的时钟是异步信号,使用之前需要对其进行同步化处理。注意拨挡开关设定读取SRAM的地址时,完成拨挡开关设定后,由一个控制信号addr_swc控制完成设定值的输入,该信号由按键完成。具体接口如下表1.1所示。 1.4 电路功能框图 依照功能,将电路分为6个功能模块:输入同步模块data_sync,用于恢复帧定位和MAC数据;MAC帧长度域捕捉模块length_cap,用于捕捉MAC帧长度 4 《可编程逻辑器件原理及应用》课程设计报告 域;计数器模块cnt1024,用于对输入数据进行计数,并根据帧长捕捉模块length_cap得到的MAC帧长域判断当前帧保存操作结束;1k字节同步双口SRAM模块,用于保存接收的数据;读地址控制与显示模块addr,根据地址的产生规则产生地址并显示于数码管;最后是异步信号处理模块sig_sync,用于处理异步单比特输入信号。电路的功能框图如下图1.2所示。 在图1.2中,模块data_sync只接收一帧数据,接收的机制是这样的:当电路收到启动命令(rxstart)之后开始接收数据,完成当前帧接收之后cnt1536模块会给出接收完成信号rx_ok,在data_sync模块中用该信号上升沿相位关闭接收模块,等待下一次接收启动命令,如此循环。帧头定位如1.2节所示,利用移位寄存器的机制进行帧头锁定和16比特数据的恢复。该模块给出16比特MAC数据、帧定位信息、有效数据指示信号等。 模块length_cap主要完成输入MAC帧中的帧长度域数据的锁存,根据IEEE802.3标准中的帧结构,帧长度域位于第12个字节,16比特计数器应计到5 就可以锁存该域数据,并送到模块cnt1024中用于产生rxok信号。 模块cnt1536是计数器(实际MAC帧长小于1536,这里只锁存ping命令产生的ICMP包),该计数器由帧头信号frm作为初始化信号;由有效数据指示信号rxdf作为计数对象;当计数值为6时(对应MAC帧中的长度域L/T)输出1比特高电平脉冲用于长度域捕捉;当计数值到达长度域数值后,计数停止,给出接收完成指示信号rxok;计数值作为写入数据的地址输出 模块dpsram是双口同步SRAM,用于数据存储、时钟阈之间的变换。如图1.2,dpsram左侧为线路时钟域;右侧为系统时钟域。模块add_gen用于产生读取 5 《可编程逻辑器件原理及应用》课程设计报告 存储SRAM的地址。地址产生有4钟机制:复位时为0;从任意值开始加1递增,直至0x3ff;从任意值逐一递减,直至0;或者设定为0-0x3ff之间的任意值。最后需要将当前的地址译码驱动7段数码管显示。 1.5 验证方案 设计的验证主要有两方面的内容:一是代码输入过程中的仿真验证;二是在硬件电路板上的验证。仿真的验证比较简单,一方面构造MII接口的数据流,需要注意的是构造不同前导码相位的输入码流;另一方面模拟读取地址产生的各种信号,在这些输入的基础上查看sram的内容、输出信号的波形等。 板级验证需要连接电脑网卡,用ping命令发送数据包,利用各种地址产生的方式读取存在电路中的数据,在LED上即可看到各字段的信息以及相对应的位置地址,对照标准,即可得知接收的数据是否正确。 2 模块设计 由图1.2可见,设计共有5个功能模块,分别是数据同步与恢复模块data_sync、计数模块cnt1536、长度域锁存模块length_cap、双端口SRAM模块dpsram、地址产生模块addr_gen。这里对模块的详细功能和时序关系进行细致说明。 2.1 数据同步与恢复模块data_sync设计 输入数据同步与恢复电路模块data_sync主要完成帧头提取、数据结构恢复、数据变换的功能,具体如下。 1) 当接收使能脉冲rxstart有效时启动数据接收,接收完成信号rxok有效后关闭接 收功能,等待下一次接收使能脉冲rxstart的到来。 2) 检测到帧头之后给出1比特指示信号,最少先于MAC数据一个时钟周期。 3) 恢复数据16比特,持续4个时钟周期;目的MAC地址(mac数据)作 6 《可编程逻辑器件原理及应用》课程设计报告 为第一 个有效数据传送。 4) 恢复的并行数据伴有1比特指示信号,指示信号位于4个时钟周期并行数据的 第一个周期。 5) 输入数据可为2.5M,也可为25M,线路时钟与之同步。 本模块的接口信号如下表2.1所示。 数据同步与恢复电路模块data_sync的RTL级电路如下图2.1所示。图中首先处理接收使能信号,当使能信号有效时才进行数据处理。使能信号的产生机制是这样的:设计为了便于验证,每次接收只保存一个数据包,因此接收之前都要手动启动一次,接收使能信号有效时间就是人工手动启动接收到当前帧接收完成,等待下一次接收启动信号后再产生有效信号。 MII接口输入数据送入5级移位寄存器,保存的数据如图1.1所示。每次移位操作之后都要在锁存的20比特中搜寻16比特帧头图样,分别为sr[15:0],sr[18:3],sr[19:4]应该在sr[15:0]时捕获,如下图所示,产生信号frma,frmd。 当frma,frmd中有一个信号有效,表明该信号对应的相位是后续数据的相位,据此即可以恢复正确数据。比如数据sr[15:0]中检测到帧头数据,则信号frmd会有脉冲出现,据此生成数据选择信号sel=2’b00,从锁存数据中选择sr[19:4](sr[15:0]下一个时钟周期的数据);若数据sr[18:3]中检测到帧头数 7 《可编程逻辑器件原理及应用》课程设计报告 据,则信号frma会有脉冲出现,据此生成数据选择信号sel=2’b11,从锁存数据中选择sr[22:7](sr[18:3]下一个时钟周期的数据);其余数据也如此恢复。数据的指示信号直接根据帧头信号将时钟4分频即可。 2.2 计数模块cnt1536设计 该模块用于产生输入MAC帧的数据定位信息以及输入数据向双口SRAM写入时的地址。主要的功能如下: 1) 计数器由clr信号同步清零,该信号来自帧头指示信号。 2) 每一次计数使能信号到来,计数器加一计数,使之和输入数据顺序相对应;使 能信号来自四个时钟来一次的数据指示信号。 3) 计数值为6时,输出1bit高脉冲,用于锁存MAC中长度/类型域; 4) 当计数值等于从长度域中得到的长度值时,计数器停止,并给出接收完成信号 rxok。 该模块的功能比较简单,需要注意的是当初始化之后,输入的长度数据值为零,数据需要计到6才会将该数值取到,这期间要保证计数器正常工作;另外,电路工作的过程当中,有可能发生使能信号不足6个,这时也应保证电路下一次数据到来之时正常工作。cnt1536模块的接口信号如下表2.2所示。 8 《可编程逻辑器件原理及应用》课程设计报告 9 《可编程逻辑器件原理及应用》课程设计报告 2.3 地址产生模块add_gen设计 地址产生模块add_gen主要用来产生对双口同步SRAM的读操作信号和相应的地址数据,并将当前的读操作地址显示在7段数码管中。需要注意的是很多信号来自按钮或者拨挡开关,与接收时钟异步。具体如下。 1) 当异步信号add_rst到来之后,检测上升沿并用之同步清零地址。 2) 当异步信号add_swc到来之后,检测上升沿并用之同步锁存add_sw[15:0]的数据 到输出地址addr,并产生1bit高脉冲信号作为读信号rd,注意与地址addr相位同步。 3) 当异步信号add_inc到来之后,检测上升沿并用之对计数器进行累加操作,输出 地址addr,并产生1bit高脉冲信号作为读信号rd,与地址addr相位同步。 4) 当异步信号add_dec到来之后,检测上升沿并用之对计数器进行递减操作,输 出地址addr,并产生1bit高脉冲信号作为读信号rd,与地址addr相位同步。 5) 7段数码管的显示机制是这样的:共有8个7段数码管由3bit选择信号进行扫 描选择,显示的时候,不进行bcd码变换,每个数码管完成4bit数据的 10 《可编程逻辑器件原理及应用》课程设计报告 显示:1010,1111可分别由A/B/C/D表示,其中B与数码8显示相同,可用附加P段(小数点)以示区别;D与数码0显示相同,同样附加P段。 本模块的接口信号如下表2.3所示。 地址产生模块add_gen主要处理3方面的内容:将输入的异步信号同步化并产生有效的操作信号;根据控制信号对地址进行累加、递减、复位、载入等操作并相应产生操作信号;对地址数据进行变换使之能够在7段数码管上显示。电路图如下所示。 在上图中,首先对输入的异步信号进行同步化处理,然后利用其上升沿产生1bit的控制信号。注意的是拨挡开关产生的地址不用同步化,在实际操作中应该 11 《可编程逻辑器件原理及应用》课程设计报告 首先将拨挡开关的位置确定好,然后按下载入按钮add_swc,因此只需同步载入控制信号即可。地址操作功能如下流程图所示。 地址数据产生之后进行数码管显示:利用扫描的方式进行数码管选择并将各数据位不经BCD变换的显示出来。 2.4 长度锁存模块length_cap设计 长度锁存模块length_cap只完成MAC帧中长度/类型域的锁定数据保存。该模块需要和帧信息计数定位模块协调相位。当MAC帧中L/T域到来时,依据信号cnt6指示的相位将数据保存下来。本模块的接口信号如下表2.4所示 12 《可编程逻辑器件原理及应用》课程设计报告 该模块的数据与信号的相位关系如下图所示。 3 代码输入与仿真 3.1 HDL代码输入 电路设计完成后,就要进入EDA设计流程,首先进行电路设计HDL输入。设计共有五个子模块和一个顶层模块,另外还有测试代码。电路HDL代码输入仅是对前述电路设计的描述,相对较简单:根据1.3节的电路接口和1.4节的电路功能框图进行顶层代码的输入;根据第2章模块设计的内容及其中的RTL电路图进行模块代码的输入;其中双口同步SRAM采用FPGA的分布SRAM块,在HDL描述时只采用cycleII器件的功能和时序模型。测试代码本章会详细介绍。所有代码清 单见附录。 13 《可编程逻辑器件原理及应用》课程设计报告 3.2仿真与测试的功能列表 功能验证分为两部分,一部分是电路功能与时序的软件仿真,采用Moldsim完成,这是本章主要内容;另一部分是将配置文件下载后在开发板上对设计进行测试,通过开关、按键、LED、数码管以及示波器、逻辑分析仪等方式进行。 功能仿真主要的工作就是模拟外部输入的信号,根据电路需要完成的功能来构造输入激励。设计中需要检查的功能如下,在仿真中需要加载相应的激励来验证设计是否符合要求。 1) 全局异步复位功能——当复位信号低有效时,电路应处于复位状态:任何输入 没有响应、任何触发器的输出均为初始态,SRAM的输出为不定态;当复位信号变为高电平时,电路正常工作。 2) 时钟信号——电路具有两个工作时钟,MII接口信号的处理与向双口同步SRAM 写入采用的是线路时钟clkl;读取SRAM数据的相关电路采用的时钟为系统时钟clks。当该时钟无效时,与之相关的电路处于静止状态,输出不发生变化;时钟有效后相应的电路才会正常工作。 3) 接收MII数据功能——MII数据流中MAC数据起始比特可能位于4比特任何一 位,因此要构造至少4帧输入数据,覆盖MAC数据不相同的起始位。 4) 接收启动功能——每次接收一帧MAC数据之前都要启动接收功能,接收完成之 后电路会等待启动信号到来之后才会进行下一帧的接收;该信号由按钮给出,因此相对于时钟相位是任意的。 5) MAC帧L/T(长度/类型)域锁定功能——电路具有从输入数据中捕捉提取L/T 域的功能,该域的信息体现在同步SRAM存储的数据深度与输入数据中长度域数值一致;因此激励应尽可能多覆盖不同的长度域。 6) 错误帧的摒弃功能——当接收功能启动后,如果数据的长度域与真实的输入数 据长度不一致,或者捕捉到一个错误的帧头,当前帧会丢弃掉,直到接收到下一个有效的正确数据包。 14 《可编程逻辑器件原理及应用》课程设计报告 7) 读取同步SRAM数据的地址同步复位——每一次输入复位信号后,地址都应该 被复位;该信号应该是脉冲有效(上升沿)。 8) 读取同步SRAM数据的地址手工设定——设定固定地址add_sw之后,地址 数据就应该被读取出来。 载 入控制信号add_swc有效,该设定地址的 9) 读取同步SRAM数据的地址递增控制——从任何地址开始,都可控制地址逐一 递增,至0x3ff之后会回到0;每递增一次,相应地址的数据就应该被读取出来。 读取同步SRAM数据的地址递减控制——从任何地址开始,都可控制地址10) 逐一 递减,至0后后会回到0x3ff;每递减操作一次,相应地址的数据就应该被读取出来。 11) 输入与保存数据的LED显示功能——每读一次特定地址的数据,LED应该显示 相应的数据,数据比特为1时灯被点亮;读取的地址与输入数据的顺序上一致的,因此从激励中可知该数据是否正确接收或者保存。 12) 读地址的7段数码管显示功能——每对地址进行一次操作(复位/递增/递减/载 入),该地址应在7段数码管显示;显示时并不进行BCD码的变换,000,1001正常显示,1010,1111采用字母A/B/C/D/E/F的方式显示,其中B/D(1011/1101)与8/0(1000/0000)显示是相同的,为了区别,显示B/D时将P段(小数点)点亮;16位地址分为4个数码管显示,每个数码管表达4比特数值(000,1111),采用扫描的方式进行显示。 3.3 仿真平台构建 仿真激励的构造只要针对需要验证的功能即可。这里构造一个测试平台,相应文件为frm_align_tb.v,其中将位于文件frm_align_stim.v中的激励信号引入,加载到例化的功能模块中;由于时间限制,这里采用查看波形的方式确认输出。 这里激励主要有以下的内容构成:一是MII输入数据,其中包括不同起始位的帧、不同L/T域的帧、会引起误定位的帧等。二是两个时钟信号、一个异步复位信号。三是接收控制信号,尽可能覆盖不同的输入相位(因为是仿真,无法 15 《可编程逻辑器件原理及应用》课程设计报告 做到与时钟冲突)。四是各种读取地址的产生,包括同步复位、递增控制、递减控制、固定地址载入。 需要查看波形的功能有以下内容:一是异步复位与时钟功能,当没有输入时钟时所有电路处于静止状态;无论是否有时钟,异步复位都会有效。二是接收数据的恢复,正常输出应该有正确的帧定位信号、16比特结构化数据、并行数据的指示信号、接收完成信号,以及各信号的相位关系。三是接收数据的保存,主要是SRAM的写有效信号、地址信号、数据信号,及其相位关系。四是读SRAM的地 地址/度信号/控制信号的数据及其关系。五是址与读信号的产生,主要查看数据/ 数码管对地址的显示。 3.4 电路功能仿真结果 首先仿真最重要的功能数据恢复,输入激励为不同起始bit位的码流,其中L/T域数值也不同。这里每次接收都将接收启动信号有效。 图3.1a 起始位为第1位数据恢复仿真 图3.1b 起始位为第2位数据恢复仿真 16 《可编程逻辑器件原理及应用》课程设计报告 3.1c 起始位为第3位数据恢复仿真 图3.1d 起始位为第4位数据恢复仿真 由图中的移位寄存器内容可见,4个输入数据包起始位从0到3,检测到的帧头信号分别为frm0/frm1/frm2/frm3,恢复的数据为16比特。 其次仿真数据的存储,地址信号、数据信号、控制位的数据应该和MII的数据顺序一致。 至此,电路的功能仿真已经完成,由上述结果可以看出,设计的功能、信号相位、状态切换均达到设计要求。注意的是异步信号在仿真时无法构造与时钟冲突的时序(建立时间或者是保持时间不足,那样会导致仿真器将未知信号值向下游传递),只能构造不同相位的模拟。 因为仿真时可以捕捉到设计的所有内部信号,严格追踪每一个信号的输入输出,因此结合电路理论上完全可以保证设计的正确性。但是一方面较难真正构造覆盖所有情况的激励,另一方面在测试考虑的时候难免会有遗漏,因此还要借助硬件的板级验证来最终确认设计的正确性。 17 《可编程逻辑器件原理及应用》课程设计报告 3.5 电路后仿真结果 电路的后仿真是要在布线完成之后,生成电路网表的仿真模型和标准延时文件,再在仿真器中进行仿真的方法,主要为了查看时序是否满足要求。这部分工作只简单进行了一下:将功能仿真的激励施加到网表中,加载延时文件,得到的 结果同上面的功能仿真是一样的。而且设计过程中又进行了静态时序分析. 结论 本次设计经过仿真与板级的验证,可以正常工作,达到了设计的任务书要求。但是由于设计内容较为简单,实用性稍差,无法实现真正的数据接收。因此如果有机会应该将其扩展,采用SoPC的模式,将该接口模块做成一个IP,挂接到CPU上,利用软件解析收到的数据包,并应用来网络协议进行解析和处理,实现真正的通信,这样才完美。我希望毕业设计时能将这部分工作完成。 这次EDA课程设计历时十天,学到很多很多的东西。同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,都会很高兴。在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误。排除困难后,程序编译就通过了。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示,后来,经过屡次的调试之后,才发现在写代码之前对信号的相位考虑不足。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 18 《可编程逻辑器件原理及应用》课程设计报告 总的来说,这次设计还是比较成功的,在设计中遇到了很多问题,最后在张 老师的辛勤指导下,终于迎刃而解,有点小小的成就感,终于觉得平时所学的知 识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而 且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有 了更多的信心。最后,对给过我帮助的马老师和所有同学再次表示忠心的感谢~ 参考文献 [1] G. David Ripley.DVI-A Digital Multimedia Technology. [2] Micheal.D.Ciletti,Advanced Digital with the Verilog HDL [M]. [3] Micheal Keating,Pierre Bricaud.Reuse Methodology for system on a chip [4] 杜慧敏 基于Verilog的FPGA设计基础 西安电子科技大学出版社, [5] 求是科技 FPGA数字电子系统设计与开发实例导航 人民邮电出版社 [6] 夏宇闻 Verilog数字系统设计教程 北京航空航天大学出版社 [7] 高福祥 接口技术 东北大学出版社, [8] 邹其洪 EDA技术实验教程 中国电力出版社, [9] 李国丽 诸位用 何剑春 EDA与数字系统设计 机械工业出版社, 19 《可编程逻辑器件原理及应用》课程设计报告 附录A 设计源代码 顶层代码 timescale 1ns/1ns module frm_align (din, rxstart, rxok, clkl, clks, rstn, dout, add_rst, add_inc, add_dec, add_sw, add_swc, add_seg7 ); input [ 3:0] din ; output rxok; input rxstart ,clkl, clks, rstn, add_rst, add_inc, add_dec, add_swc; output[15:0] dout; input [ 9:0] add_sw output[10:0] add_seg7; wire [ 3:0] din ; wire rxstart ,clkl, clks, rstn, add_rst, add_inc, add_dec, add_swc; wire[15:0] dout; wire[ 9:0] add_sw wire[10:0] add_seg7; // wire[15:0] rxd ; wire rxdf,frm; // data_sync data_sync ( .din ( din ), // I [3:0] .rxstart ( rxstart ), // I .rxok ( rxok ), // I .clk ( clkl ), // I .rstn ( rstn ), // I .doud ( rxd ), // O [15:0] .douf ( rxdf ), .frm ( frm ) ); wire[15:0] lngth ,wadd; wire cnt6; cnt1536 cnt1536 ( .cnten ( rxdf ), // I .clr ( frm ), // I .lngth ( lngth ), // I [15:0] .cnt6 ( cnt6 ), // O .clk ( clkl ), // I .rstn ( rstn ), // I .wadd ( wadd ), // O [15:0] .rxok ( rxok ) ); // O length_cap length_cap ( 20 《可编程逻辑器件原理及应用》课程设计报告 .din ( rxd ), // I [15:0] .cnt6 ( cnt6 ), // I .clk ( clkl ), // I .rstn ( rstn ), // I .lngth ( lngth ) ); // O [15:0] // wire[15:0] doua ; wire oeb; wire[ 9:0] addb ; dpsram dpsram ( .dina ( rxd ), // I [15:0] .doua ( doua ), // O [15:0] .adda ( wadd[9:0] ), // I [9:0] .wra ( rxdf ), // I .oea ( 1'b0 ), // I .clka ( clkl ), // I .dinb ( 16'h0 ), // I [15:0] .doub ( dout ), // O [15:0] .addb ( addb ), // I [9:0] .wrb ( 1'b0 ), // I .oeb ( oeb ), // I .clkb ( clks ) ); // I // add_gen add_gen ( .add_sw ( add_sw ), // I [9:0] .add_swc ( add_swc ), // I .add_inc ( add_inc ), // I .add_dec ( add_dec ), // I .add_rst ( add_rst ), // I .add_seg7 ( add_seg7 ), // O [10:0] .addr ( addb ), // O [9:0] .rd ( oeb ), // O .clk ( clks ), // I .rstn ( rstn ) ); // I 21 《可编程逻辑器件原理及应用》课程设计报告 // Endmodule 数据同步代码 module data_sync (din, clk, rxstart, rxok, rstn, doud, douf, frm); input [ 3:0] din; input rxstart,rxok, clk, rstn; output[15:0] doud; output douf;,frm; wire [ 3:0] din; wire rxstart,rxok, clk, rstn,frm; reg [15:0] doud; douf; // reg reg rxstart1,rxstart2,rxstart3,rxstarts; always@(posedge clk or negedge rstn) if (!rstn) begin rxstart1 <= 0 rxstart2 <= 0 rxstart3 <= 0 rxstarts <= 0 end else begin rxstart1 <= rxstart rxstart2 <= rxstart1 rxstart3 <= rxstart2 rxstarts <= ~rxstart3 & rxstart2 end // reg rxok1,rxoks; always@(posedge clk or negedge rstn) if (!rstn) beginrxok1 <= 0 rxoks <= 0 end else begin rxok1 <= rxok rxoks <= ~rxok1 & rxok end // reg rxen; always@(posedge clk or negedge rstn) if (!rstn) rxen <= 0; else if (rxstarts) rxen <= 1'b1 ; else if (rxoks) rxen <= 1'b0 // reg[23:0] sr; always@(posedge clk or negedge rstn) if (!rstn) sr <= 0 else sr <= {sr[19:0],din}; // wire frm0,frm1,frm2,frm3; assign frm0 = (sr[15:0]==16'haaab); assign frm1 = (sr[16:1]==16'haaab); assign frm2 = (sr[17:2]==16'haaab); 22 《可编程逻辑器件原理及应用》课程设计报告 assign frm3 = (sr[18:3]==16'haaab); assign frm = frm0 | frm1 | frm2 | frm3 // #100 add_dec = 0 end // initial begin add_swc = 0 add_sw = 1023; #174100 add_swc = 0 add_sw = 0; #200 add_swc = 1 ; #200 add_swc = 0 ; add_sw = 518; #200 add_swc = 1 ; #200 add_swc = 0 ; add_sw = 517; #200 add_swc = 1 ; #200 add_swc = 0 ;a dd_sw = 220; #200 add_swc = 1 ; #200 add_swc = 0 ; add_sw = 356; #200 add_swc = 1 ; #200 add_swc = 0 ; add_sw = 179; #200 add_swc = 1 ; #200 add_swc = 0 ; add_sw = 83; #200 add_swc = 1 #200 add_swc = 0 add_sw = 427; #200 add_swc = 1 ; #200 add_swc = 0 ; add_sw = 518; #200 add_swc = 1 ; #200 add_swc = 0 ; 23 《可编程逻辑器件原理及应用》课程设计报告 #214000 add_sw = 772; #200 add_swc = 1 #200 add_swc = 0 end // initial begin rxstart = 0 #35 rxstart = 1 #60 rxstart = 0 #86000 rxstart = 1 #60 rxstart = 0 #90000 rxstart = 1 #120 rxstart = 0 #87000 rxstart = 1 #240 rxstart = 0 end // initial begin din = 0 #60 din = 4'h5; #120 din = 4'h6; #40 din = 4'ha #40 din = 4'ha #40 din = 4'ha #40 din = 4'hb #40 din = 4'h5 #40 din = 4'h5 #40 din = 4'h5 #40 din = 4'h5 #40 din = 4'h7 #40 din = 4'he #40 din = 4'hc #40 din = 4'h5 #40 din = 4'h1 #40 din = 4'he #40 din = 4'hc #40 din = 4'h5 24 《可编程逻辑器件原理及应用》课程设计报告 #40 din = 4'h1 #40 din = 4'he #40 din = 4'hc #40 din = 4'h5 #40 din = 4'h0 #40 din = 4'hf #40 din = 4'hc #40 din = 4'h7 #40 din = 4'h8 #40 din = 4'hf #40 din = 4'hc #40 din = 4'h7 #40 din = 4'h8 #40 din = 4'hf #40 din = 4'hc #40 din = 4'h7 #40 din = 4'h8 #40 din = 4'h0 #40 din = 4'h4 #40 din = 4'h0 #40 din = 4'h0 #40 din = 4'h0 #40 din = 4'h8 #40 din = 4'h2 #40 din = 4'h9 #40 din = 4'h5 #87000 din = 4'h5 #1000 din = 4'h0 #40 din = 4'h5 #40 din = 4'h5 #40 din = 4'h5 #40 din = 4'h5 25 《可编程逻辑器件原理及应用》课程设计报告 #40 din = 4'hf #40 din = 4'hb #40 din = 4'h1 #40 din = 4'h4 #40 din = 4'h7 #40 din = 4'hb #40 din = 4'h1 #40 din = 4'h4 #40 din = 4'h7 #40 din = 4'hb #40 din = 4'h1 #40 din = 4'h4 #40 din = 4'h3 #40 din = 4'hf #40 din = 4'h1 #40 din = 4'he #40 din = 4'h3 #40 din = 4'hf #40 din = 4'h1 #40 din = 4'he #40 din = 4'h6 #40 din = 4'h2 #40 din = 4'h8 // #40 din = 4'h7 #40 din = 4'he #40 din = 4'h3 #40 din = 4'hc #40 din = 4'h7 #40 din = 4'he #40 din = 4'h3 #40 din = 4'hc #40 din = 4'h7 26 《可编程逻辑器件原理及应用》课程设计报告 #40 din = 4'he #40 din = 4'h3 #40 din = 4'hc // #40 din = 4'h0 #40 din = 4'h2 #40 din = 4'h0 #40 din = 4'h2 #40 din = 4'h5 end // initial begin clkl = 0 clks = 0 rstn = 0 #30 rstn = 1 ; end // always #20 clkl = ~clkl; always #25 clks = ~clks; // initial #549000 $stop; 27
本文档为【以太网帧头检测电路设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_721103
暂无简介~
格式:doc
大小:297KB
软件:Word
页数:30
分类:生活休闲
上传时间:2017-11-12
浏览量:11