2、FPGA设计-时钟域的逻辑设计

1、PLL的时钟管理

Altera所有的FPGA内部都集成了模拟的PLL模块。
(1)对PLL的输入时钟约束:
create_ clock - period 10.000 - name clk_in - waveform {0 5} [ get_ ports clk_in)]
(2)对PLL所有的输出时钟进行约束:
derive_ pll_ clocks
(3)设置PLL两个输出时钟之间无数据路径
set_ false_ path - from [ get_ clocks { inst | altpll_ component | pll | clk[2] }] - to \ [ get_ clocks { inst | altpll_ component | pll | clk[0]}]
(4)PLL的输出时钟进行多周期路径约束
set_ multicycle_ path - from [ get_ clocks { inst I altpll_ component | pll | clk[0]}] - to \ [ get_clocks { inst | altpll_ component | pll | clk[2]}] - end - setup 4
set_ multicycle_ path - from [get_ clocks { inst | altpll_ component I pll | clk[0]}] - to \ [get_clocks { inst | altpll_ component | pll | clk[2]}] - end - hold 3

2、单比特信号跨时钟域

跨时钟域(Clock Domain Crossing,CDC):设计中存在两个及其以上的异步时钟域。

2.1、双触发电路(适用于慢时钟域到快时钟域)

在这里插入图片描述采用两个D触发器进行打两拍处理,设计原则
在这里插入图片描述

3、多比特信号跨时钟域

当时钟域之间传递多比特数据时,同步多个信号到一个时钟时将可能偶发数据变化歪斜(Skew)。
避免策略:
在这里插入图片描述

3.1、多比特信号融合

将跨时钟域的多比特信号融合到单比特跨时钟域信号。

3.2、多周期路径规划

在传输非同步数据到接收时钟域上配上一个同步控制信号,数据和控制信号被同时发送到接收时钟域,同时控制信号在接收时钟域使用两级寄存器同步到接收时钟域。

3.3、异步FIFO处理

采用格雷码在异步时钟域之间传递多比特数值。
在这里插入图片描述

4、门控与行波时钟

门控时钟:任何由非寄存器逻辑功能驱动的时钟。
行波时钟:任何由寄存器逻辑功能驱动的时钟。

4.1、衍生时钟处理原则

(1)尽量不要使用行波和门控时钟,使用时钟使能和PLL。
(2)设计中不要有跨派生时钟的同步数据。
在这里插入图片描述本文为读书笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值