3

关于投票
Altera vs Xilinx之四 微处理器核特性(转)

转自:http://www.21ic.com/news/html/257/show27815.htm

Altera公司的NiOSⅡ微处理器软核和Xilinx公司的MicroBlaze微处理器软核都是32位哈佛结构的RISC处理器,数据和地址总线是分开的。两种处理器软核都包含有ALU算术逻辑单元、程序计数器、通用寄存器、指令Cache和数据Cache,以及可选的乘法器、除法器等硬件。这两个微处理器软核通常利用片上存储器与高速的系统总线连接,此外又有外设总线。由于是哈佛结构,所以系统总线和外设总线的数据和指令通道是分开的。下表给出了 NiOSⅡ与 MicroBlaze微处理器核特性的比较。

 

NiOS

MicroBlaze

 

 

总线

形式

Avalon Swich

(多种传输方式)

Avalon Chanel TCM

(指令/数据)

                FSL

  LMB总线

OPB总线

自动生成仲裁、地址译码、总线尺寸、等待状态和中断等

快速

标准

经济

指令

数据

指令

数据

4/4

4/0

0/0

可选

可选

可选

必备

流水

快速:6级;标准:5级;经济:无

             3

寻址

范围

Flash Other

Peripheral

SDRAM System

Memory

0x0~0x000400000400

000~800000

800000~1000000

>1000000

32位寻址

范围从x00000000~xFFFFFFFF

内部存储器限制

经济:2M4K

标准:2M4K+ Cache

快速:3M4K+ Cache

分配LMB的地址空间受BRAM数量限制

分配到OPB的每个例示于BRAM外设映射受限制

专用

地址

在“exception location”中编码所有的例外进程

复位(必须在闪存)、例外和断点

例外包括:硬件中断、软件例外

x00000000~ x00000018必为用户写

复位:0x00000000

中断:0x00000008

例外:0x00000010

寄存器

通用(16

R00x00000000

R1:汇编暂存

R2R3:返回值

R4R7:寄存器幅度

R8R15:保存调用

控制(16

R24et 例外暂存

R25bt 断点暂存

R26gp 全局指针

R27sp 堆栈指针

R28fp 帧头指针

R29ea 例外返址

R30ba 断点返址

R31ra 返回地址

专用

R00x00000000

R1:堆栈指针

R2R/O

R13R/W

R14:中断返址

R15:子程序返址

R16:诊断返址

R17:例外返址

R18:保留

易失

R3 R12

非易失

R19R31

 

程序计数器

  PC

主机状态寄存器

  MSR

 

软件工具

NiOSIDE

产生硬件抽象层(HAL)库包括:

器件驱动程序、初始化软件、文件系统、stdio stderr

GNU

交叉编译GCCmb-gccC转汇编

汇编器AS:汇编转目标码

链接器LD:目标码转可执行.elf

链接脚本linker script: 控制链接过程

诊断

无诊断+ 4级诊断

XMD/GNU Debugger-GDB

系统分类: 虚拟仪器
用户分类: FPGA
标签: 无标签
来源: 转贴
发表评论 阅读全文(133) | 回复(0)

1

关于投票
Altera vs Xilinx之三 时序分析(转)

转自:http://www.21ic.com/news/html/257/show27814.htm

FPGA时序分析实用指南

1.       基本时序分析

a)         时钟周期

时钟周期分析是最简单的一个, 也是最容易理解的一个分析, 硬件对应的基本道理是寄存器输出延迟 + 逻辑操作延时 + 连线延迟 + 建立时间 必须小于时钟周期, 上面的式子即定义了最短的时钟周期, 也即信号的最高工作频率. 在一些实际情况下, 上面的式子会有一些变化, 比如考虑时钟的抖动, 不同信号状态下传输的延迟不一样, . 一般情况下, 分析最坏情况即可. 一般情况下, 时钟周期都是作为全局约束添加的. FPGA工作当中, 只需要加一个简单的时钟周期约束即可. 在实际项目当中, 可能会遇到有多个相关时钟, Quartus II, 可以设置时钟之间的相对关系, 然后只需要设置基本的时钟约束即可. 可以在 Assignments à Settings à Timing Analysis Settings à Classical timing analyzer à Individual clock中设置. Quartus比较熟悉的也可以通过.qsf文件设置, 具体语法可以参考原有的设置, 一般情况下, 只要稍作修改就可以了. 直接编辑.qsf文件的好处是对于添加多个类似的约束比较快. ISE, 可以使用 User constraints à create timing constraints, 通过图形界面设置, 也可以直接编辑.ucf文件实现. 同样, 具体语法可以参考现成的文件.

b)         输入setup

输入数据的setup要求是初学者经常搞糊涂的一个约束. 其实QuartusISE里边对输入setup的定义都非常清晰, 也即, 从外部来看, 只要满足时钟和数据一定的关系, FPGA内部可以保证不会出现亚稳态现象(即采在数据的沿上). 下面这幅图给出了Tsu的定义.

 

                                                       点击看大图
 

