当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]如果符合一些简单的设计原则,采用最新的Xilinx7系列FPGA架构上实现无线通信。Xilinx公司已经创建了典型无线数据路径的设计范例,表明中速级(-2)器件上使用的几乎100%的 s

如果符合一些简单的设计原则,采用最新的Xilinx7系列FPGA架构上实现无线通信。Xilinx公司已经创建了典型无线数据路径的设计范例,表明中速级(-2)器件上使用的几乎100%的 slice资源都支持500 MHz以上的时钟频率。如何真正时序高速设计,需要注意一下几点

影响时钟频率的基本规则

01

DSP48 slice数与时钟速率成反比

一般来说DSP48 slice数与时钟速率成反比。Block RAM资源也按照阶跃函数随时钟速率降低。这在无线电信号处理设计中较常见,其中Block RAM基本上用来按照相对高的采样率存储大量函数运算的系数集合,例如,DDS(直接数字合成器)的正弦/余弦值,峰值抵消脉冲产生器中的CFR (波峰因数衰减)系数,或DPD (数字预失真)模型中的非线性函数抽样。

所以,提供时钟频率能够降低Slice和BlockRAM的资源利用,当时钟频率从368.64转换至491.52 MHz(1.33时钟比) ,按照比例LUT和FF的数据量分别减少了1.34和1.44倍。将时钟速率从245.76放大一倍至491.52 MHz,这些数据减少了1.8倍和1.7倍。这种非线性行为基本上是为执行信号处理控制逻辑,不需要按照时钟频率进行线性放大。

02

信号采样率也影响资源利用率

采样速率为25 Msamples/sec的滤波器带宽在250 MHz运行时与带宽在500 MHz运行时相比所需的逻辑资源略降低两倍。采样速率为500 Msamples/sec的多相实现带宽在250 MHz运行时与带宽在500 MHz时相比,所需的逻辑资源增加两倍。对逻辑资源使用的一阶估计是时钟频率增加x倍相当于逻辑利用率减少0.85至1.1倍

高速设计其他注意事项

01

流水线设计

适当的流水线程序当然是设计高速程序的关键因素,所有的高速设计都推崇流水线设计,在此不做详细描述

02

合理使用BlockRAM

需要构建一个以上Block RAM的存储时,可通过选择最大限度地减少数据复用和资源利用的配置优化速度。举例来说, 存储16位数据的16K存储器最好使用16K × 1位的Block RAM进行构建,而不是1K × 16位的Block RAM.

03

正确使用DSP Slice

DSP slice逻辑本质上可支持较高的时钟速率。逻辑电平与数据路由路径的数量限制了速度,因此在构建高速设计时应在每一个或两个LUT电平上插入一个寄存器

04

合理的层次结构

定义合理的层次结构,按照逻辑分区将设计划分成相应的功能模块。这种层次结构提供便于在层次边界寄存输出的方法,从而限制特定模块的关键路径。这样分析和修复在单一模块中定位的时序路径就很容易。实际上,定位超高时钟速度时,应在层次结构的一些层级使用多个寄存器级,以优化时序并为后端工具留下更多设计空间。好的设计层次结构应该将相关的逻辑集成在一起,使得区域分组和逻辑压缩更为有效;

建立适当的层次结构可在多个模块时获取可重复结果

在模块级应用实现属性,可令代码简单并具可扩展性,该属性可传播该模块中声明的所有信号

05

良好的时钟管理和时钟分配方法

尽可能减少独立主时钟数量

将时钟元件放在设计层次结构的顶层,以便在多个模块共享时钟,这将减少所需的时钟资源,提高时序性能,并降低资源和功率利用率

在不相关时钟域之间使用适当的再同步技术

限制时钟“使能”的使用。实际上这条规则难以实现,原因是在多周期实现中时钟“使能”通常需要评估数据样本或操作符输出。实现有效的降低功耗技术很有效。在任何情况下,必须适当寄存时钟使能信号以删除高扇出 nets

