核生成与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实例。 |