以下是小编整理的基于ARM的IEEE802.11bMAC层协议IP核设计,本文共13篇,欢迎阅读分享,希望对大家有帮助。

篇1:基于ARM的IEEE802.11bMAC层协议IP核设计
基于ARM的IEEE802.11bMAC层协议IP核设计
摘要:介绍了IEEE 802.11b MAC层协议IP核设计,提出了基于32位微处理器ARM7DMI的系统设计方案,阐述了系统硬件平台的设计、结构及主要模块单元的功能;给出了利用形式描述语言SDL进行MAC层协议设计开发的完整设计流程;阐述了软件的层次结构,并针对设计中遇到的代码生成器的选择、设计优化、与实时操作系统(RTOS)的集成和环境函数编写等问题进行了深入讨论。关键词:ARM 802.11, IP
目前各种协议的设计实现,大多数是基于微处理器、微控制器或DSP的嵌入式系统。ARM是ARM公司推出的高性能32位RISC微处理器,具有业界领先的体系结构,被广泛6应用于各种系统设计中。基于ARM的开发通常使用C、C++或汇编语言。笔者采用了更高级的形式语言SCL,大大缩短了协议的开发周期并提高了设计的可移植性。无线局域网是目前通信领域的一个研究热点,无线局域网的协议是非常典型的协议。本文将详细讨论使用SDL进行无线局域网802.11b MAC层协议的设计以及基于微处理器ARM7TDMI的系统实现方案。其设计方法具有普遍意义。
1 系统硬件平台设计及功能描述
整个系统硬件平台的设计主要分MAC层和物理层两部分。硬件平台的结构框图如图1所示。其中MAC层部分主要围绕32位微处理器ARM7TDMI和AMBA总线设计,其主要的单元模块和功能如下:
・PCMCIA接口,此接口为硬件平台和主机的通信接口。其设计遵循PC Card标准(版本5)。
・WEP算法加解密模块,此模块用硬件实现IEEE 802.11b MAC层协议定义的有线网等效加/解密算法。
・物理层数据接口,此接口用于完成物理层与MAC的数据交互操作,内部设计有发关和接收FIFO,用来完成数据的接收发送缓存。
・物理层控制接口,此接口用于完成MAC层对物理层的控制功能。例如无数据收发时,可以通过此接口控制物理层部分转入节能状态。
・存储器管理模块,此模块用于实现对系统所有存储器(如FLASH、ROM、RAM)的管理,处理器通过此模块对存储器进行访问。
・中断控制逻辑,此模块用于对系统中各模块产生的中断信号进行控制和管理。
・微处理器单元ARM7TDMI,用于完成与主机的通信,负责整个系统的控制和管理。
图1 硬件平台结构框图
物理层部分的设计主要分为四个单元:
・基带处理单元,主要用于完成基带信号的处理操作,如Rake接收、均衡、数/模、模/数转换等。
・中频处理单元,主要用于完成信号的调制解调处理。
・混频处理单元,主要用于完成射频中频的变频处理。
・射频处理单元,主要完成射频信号的功率放大功能。
MAC层的主要模块单元(外部存储器单元除外)用Verilog硬件描述语言设计并用Xilinx的FPGA Vertex II xc2v3000编程实现。物理层部分则主要用Intersil公司的PRISM芯片组及少量外围电路设计实现。
2 SDL及软件开发平台
SDL是一种层次化的描述语言,采用结构化和自顶向下的设计原则,把系统规范分为系统、块、子块、进程、服务和过程几个层次进行描述。系统、块和子块是静态描述,用于描述系统的结构;进程、服务和过程是动态描述,用于描述系统的行为。SDL的理论模型是通信扩展有限状态机,每个进程都是一个通信扩展有限状态机。
SDL与常用的高级语音有很好的接口,如可以从SDL描述的系统规范直接导出C、CHILL甚至VHDL语言,以嵌入式系统和软硬件混合系统实现;在进行规范定义时,SDL又允许嵌入高级语言,如C/C++语音、义等。因而可以在多个层次上对系统进行准确的规范和描述。因为SDL的上述特性,目前已被越来越多地用于协议软件的开发实现。
本文选用Telelogic公司的SDT4.3和ARM公司的`ADS1.2作为主要的软件开发工具。使用SDT进行协议软件的开发步骤如图2所示。
(本网网收集整理)
在系统行为定义阶段,要特别注意代码生成器对SDL设计的结束,例如对于C advanced生成器不支持信道子结构、信号细化等;对于C micro生成器不支持连续信号、服务、优先输入/输出等。在系统行为分析仿真调试阶
段,使用C basic/C advanced代码生成器产生系统代码,与SDT提供的仿真内核一起编译连接,得到系统行为的仿真醋,然后可以使用text、SDL、MSC等多种跟踪方式进行仿真调试。在系统行为验证时,使用相同的代码只不编译连接时加入SDT提供的验证内核,可得到系统行为的验证模型,可以使用自动状态空间遍历、覆盖率分析等方式进行系统行为的验证。仿真和验证都无环境函数,由仿真器和验证器充当系统的环境,产生和接收与系统交互的信号。在系统行为经仿真验证正确后,可以应用C advanced/C micro生成器产生面向应用的系统代码和环境函数。
应用SDT生成的代码经过适当修改和处理后可以输入ARM开发工具ADS,进行嵌入式系统的开发,其方法和设计流程详见后。
3 系统软件的设计和开发
系统的软件设计主要分为三部分:协议软件、驱动软件和接口软件。其中协议软件部分主要用于实现IEEE 802.11bMAC层协议定义的各种服务(如授权、关联等)和算法(如DCF、PCF、时钟同步算法等)。这一部分软件采用图2所示的设计流程,完全使用形式描述语言SDL进行设计实现,并使用SDT的代码生成器将SDL的系统描述换成面向应用的C/C++代码。驱动软件部分主要用于实现对硬件设备的驱动功能。如PCMCIA接口驱动,这一部分软件用C/C++语言进行设计实现。接口软件部分主要完成SDL转换出的系统代码与RTOS及硬件平台的接口功能。这一部分软件借用于代码生成器产生的环境函数,用C/C++语言设计实现。软件部分的层次结构如图3所示。
4 与ADS接口及软件后端开发
从SDL转化出C/C++代码后,可使用ARM的开发工具ADS进行后续的软件开发。其与SDT工具的接口及开发流程如图4所示。
由SDL描述转换出的C/C++代码,与环境函数、Runtime库以及C/C++库一起用ARM的编译器编译,产生面向ARM的可执行程序。其中,环境函数主要用描述系统运行的具体物理环境。由SDT工具根据用户所作的系统描述自动生成一个结构框架,然后用户根据的采用的具体硬件平台环境编辑这个文件,以描述真实的系统工作环境。Runtime库主要包含SDL预定义的数据类型、操作符的实现、调度函数、运行错误处理等信息。SDT工具提供简单的Runtime库。C advanced/C micro代码生成器都有各自对应的Runtime库。C/C++库是ADS本身携带的函数库,主要包含ISO标准定义的C/C++库函数。
在使用ARM编译器编译后,产生ARM的目标文件(.o文件)。如果还有用ARM汇编指令编写的汇编程序,可用汇编器(armasm)汇编,产生相应的目标文件。把所有的目标文件用链接器(armlink)链接,便可得到能在ARM7TDMI处理器上执行的映像文件(.aof文件)。这时可以用ADS提供的调试工具AXD进行程序的调试。
因为SDL的系统设计在高层进行了仿真和验证,所以调试的主要工作集中在驱动、中断和环境函数的调试上。对SDL系统的调度主要是通过仿真确定对系统性能影响严重的模块并对其进行优化以及系统在实时运行状态下能否满足设计要求。如果在调试中发现问题需要修改SDL的系统设计,可重新执行如图4所示的流程,直到满足设计要求。
5 问题及分析
(1)代码生成器的选择问题。SDT提供三种代码生成器,即C basic、C advanced和C micro。其中C basic是最简单的代码产生器,一般只用于在SDT开发环境中仿真系统的行为。C advanced和C Micro是面向应用的代码产生器,可以产生高效的代码。C advanced支持几乎所有的SDL概念,对SDL设计的约束较少。C micro可以产生性能更优越、占用存储空间更小的代码,代价是对SDL设计的约束较多,例如不支持使能条件、连续信号、过程的继承等。
(2)设计优化问题。在进行系统设计时,应注意的设计要点有:当输出信号时,应带上接收进程的PID,这样可以减少对信号进行路由的开销;信号应尽量少带占用大量存储空间的参数,因为在信号传递时同时复制信号的参数,占用大量存储空间的参数将占用过多存储空间并引起附加延时;两个状态之间的传输操作不宜过多,否则会带来较大延时(可以用实时仿真确定影响时延的关键路径并进行优化);如果系统中有比较复杂的模块,对时延又有严格要求,可以用C/C++或汇汇编单独编写,也可用硬件完成,如图1的WEP算法模块。
(3)与RTOS的集成问题。用户可以不使用RTOS,而使用SDT提供的缺省内核程序,也可以自己编写所需的调度算法、内存管理、中断处理等。SDT工具直接支持的RTOS有Solaris(Posix 4)、Win32、VxWorks和OSE delta。SDT提供三种与RTOS的集成方式,即松集成、线程集成和紧集成。松集成把整个系统映射为OS的一个任务,使用SDT提供的标准内核进行调度,每次进行一个完整的传输。因此松集成调度的最大延时是SDL设计中状态之间传输的最长时间。紧集成把每个进程映射为一个OS的任务,可以使用OS的调度算法,给不同的任务以不同的优先级执行,因而性能好于松集成。线程集成则是两者的折衷。
(4)环境函数的编写。环境函数主要是完成四个函数的编写。XInitEnv:主要用于完成系统的初始化操作。XInEnv():主
要用于接收来自硬件或RTOS的信号并转换成SDL系统所需要的信号。调度器每隔一段时间轮询一次xInEnv()函数,检查是否有信号输入。如果发现有信号输入则发送适当信号给SDL系统。XInEnv()函数中不能使用阻塞函数,如getchar等。阻塞函数会妨碍调度器处理SDL系统。XOutEnv():主要用于接收来自SDL系统的信号并转换成对RTOS的信号或对硬件的操作。当SDL系统有信号输出时,则调用xOutEnv()函数,根据用户编写的代码产生相应的物理信号或硬件操作。XCloseEnv():用来完成关闭环境的操作。
篇2:基于ARM的IEEE802.11bMAC层协议IP核设计
基于ARM的IEEE802.11bMAC层协议IP核设计
摘要:介绍了IEEE 802.11b MAC层协议IP核设计,提出了基于32位微处理器ARM7DMI的系统设计方案,阐述了系统硬件平台的设计、结构及主要模块单元的功能;给出了利用形式描述语言SDL进行MAC层协议设计开发的完整设计流程;阐述了软件的层次结构,并针对设计中遇到的代码生成器的选择、设计优化、与实时操作系统(RTOS)的集成和环境函数编写等问题进行了深入讨论。关键词:ARM 802.11, IP
目前各种协议的.设计实现,大多数是基于微处理器、微控制器或DSP的嵌入式系统。ARM是ARM公司推出的高性能32位RISC微处理器,具有业界领先的体系结构,被广泛6应用于各种系统设计中。基于ARM的开发通常使用C、C++或汇编语言。笔者采用了更高级的形式语言SCL,大大缩短了协议的开发周期并提高了设计的可移植性。无线局域网是目前通信领域的一个研究热点,无线局域网的协议是非常典型的协议。本文将详细讨论使用SDL进行无线局域网802.11b MAC层协议的设计以及基于微处理器ARM7TDMI的系统实现方案。其设计方法具有普遍意义。
1 系统硬件平台设计及功能描述
整个系统硬件平台的设计主要分MAC层和物理层两部分。硬件平台的结构框图如图1所示。其中MAC层部分主要围绕32位微处理器ARM7TDMI和AMBA总线设计,其主要的单元模块和功能如下:
・PCMCIA接口,此接口为硬件平台和主机的通信接口。其设计遵循PC Card标准(版本5)。
・WEP算法加解密模块,此模块用硬件实现IEEE 802.11b MAC层协议定义的有线网等效加/解密算法。
・物理层数据接口,此接口用于完成物理层与MAC的数据交互操作,内部设计有发关和接收FIFO,用来完成数据的接收发送缓存。
・物理层控制接口,此接口用于完成MAC层对物理层的控制功能。例如无数据收发时,可以通过此接口控制物理层部分转入节能状态。
・存储器管理模块,此模块用于实现对系统所有存储器(如FLASH、ROM、RAM)的管理,处理器通过此模块对存储器进行访问。
・中断控制逻辑,此模块用于对系统中各模块产生的中断信号进行控制和管理。
・微处理器单元ARM7TDMI,用于完成与主机的通信,负责整个系统的控制和管理。
图1 硬件平台结构框图
物理层部分的设计主要分为四个单元:
[1] [2] [3] [4]
篇3:基于ARM平台的MAC协议IP核设计
基于ARM平台的MAC协议IP核设计
摘要:在介绍IEEE802.11MAC协议结构的基础上,给出协议开放的方案和步骤,提出IEEE802.11MAC协议在32位ARM7TDMI微处理器S3C4510B上的一种移植方案,开发出了嵌入式IEEE802.11MAC协议的IP核。同时,围绕着IEEE802.11MAC协议的原理和移植过程中硬件相关部分,介绍ARM平台的结构、可用资源以及ARM的初始化过程等。关键词:IEEE802.11 MAC协议 ARM平台 无线局域网
引言
无线局域网被认为是下一代IT产业发展的是大推动之一,被IT业赋予了极大的希望。无线局域网802.11系列标准的MAC协议是一样的,只是在物理层上有差异,因此对802.11MAC协议的开发,不论是在802.11b流行的今天,还是802.11g可能会成为主流的将来,都是很有意义的。当然,ARM以其先进的体系结构已经成为嵌入式市场的RISC标准,因此基于ARM的IEEE802.11MAC协议的开发是很有现实意义的。
我们的开发流程如图1所示。
PC软件开发是指脱离硬件的嵌入式软件开发阶段。此阶段可以在各种IDE环境下进行开发,并进行软仿真来验证软件的逻辑正确性。然后将开发出来的PC软件结合硬件所需要的硬件相关代码向硬件平台进行移值调试。前两个阶段完成后就得到了开发的最终成品。
1 协议结构
IEEE802.11MAC协议的SDL描述可以分为以下几个功能模块,如图2所示。
*MAC数据服务模块:向LLC层提供MAC层的数据服务接口。(本网网收集整理)
*MPDU生成模块:将MSDU(MMPDU)生成MPDU,并对MPDU分段、加密以及进行排队管理。
*协议控制模块:完成DCF、PCF下的各种协议控制功能,包括RTS/CTS、ACK、ATIM、CF-ACK等,并根据信道状态请求退避,在传送数据挫败后控制重传等。该模块还负责对所有接收到的MAC帧进行分类,按不同的类型送到不同的模块进行处理。
*发送模块:将MAC帧以字节流的形式发送到物理层,完成实际的发送过程。这个模块中要完成对整个发送帧产生CRC校验,向发送的beacon帧中加入时戳用来进行时间同步。这个模块还负责处理底层获得的当前信道的状态,完成协议要求的随机退避功能。
*接收模块:对从物理层接收到的帧进行CRC校验。如果正确接收的话,则进行地址过滤,丢弃目的地址不是自己的帧。如果数据是经过分段的话,还有进行数据分段的重装,然后将接收帧送往协议控制模块进行分类处理。同时,这个模块还要提取接收帧中的信道保留信息,结合信道上有无载波的状况综合判断信道的状态,并把信道的状态送往发送模块来协调退避功能的完成。
*MAC管理实体模块:是管理核心,完成所有的管理功能,包括扫描、入网、认证、解认证、关联、解关联、重新关联、beacon帧的发送、站点状态管理等功能。
*MAC管理服务模块:提供MAC管理接口,包括MIB库的管理,对MIB库的访问,并将管理接口传来的管理服务请求送到MLME模块进行实际处理,将结果返回给管理接口。
2 协议实现
IEEE802.11MAC协议的SDL流程中各模块之间的交互是通过信号的方式来完成的,模块之间通过交互信息来协调工作,并且完成各种MAC帧的结构之间的传递。我们将信号定义为Signal(PID,SID,Param)参数PID用来标准信号的目的模块,SID用来标志信号在目的模块中由哪个函数来处理,参数Param是一个指向存储区的指针,存储区里存放的是信号所要传递的信息。为了能使整个协议在信号的驱动下运行,需要由一个功能实体来完成信号的处理过程。这里采用的是一个循环队列来存放产生的信号,由主循环程序来不断检测队列中的信号,根据信号的PID和SID调用相应模块里的信号处理函数进行处理。
协议中还涉及大量的比较判断和定时操作,当比较成立或定时到期后,进入相应的处理程序。其实,我们可以认为当比较成立或时间到期产生相应的信号,然后由信号处理机制来完成后续的工作。我们所要做的只是定义一个比较队列和一个定时队列,比较操作加到比较队列中,定时操作加到定时队列中,由主循环检测这两个队列。当某个比较判断成立时或某个定时期时从相应的队列中取出,然后再以信号方式加入到信号队列中去。因此我们将比较操作和定时操作分别定义为:
Compare(PID,SID,Param11,Param12,Param21,Param22,Param31,Param32);
Timer(PID,SID,Time);
PID、SID标志比较成立或定时到期时产生的信号,Paramil、Parami2(i=1,2
,3)为比较操作中需要进行比较的几对数据。Time为定时操作中设定的定时值。
上面介绍的机制建构了协议框架,然后在这个框架基础上按照SDL流程编写相应的信号处理函数就要吧实现整个协议。
前期协议开发了验证逻辑上的正确性。我们在Microsoft Visual C++环境下进行开发并进行了软仿真,结果表明所开发的设计在逻辑上是正确可行的。
3 协议向ARM平台的移植
我们所使用的ARM硬件平台ARM anywhere II采用的是三星公司的ARM芯片S3C4510B。S3C4510B是采用ARM7TDMI核的高性价比RISC微控制器,特别适用于网络应用系统。
我们开发了一个软件模块PHY来模拟物理层收敛过程子层(PLCP),对于物理介质依赖子层(PMD)我们没有实现。这并不影响MAC协议的开发。LLC层的数据通过PC串口发送到ARM平台来模拟,数据经过MAC处理后送到PLCP子层,然后由PLCP子层直接发送。数据发送通过ARM的'通用I/O来实现,发送速率由S3C4510B的定时器来控制。
在将802.11MAC协议向ARM平台的移植方案中,有一部分代码的执行是依赖于ARM平台的。这部分代码的移植工作需要特别注意,包括以下几个方面:
①定时器。协议中要求的随机退避过程需要底层周期性的送slot来进行,这个周期性 slot需要用定时器来实现。协议中的网络分析矢量NAV需要用定时器来实现,以判断NAV的状态。协议中定义的几种帧间隔IFS(SIFS、DIFS、PIFS、EIFS)也需要利用定时器来实现。
②外部中断。802.11MAC协议中一个重要部分就是载波监听。当信道状态变化时(由忙到闲,由闲到忙)都要给负责监听信道状态的模块一个指示(CCA),指示当前的信道状态。这个过程可以由S3C4510B ARM芯片的外部中断来很好地实现。由于S3C4510B ARM芯片可以对中断检测方式进行配置,可以将中断检测方式配置为上升沿和下降沿均触发中断,这些就能很好地模块协议的中物理载波监听(CS)。
③I/O。模拟PLCP子层的数据收发,一共用到8个I/O端口,一次发送8位。在发送数据时,还使用了一个I/O端口作为发送指示。这个I/O端口通过信道模拟器连接到其它节点的用来监听信道状态的外部中断引脚上。
④UART。我们用UART来实现PC和ARM的通信。一些管理命令,例如扫描、入网、认证、关联、解认证、解关联,节点的配置信息例如MAC地址等都可以从串口来发送给ARM。另外,所有发送的数据都会通过串口传送给ARM进行发送,所有接收到的数据将通过串口回传给PC。
⑤以太网控制器。以太网控制器在AP中是比较有用的。由于AP之间是通过有线的骨干网(backbone)来进行连接的,从而组成了分布式系统(DS),以太网控制器已经集成了IEEE802.11接口,就为实现这个有线的backbone提供了便利。
4 硬件仿真环境
图3中,IEEE802.11MAC协议和PLCP子层模拟模块都都在ARM平台上,串口通信程序运行在PC上。它和ARM的UART进行通信用于模拟LLC层数据服务和上层的管理服务,同时它还可以显示节点的运行状态和当前的网络状态。
下面介绍一下我们使用的简易信道模拟器的原理。信道模拟器对应每个节点(ARM平台)有一套接口,其中有8个I/O用于数据传输。由于无线信道是开放式的,一个节点发送时其它节点都能收到,因此在信道模拟器中每个节点的8个I/O是两两相通的,这样就能保证一个节点发送时其它节点都能收到。另外,由于要模拟信道上的载波监听过程,我们用到了ARM上的外部中断用做载波监听位(CS),然后用一个I/O发送指示(TR)。这样,信道模拟器上要维持任何一个节点的CS位,都与其它节点的TR有一定的逻辑关系,例如,当一个节点发送时,将其TR置为0(0表示信道变忙,ARM引脚初始电平为高电平1),则这个0应该立即能反映到其它节点的CS位上从而产生中断,其它节点都会知道信道变忙而开始从信道接收数据。同时,当节点发送完毕后将TR置为1,其它节点就会产生中断并且检测到CS位为1从而知道信道变闲,接收结束。
实际的信道模拟支持两个基本服务区(BSS)组成的分布式系统(DS),每个BBS内支持1个AP和2个普通节点。这内部的逻辑关系用可编程逻辑器件实现。
5 移植过程中的注意事项
PHY软件模块模拟PLCP子层,负责完成要求的载波监听和数据收发时的定时控制。这些功能都是采用中断方式实现的,因此要求代码执行速率要快。这里使用汇编语言开发来提供代码的执行效率。
为了获得较高的代码执行速率和快速的中断响应,要求所有协议代码和中断服务程序都在SDRAM中执行。这就涉及到在设计ARM的初始化代码时要正确配置相应的存储区控制寄存器,并且完成代码的搬移和地址的重映射。
图3
ARM的初始化代码包括:
*定义入口点(entry point)。
*定义异常向量表,用来处理各种CPU异常,其中包括中断。
*配置SDRAM和Flash的地址范围、时序等参数,以使这些存储器能正常工作。
*代码搬移。程序代码一般应从Flash调入SDRAM中运行,以提高系统的运行速度。同时,系统及用户堆栈、运行数据也都放在SDRAM中。
*对SDRAM进行地址重映射,从初始时地址空间的高端搬移到0x0开始的位置。
*初始化堆栈。
*初始化存储区。
*根据需要改变处理器工作模式。
*开中断。
*到C程序代码入口点开始执行。
另外,移植过程中还要考虑的一个问题是内存分配的问题。嵌入式系统中对内存的分配,一般来说要求快速可靠并且有效,实际上就是在采用静态分配内存还是动态分配存的问题。如果系统要求对实时性要求高并且不能容忍分配失败,这时就需要采用静态分配内存。采用静态分配一个不可避免的问题就是系统失去了灵活性,必须在设计阶段就预先估计所需要的内存并对其作出分配,并且要考虑到所有可能的情况。我们在移植过程中,考虑到实时生和可靠性是我们的主要目标,并且我们的ARM平台具有较大的存储区,因而采用了静态分配的方式。
结语
目前,嵌入式协议开发已经非常普通,本文只是根据作者的实际经验,介绍了嵌入式802.11MAC协议开发的基本过程。目前开发的协议已经在ARM平台上成功运行,并且性能良好。现在所使用的ARM平台是没有操作系统支持的,所移植的协议硬件依赖性太大,下一步我们将在有操作系统的ARM平台上进行协议移植,通过全长操作系统提供的API接口来提供协议的可移植性。另外,继续优化代码,提高代码效率,提高实时性与可靠性,以更适合于嵌入式应用环境也将是我们下一步的目标。
篇4:基于ARM平台的MAC协议IP核设计
基于ARM平台的MAC协议IP核设计
摘要:在介绍IEEE802.11MAC协议结构的基础上,给出协议开放的方案和步骤,提出IEEE802.11MAC协议在32位ARM7TDMI微处理器S3C4510B上的一种移植方案,开发出了嵌入式IEEE802.11MAC协议的IP核。同时,围绕着IEEE802.11MAC协议的原理和移植过程中硬件相关部分,介绍ARM平台的结构、可用资源以及ARM的初始化过程等。关键词:IEEE802.11 MAC协议 ARM平台 无线局域网
引言
无线局域网被认为是下一代IT产业发展的是大推动之一,被IT业赋予了极大的希望。无线局域网802.11系列标准的.MAC协议是一样的,只是在物理层上有差异,因此对802.11MAC协议的开发,不论是在802.11b流行的今天,还是802.11g可能会成为主流的将来,都是很有意义的。当然,ARM以其先进的体系结构已经成为嵌入式市场的RISC标准,因此基于ARM的IEEE802.11MAC协议的开发是很有现实意义的。
我们的开发流程如图1所示。
PC软件开发是指脱离硬件的嵌入式软件开发阶段。此阶段可以在各种IDE环境下进行开发,并进行软仿真来验证软件的逻辑正确性。然后将开发出来的PC软件结合硬件所需要的硬件相关代码向硬件平台进行移值调试。前两个阶段完成后就得到了开发的最终成品。
1 协议结构
IEEE802.11MAC协议的SDL描述可以分为以下几个功能模块,如图2所示。
*MAC数据服务模块:向LLC层提供MAC层的数据服务接口。
*MPDU生成模块:将MSDU(MMPDU)生成MPDU,并对MPDU分段、加密以及进行排队管理。
*协议控制模块:完成DCF、PCF下的各种协议控制功能,包括RTS/CTS、ACK、ATIM、CF-ACK等,并根据信道状态请求退避,在传送数据挫败后控制重传等。该模块还负责对所有接收到的MAC帧进行分类,按不同的类型送到不同的模块进行处理。
*发送模块:将MAC帧以字节流的形式发送到物理层,完成实际的发送过程。这个模块中要完成对整个发送帧产生CRC校验,向发送的beacon帧中加入时戳用来进行时间同步。这个模块还负责处理底层获得的当前信道的状态,完成协议要求的随机退避功能。
*接收模块:对从物理层接收到的帧进行CRC校验。如果正确接收的话,则进行地址过滤,丢弃目的地址不是自己的帧。如果数据是经过分段的话,还有进行数据分段的重装,然后将接收帧送往协议控制模块进行分类处理。同时,这个模块还要提取接收帧中的信道保留信息,结合信道上有无载波的状况综合判断信道的状态,并把信道的状态送往发送模块来协调退避功能的完成。
*MAC管理实体模块:是管理核心,完成所有的管理功能,包括扫
[1] [2] [3] [4] [5]
篇5:TCP/IP系列之网络层IP协议
TCP/IP系列之网络层IP协议
当数据要在网际直接传输的时候,路由器根据IP数据报进行路由.
当一台主机要发送数据的时候,其目的主机一般为局域网内的主机或者网外的主机.
如果是局域网内的主机,主机发送的以太网帧的头部目的mac地址为目的主机的mac地址,不需要路由.
如果是网外的主机,则将数据发到默认的网关,由网关路由器进行路由到目的主机,主机发送的以太网帧
头部的目的mac地址为网关的mac地址.
IP数据报的协议规定的数据报格式如下图:
IP协议不保证送达,不保证顺序.可靠性由上层协议保证.上层协议如TCP,UDP的信息在IP数据报的数据部分.
下图是通过Wireshark抓取的一个数据包:
路由器就要通过ip包的信息来为ip包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由.路由器或者主机将会用如下的方式来处理某一个IP数据包
如果IP数据包的TTL(生命周期)以到,则该IP数据包就被抛弃.
搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机 搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“子网掩码(1.3.)”的协助.
如果找到路由器,则将该包发向路由器. 搜索路由表,如果匹配同子网路由器失败,则匹配同网号路由器,如果找到路由器,则将该包发向路由器.
搜索路由表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包
如果都失败了,就丢掉这个包.
作者 kkdelta
篇6:一种可进化IP核的设计和实现
摘要:提出一种可进化IP核的设计和实现方法。这种IP核采用进化硬件的设计思想,将遗传算法运用于硬件电路的设计中,使电路能根据当前的环境自动进行内部电路的时化,从而生成最有效的电路,并能在普通的FPGA器件上实现。可进化IP核以HDL源泉代码的形式表示,与普通IP核的复用方式相同,可被综合到不同的目标可重构器件中去,大大减少了复杂系统的设计时间,提高了设计的利用率,是可进化硬件一个颇具潜力的发展方向。
关键词:进化硬件 可进化IP核 FPGA 可重构 虚拟可重构电路
引言
随着信息技术的飞速发展,计算机系统面临的问题越来越复杂,如何保证复杂系统的可靠性成为一个不容忽视的问题。可进化硬件给我们提供了一个很好的解决方案。可进化硬件EHW(Evolvable Hardware)是将进化算法和可编程逻辑元件融合在一起而产生的一种新的硬件研究流派。当所使用的环境发生变化时,或被放置于未知的环境中时,这种硬件会自动地改变内部结构,使之经常处于最适合状态,快速高效地完成规定的任务。
可编程门阵列(FPGA)以其独有的优点为国外多数研究人员用作硬件进化平台。EHW利用FPGA的在线可编程技术(ISP)及动态重构技术,将FPGA的配置信息作为染色体,通过遗传算法(GA)对其进行反复的适应度计算,交叉和变异,最终进化出符号环境要求的个体(即电路配置),从而使电路适合环境的变化。
与此同时,随着FPGA技术的发展,芯片的性能越来越强、规模越来越大、开发的周期越来越长,使得芯片设计业正面临一系列新的问题:设计质量难以控制,设计成本也越来越高。IP(Intelligence Property)技术解决了当今芯片设计业所面临的难题。IP是指可用来生成ASIC和PLD的逻辑功能块,又称IP核(IP Core)或虚拟器件(VC)。设计者可以重复使用已经设计并经过验证的IP核,从而专注于整个系统的设计,提高设计的效率和正确性,降低成本。目前数字IP已得到了充分的发展,可以很方便地购买到IP核并整合到SoC的设计中。
因此,可以考虑将进化硬件的思想应用于IP核的设计中,设计一种可进化的IP核,根据当前的环境进化出相应的电路,并能够在普通的可重构器件中实现。(本网网收集整理)
1 什么是可进化IP核
从进化硬件的经验可知,系统通常只有一部分是适应性的(可进化的),另一部分可以通过传统的不可变的电路来实现。同样,使用IP核构造的系统也是有些IP核是可进化的,有些IP核是不可变的。可进化的那些IP核称为可进化组件或可进化IP核。
可进化IP核像普通的IP核一样被存储在组件库中,在被下载并放在一个可重构器件中后,它们将自动地进化它们的内部电路。当不再需要适应性行为时,可以从可重构器件中删除可进化IP核。可进化IP核和普通IP核的复用方式相同。
2 可进化IP核的一般体系结构
如图1所示,可进化IP核由可重构电路,基因单元和控制器构成(本文中可重构电路是指可进化IP核内的一个部分;可重构器件是指整个可重构平台,如FPGA)。这里要强调的是,基因单元不包含适应度计算,它只实现基因的操作、染色体存储和适应度存储。适应度的计算和环境由其它的核来提供。基因单元生成一些配置并上载到可重构电路中去,环境对这些配置进行评估,并将适应度值发送给IP核。可进化IP核实际上是一个由环境控制的电路生成器。
环境(由其它核提出)和可进化IP核之间的通信如下:首先IP核被初始化(生成初始化种群),然后进入如下无限循环――当环境发生变化后,环境计算当前电路配置的适应度,并判断电路是否适应环境。如果染色体存储器中的配置不可用,则向IP核发出控制信息,IP核开始进化。即基因单元把硬件配置信息作为染色体,根据适应度对其进行交叉、变异等遗传操作,生成一个新的种群。环境对新种群进行适应度计算,并判断是否有满足当前环境的个体(配置)。若没有,向IP核发控制信息,遗传单元继续对电路配置进行进化,直至有满足当前环境的配置为止;若有,则将适应度值发给IP核,IP核用这个新生成的最优配置来重配置可重构电路,并在染色体存储器中保存当前最优配置及其适应度值,等待来自环境的下一个请求。
环境总是要求下载当前最优的进化电路,因此,IP核必须保存目前为止最优的配置,并且在需要的时候提供出去。可进化IP核总是屏蔽重构过程,因此它对于外部环境来说是不可见的。
对于一些特殊的应用,必须为它们开发专用的可进化IP核,因为反映应用的要求基因单元和可重构电路的体系结构将使进化过程优于一个随机的搜索。由于适应度计算是在IP核外进行的,因此IP核原则上支持动态适应度函数和无限的进化。可进化IP核可以用软件实现。
篇7:一种可进化IP核的设计和实现
3.1 实现中的问题
可复用的IP核通常有软核、固核和硬核三种。本文讨论的是软核。本文的目标是,设计和实现以HDL源代码(例如,VHDL)表示的可进化
IP核。其优点是IP核的表示独立于平台,这样它们就可以在各种不同的目标结构中运行。要解决的主要问题是,可进化的IP核的内部可重构电路的自动重构(因为它们是可进化的)。
当一个可进化IP核从一个组件库中被下载到可重构器件的一个指定位置时,它的内部可重构电路必须进行重构。这就意味着这个可重构器件中的一些可编程块必须能配置这个可重构器件的其它内部可编程块。另外,这个可进化IP核(它的基因单元)能被放置于这个可编程阵列(即可重构器件)的任何位置,也就是说,这个可重构器件中必须支持内部重构。
FPGA以其动态可重构的优点,无疑是可进化IP核的最佳实现平台。然而,通常的FPGA并不支持内部重构,而只允许通过一个特殊的配置接口外部重构(如图2)。目前,只存在一种支持内部重构的平台,就是单元阵列,但这种芯片目前还相当少。因此,为了在普通FPGA器件实现可进化IP核,使之能在实际应用中发挥作用,必须采用其它的一些方法。硬件虚拟化是基于FPGA的系统常用的一种设计技术。从这个思想出发,本文采用了一个被称为虚拟可重构电路的'技术来实现可进化硬件中的内部可重构电路。但文中对设计虚拟可重构电路的概念进行了扩展。
3.2 虚拟可重构电路
一些FPGA芯片支持部分重构,也就是允许可重构系统的一部分重构,而不影响其余部分的运行。部分重构的优点在于,其重构所花的时间比全部重构更少。本文以支持部分重构的Xilinx Virtex FPGA为例,来说明虚拟可重构电路的实现。IP核可以动态地下载到FPGA或从FPGA删除。所有的操作都通过Virtex重构端口和Jbits接口来完成。当一个可进化IP核被下载时,它的重构位串在指定位置构靠下列单元;虚拟可重构电路、基因单元和控制器。
图2表明,虚拟可重构电路实际上是一种在普通FPGA上实现的新的可重构电路。本例中由八个可编程元素构成,由Virtex单元(slice)实现。Virtex单元实现新的可编程元素阵列、新的布线电路和新的配置存储器。虚拟电路能内部重构,但如果有其它新的配置存储器与之连接,也可从FPGA的I/O引脚配置。
这种方法的优点在于:可根据具体的应用需要准确地设计可编程元素阵列、布线电路和配置存储器。虚拟可重构电路的重构方式和粒度能准确地反映具体应用的需要。通过虚拟可重构电路,很容易把领域知识插入到基因单元和可重构电路的体系结构中,从而获得电路软件模型的精确实现。
图3给出了一个虚拟可编程元素的例子。这个虚拟可重构电路由8个这样的元素构成,有4个输入和2个输出。这些虚拟可编程元素称为可重配置功能块CFB(Configurable Functional Blocks)。每个CFB对应一个配置位串(这里的位串为6位),其中两个配置位决定了CFB的功能,其它四位定义了输入的连接信息。布线电路由多路器组成,它们由配置存储器中的位串控制。配置存储器由Virtex单元构成,一个Virtex单元包含两个触发器,用于存储配置位串中的两位。配置存储器的所有位都连到多路器,多路器控制布线和CFB中功能的选择。
虚拟可重构电路中CFB的数量由具体的应用决定。虚拟可重构电路用结构级VHDL语言来描述,但是一些基本的电路(例如“MAX”电路)用行为级来描述。虚拟可重构能在不同的目标器件下综合,目标器件并不需要支持部分重构。
3.3 基因单元和控制器
基因单元和控制器的实现通常有两种选择:采用普通微处理器实现,或者设计一个专用的电路来实现。
专用的电路是指一种进化算法的硬件实现,目前在可进化硬件领域已经开发了很多这样的实现。这种算法的优点是电路的进化速度快,适合于复杂的应用。
采用微处理器实现时,可以购买或免费获得现成的微处理器软核,如Xilinx提供的MicroBlaze和PicoBlaze微控制器IP核,Altera生产Nios核,等等。此外,如果给出的目标可重构器件中有片上处理器,可以使用片上处理器,Xilinx Virtex II Pro XC2VP50芯片包含四个PowerPC处理器。处理器必须通过编程来执行程序,它们能和核周围的环境进行通信并完成对染色体的基因操作。此外,处理器还负责内部虚拟可重构电路的重构。
4 结论
文中定义了数字系统设计的一个新的抽象级别,并将一些组件的方法引入可进化硬件的设计。为了实现可进化IP核,使用一种虚拟可重构电路。这种方法在门的数量方面代价稍大,但却能大大加快进化硬件的速度。
可进化IP核的设计目的主要是以合理的代价实现适应性和高性能实时系统,最常见的如图像压缩。本文提出的核的结构和接口都只是最基本的,实际应用中还可进行扩充。例如,还可以给核扩充一个读配置的端口,这个对于某些应用来说是必需的。或者在可进化IP核中包含两个虚拟可重构电路RC1和RC2。RC1实现当前最优的进化电路。电路不断进化在RC2中完成。如果RC2中进化出更好的电路,就把它的配置送入RC1,然后RC1
以一系列数字电路的形式表现出对变化的环境的最佳的响应。
与以往的方法相比,本文提出的方法具有更强的适应性和可移植性。可进化IP核以HDL源代码的形式表示,易于重用和修改。此外,进化的配置位串也可以作为一种变化的IP核在其它应用中被重用。可进化IP核缩短了电路设计的时间,提高了设计的利用率,促进可进化硬件向实用化的发展。
篇8:异步串行通信接口的IP核设计
异步串行通信接口的IP核设计
摘要:异步串行通信接口(SCI)因其结构简洁、使用方便,因而在各类MCU、DSP和MPU芯片设计中获得广泛的应用。本文给出一种以状态机为控制核心、以数据流为执行中心的异步串行通信接口IP核结构设计的通用方法。此方法已在笔者所设计的DSP芯片中得到验证。关键词:SCI IP核设计 状态机 数据流
引言
目前,基于传统IC芯片的微电子应用系统设计技术正在转向基于知识产权(IP,Intellectual Property)核的片上系统(SoC,System on Chip)技术发展。另外,IC设计在国内的发展很快,各种规模的IC设计中心和公司不断出现。因此,IP核的设计已开始逐渐成为国内微电子系统设计的一项支撑技术。从应用功能角度划分IP核有两大类:微处理器IP核(如8位8051核、32位ARM核等)和各种接口IP核(如LCD控制器、各种串行总线接口IP核等)。本文以异步串行通信接口(SCI,Serial Communication Interface)接口IP核结构设计为例,说明SCI、UART、SPI、USB等接口IP核的设计方法。
SCI的通信方式采用标准NRZ格式来进行外设间的异步数字通信。因其结构简法,通常嵌入到DSP、MCU和MPU或外设控制芯片内部,作为芯片的一个接口功能模块。SCI通常由三个功能单元构成:波特率脉冲产生单元、发送单元和接收单元。其结构如图1所示。在SCI数据收发中,数据帧的数据格式要比地址帧的数据格式复杂得多。在不同的通信方式下,数据帧的格式是不同 的。为此在发送器和接收器中各引入了与数据帧格式相对应的状态机来实现数据流的控制。本文所介绍的就是基于这种设计思想的一种通用设计方法。
(本网网收集整理)
1 SCI数据发送单元
数据发送单元主要功能是完成数据的并/串转换及发送,同时产生发送标志位。其结构如图2所示,字符发送状态机如图3所示。下面简要介绍发送单元各功能模块及其状态转换。
(1)TXD时钟八分频器
对基于波特率时钟进行八分频,并输出两个基本脉冲―TXD_CLK_WORK(用于计数、移位等)和TXD_CLK_END(用于标志位的生成和数据流输出)。
(2)TXD状态寄存器
通过此状态寄存器设置通信控制寄存器2的两个控制位―TXEMPTY和TXRDY位,以表示数据写入SCI_TXBUF和启动发送过程。
(3)发送字符计数器
当字符状态机的输出状态为允许字符计数时,其开始对发送的字符计数。当计数器值等于编程的字符数时,输出TX_CHAP_REACH信号作为字符状态机激励,使之进入非字符输出状态。
(4)发送空闲线计数器
当字符状态机进入发送空闲线数据状态时,开始工作。当计数到一定值时,输出信号TX_IDLECOUT_REACH作为字符状态机激励,使之进入非空闲线数据计数状态。
(5)发送数据流的形成
在TXBUF2SHIFT的高电平脉冲作用下,在SCI_TXBUF中待发送数据,经过选择器选择指定位数的数据送入SCI_TXSHIFT低位,不足的高位清“0”。与此同时,TXWAKE数据也送到WUT寄存器,在地址位模式情况下,由ADDR_IDLE控制在WUT中形成地址位;并由SCI_TXSHIFT数据位、地址位和奇偶方式位三者逻辑或形成奇偶校验位。
(6)当前发送字符状态机
在启动、控制位、计数器溢出等激励作用下,实现发送字符状态的输出和转换。发送字符状态机的激励有:TXEMPTY(为“0”时启动TXD发送)、ADDR_IDLE(地址/空闲线模式选择位)、PARENA(奇偶校验使能位)、STOPBIT(选择1或2个停止位)、WUT(发送空闲位数据允许位)、TX_CHARCOUT_REACH(发送字符数目已够位)、TX_IDLECOUT_REACH(发送空闲数目已够位)。发送字符状态机(见图3)的状态有:1为帧停止位(1位),3为帧第1停止位(2位),5为帧第2停止位(2位),8位帧起始位
,9为待机状态,A为帧数据位,B为空闲线模式起始位,C为帧地址位,E为帧奇偶校验位,F为空闲线模式停止位,D为空闲线模式计数0~7。
2 SCI数据接收单元
数据接收单元的功能是完成串行数据接收及接收标志位的生成。其结构如图4所示,接收起始位检测和接收字符状态机如图5、图6所示。
接收单元各功能模块及状态转换说明如下。
(1)RXD时钟八分频器
对波特率时钟进行八分频,并保持其与所接收串行数据流的.字符同步。其输出两个时钟脉冲:RXD_CLK_WORK,用于计数、移位等;RXD_CLK_END,为数据流各种方式的停止位前一个字节时间段内提供脉冲。
图4 SCI数字接收单元
(2)起始位检测模块
是一种三位四状态机。其激励有两个:RXD_1_VALUE―接收的串行数据流激励;RXD_END_CHK―一次接收完毕的脉冲激励。其状态有如下几种(见图5):0(待机状态)、1(空状态)、2(空状态)、3(发现“1”到“0”的跳变状态)、4(输出时钟同步信号)、5(字符接收过程中输出RXD_CLK_AYN和RXD_START_DRV)。
(3)字符检测模块
主要功能是接收数据流。其在采样时钟驱动下数据流通过三个寄存器,随后在RXD_CLK_WORK脉冲作用下,三个寄存器的数据通过表决电路,把数据送到接收数据缓冲器RXD_VALUE中,为把数据送到移位寄存器RX_SHIFT做准备。
(4)当前接收字符状态机
用来标识当前所接收的数据是哪一种字符,以及在下一个RXD_CLK_WORK字符周期将转换到哪一种状态,并且根据当前接收字符的状态,驱动其它部件进行合适的操作。其激励有:RXD_START_DRV(RXD起始位有效激励)、RX_CHAR_REACH(RXD字符接收数目已够)、CCR3_ADDR_IDLE(地址/空闲线模式选择)、CCR5_PARENA(奇偶校验使能)。其状态(见图6)有:0(待机状态)、1(帧数据位)、2(帧起始位)、3(帧地址位)、4(帧奇偶校验位)、5(空状态)、6(帧停止位)。
(5)接收字符计数器
当接收字符状态机处于帧数据位阶段时,其开始计数;当与可编程的数据相同时,输出RX_CHAR_REACH给接收字符状态机。
(6)接收空闲线计数器
当处于待机状态时,开始计数器,当计数到一定时,输出一个脉冲,将RXSP1_RXWAKE置位为1;在下一个字符即将接收、读取SCI_RXBUF寄存器或SCI复位的情况下,RXST1_RXWAKE被复位为0。
(7)接收数据移位寄存器(SCI_RXSHIFT)
根据接收字符状态机的状态接收与检测的串行数据流,将所接收的正确数据送入SCI_RXBUF并置相应的标志,否则置出错标志。
(8)BRKDT间断检测计数器
当产生RXST4_FE帧错误时,开始工作。当RXD_VALUE为“1”时,其被复位;当RXD_VALUE为“0”时,表示没有数据接收,开始计数;当计到一定值时,输出计数满信号,此时间断检测标志RXST5_BRKDT被置位。
结语
综上所述,在各种串行接口IP核设计中,可将其内部单元结构划分为控制和执行两大部分。其中,控制逻辑的设计采用以单极或多级状态机为核心,并配合其各种激励单元的结构设计,可以做到结构清晰,并可实现较复杂的逻辑;执行机构的设计采用以控制逻辑输出的状态为中心,来设计数据选择器或数据分配器,可实现数据流的复杂流向(请见网络补充版:收集整理)。
篇9:I2C器件接口IP核的CPLD设计
I2C器件接口IP核的CPLD设计
摘要:根据单片机I2C串行扩展的特点,在EDA软件MaxplusII的环境下,利用AHDL语言,建立IP核。此设计利用状态机实现,在给出设计的同时详细说明IP核的建立过程,并下载到芯片通过硬件试验验证。关键词:可编程逻辑器件 I2C串行扩展 IP核
由于CPLD数字设计结构化的趋势,将出现针对CPLD不同层次的IP(Intellectual Property)核。各个IP核可重复利用,可大大提高设计能力和效率。国外各大公司都推出了专门的IP核,我国也迫切需要发展自己的IP核。本文针对I2C的主方式串行扩展通信的特点,详细给出设计过程和结果。
1 IP核简介
IP核是指:将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器、SDRAM控制器、PCI接口等等设计成可修改参数的模块,让其它用户可以直接调用这些模块,以避免重复劳动。随着CPLD/FPGA的规模越来越大,设计越来越复杂,使用IP核是一个发展趋势。许多公司推荐使用现成的或经过测试的宏功能模块、IP核,用来增强已有的HDL的`设计方法。当在进行复杂系统设计的时侯,这些宏功能模块、IP核无疑将大大地减少设计风险及缩短开发周期。使用这些宏功能模块、IP核,就会将更多的时间和精力放在改善及提高系统级的产品方面,而不需要重新开发现成的宏功能模块、IP核。我国IP核库的建设已相当迫切,它是集成电路产业发展的一个重要目标。
图1 I2C传输原理图
2 I2C串行通信特点简介
Philips公司推出的I2C软、硬件协议十分巧妙,在单主方式的I2C总线系统中,总线上只有一个单片机,其余都是带I2C总线的外围器件。由于总线上只有一个单片机成为主节点,单片系统永远占据了总线,不会出现竞争,主节点不必有自己的节点地址。只要每个外围器件有自己的器件地址,两根I/O口线SCL(时钟线)和SDA(数据线)就可以虚拟I2C总线接口。I2C总线上的数据传送如图 1所示。总线上传送的每一帧数据均为1个字节。启动总线后,要求每传送1个字节后,对方回应一个应答位。在发送时,首先发送最高位。每次传送开始有起始信号,结束时有停止信号。在总线传送完1个字节后,可以通过对时钟线的控制,使传送暂停,这时可在应答信号后使SCL变低电平,控制总线暂停。 当主节点要求总线暂停时亦可采用同样的方法。图1是CPLD向外围I2C器件发送01010011 和01001001这两个数据的情况。
3 在MaxplusII环境下I2C串行扩展IP核的建立
MaxplusII是美国Altera公司用于CPLD的EDA软件,(本网网收集整理)内部有许多常用的宏单元,如计数器、四则运算、各类逻辑门乃至ROM、RAM等。这些宏单元内具体的参数都可以由用户来自行设定,这就是上面提到的IP核形式。它避免了重复劳动,提高了效率。以下将要设计的是下位机的IP核。
MaxplusII的AHDL(Altera Hard ware Description Language)是Altera公司开发的完全集成于MaxplusII中的一种模块化高级语言,特别适合于描述复杂的组合逻辑、组运算、状态机和真值表。本文利用AHDL,直接生成IP核。
设计的最终目标是生成如图 2所示的Symbol。通过输入数据来达到控制SDA和SCL的目的,将信号按要求的时序传送给I2C器件。
设计思路是利用状态机实现时序。主要包括输入数据锁存、起始、数据传输、停止等状态机。通过状态机,在每一状态下确定下一状态SDA和SCL是高电平或者低电平,通过这种方式实现了I2C所需要的每一种时序。由于使用的是AHDL,这种状态机实现起来非常方便,程序简洁明了。由于篇幅限制,仅介绍数据传输的状态机。状态图如图3所示。
以下程序中,Cmd_reg2为发送允许暂存位;Sh_reg[]为数据锁存,通过左移,最高位数据Sh_reg7为当前将发送数据,存入SDA_tmp 。通过图 3对照程序,可以看到发送一个利用状态机数据位的详细过程。程序清单如下:
IF Cmd_reg2 THEN --若“发送允许”,则将Sh_reg7作为当前发送位
SDA_tmp = Sh_reg7;
ELSE
SDA_tmp = VCC;
END IF;
St.clk = SysClk;
St.ena = BaudGen;
CASE St IS --控制传输8位数据的状态机
WHEN t0 =>
IF Cmd_reg2 OR Cmd_reg3 THEN
SDA = SDA_tmp; --开始传送数据
SCL = GND;
St = t1;
ELSE
St = t0;
END IF;
WHEN t1 =>
SCL = VCC;
SDA = SDA_tmp;
St = t1a;
WHEN t1a =>
SCL = VCC;
SDA = SDA_tmp;
St = t2;
WHEN t2 =>
Sh_reg[7..1] = Sh_reg[6..0]; --数据左移,取高位
Sh_reg[0] = GND;
Sh_reg[].ena = EXU;
SCL = GND;
SDA = SDA_tmp;
IF Bit[] == 7 THEN --若8位传完,则发应答位;否则继续
St = t3;
ELSE
St = t0;
END IF;
WHEN t3 => --发应答位
SDA =GND;
St = t4;
WHEN t4 =>
SDA = GND;
SCL = VCC;
St = t4a;
WHEN t4a =>
SDA = GND;
SCL = VCC;
St = t5;
WHEN t5 =>
SCL = GND;
St = t6;
WHEN t6 =>
SDA = GND;
FINISHED = VCC;
St = t0;
END CASE;
Bit[] = Bit[] + 1; DD--传输完一位,已传输位数加一
图 4为仿真结果。起始信号给出以后,传输2个8位数据:每个数据后跟一个应答位,在输送完第一个数据要求的情况下,暂停一段时间,再输送第二个数据;2个数据输完以后,主机发出停止输送要求,即给出停止信号。这些信号,在SDA和SCL上完全符合I2C的时序要求。要使总线传输速率达到改进后的规范,即400 kb/s,因为根据以上叙述,每发送1位数据需要4个时钟周期,所以所给的时钟为1600 kHz。图4中Execute为执行信号,即它为高电平时,输入数据DIN[7..0]有效;EXU为发送使能信号,只有当它为高电平时,方可输送串行数据到外围器件;Start为开始控制信号,用于发生起始信号;STOP用于告知总线数据传输结束,发生停止信号。
图4 仿真结果
仿真以后,通过编程电缆将生成的pof文件用ISP(在系统编程)方式下载到FPGA板EPM7128SLC84-6,I/O口SDA和SCL挂上拉电阻,外接两片I2C器件SAA1064(LED显示I2C串入并出芯片)进行测试,结果CPLD利用该I2C的IP核,工作正常,可以按照要求显示。
篇10:异步串行通信接口的IP核设计
异步串行通信接口的IP核设计
摘要:异步串行通信接口(SCI)因其结构简洁、使用方便,因而在各类MCU、DSP和MPU芯片设计中获得广泛的应用。本文给出一种以状态机为控制核心、以数据流为执行中心的异步串行通信接口IP核结构设计的通用方法。此方法已在笔者所设计的DSP芯片中得到验证。关键词:SCI IP核设计 状态机 数据流
引言
目前,基于传统IC芯片的微电子应用系统设计技术正在转向基于知识产权(IP,Intellectual Property)核的片上系统(SoC,System on Chip)技术发展。另外,IC设计在国内的发展很快,各种规模的'IC设计中心和公司不断出现。因此,IP核的设计已开始逐渐成为国内微电子系统设计的一项支撑技术。从应用功能角度划分IP核有两大类:微处理器IP核(如8位8051核、32位ARM核等)和各种接口IP核(如LCD控制器、各种串行总线接口IP核等)。本文以异步串行通信接口(SCI,Serial Communication Interface)接口IP核结构设计为例,说明SCI、UART、SPI、USB等接口IP核的设计方法。
SCI的通信方式采用标准NRZ格式来进行外设间的异步数字通信。因其结构简法,通常嵌入到DSP、MCU和MPU或外设控制芯片内部,作为芯片的一个接口功能模块。SCI通常由三个功能单元构成:波特率脉冲产生单元、发送单元和接收单元。其结构如图1所示。在SCI数据收发中,数据帧的数据格式要比地址帧的数据格式复杂得多。在不同的通信方式下,数据帧的格式是不同 的。为此在发送器和接收器中各引入了与数据帧格式相对应的状态机来实现数据流的控制。本文所介绍的就是基于这种设计思想的一种通用设计方法。
1 SCI数据发送单元
数据发送单元主要功能是完成数据的并/串转换及发送,同时产生发送标志位。其结构如图2所示,字符发送状态机如图3所示。下面简要介绍发送单元各功能模块及其状态转换。
(1)TXD时钟八分频器
对基于波特率时钟进行八分频,并输出两个基本脉冲―TXD_CLK_WORK(用于计数、移位等)和TXD_CLK_END(用于标志位的生成和数据流输出)。
(2)TXD状态寄存器
通过此状态寄存器设置通信控制寄存器2的两个控制位―TXEMPTY和TXRDY位,以表示数据写入SCI_TXBUF和启动发送过程。
(3)发送字符计数器
当字符状态机的输出状态为允许字符计数时,其开始对发送的字符计数。当计数器值等于编程的字符数时,输出TX_CHAP_REACH信号作为字符状态机激励,使之进入非字符输出状态。
(4)发送空闲线计数器
当字符状态机进入发送空闲线数据状态时,开始工作。当计数到一定值时,输出信号TX_IDLECOUT_REACH作为字符状态机激励,使之进入非空闲线数据计数状态。
(5)发送数据流的形成
在TXBUF2SHIFT的高电平脉冲作用下,在SCI_TXBUF中待发
[1] [2] [3]
篇11:一种可进化IP核的设计和实现
一种可进化IP核的设计和实现
摘要:提出一种可进化IP核的设计和实现方法。这种IP核采用进化硬件的设计思想,将遗传算法运用于硬件电路的设计中,使电路能根据当前的环境自动进行内部电路的时化,从而生成最有效的电路,并能在普通的FPGA器件上实现。可进化IP核以HDL源泉代码的形式表示,与普通IP核的复用方式相同,可被综合到不同的目标可重构器件中去,大大减少了复杂系统的设计时间,提高了设计的利用率,是可进化硬件一个颇具潜力的发展方向。关键词:进化硬件 可进化IP核 FPGA 可重构 虚拟可重构电路
引言
随着信息技术的飞速发展,计算机系统面临的问题越来越复杂,如何保证复杂系统的可靠性成为一个不容忽视的问题。可进化硬件给我们提供了一个很好的解决方案。可进化硬件EHW(Evolvable Hardware)是将进化算法和可编程逻辑元件融合在一起而产生的一种新的硬件研究流派。当所使用的环境发生变化时,或被放置于未知的环境中时,这种硬件会自动地改变内部结构,使之经常处于最适合状态,快速高效地完成规定的任务。
可编程门阵列(FPGA)以其独有的优点为国外多数研究人员用作硬件进化平台。EHW利用FPGA的在线可编程技术(ISP)及动态重构技术,将FPGA的配置信息作为染色体,通过遗传算法(GA)对其进行反复的适应度计算,交叉和变异,最终进化出符号环境要求的个体(即电路配置),从而使电路适合环境的变化。
与此同时,随着FPGA技术的发展,芯片的性能越来越强、规模越来越大、开发的周期越来越长,使得芯片设计业正面临一系列新的问题:设计质量难以控制,设计成本也越来越高。IP(Intelligence Property)技术解决了当今芯片设计业所面临的难题。IP是指可用来生成ASIC和PLD的逻辑功能块,又称IP核(IP Core)或虚拟器件(VC)。设计者可以重复使用已经设计并经过验证的IP核,从而专注于整个系统的设计,提高设计的效率和正确性,降低成本。目前数字IP已得到了充分的发展,可以很方便地购买到IP核并整合到SoC的设计中。
因此,可以考虑将进化硬件的思想应用于IP核的设计中,设计一种可进化的IP核,根据当前的`环境进化出相应的电路,并能够在普通的可重构器件中实现。
1 什么是可进化IP核
从进化硬件的经验可知,系统通常只有一部分是适应性的(可进化的),另一部分可以通过传统的不可变的电路来实现。同样,使用IP核构造的系统也是有些IP核是可进化的,有些IP核是不可变的。可进化的那些IP核称为可进化组件或可进化IP核。
可进化IP核像普通的IP核一样被存储在组件库中,在被下载并放在一个可重构器件中后,它们将自动地进化它们的内部电路。当不再需要适应
[1] [2] [3] [4]
篇12:可复用SPI模块IP核的设计与验证
摘要:SoC是超大规模集成电路的发展趋势和新世纪集成电路的主流。其复杂性以及快速完成设计、降低成本等要求,决定了系统级芯片的设计必须采用IP(Intellectual Property)复用的方法。本文介绍以可复用IP设计方法,设计串行外设接口SPI(Serial Peripheral Interface)模块IP核的思路,用Verilog语言实现,并经FPGA验证,通过TSMC(台湾集成电路制造公司)的0.25μm工艺生产线流水实现,完成预期功能。
关键词:SoC 可复用IP SPI AMBA总线
引言
随着集成电路设计技术和深亚微米制造技术的飞速发展,集成电路的规模越来越大,出现了片上系统SoC(System on Chip,又称之为系统级芯片)。由于其在速度、功耗和成本方面的优势,发展势头迅猛。SoC芯片是一个复杂的系统,为了在规定时间完成设计,并提高设计的可靠性,只有依赖基于IP复用的SoC设计方法。如何为SoC设计提供可复用的IP核,成为SoC设计的基础和难点。
东南大学ASIC系统工程技术研究中心针对AMBA(Advanced Microcontroller Bus Architecutre,先进微控制器)总线规范开发了一款代号为Garfield的嵌入式微处理器。此微处理器除采用ARM公司ARM7TDMI内核的硬IP外,其余模块采用了自己开发的软IP。本文以串行外设接口SPI为例,介绍基于复用的IP设计与验证的一些经验。此SPI模块基于AMBA的APB(Advanced Peripheral Bus,先进外设总线)规范,可以不作修改地应用在任何符号AMBA总线规范的微处理器设计中。
Garfield的总体架构及SPI模块在系统中所处的位置如图1所示。
(本网网收集整理)
1 可复用IP核的SoC设计方法
系统级芯片设计中,IP特指经过验证的各种超级宏单元模块电路。VSIA(虚拟器件接口联盟)根据设计层次,将IP划分为三个层次:硬IP、软IP和介于两者之间的固IP。硬IP性能最优但适应性较差,软IP灵活性大、可移植性好。IP核必须具有以下特征:①可读性;②设计的衍展性和工艺适应性;③可测性;④端口定义标准化;⑤版板保护。
代码编写规则和可综合的书写规范是实现IP核的基础,可保证IP软核在任何EDA工具下编译和综合的正确性。为SoC集成时消除综合产生的风险,我们制定了Verilog代码的书写规范,并要求有详细的注释,易于他人理解和修改。可复用IP设计流程如图2所示。
为了容易地将IP集成到芯片中,需要标准化的接口或片上总线,VSIA在这方面作了一定的工作。另外,设计中要尽量将IP核接口部分与功能部分分开,单独作为一模块进行设计,当需要集成到其它互连协议中时,只需修改接口部分。为尽可能地提供灵活性,允许综合时设置多个参数。
在最终面向用户的产品发布中,用户手册是非常重要的部分。这部分文档将被用于IP核的选择、集成和验证,是一种非常专业化的文楼。它主要包括模块系统结构、功能框图、输入、输入/输出口、时序图、调用方式、设计流程、测试指导、推荐使用和软件编译器和驱动程序、系统验证指导、调试指导和该IP核版本历史等。在可重用IP核产品发布中,还应包含该 IP核的多种仿真模型,以便用户在进行评估、设计和系统测试时使用。IP核的仿真器模型一般可分为3个层次:①行为级模型,能够仿真该IP核的全部功能,包括在算法级和指令集上的功能;②硬件级模型,能够精确提供该IP核的功能和时序的仿真;③门级模型,提供硬核的带有时序反标注信息的仿真模型。
在实践中,我们搜索出一套基于CVS(协作版本管理系统)的版本管理和设计、验证人员协同工作的制定流程,对RTL代码作了尽可能全面的仿真,提供完备的测试矢量,保证了最终IP核的质量,并按要求建立了标准、规范的文档。
篇13:可复用SPI模块IP核的设计与验证
串行外围设备接口SPI(Serial Peripheral Interface)总线技术是Motorola公司推出的多种微处理器、微控制器以及外设间的一种全双工、同步、串行数据接口标准。SPI总线量种三线总线,因其硬件功能很强,所以,与SPI有关的软件就相当简单,使CPU有更多的时间处理其它事务。
2.1 SPI模块的接口信号及时序要求
(1)内部总线接口
AMBA规范是由ARM公司制定的片上总线规范,为SoC的设计提供了以下优点
:较好的可移植和可复用设计、低功耗设计、讥生能和结构可移植的系统设计以及较好的可测性设计。SPI是APB总线上的Slave模块。APB总线时序比较简单,有兴趣的读者可以查阅ARM公司的《AMBA Specificetion》(Rev 2.0)。因此此SPI模块支持3种DMA操作,所以除标准APB信号线外,还有3根与DMA模块连接的请求信号线。
图3和图4
(2)SPI总线接口及时序
SPI总线包括1根串行同步时钟信号线以及2根数据线。
SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI接口时序如图3、图4所示。
2.2 SPI模块功能设计
根据功能定义及SPI的工作原理,将整个IP分为8个子模块:APB接口模块、时钟分频模块、发送数据FIFO模块、接收数据FIFO模块、状态机模块、发送数据逻辑模块、接收数据逻辑模块以及中断形式模块。
深入分析SPI的四种传输协议可以发现,根据一种协议,只要对串行同步时钟进行转换,就能得到其余的三种协议。为了简化设计规定,如果要连续传输多个数据,在两个数据传输之间插入一个串行时钟的空闲等待,这样状态机只需两种状态(空闲和工作)就能正确工作。相比其它设计,在基本不降低性能的前提下,思路比较精炼、清晰。
此SPI模块有两种工作方式:查询方式和DMA方式。查询方式通过处理器核监视SPI的状态寄存器来获其所处的状态,从而决定下一步动作。DMA方式由DMA模块控制数据在内存和SPI间的交换,而不需要处理器核的参考,有效提高了总线利用率。
3 EMA软件仿真与FPGA验证
为了保证设计的鲁棒性,运用多种方法对此IP的功能进行全面的仿真和验证。
首先进行EDA软件仿真验证。这种仿真包括RTL级和门级仿真验证。RTL级仿真只是将代码文件调入硬件描述语言的仿真软件进行功能仿真,检查逻辑功能是否正确。门级仿真包括布局布线前和布局布线后仿真。布局布线后仿真,可以获得比较精确的时延参数,能够比较真实地反映芯片制造完成后,模块在实际工作中的行为与性能,所以通过了此类仿真应认为模块设计成功,可以进行流片。将RTL级代码转换成门级网表,使用的是Synopsys公司的综合工具DC(Design Compiler)以及台湾集成电路制造公司(TSMC)的0.25μm标准单元库。
在传统的设计流程中进行功能验证,首先需要通过写测试矢量的方式给需要进行功能测试的模块加激励,然后通过观察模块的输出结果,判断模块的.功能是否正确。但是在写测试矢量时,测试工程师是在自己对模块功能理解的基础上进行的。这样就存在一个问题,测试矢量对模块的激励有可能是不完备的,还有可能是错误的,但测试矢量的激励并没有使错误体现出来;也有可能模块的功能是正确的,误报错误使难证过程变得非常低效。为避免以上问题,在模块的功能验证中,采用系统级验证环境。该环境由IP总线、驱动器、监视器、外部模块和协调它们工作的脚本组成。组成系统的各模块可以按需要加入环境。每次验证过程就是相应的激励作用于环境的过程。验证结果由环境产生、检验和输出。该验证环境在SOLARIS5.8操作系统下,仿真器采用Synopsys公司的VCS,支持C/C++、Verilog和VHDL协同仿真,可以直接SPI模块挂在验证环境中,通过Verilog的$readmemh任务读入软件激励进行验证。
在系统时钟为66MHz,CPOL=1、CPHA=0下收发6字节数据的仿真结果如图5、6所示。
图6
SPI模块的典型应用是:通过与带SPI接口的触摸屏控制芯片连接,提供对触摸屏的支持。针对此目标,将SPI模块及其它必要模块加载到FPGA中进行硬件、软件联合调试,对实际电路进行验证。我们选用了最常见的四线式电阻式触摸屏,而触摸屏控制芯片采用ADS7843。ADS7843是一个内置12位模数转换、低导通过电阻模拟开关的串行接口芯片,支持8和12位的A/D转换精度。为了完成一次电极电压切换和A/D转换,微处理器需要先通过SPI接口往ADS7843发送控制字,转换完成后再通过SPI接口读出电压转换值。标准的一次转换需要24个时钟周期。典型的应用电路如图7所示。
SPI的FPGA验证平台包括ARM公司提供的Intergrator/LM-EP20K1000E和Intergrator/CM7TDMI开发验证板以及Garfield II验证电路板(自行设计)。其中Intergrator/CM7TDMI上的ARM7TDMI微处理器内核作为整个开发系统的CPU。通过ARM Multi-ICE,将验证必需的包括SPI在内的所有模块由JTAG口加载到
Intergrator/LM-EP20K1000E板上Altera APEX20K系列的EP20K1000EFC672中。外围电路由Garfield II验证电路板(包含ADS7843)以及触摸屏组成。在FPGA上通过软硬件协同验证,通过逻辑分析仪观测SPI总线信号,也证明此SPI模块性能良好。
图7
另外,通过台湾集成电路制造公司(TSMC),采用其0.25μm标准单元库对该设计多次进行流水验证,获得的实际IP电路在样机中工作十分稳定。至此,IP的设计十分成功。当设计相似架构的SoC芯片时,可根据需要配置相应参数后直接进行复用。
结语
建立经过充分验证的功能正确、性能良好的可复用IP模块库,是快速进行SoC设计的基础和要求。设计可复用的IP,需要遵守一定的设计方法:完整、清晰的文档;良好的代码风格;详细的注释;精心设计的校验环境;极高代码覆盖率的测试向量等。本文以SPI模块IP为例,按照规范的流程和要求,进行了初步的尝试,得到了较好的结果。
★枣核教案
文档为doc格式