Altium desigener 设计的原理图上有些元器件下面有红色波浪线是什么意思?
表示有错误,很可能是名称的问题,双击该元件原理图,在Designator中将 改为元件名CCD_10pin,点击OK,红色波浪线即可消失。
【嵌入式fpga】Altiumdesigener设计的原理图
【嵌入式fpga】Altiumdesigener设计的原理图
有问题
可能是重名了
xilinx ise 13.2中的lnse问题 求教
个问题:因为你的二个文件,有一个应该是顶层,另外一个是顶层文件里面定义了的模块。 都设置好了,modelsim也支持ISE仿真(就是了),应该就可以用了。 如果这些都设置好了,还不能仿真,检查下你的tb写的有没有问题,或者modelsim能用...
嵌入式 fpga 背景
两个都是侧重软件
嵌入式估计您说的是arm吧?学这个东西是很难的,需要很好的编程基础和硬件基础,虽然侧重软件,但是硬件也很重要,需要的基础:c语言或c++语言、linx作系统、扎实的数点和模电。很少有人直接就学这个的,一般都从单片机学起,这个东西起点比较高。
fpga如果学好了会赚大钱的,不过玩这个的一般都是从arm走过来的,直接学的话,无异于自虐。这个需要的基础只是更多,你还要多学一门语言:vhdl语言,目前这类人才比较少,真学好了前程无忧了。
其实您要是会单片机的话,这两个东西就变得简单的多,没学过单片机的话建议先学单片机,这是必经之路。
嵌入式 FGPA参考资料:
基于CPCI系统的高速数字通信接口电路设计与应用
基于CPCI系统的高速数字通信接口电路设计与应用
在CPCI系统环境下高速数字通信AFDX协议端系统接口的电路设计与功能实现。采用Verilog编程实现基于FPGA的硬件设计部分,采用C编程实现基于MicroBlaze的嵌入式软件设计。
0 引 言
随着通信技术的高速发展,嵌入式系统对数据传输速率的要求更高。在航空等军用电子设备中,实现信号处理算法的数字信号处理机,起着至关重要的作用。CPCI总线技术有效解决了高速互联问题。
20世纪90年代,PCI总线技术被广泛应用,但是它可靠性较低,无法满足对正常运行时间要求较高的高可用性系统。加之其主板连接器可靠性低,更换时易被损坏。CPCI的高带宽特点,决定了其适用于高速数据通信场合。随着国外计算机系统公司基于CPCI产品和方案的推广及PICMG/PRC对CPCI技术的宣传,我国工业控制领域越来越多地把CPCI应用于高性能嵌入式系统之中。本文研究了在CPCI系统环境下高速数字通信AFDX协议端系统接口的电路设计与功能实现。采用Verilog编程实现基于FPGA的硬件设计部分,采用C编程实现基于MicroBlaze的嵌入式软件设计。
1 基于FPGA的硬件设计
1.1 MAC模块、FIFO模块和MII模块
FIFO模块分为接收FIFO和发送FIFO,通过调用IP核来实现。本文所设计的MAC模块和FIFO模块的基本结构如图1所示。MAC核通过MII接口和PHY芯片进行外部通信,通过发送FIFO和接收FIFO进行FPGA内部数据的通信。
1.2 CRC模块
CRC模块通过检验数据的CRC值,判决接收的数据的正确性和有效性。在数据包被发送后,紧接着该数据包的4 B CRC也会被发送。接收者通过数据包和CRC数据就可以得出新的CRC值。若新CRC值为0,表明接收和发送的数据不一致,crc_error将会置1。其管脚定义如表2所示。
1.3 规整模块和冗余管理模块
规整模块根据每条VL的BAG,Lmax值,对其数据流进行规整。具体方式为:当该VL的BAG时间达到,且Jitter在抖动的范围内、帧长小于Lmax,则置FTT标识有效,此时多路复用器模块会申请对该VL进行调度;反之,不能对该VL进行调度。将固定带宽分配给每个VL,等价于把接收端与发送端之间的数据传输限制在一个BAG内,即在一个BAG内只有一次数据传输,如果数据包过大,将其分为多个帧进行发送,也将会在各自的BAG内进行发送。所以,为了保证任意时间段使用的带宽都是可以被确定的,必须把一个时间段合理地分配给不同的终端系统使用,规整器的输入输出示意图如图3所示。
从图3可看出,两个数据帧之间的长度大于BAG,那么正常接收;当两个数据帧之间的长度小于一个BAG,就将后一个数据帧移动到第二个BAG的起始位置。 在AFDX网络中,通过不同的AFDX网络交换机将两个互为冗余的帧传递到同一个目的端系统。只要交换机输出端口的输入流量大于输出流量,就必定会产生交换延迟。因为不同的交换机的交换延迟不是确定值,所以两个互为冗余的帧到达目的端的时间间隔也是不确定的。设计时,将SkewMax(偏斜)用于AFDX的接收冗余管理中以便对冗余帧的接收时间进行限制。冗余管理模块的功能是对接收帧的有效性进行验证,并将重复的有效帧进行消除。冗余管理模块的框图如图4所示。
1.4 发送和接收模块
发送数据的基本过程如下:要发送数据时,将待发送数据传输到MAC的发送缓存中,发送缓存接收到的数据达到设定值时,数据发送模块开始进行帧间隔计时;发送帧的前导码;发送帧起始定界符;帧长计数、CRC校验和计算,同时将数据按半位元组(4 b)发送给MII接口;在发送过程中,如果MAC检测到该帧的长度小于小帧长(64 B),则进行数据填充达到64 B为止。
AFDX发送部分的状态机如图6所示,发送数据主要包括等待、数据长度检测、插入前导码和帧起始界定符、数据发送以及CRC校验结果状态。系统在工作的时候,一直处于wait状态,当需要发送数据的时候,状态机将进入下一个状态从而开始数据的发送。
接收为发送的反过程,首先对接收到的4位信息进行帧检测,当检测到前导码和帧起始定界符的时候,则认为一帧数据接收到了,然后开始对数据帧进行解析,得到帧数据中的各类数据信息。
AFDX接收过程如下:数据通过PHY芯片解码后进入到MAC 核,然后进入接收FIFO。当MAC接收到数据有效后,从MII接口读入数据后检测前导码和帧起始定界符,当检测到有效的帧起始定界符,就会开始对帧长进行计数。接收模块在接收数据的过程中将已接收到的帧的`前导域,SFD域,CRC域和PAD域进行剥离。
2 基于MicroBlaze的软件设计
2.1 设计说明
在MicroBlaze中将主要完成AFDX协议栈中UDP层和IP层的数据发送和接收部分,对数据进行封装、解析和控制。发送部分主要完成以下几个工作:当一个帧数据进入AFDX端口时,发送部分就开始对该帧数据进行封装,其中UDP层将对数据添加UDP头,包括源和目标UDP端口号。IP层将UDP层处理完的数据添加IP 包头和以太网头,然后送入虚链路层并添加序列号。接收部分主要完成如下几个工作:当一个帧信号通过PHY解码送入MAC后,通过接收FIFO送入AFDX接收模块,那么接收过程开始。在链路层首先对该帧信号进行完整性检测和冗余管理,然后进入IP层,进行IP 校验和检查,然后送入UDP层,通过多路分配器后将对应的帧数据发送出去,实现数据的解封装功能。
2.2 设计流程
基于MicroBlaze的系统设计需要分别对系统的硬件和软件进行协同编译。完成MicroBlaze的软件设计之后,将MicroBlaze作为ISE工程下的一个子模块进行调用。为了验证程序的正确性,利用ISE调用ModelSim对其进行仿真。具体做法是在ISE工程中添加一个以MicroBlaze处理器为基础的IP核,并编写测试文件,为处理器的输入信号提供激励,输出信号提供端口。
3 测试与验证
两个MAC核的仿真意义是相同的,所以针对个MAC核的仿真波形进行说明。mii_tx_en_0为帧使能信号,当MAC核正常工作时,有数据发送的时候该信号为1;当发送为0的时候,该信号使能为0,mii_txd_0为发送的数据。当有接收信号进入MAC核时,mii_rx__0为高电平,对应的数据为接收的数据;当接收的数据发生错误时,mii_rx_er_0会出现高电平,如果接收到的数据没有发生错误,那么该信号为低电平。
在接收端,判断接收数据的CRC计算结果是否为0,如果为1,则表明接收过程中有CRC校验错误。CRC 校验模块的仿真结果如图11所示。由图11可以看出,对接收到的数据以及发送过来的这些数据的CRC 校验值(d167bc)一起计算,计算出来的校验值为0,证明接收的数据没有问题。
规整模块的仿真数据如图12所示。此处接收到的数据位1,2,3,4,…是不等间隔的,通过规整之后输出的数据1,2,3,4是等间隔的,这个模块的初始输出数据是错误的,所以会重复输出帧的数据,后面将输出正确的数据。
主机要发送数据时,首先给MAC的发送缓存中发送数据。发送缓存接收到的数据与设定值相符时,开始进行长度检测,检测完成后,数据发送模块开始进行帧间隔计时。根据帧计数器的值开始发送帧的前导码、帧起始定界符,将4位数据发送给MII接口,后把数据从物理层发送到网络介质上。发送模块的仿真结果如图13所示。
此处仿真波形的信号i_start_or_not为高电平时,AFDX 发送模块开始工作,i_data为需要发送的数据,i_data_number为需要发送数据的个数,i_aim_address 为发送信号的目标地址,i_orig_address为发送的源地址,i_head_ip为发送信号的IP头,i_head_udp为发送信号。当发送开始时,系统首先检测需要发送的数据长度,如果数据长度大于64,则开始发送,如果发送数据长度小于64,那么进行填充,补充到64为止。通过AFDX发送模块,得到发送的帧数据o_AFDX_data以及帧信号对应的帧使能信号o_afdx_frame,完成了数据的正常发送。
接收模块的仿真结果如图14所示。当外部数据通过PHY解码后进入MAC核,接收端开始进入接收状态机,首先检测前导码和帧起始界定符。如果检测正确,那么系统进入下一个状态。从图14的仿真结果可以看出,当检测完前导码和帧起始界定符时,current_state将进入下一个状态。然后开始接收数据,o_data就为接收到的数据。 4 结 论
本文在对航空全双工以太网(AFDX)协议深入研究的基础上,介绍了一种通用信号处理平台中的一块AFDX接口板卡,该板卡扣在相应的XMC载卡上应用于CPCI系统中。该板卡XMC传输速率为3.125 Gb/s,可高速传输RapidIO协议数据,兼容32 b PCI接口和LINK口协议。由于该板卡支持多种接口模式的背板,为各种高速板卡之间的互联提供了平台。
基于AFDX接口板卡,采用FPGA设计了一种AFDX端系统接口功能的实现方法,该方法基于FPGA的硬件设计和基于MicroBlaze的嵌入式软件设计,采用FPGA和PHY芯片实现End System端的AFDX接口,完成传输层(UDP)、网络层(IP)、链路层(Virtual Link)及物理层(PHY)四层协议数据传输,使得该接口具备实时、可靠传输AFDX 数据的能力。由于该网络协议比较复杂,开发设计具有一定难度。本文的设计基本实现了AFDX端系统的接口发送和接收功能,基本达到了预期目标。AFDX端系统作为AFDX网络协议的重要组成部分,为航空电子系统提供了安全可靠的数据交换服务接口,今后必会得到更加广泛的应用。 ;
考研想了解更多关于这个专业的东西,Linux与嵌入式系统
太泛泛了,你要考哪个学校的,各个学校的侧重点不同吧.
不过基础知识还是很重要的,如果搞嵌入式,对linux内核一定要很多了解才可以啊
内存管理,进程管理,设备驱动,有本《linux设备驱动程序》不错。
我想搞电路设计,听说现在FPGA很火,我想搞这方面的,请问要学哪些东西,按学习的顺序列一下,谢谢
1、数字逻辑电路基本知识
2、硬件描述语言(VHDL/Verilog)
3、开发软件使用(ISE等,依据器件厂家而定)
4、仿真测试(ModelSim等)
楼上说的比较全了,补充一点:片上可编程系统
altera的niosII 或者xilinx microblaze
它说的工具的使用,还要看你应用到什么环境下,