(模式识别与智能系统专业论文)基于fpga的ieee1394物理层模块设计与实现.pdf_第1页
(模式识别与智能系统专业论文)基于fpga的ieee1394物理层模块设计与实现.pdf_第2页
(模式识别与智能系统专业论文)基于fpga的ieee1394物理层模块设计与实现.pdf_第3页
(模式识别与智能系统专业论文)基于fpga的ieee1394物理层模块设计与实现.pdf_第4页
(模式识别与智能系统专业论文)基于fpga的ieee1394物理层模块设计与实现.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(模式识别与智能系统专业论文)基于fpga的ieee1394物理层模块设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

i 摘 要 本项目来源于西安微电子研究所项目“ls- 1394 控制器设计” ,研究目标是研制 出具有我国自主知识产权的线缆方式下的 ieee1394 标准接口芯片。它包括物理层模 块设计和链路层模块设计两个部分,两个模块在同一个芯片中实现,其中物理层模块 由我来设计,链路层模块由马荣毅同学设计。而本文主要阐述了基于 fpga 的三端口 100m bps 的 ieee1394 物理层模块的设计。 论文首先阐述了 ieee1394 的物理层规范,通过对规范的描述,逐步分析了 ieee1394 总线物理层的设计需求。从设计需求出发,提出整体的设计框架,包括方 案设计、器件的选型、芯片接口规划、物理层于链路层的内部接口规划。 随后论文对物理层模块设计进行了详细介绍,把物理层模块设计展开,将其细分 为线缆接口、数据收发、链路层接口三个子模块。首先,通过对线缆接口模块的主状 态机设计的分解,阐述了物理层根据接口信号变化实现总线配置、总线仲裁及数据传 输的控制过程;然后对数据收发子模块设计详细分析,说明了物理层实现数据的接收 同步、数据发送与转发、以及 nrz 编码的方法;最后深入介绍链路层接口子模块的 设计,分析接收数据的上传、链路层请求处理、链路层数据发送、自标识包产生方法 等功能,说明物理层与链路层的数据交换方式。 论文最后阐述了基于 isa卡的 ls- 1394 芯片的验证系统的构建过程和验证方法, 并通过与标准 ti 公司 tsb41ab23 的 pci- 1394 卡进行 1394 总线基本传送、 大量数据 通讯、以及互联试验,检验设计的兼容性。详细分析了设计的调试过程和设计方案整 体性能,进而提出难点与问题的解决办法。 试验结果表明,根据上面的方案设计的 1394 物理层模块,通过系统验证,完全符 合 ieee13941995 标准规范,结合 ieee1394 链路层模块一起使用就可以构成一个 完整的 ieee1394 节点控制器。 关键字:1394 总线;物理层模块;fpga ii abstract this project comes from project “ design of ls- 1394 controller” supported by xi an micro- electronic institution, aiming to design the 1394 asic worked in the cable mode with our own national intellectual properties. the 1394 asic has two modules that integrated in one chip, one is llc module designed by ma rongyi and the other is tri- interface phy module which proposed in this article . the article first analyses the 1394 phy layer protocol and describes the requirement of the phy layers in details. after that, this article analyses the requirement of the controller, and makes a plan of main structure: including circuit diagram, choice of the fpga and module of the controller. then, the article expands phy layer design, analyses the design of phy layer sub- modules thoroughly and divides it into three sub- modules, which are cable interface, data transceiver and llc interface. first, the article describes the process of how to implement the bus configuration, bus arbitration and data transceiver from the interface signal changes, by decomposing the main machine state in cable interface .and then it analyses the data transceiver sub- module in detail. the data transceiver sub- module processes received data synchronization, data transmitting or re- transmitting, and data encoding. at last, llc interface sub- module explains the data exchange mode of phy layer and llc layer by solving the problem of how to upload the received data, process the request of the llc interface, send the data of llc layer and create the self_id packet etc. at last, the article describes the design of the testing process and the whole performance of the project by connecting with the pci1394 card which based on the tsb41ab23 of ti. in order to make the design compatible to the protocol, we test the basic transmitting, communication of mega data and the connection experiment between iii them. after introducing the construction of the verification system and the verification method, the article suggests the best way to resolve the questions such as how to design the function module and how to find the best fpga. the system test result indicates that the controller design proposed above is completely compatible to the ieee13941995 standard, and can form an integrated ieee1394 node controller by combining with the ieee1394 llc module. key words:ieee1394; phy module; fpga 独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或集体 已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中以 明确方式标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权 保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。 本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检 索,可以采用影印、缩印或扫描复制保存手段和汇编本学位论文。 保密,在 年解密后适用本授权书。 本论文属于 不保密。 (请在以上方框内打“” ) 学位论文作者签名: 指导教师签名: 日期: 年 月 日 日期: 年 月 日 1 1 绪 论 1.1 课题背景、现状及研究意义 apple 公司最初提出 ieee1394 总线协议时,为其取名“firewire” ,中文翻译为 “火线” ,而事实上, sony 和 texas instruments也同时在研究这个总线标准,不过名 称不同,sony 称之为 i.link 总线,而 ti 称之为 lynx 总线。ieee 在 1995 年正式 认可“firewire” ,制定了 ieee1394- 1995 规范,后来推出了 ieee1394a 和 ieee1394b 两个改进型版本,速度由原来定义的最高 400m bps 提高到了 3.2g bps。也就是在 ieee13941995 这个规范出台后,各电子厂家开始大力推广 1394 的应用,尤其是在 数码相机和数码摄像机领域,基本上都是采用此总线技术。 ieee1394 标准参照了 osi(open systems interconnection)体系结构,规定了一 个多层协议的模型,主要分为三层: 物理层: 为串行总线提供了实际的接口和物理介质, 实现了数据位的接收与发送、 总线仲裁、提供电气与机械接口三个功能。 事务层(读、写、锁定) 链路层 时钟控制 包发送 包接收 物理层 仲裁 同步 编码/解码 物理接口 总线初始化 信号 异步数据传输与控制 等 时 数 据传输 数据传输与控制 总线申请 图 1.1 ieee1394 协议层结构 2 链路层:提供了一种半双工的异步数据包和等时数据包两类子事务,实现了对等 时与异步数据包得寻址、数据校验、分析等功能,还提供了等时传输服务。 事务层:只支持异步传输,由“请求、指示、响应、确认”四个服务,实现了写 入、读出和锁定三个基本传输动作。同时,它也通过操作等时控制寄存器,为等时数 据提供了一条等时传输的通路,但不直接提供等时传输服务。 一般物理层和链路层由硬件实现,而事务层可以由硬件实现也可以由软件实现。 1.2 课题研究任务和主要研究内容 本课题的主要研究任务是在一颗 cyclone fpga 上设计和实现 ieee- 1394 物理层 与链路层,并配合外围电路研制一块基于 isa总线的 1394 卡。用这块 1394 卡和市面 上标准的 ti 1394pci卡互连,再配合上层软件,在不同的 pc 之间传送图像,从而验 证 fpga 上设计的 ieee- 1394 控制器的正确性和兼容性。 以 cyclone fpga 为核心器件的 isa- 1394 卡的主要技术指标: 1) 符合 ieee std 1394- 1995 协议规范; 2) llc(link layer contoller)提供 32bit 的本地总线接口; 3) phy(physcial layer contoller)提供三个 100mbps 的 1394 端口; 4) 1394 端口模拟电路部分符合 ieee std 1394- 1995 协议规范,可与市面上的 ti 1394pci卡兼容; 5) isa- 1394 卡可实现中断访问,配合上层软件,实现接收图像的显示。 基于 isa 总线的 1394 卡和上层驱动软件,是测试芯片功能与性能设计的一个手 段,选用 isa总线作为和 pc 的接口,主要原因是 isa卡的开发最简单,不需要复杂 的驱动程序开发,硬件上也容易实现,isa总线有 16 bit/8 bit 两种,这里我们使用的 是 8 bit 的 isa总线,而 llc 的数据界面是 32 bit 的,所以 isa主卡的主要任务是数 据的拼接,以及控制信号的转化,int(中断信号)的管理。 测试软件以 windriver 作为开发平台, 在 windriver提供了最基本的 isa总线访问 的基础上,实现 1394 软件协议和传送图像数据的显示。它包含两个线程。一个线程 用中断方式和 isa卡通讯,另外一个线程负责对传送数据的管理和图像的显示。 为了调试的方便,设计时把 isa总线接口单独做成一块接口板(称之为 isa板) , 3 而 1394 芯片设计部分与 1394 接口电路部分是另一块板(称之为 fpga 背板) ,这样 fpga 背板总体看上去就是一个 1394 线缆与 32bit 本地总线的交换模块。 1.3 本文内容介绍 本文内容可以分为以下几个部分: 1) 绪论课题研究内容概述 图 1.2 based- isa 1394 卡硬件结构 主 机 isa 板 cpld(epm7256aetc144) isa 总 线接口 中断请求 fpga(ep1c12q240c8) llc 模块 phy 模块 信号转换电路 差分接 收电路 差分发 送电路 状态判 别电路 32bit 本地 总线接口 数字信号 1394 线缆 端口 1 1394 线缆 端口 2 1394 线缆 端口 3 fpga 背板 4 2) ieee 1394 物理层模块的需求说明,包括:1394 物理层的功能描述、接口定 义。 3) ieee 1394 物理层模块的详细设计,介绍整个设计流程,详述每个子模块的内 部结构与逻辑实现方法。 4) ieee 1394 物理层模块的调试, 涉及到一些工具软件的使用技巧、 代码优化等。 5 2 ieee1394 物理层模块的需求说明 ieee1394 物理层模块的需求说明介绍了 1394 物理层的功能特点和相关接口定 义。1394 物理层模块电气上一方面把 1394 线缆的差分信号转换为数字信号,另一方 面也把待发送的数字信号转换为模拟差分信号发送出去。其功能上则要求实现 1394 节点 top 结构配置和数据收发以及总线仲裁,并响应来自 1394 线缆的请求和来自链 路层的请求。 2.1 ieee1394 物理层接口定义 2.1.1 1394 线缆端口的信号 本设计是一个 3 端口的 1394 芯片, 对于 1394 的每个线缆端口, 都包含有 6 条线, 即 2 条电源线和 2 对差分信号线,见下表: 表 2.1 1394 线缆端口信号描述 线序号 信号名称 描述 1 vp 线缆电源(840vdc) ,根据需求选择,也可不用 2 vg 线缆地,1394 网络上各节点是必需共地的 3 tpb+ 4 tpb- 差分线对 tpb,接收时为 strb 信号 5 tpa+ 6 tpa- 差分线对 tpa,接收时为 data 信号 每对差分信号线上在不同时刻,传送 3 种不同的信息“0” 、 “1” 、 “z” ,其中 “z”态为线上发送端口没有驱动输出,相当于信号线断开情况。在实际的电路中, 因各种因素影响,差分信号线间,即使发送端口没有驱动它,也存在一定电压差,因 此,要判别“z” 态,需使用窗口比较器。 差分信号对 tpa 和 tpb 在两个相连的 1394 端口之间是交叉的,也就是线缆一 端的 tpa(tpb)信号是和线缆另一端的 tpb(tpa)相连的, ,但其极性没有改变,tpa+ 对应 tpb+,tpa- 对应 tpb- 。 6 2.1.2 物理层与链路层的接口 在本设计中物理层和链路层是在同一个 fpga 中实现的,除共用的时钟信号 sclk 外,由物理层发往链路层的信号有:控制信号 phyllcctrl1.0,数据信号 phyllcdata1.0;而由链路层发往物理层的信号有:控制信号 llcphyctrl1.0,数据 信号 llcphydata1.0,总线申请 lreq 信号。 模块的外频为 24.576mhz,物理层的线缆收发速度是 98.304m,即外频的 4 倍, 而主时钟 sclk 使用的是 49.152m,为线缆收发速度的一半,与链路层接口用 2bit 宽的数据总线,正好满足两个频率的相互关系。 物理层发至链路层的数据,由 phyllcctrl1.0控制,链路层发往物理层的由 llcphyctrl 1.0控制。 当链路层要读写物理层寄存器或者需要申请 1394 总线权时,是通过 lreq 信号 来实现的,lreq 是一个以“1”为起始位, “0”为停止位的 bit 流。 2.2 物理层线缆接口的相关服务 2.2.1 线缆的连接与拆除状态检测 每个 1394 端口在其 tpa 信号线上驱动一个共模参考电压,在接收端的 tpb 信 号上, 通过检测这个共模电压, 来判断是否有线缆连接, 从而判断线缆的插入与拔出, 当节点的任意一个端口发生线缆插入或拔出情况时,节点将放弃当前操作并复位 1394 总线,重构网络的 top 结构。 2.2.2 1394 总线的配置过程 1) 总线复位 1394 总线复位是其工作的开始,复位的种类有:上电复位、线缆插拔复位、状态 超时复位、软件命令复位、以及来自其它相连节点的复位请求。不论是什么原因引起 的复位,ieee1394 协议都要求进入复位状态的节点向各端口发送总线复位信号,并 保持足够长的时间(167us) ,使总线上的所有节点,都能进入复位状态。总线复位过 程实际包括两步: “复位开始”和“复位等待” 。 2) 树标识 树标识是在总线复位后,标识根节点和所有相连节点的拓扑结构的过程,它把一 7 个 1394 网络建立成一个树的模型,整个网络中有一个唯一的根节点,其它节点均为 分支节点和叶节点。 由树的模型可知,任何一个节点,都只有一个父端口,而且除根节点外,其它节 点都有唯一的一个父端口。因为叶子节点只有一个端口与网络相连,如果它不是根节 点,则这个唯一的端口就是父端口,而与其相连的分支节点对应端口就是子端口。因 此,树标识的过程是从叶子节点开始的,这样逐层标识每个节点的子端口与父端口。 树标识的过程中,对于根节点的标识,有几种情况出现,一是由居于正中间节点 作为根节点;二是由上层软件设置的强制根节点;三是两个相同情况的节点竞争根节 点; 树标识的过程包括“树标识开始” 、 “子握手” 、 “父握手” 、 “根竞争”几个状态, 对应于不同的状态处理,发送的信号包括“空闲” 、 “父通知” 、 “子通知” 。对于强制 根节点,是通过在“树标识开始”这个状态停留比其它节点长来实现的。 物理层在初始化与数据传输中的不同状态下,允许的停留时间是有相应要求的, 通过判断这些间隙情况,可以判断网络故障、其它节点的线缆插入与拔出、仲裁总线 请求等。 3) 自标识 树标识后,网络的树结构建立起来了,但是,每个节点只了解自己的父亲与儿 子,而不清楚与其它非直系亲属之间的关系,自标识的过程,就是为每个节点设置一 个唯一的物理标识,向网络上的其它节点表明身份。 自标识过程是一个递归搜索过程,从最低端口的子树开始,到最高端口的子树 结束,逐层递归,直到叶子节点。实际的处理过程是由根节点发起授权信息,逐层向 下传递授权,只到最低未标识的节点。得到授权的节点发送一个自标识包,传递自己 的身份,而还未标识身份的节点,则会主动对自标识包计数,等轮到该节点的时候, 其计数值就是该节点的节点号。从自标识过程可以看出,根节点是最后的一个自标识 节点,它拥有最大的节点号。 自标识过程包括“自标识开始” 、 “自标识授权” 、 “自标识传输” 、 “自标识接收” 、 “发送速度能力信号”等状态,对于本项目的 100m bps 节点芯片, “发送速度能力信 号”这个状态是不需要的。对应的自标识过程,各节点端口会发送“空闲 idle” 、 “数 8 据前缀 data_prefix” 、 “授权 grant” 、 “数据结束 data_end” 、 “自标识完成 ident_done”等状态信号。另外,非得到授权的节点要发送自标识数据包,而非 授权节点则要接收自标识包。自标识包的收发,和正常的数据收发是一样的,但自标 识包和普通数据包的校验方式是不一样的。 2.2.3 正常数据收发处理过程 1) 仲裁总线 自标识完成后,1394 网络进入正常的数据通讯状态,这时需要进行数据传输的 节点就可以申请总线,物理层收到链路层的总线申请后,在网络空闲时,进行总线仲 裁,与其他节点竞争总线权。 链路层的总线请求包括 immreq、prireq、fairreq、isoreq 四种类型,每种请求 的应用场合和处理方式是不同的, 如 immreq 是不进行延时判别的, 而是总线一空闲, 就立即控制总线,一般在只在异步通讯应答时使用。 2) 数据接收与发送 在节点获得总线权后,该节点成为发送节点,此时它将向所有已连接端口发送 数据,与此同时,未获得总线权的节点则接收和转发数据。因此对于分支节点来说, 如果它不是总线权获得者,它在接收的同时,也承担着数据分发的作用。 3) 信号编码与解码 1394 线缆端口由 tpa、tpb 两对双绞线组成,分别传送 strb 和 data 信号,数 据的传送是由 strb 和 data 信号采用不归零编码(nrz)方式来处理的,当要传送的数 据位发生变化时, strb 信号保持不变, 而当要传送的数据位不变时, 则改变 strb 信号。 因此, 在接收端可以由strb 与data信号进行逻辑异或来再生接收时钟。 采用这种nrz 编码方式传输数据,因为在任何时候都不会出现 strb 和 data 同时发生改变的情况, 在用电路进行逻辑处理时能减少竞争冒险的存在,可大大提高传输性能。 4) 根节点的作用 在自标识完成后,总线进入空闲状态,如果没有节点要求数据传输,那么将发 生超时复位。实际上,正常情况下这是不会发生的,ieee1394 协议要求根节点能实 现“循环控制器”的功能,循环控制器每隔 125us 向总线发送一个循环包,来同步各 节点的仲裁时序。循环包的发送也是通过总线请求来实现的,不过它享有比较高的仲 9 裁优先级。 循环控制器的功能实际是由链路层实现的,但其与物理层的关联性比较强。循环 包中包含有时间信息,以同步各节点时钟。另外,等时传输是紧接着循环包开始的。 根节点是可以在传输过程通过发送物理层配置包来变更的, 因为根节点享有更高 的优先权,需要等时传输的节点,通过改变自己为根节点,能提高仲裁效率。 2.3 物理层线与链路层接口的相关服务 2.3.1 链路层读写物理层寄存器及总线请求 链路层是通过 lreq 信号线对物理层发送请求的,它有 3 种类型的操作 “总 线申请、读寄存器请求、写寄存器请求” 。总线申请具体包含了 4 种类别“立即 请求 immreq、等时请求 isoreq、公平请求 fairreq、优先级请求 prireq(也称循环 控制器请求) ” 。lreq 是一个单线操作的 bit 流,根据不同的操作申请,bit 流的数据 长度不相同,请求内容数据见表 2.2: 表 2.2 链路层请求操作信号定义 总线请求 bit 0 bit 13 bit 46 bit 7 起始位(恒为 1) 000 immreq 001 isoreq 010 prireq 011 fairreq 速度(本设计仅支 持 100 mbps) 停止位(恒为 0) 读寄存器请求 bit 0 bit 13 bit 47 bit 8 起始位(恒为 1) 100 读请求 寄存器地址 停止位(恒为 0) 写寄存器请求 bit 0 bit 13 bit 47 bit 815 bit 16 起始位(恒为 1) 101 写请求 寄存器地址 数据 停止位(恒为 0) 2.3.2 链路层与物理层数据交互 物理层与链路层数据交互除了正常的通讯数据包收发处理外, 还有物理层的状态 传输, 物理层的任何状态变化及由于链路层的读寄存器申请都会引起物理层向链路层 10 传送状态数据。不同的是,一般的状态传输不包含寄存器值,而读寄存器操作将在传 送状态的同时传送链路层所读寄存器值。 物理层发至链路层的数据,由 phyllcctrl1.0控制,链路层发往物理层的由 llcphyctrl 1.0控制。这两组控制信号的定义见表 2.3: 表 2.3 物理层与链路层之间的控制信号定义 物理层发至链路层的控制信号 phyllcctrl1.0 名称 意义 00 空闲 无数据和状态交换 01 接收 正向链路层发送接收到的数据包 10 状态 正向链路层发送状态信息 11 授权 授权链路层发送数据到物理层 链路层发往物理层的控制信号 llcphyctrl1.0 名称 意义 00 空闲 无数据和状态交换 01 发送 正向物理层发送数据包 10 保持 保持总线控制权,等待数据发送 11 保留 没有使用 11 3 ieee1394 物理层模块的详细设计 本节从电路设计开始,详细介绍整个 ieee1394 物理层模块的功能与内部子模块 间的相互关系,介绍内部模块间的信号定义与功能实现方法。 3.1 线缆端口部分电路设计 3.1.1 线缆端口电路结构 在第二章已经提到 1394 线缆是由 6 条线组成的(见表 2.1) ,那么1394 的信号是 怎么工作的呢?图 3.1 是一个简化后仅包含适用于 100m bps 1394 线缆端口的单端口 电路机构图。 3.1.2 线缆端口信号产生规则说明 由图 3.1 可以看出,在差分信号线 tpa 上发送的是 strb 信号,接收的是 data 信 号,而在差分信号线 tpb上发送的是 data 信号,接收的是 strb 信号。另外,发送端 图 3.1 100m bps 的 1394 线缆端口电路结构 12 tpa 上的 1.86v偏置电压,在另一端 tpb上通过与 0.8v的电压进行比较,用来判断 线缆是否插上的状态。 对于有效的数据信号, 在差分线上的电平变化是很明显的, 用一个普通比较器 (图 3.1 的接收器)就可实现,但对于状态信号,则出现的情况要复杂一些,因为双方有 可能一方驱动信号一方不驱动,也可能都驱动了信号线,也可能都没有驱动信号线。 用一个比较器是判断不出来这些信号的,图 3.1 中采用两个窗口比较器来做仲裁比较 器,两个比较器的输入信号刚好相反,这样如果双方都不驱动信号,那么信号线对上 的电压差保持在一个较小的范围内,窗口比较器的输出都为“1” ,而在其它状态下, 则两个窗口比较出来的结果是不相同, 因此, 仲裁比较器出来的信号有三种组合 “10、 01、11” ,而“00”是不会出现的。这里要说明一下,在 1394 协议中允许两端有同时 驱动总线的时刻存在,但对于同一对线缆上的信号,不会出现刚好相反的信号为双方 驱动的现象存在。 3.2 关键元器件的选择 3.2.1 线缆端口收发芯片 sn65lvds3487 是 ti 公司的一款具有 4 组差分信号输出的驱动芯片,其中每两 组共用一个使能端。这样一个芯片刚好可以满足一个端口的两对差分信号驱动。 ti 公司的 sn65lvds3486b则是具有 4 组输入的差分接收器,其特点是在输入 信号电压差 vid- 32mv 时,输出逻辑“1” ,在 vid- 100mv 时,输出逻辑“0” ,这 样对于线缆未连接或双方都未驱动的情况,vid 在 0v 附近的很小范围,其输出都为 “1” ,符合仲裁判别要求,每个端口要 7 个比较器,用两片 sn65lvds3486b就能满 足要求。 3.2.2 fpga 的选择 fpga 的选择,主要考虑逻辑单元数量、i/o 数量、最大速度、传输延时等几个 方面。 1)i/o 口需求 1394 芯片链路层与上层的并行总线接口包括 32 条数据线(data31.0)、8 条地址 线(addr7.0)、6 条控制线(reset,int,wr,cs,ack,bclk),共需 46 个 i/o 口线。 13 物理层每个线缆端口的信号线包括 4 条仲裁输入(arb_a1.0,arb_b1.0) 、2 条数据输入(strb_rx,data_rx) 、2 条数据输出(strb_tx,data_tx) 、2 条数据输出使能 (strb_en,data_en) 、1 条状态检测(port_status)、1 条指示灯输出(led),每个端口需要 12 个 i/o 口线,3 个端口共需 36 个 i/o 口线。 因此,i/o 口线至少需要 82 条。 2)逻辑单元需求 在设计前,是比较难确定逻辑单元的,逻辑单元的使用是和代码的优劣相关的, 只能根据经验估算,初步估算需要 6000 个以上的逻辑单元。另外,芯片中要对接收 的数据包进行存贮及解码,也要对来自上层的数据包进行编码。为了适应时序要求, 还必须提供大量的 fifo 空间,100m bps 速度时,每个数据包最大可达 512 字节,按 同时保存 10 个以上的数据包考虑,至少要 5k 字节以上的 ram 容量。 3)速度与传输延时 本设计的 1394 接口为 100m bps,因此 fpga 的速度至少要超过 100mhz,按一 般的设计情况,稍复杂的电路设计的实际速度只能达到最大速度的 1/41/3 左右,不 过在此设计中,100m 部分仅仅是接口部分,在其它部分都是以 2bit 为单位处理的, 主频只有 50m,这样应该选择一个能达到 200mhz 以上速度的 fpga 芯片。传输延 时对电路的设计影响很大,不过大部分的 fpga 都有多种传输延时的芯片可供选择, 如果达不到要求,可以选择延时更短的。 4)fpga 型号确定 ep1c12q240c8 是 altera 公司的一款 cyclone 系列芯片,它有 169 i/o 口, 12060 个逻辑单元,239616 位静态 ram 空间,最高速度可达到 275mhz,最大传输延时为 8ns,因此,完全满足本设计的需求。 3.3 物理层模块规划 物理层模块的芯片代码设计要实现总线的配置、总线仲裁,数据的接收与发送、 与链路层的数据交互等,因此,根据这几个功能需求,把整个物理层模块又划分为 3 个比较大的子模块,另外,针对从端口接收的数据与内部时钟不同步问题,增加了一 个异步 fifo 来处理。 图 3.2 是物理层设计模块划分的说明,上面介绍了各子模块的功能、输入信号来 源、输出信号的走向、以及各子模块之间的交互信息。 14 3.3.1 仲裁信号接口及主状态机子模块(子模块一) 1) 子模块一各端口输入的状态信号 表 3.1 子模块一的各端口输入的状态信号 信号名 说明 a_rx01.0 端口 0 从 tpa 上收到的仲裁信息 b_rx01.0 端口 0 从 tpb上收到的仲裁信息 a_rx11.0 端口 1 从 tpa 上收到的仲裁信息 b_rx1 1.0 端口 1 从 tpb上收到的仲裁信息 a_rx2 1.0 端口 2 从 tpa 上收到的仲裁信息 b_rx21.0 端口 2 从 tpb上收到的仲裁信息 portstatus0 端口 0 的线缆状态信息 portstatus1 端口 1 的线缆状态信息 portstatus2 端口 2 的线缆状态信息 端口的线缆状态信息为“1”时表示该端口与其它节点的端口连接上,为“0”时 表示是未连接闲置端口。 接收到的仲裁信号则反映了自己发送的仲裁信息与对方发送的仲裁信息的综合 结果。 2) 子模块一与其它子模块交互的中间信息 仲裁信号接口及主 状态机(子模块一) 状态信号输出、数据接 收与发送(子模块二) 链路层接口(子模块三) 总线请求 仲裁结果 发送数据 接收 数据 状态输出信号 收发状态 各端口状 态信号 各端口数 据输入 各端口数据 输出控制 数据 总线 控制 总线 总线 请求 异步 fifo 图 3.2 物理层设计模块划分 15 表 3.2 子模块一与其它子模块交互的信号 信号名 说明 roothold 来自子模块三的强制根节点信息(in) initbusrst 来自子模块三的软件复位信息(in) gapcnt5.0 来自子模块三的仲裁间隙时间值(in) immreq 来自子模块三的链路层立即请求(in) isoreq 来自子模块三的链路层等时请求(in) prireq 来自子模块三的链路层优先级(循环包)请求(in) fairreq 来自子模块三的链路层公平请求(in) transfinished 来自子模块二的数据包传输完成信息(in) rootflag 根节点标志输出(out) nodenotify11.0 要传送的仲裁信号(out) portusestatus5.0 各端口使用状态(out) busevent3.0 总线事件信息(out) recvport1.0 正在接收的端口号(out) selfidreceiveingflag 正在接收自标识包标志(out) selfidtransmitingflag 正在发送自标识包标志(out) receiveingflag 正在接收数据包标志(out) transmitingflag 正在发送数据包标志(out) nodenotify11.0是节点要传输的仲裁信号,它是 3 个端口的待传送仲裁信号的 组合,仲裁信号的输出和正常的数据信号输出是同一个通道,因此它被传递到子模块 二进行处理。 3.3.2 状态信号输出、数据接收与发送(子模块二) 1) 子模块二中各端口输入输出 表 3.3 子模块二中各端口输入输出 信号名 说明 datarx0 端口 0 收到的数据信息 strbrx0 端口 0 收到的 strb 信息 datarx1 端口 1 收到的数据信息 strbrx1 端口 1 收到的 strb 信息 datarx2 端口 2 收到的数据信息 strbrx2 端口 2 收到的 strb 信息 strbdata01.0 端口 0 的 strb 和 data 输出信号 strbdata11.0 端口 1 的 strb 和 data 输出信号 strbdata21.0 端口 2 的 strb 和 data 输出信号 portenable01.0 端口 0 的 strb 和 data 输出使能信号 portenable11.0 端口 1 的 strb 和 data 输出使能信号 portenable21.0 端口 2 的 strb 和 data 输出使能信号 16 2) 子模块二与其它子模块交互的中间信息 表 3.4 子模块二与其它子模块交互的信号 信号名 说明 nodenotify11.0 来自子模块一的待传送的仲裁信号(in) recvport1.0 来自子模块一的正在接收的端口号(in) transdata1.0 来自子模块三的待发送的数据(in) selfidreceiveingflag 来自子模块一的正在接收自标识包标志(in) selfidtransmitingflag 来自子模块一的正在发送自标识包标志(in) receiveingflag 来自子模块一的正在接收数据包标志(in) transmitingflag 来自子模块一的正在发送数据包标志(in) transdatavalid 来自子模块三的发送数据使能标志(in) transfinished 数据包发送完成标志(out) recvlastbit 发送的数据包的最后 1bit(out) datarx1.0 接收到的数据信息(out) recvclk 给接收 fifo 的数据写入时钟(out) recvfifowrreq 接收 fifo 写请求(out) recvclk 是由接收端口的 datarx 和 strbrx 异或产生的。 3.3.3 链路层接口(子模块三) 1) 子模块三中与链路层接口的信号 表 3.5 子模块三中与链路层接口的信号 信号名 说明 lreq 来自链路层的请求信号(in) llcphyctrl1.0 链路层数据传送的控制信号(in) llcphydata1.0 链路层传送的数据(in) phyllcctrl1.0 物理层数据传送的控制信号(out) phyllcdata1.0 物理层传送的数据(out) 2) 子模块三与其它子模块交互的中间信息 17 表 3.6 子模块三与其它子模块交互的中间信息 信号名 说明 rootflag 来自子模块一的根节点标志信息(in) portusestatus5.0 来自子模块一的端口使用状态信息(in) busevent3.0 来自子模块一的总线事件信息(in) recvport1.0 来自子模块一的正在接收的端口号(in) recvfifoq1.0 接收 fifo 的数据输出(in) recvfifoempty 接收 fifo 空标志(in) selfidreceiveingflag 来自子模块一的正在接收自标识包标志(in) selfidtransmitingflag 来自子模块一的正在发送自标识包标志(in) receiveingflag 来自子模块一的正在接收数据包标志(in) transmitingflag 来自子模块一的正在发送数据包标志(in) recvlastbit 来自子模块二的接收到的数据包最后 1bit(in) recvfifoclr 接收 fifo 清除信号(out) gapcnt5.0 仲裁间隙时间值(out) initbusrst 软件复位信息(out) roothold 强制根节点信息(out) immreq 链路层立即请求(out) isoreq 链路层等时请求(out) prireq 链路层优先级(循环包)请求(out) fairreq 链路层公平请求(out) recvfifordreq 读接收 fifo 请求(out) transdata1.0 待传送的数据(out) transdatavalid 传送数据使能(out) 3.3.4 接收 fifo 接收 fifo 采用的是异步 fifo,其读时钟采用系统的主时钟 sclk,而写时钟则 是由接收端口的 strbrx 和 datarx 异或产生的 recvclk 信号。 3.4 仲裁信号接口及主状态机子模块设计 3.4.1 ieee1394 仲裁信号说明 表 3.7 介绍了在传输期间,发送端发出的仲裁信号种类和对应在不同接收端输出 的仲裁信号下,实际所接收到的仲裁信息。在上表中没有列出的信号组合还有很多, 但都是在 1394 协议中不允许出现的非正常信号组合。 18 表 3.7 仲裁信号输出与接收判别 发送方的仲裁线状态 tpa 输出 tpb输出 仲裁信号名称 仲裁信号解释 z z tx_idle 空闲 z 0 tx_request tx_grant 请求总线 总线授权 0 z tx_parent_notify 发送父通知 z 1 1 z tx_child_notify tx_ident_done 发送子通知 发送自标识结束 0 0 0 1 tx_data_prefix 数据包发送开始(前缀) 1 0 tx_data_end 数据包发送完成(后缀) 1 1 tx_bus_reset 发送总线复位通知 接收方的仲裁线状态 发送方输出 接收方输出 仲裁信号名称 仲裁信号解释 tx_idle tx_idle rx_idle 总线空闲 tx_request tx_idle rx_request 收到总线请求 tx_grant tx_idle rx_self_id_grant 收到自标识授权 tx_parent_notify tx_idle rx_parent_notify 收到父通知 tx_child_notify tx_parent_notify rx_parent_handshake 收到父握手 tx_idle tx_child_notify rx_child_handshake 收到子握手 tx_parent_notify tx_parent_notify rx_root_contention 收到根竞争 tx_data_prefix tx_idle rx_data_prefix 数据包发送开始(前缀) tx_data_end tx_idle rx_data_end 数据包发送完成(后缀) tx_ident_done tx_idle rx_ident_done 收到自标识完成 tx_grant tx_request rx_grant 收到总线授权 tx_bus_reset rx_bus_reset 收到总线复位请求 在处理仲裁信号时,rx_data_prefix、rx_data_end、rx_bus_reset 三个信号比 较特殊。它们在数据传输过程中始终存在。它们在作为仲裁信号和数据信号中的差别 就是在作为仲裁信号时其保持时间比较长,而在数据传输期间,这几个信号是不可以 连续保持两个传输时钟周期以上的。因此,可以利用 rx_data_prefix和 rx_data_end 信号的保持时间来判断一个数据包的传输是否结束。 rx_bus_reset 是总线复位信号,协议上讲任何时候收到这个信号都应该启动总 线复位,并向其它端口转发复位信号,实际上不能这样处理,因为在数据传送期间,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论