06

复位策略

最小化复位网络的大小

避免全局复位。

优选同步复位,实际上对DSP48逻辑片和Block RAM是强制的。

总结

高速设计时FPGA设计的未来,随着信号处理能力的增强,FPGA高速设计必不可少。如何合理优化FPGA架构设计是我们必须要考虑的问题。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式系统和底层驱动开发中,C语言因其高效性和可控性成为主流选择,但缺乏原生单元测试支持成为开发痛点。本文提出一种基于宏定义和测试用例管理的轻量级单元测试框架方案,通过自定义断言宏和测试注册机制,实现无需外部依赖的嵌入...

关键字: C语言 嵌入式系统 驱动开发

在Linux设备驱动开发中,等待队列(Wait Queue)是实现进程睡眠与唤醒的核心机制,它允许进程在资源不可用时主动放弃CPU,进入可中断睡眠状态,待资源就绪后再被唤醒。本文通过C语言模型解析等待队列的实现原理,结合...

关键字: 驱动开发 C语言 Linux

在数字化时代,电子墨水屏(E-Ink)因其独特的显示效果和低功耗特性,在电子书、智能手写本等领域得到了广泛应用。然而,电子墨水屏的刷新率一直是其发展的瓶颈,如何在保证低功耗的同时提高刷新率,成为了驱动开发中的一个重要课题...

关键字: 电子墨水屏 E-Ink 驱动开发

在Linux驱动开发中,设备树(Device Tree)作为一种描述硬件信息的数据结构,扮演着至关重要的角色。它使得操作系统能够以一种更加灵活和标准化的方式识别和管理硬件设备。然而,在实际的开发过程中,设备树配置错误或理...

关键字: Linux 驱动开发 Debug

在嵌入式系统与设备驱动开发的广阔领域中,时钟、定时器以及延时函数扮演着至关重要的角色。它们不仅是系统时间管理的基石,更是实现高效、精确控制硬件行为的关键工具。本文将深入探讨这三种机制在驱动开发中的具体应用、实现方式及注意...

关键字: 驱动开发 嵌入式系统 延时函数

在Linux内核的广阔领域中,驱动开发是连接硬件与软件、实现设备功能的关键环节。在这个过程中,文件操作函数与I/O操作函数作为两大核心工具,各自扮演着不可或缺的角色。本文旨在深入探讨这两种函数在Linux驱动开发中的区别...

关键字: I/O操作函数 文件操作函数 Linux 驱动开发

史胜辉,在MTK工作了11年,一直在基带芯片的USB驱动领域做开发和验证。从最开始做USB2.0/3.0 IP验证和驱动开发到后面带领团队做上层协议驱动开发,以及跟硬件设计部门合作开发全新的USB硬件加速器。

关键字: 基带芯片 驱动领域 驱动开发

点击上方名片关注我们朱老师推荐语:此岗位为AIoT终身成长大会员同学提供的自己公司的岗位内推,总部在深圳,是一家专业从事闭路电视监控设备、会议摄像机的研发、制造、销售的高科技企业,有学过嵌入式课程或者海思项目的同学,想换...

关键字: 开发工程师 linux驱动 驱动开发

最近在学习MIPI接口的LCD驱动开发与调试,这里我主要用的是MIPI-DSI接口,它学习起来真的是太复杂了,特别是对于我这种很久都没写驱动来说更是头疼,但是头疼归头疼,工作咱们还是要完成的,那就只能硬着头皮往下肝吧!首...

关键字: MIPI 驱动开发 调试

关注、星标嵌入式云IOT技术圈,精彩及时送达来源|  Linux与SoC整理出了6种驱动开发时与设备注册、设备树相关的调试方法,彼此间没有优先级之分,每种方法不一定是最优解,但可以作为一种debug查找问题的手段,快速定...

关键字: 驱动开发
关闭