基于Virtex-5 FPGA的音视频监视系统设计
个PLL/DCM(CMT)可用于PCI Express和千兆位以太网的MAC(SGMII)功能。
再把同步数据映射到含有区域时钟的组,所以把10个音视频信道输入映射到剩下的I/O组。每条视频信道由20条数据线、3个控制信号和3个视频时钟输入组成。同时,每条音频信道由4个数据信号、3个控制信号和1个音频时钟信号组成。这样就满足了32个信号至少使用两个时钟功能引脚的要求。
对于本设计,10个音视频信道使用10个I/O组。我们将视频时钟和音频时钟映射到了时钟功能引脚,以确保有效使用区域时钟缓冲器和I/O时钟缓冲器。根据PCB的要求,我们为音视频信道选择了第5、 6、 13、 17、 18、 19、 20、 22和25组。
对于DDR存储器,设计支持1条32位的数据总线、14条地址线和若干条控制线。我们需要85~90个信号来映射DDR存储器接口。根据PCB的布局,我们使用了I/O组11、23和15来映射DDR的全部I/0信号。由于DDR存储器按照系统时钟工作,所以我们选择将DDR生成的读数据DQS信号映射到具有时钟功能的I/O线。
核生成与IP集成
用CORE Generator生成核并且集成知识产权模块的任务可能很棘手。
Virtex—5支持可以用CORE Generator工具生成的时钟控制模块的各种配置。其中包括若干滤波器时钟抖动PLL、一个具有滤波器时钟抖动功能的PLL-DCM对、一个具有输出双倍数据速率(ODDR)的PLL-DCM对或DCM、一个标准型相移时钟DCM和若干动态时钟切换PLL。
要生成PLL,首先需要了解输入是单端的还是差分的(示例设计中都是单端的)。然后,必须确定时钟抖动是否适宜(在我们的示例中是120皮秒),以及是否使用了全局缓冲器来缓冲所有输出。
每个PLL最多可生成6个不同频率的时钟。在我们的示例中,设计需要4个200MHz的系统时钟和1个19.048MHz或39.096MHz的音频采集时钟。
为了使用ODDR触发器在源同步输出中驱动时钟,我们实现了一个DCM,用于驱动ODDR触发器来实现随路时钟控制。此DCM与我们用来进行内部时钟控制的DCM并行运行。
我们用CORE Generator生成了ASYCNFIFO或BlockRAM,并且用嵌入式微处理器核上的中断逻辑来支持ECC,以完成数据错误检测。
在生成PCIExpress核时,我们必须确保参考时钟具有与PC主板上的PCIExpress插槽输出相同的性能(即100MHz)。另外,我们还需要确定该核需要多少基址寄存器(BAR),以及BAR是存储器映射还是I/O映射。我们为地址解码使用了BAR监视器,这可以帮助生成BAR命中点。
在设计PCIExpress与系统局部总线之间的桥接器时,我们使用了BAR(起存储器或I/O区域芯片选择的作用)来访问存储器映射或I/O映射的寄存器或BlockRAM,确保该核及总线能正确访问所有寄存器或BlockRAM。
如果上述任何点未命中,则主机PC在尝试传递和执行读事务时就不会得到任何响应。主机PC会进入未知的状态,或者产生无法恢复的错误。
对于IP集成,必须为各FPGA分别使用一个时钟复位模块。异步复位必须与每个时钟都同步,无论是全局时钟还是区域时钟。就内部而言,复位信号是相对于特定的时钟而异步有效置位和同步无效置位,而其输出则施加到各时钟所属的特定模块。需要确保已经将所有全局输入时钟连接到用CoreGen生成的 PLL/DCM核。
将区域时钟连接到BUFR/BUFIO。另外,为了避免布局布线工具使用不必要的布线资源,只能仅生成必要的复位信号。需要确保将PLL/DCM的锁存条件传送给外部引脚或配置寄存器。示例中,我们仅将200MHz系统时钟的PLL锁存器连接到了I/O引脚。
因为我们是在用高速源同步输入和输出进行设计,所以Virtex-5的逐位去歪斜功能帮助我们在输入和输出级满足建立和保持要求,逐位去歪斜功能内置于所有I/O模块(10DELAY基元)。对于源同步输入,源同步时钟使用BUFIO或BUFR, 因此会引入附加延迟。为了补偿此延迟,我们通过一个IODELAY实例来驱动数据和时钟输入,该实例是按照具有已知延迟计数的输入延迟模式配置的。我们通过修改延迟计数值来帮助满足输入级的时序要求。
输出级的情况与此相似。因为同步时钟信号是随数据传送,我们需要确保数据和时钟信号的传送方式能满足FPGA或ASIC在另一端的建立和保持要求。对于时钟和数据输出,我们都使用了按照具有已知延迟计数值的输出延迟模式配置的IODELAY实例。
时序考虑事项和约束定义
生成并实现IP之后,下一步是执行时序。我们对所有输入时钟的周期、抖动和输入偏移延迟进行了约束,并且设置了相对于源时钟的所有输出延迟和输入对输出的延迟。然后在用户约束文件(UCF)中建立了时序和布局约束。
我们将所有输入时钟约束为特定频率,并且用以下UCF代码定义了抖动输入:
NETi_clk_200_sTNM_NET=IN_200_
系统 设计 监视 音视频 Virtex-5 FPGA 基于 相关文章:
- Linux嵌入式系统开发平台选型探讨(11-09)
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- VXWORKS内核分析(11-11)
- Linux内核解读入门(11-09)
- linux文件系统基础(02-09)
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)