Quartus, 这个参数是Tsu, 其准确定义如下: The length of time for which data that feeds a register via its data or enable input(s) must be present at an input pin before the clock signal that clocks the register is asserted at the clock pin. 具体计算公式如下: tSU = + - . 确切的说, 这个定义应该是从外部看到的FPGA的时序要求. 比如Tsu 0.5ns, 那么只要数据在0.5ns之前建立, 数据送入FPGA应该不会出现问题. Tsu可以是全局约束, 也可以是局部约束. 全局约束可以通过Assignments à Settings à Timing Analysis Settings à Classical timing analyzer中的Tsu来设置, 局部约束可以通过Assignment Editor来添加.

 

ISE, 叫做Offset In Before或者Pad to setup, 准确定义如下: The minimum time for input signals to be stable before they can be sampled correctly on the next active clock edge. 具体计算公式为: Slack = Requirement - (Data Path - Clock Path + uncertainty)

举个例子来说, 如果时序报告给出数值为4.468ns, 那么这意味着数据必须在时钟沿之前4.468ns建立, 换而言之, 只要外部送入数据在4.468ns之前建立, FPGA内部采用不会出问题. 具体的计算方法如同Altera. Offset in Before可以是全局约束, 也可以局部约束, Constraint Editor可以设置.

 

在实际使用过程中, 通常大部分情况下, 数据和时钟都是每个周期有效. 因此, 数据到底在哪个时钟周期被寄存器捕获其实并不重要, 关键是所有的相关数据(比如一个总线的数据[7:0])必须保证在一个时钟周期内采样. 因此, 如何避开会造成亚稳态以及如何使得相关的数据的Tsu尽量保持一致, 是解决数据输入FPGA的时序问题的关键. 比如, 假定输入FPGA的数据在时钟沿的1ns处发生变化, 那么Tsu应当避开这个1ns附近这个区域. 只要按照上述原则操作, 时序裕量都会是够的. 在一些特殊情况下, 比如有使能信号传递, 或者是数据的时钟周期必须严格对其, 或者是时钟抖动特别大, 则需要更加仔细的考虑时序约束.

c)         Tco

TcoClock to output的延时. 道理如同Tsu, 只不过是换个角度看问题, 即作为驱动源来看待的问题. 也是从外部观察的. 下面这幅图给出了Tco的定义

 

                          点击看大图 

Quartus, 这个参数是Tco, 其准确定义如下: The maximum time required to obtain a valid output at an output pin that is fed by a register after a clock signal transition on an input pin that clocks the register. 意思是相对于输入时钟管脚而言, 从寄存器输出的数据(到达pin)最长多长时间可以稳定. 具体的计算公式如下:

tCO = + + . Tco可以是局部约束, 也可以是全局约束. 具体设置方法和Tsu类似.

 

ISE, 这个参数是Offset out after或者称为Clock to Pad, 其准确定义如下: The clock-to-output, or OFFSET OUT, delay of the FPGA is the total delay encountered from the time a clock edge arrives at the input pin of the device to the time data becomes valid at the output pin of the device. 具体计算公式为Slack = Requirement – (Clock Arrival + Clock Path + Data Path + Clock Uncertainty). Offset Out After可以为全局约束或者是局部约束, constraint editor工具或者直接编辑UCF文件均可设置. 下面的一个报告给出了一个示例:

OFFSET = OUT 4 ns AFTER COMP "ClkIn";
Largest slack: 0.667 ns; Smallest slack: 0.667 ns; Relative Skew: 0.0 ns;
+-----------------------------------------------+-------------+-------------+
|PAD                                            |    Slack    |Relative Skew|
+-----------------------------------------------+-------------+-------------+
|DataOut<0>                                     |        0.667|        0.0 |
+-----------------------------------------------+-------------+-------------+

即要求的Tco4ns, 实际的Tco3.333ns, 寄存器输出的最大延迟不超过3.33ns.

 在实际应用中, 还需考虑其他的一些因素, 比如时钟布线的策略, 比如星形结构, Daisy Chain结构等等. 不同的策略分析的方法有所差别, 具体的分析方法将在下篇有关FPGA芯片间通信(或着板间通信)的时序分析介绍.

系统分类: 虚拟仪器
用户分类: FPGA
标签: 无标签
来源: 转贴
发表评论 阅读全文(176) | 回复(0)

1

关于投票
Altera vs Xilinx之二 DSP速度(转)

转自:http://www.21ic.com/news/html/257/show27813.htm

 

 

大家知道,高端的FPGA中都有为数不少的DSP块,里边主要包括一些18X18的乘法器,以及加法器等单元,相邻的DSP往往可以通过专用的连线互连,从而实现滤波器的级联设计,提高滤波器的运行速度。XilinxAlteraDSP块有所差别,XilinxDSP模块可以做18X18乘法,18X18乘累加运算,18X18乘加运算等,其中累加器可以到48位宽,厂家标称的最高速度位500MHzAlteraDSP块可以分解成为8X8, 16X16, 32X32块,可以完成乘法,乘累加,乘加等运算,厂家标称的最高速度为450MHz

 

下面的表格给出了一些综合结果。

 

1  转置形式的FI