FPGA知识汇集-时钟系统的移植
创始人
2024-05-09 02:41:28
0

       ASIC 和FPGA芯片的内核之间最大的不同莫过于时钟结构。ASIC设计需要采用诸如时钟树综合、时钟延迟匹配等方式对整个时钟结构进行处理,但是 FPGA设计则完全不必。因为后者有内建的时钟资源:锁相环、频率综合器、移相器,以及具有低延迟特性的专用时钟布线网络。ASIC芯片的时钟设计具有更大的灵活性,但FPGA芯片内建的时钟资源则能简化设计。正是因为两者的不同,带来了移植上的诸多麻烦。

       ASIC设计中的时钟树结构,需要映射到FPGA芯片的专用时钟资源中,以及原型验证平台的不同FPGA芯片中。

       一颗FPGA芯片的专用时钟资源是有限的,以Virtex-6LX760芯片也只有18个 MMCM时钟资源模块。这对于大部分FPGA设计来讲已经足够了,但是对于具有大量时钟树资源的ASIC设计来讲,往往还是不够使用。FPGA芯片的另外一个限制是同一个时钟域所能容纳的全局时钟资源有限。

  • 门控时钟

        在ASIC设计中,常常采用门控时钟技术来降低整个芯片的低耗。图1显示了使用门控时钟技术的电路:时钟clk通过信号en1和en2进入组合逻辑后,驱动后续的两个寄存器。

        从上述电路可以看出,当信号en1和en2的某种组合关系使得clk信号无法向后传递时,两个寄存器将停止工作,因此也不会消费功耗。

       但是如果将ASIC设计中的门控时钟电路直接映射到FPGA芯片中,则会带来整体的性能甚至稳定性的下降。其根本原因在于FPGA芯片采用的是专用的低延迟时钟网络,只有整个时钟系统运行在该网络时,才能达到最高的性能。而通过组合逻辑的门控时钟信号运行在普通的布线资源上,这将大大的降低其性能,甚至带来建立保持时间的问题。因此必须将门控时钟通过某种方式映射到FPGA芯片的专用时钟资源上,而不是简单得代码移植。

  • 门控时钟的转换

        对门控时钟进行转换,就是要把时钟网络上的组合逻辑“删掉”,将所有时序逻辑的时钟驱动端口直接链接在FPGA芯片的专用时钟资源上。

       其中一个方法就是将组合逻辑从时钟通路‘搬移’到数据通路上,这种方式可以通过图2中的多路选择器来实现。

设计工具对门控时钟的转换

       Synopsys公司的Synplify Pro/Premier是高性能FPGA逻辑综合工具,可以自动地进行门控时钟转换。当然转换是有一定条件的:必须是带有组合逻辑的门控时钟结构;时钟必须要有确定的约束条件;门控时钟所驱动的时序逻辑电路不能是黑盒子。

       前面提到的门控时钟转换电路都比较简单,在实际的设计中,门控时钟的组合逻辑也许会很复杂,所驱动的后续电路不仅仅有寄存器,还有 BRAM和DSP模块等时序逻辑。因此即便是Synplify pro/Premier这样的高性能综合器也可能有无法自动处理的电路结构,仍然需要手动修改。

时刻使能

       对于ASIC设计中的时钟使能电路,没有必要做任何的转换工作。因此FPGA芯片内部的各种时序逻辑电路(包括寄存器、BRAM和DSP48模块)本身就带有时钟使能输入端口,因此综合工具可以做到完美的自动映射。

时钟管理单元的映射

       ASIC设计中的大部分时钟管理模块(如PLL),仅仅需要对端口的细微修改就可以直接映射到FPGA对应的资源上。Xilinx的FPGA芯片提供了丰富的可配置时钟资源:DCM,PLL,MMCM,BUFG/BUFR,BUFGMUX,等等。关于Xilinx FPGA芯片时钟资源的详细讨论,感兴趣的可持续关注公众号!!

更多有趣的话题请看链接:

FPGA知识汇集-FPGA项目开发包含那些任务?

FPGA知识汇集--FPGA结构(1)

FPGA的应用

FPGA知识汇集-在命令行模式下使用Xilinx工具

FPGA知识汇集-ISE的这些有用的工具您知道吗?

FPGA知识汇集-FPGA设计开发需要熟悉哪些EDA工具呢?

FPGA知识汇集-值得收藏的FPGA代码命名规范?

FPGA 知识汇集--Linux下ISE的环境变量设置

FPGA知识汇集-值得收藏的Verilog代码风格1

FPGA知识汇集-值得收藏的Verilog代码风格2

FPGA知识汇集-编写可综合代码(RTL)需要注意的规则总结

FPGA知识汇集-Verilog和VHDL的混合使用

FPGA知识汇集-关于Xilinx 工具报告

FPGA知识汇集-例化与推译

硬件仿真加速器与原型验证平台

  FPGA知识汇集-ASIC向FPGA的移植

 

 

相关内容

热门资讯

MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
操作系统面试题(史上最全、持续... 尼恩面试宝典专题40:操作系统面试题(史上最全、持续更新)...
Android---Banne... 轮播图是一种很常见的UI。Banner框架能够帮助我们快速开发,完成首页轮播图效果的需...
python -- PyQt5... 控件2 本章我们继续介绍PyQt5控件。这次的有 QPixmap , QLineEdi...
Mysql SQL优化跟踪来看... 背景 使用索引字段进行筛选数据时,explain查询语句发现MySQL居然没有使用索...
UG 6.0软件安装教程 UG 6.0软件安装教程 软件简介: UG 6.0是目前网络最好用、使用最为广泛的大型...
HTML静态网页作业——关于我... 家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、ma...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
NoSQL数据库之Redis2 Redis 事务 事务的基础概念 关于事务最常见的例子就是银行转账,A 账户给 B 账...
Spring Security... 前言 在 Spring Security 中,默认的登陆方式是以表单形式进行提交参数的...