【问题标题】:how to create a clocksignal for my fpga如何为我的 fpga 创建时钟信号
【发布时间】:2013-06-09 17:52:13
【问题描述】:

我的问题很简单,因为我的 Xilinx sp605 板上有一个 200MHZ 时钟,而且由于我的设计只能在 100Mhz 上运行,我希望输入时钟为 100Mhz,所以要实现这一点:我是否只需要写时钟值在 UCF 文件中,就是这样或 我必须创建一个需要 200Mhz 的 VHDL 组件并将其设为 100Mhz 吗?

这里是 mu ucf 文件:

#  Spartan-6 SP605 Evaluation Platform
Net fpga_0_RS232_Uart_1_RX_pin LOC = H17  |IOSTANDARD=LVCMOS25;
Net fpga_0_RS232_Uart_1_TX_pin LOC = B21  |IOSTANDARD=LVCMOS25;
Net fpga_0_DIP_Switches_4Bit_GPIO_IO_pin<0> LOC=C18  |IOSTANDARD=LVCMOS25;
Net fpga_0_DIP_Switches_4Bit_GPIO_IO_pin<1> LOC=Y6  |IOSTANDARD=LVCMOS25;
Net fpga_0_DIP_Switches_4Bit_GPIO_IO_pin<2> LOC=W6  |IOSTANDARD=LVCMOS25;
Net fpga_0_DIP_Switches_4Bit_GPIO_IO_pin<3> LOC=E4  |IOSTANDARD=LVCMOS15;
NET LED<0> LOC = "D17"; ## 2 on DS3 LED
NET LED<1> LOC = "AB4"; ## 2 on DS4 LED
NET LED<2> LOC = "D21"; ## 2 on DS5 LED
NET LED<3> LOC = "W15"; ## 2 on DS6 LED
Net fpga_0_Ethernet_MAC_PHY_tx_clk_pin LOC=L20  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_rx_clk_pin LOC=P20  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_crs_pin LOC=N15  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_dv_pin LOC=T22  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_rx_data_pin<0> LOC=P19  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_rx_data_pin<1> LOC=Y22  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_rx_data_pin<2> LOC=Y21  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_rx_data_pin<3> LOC=W22  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_col_pin LOC=M16  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_rx_er_pin LOC=U20  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_rst_n_pin LOC=J22  |IOSTANDARD = LVCMOS25  |TIG;
Net fpga_0_Ethernet_MAC_PHY_tx_en_pin LOC=T8  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_tx_data_pin<0> LOC=U10  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_tx_data_pin<1> LOC=T10  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_tx_data_pin<2> LOC=AB8  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_tx_data_pin<3> LOC=AA8  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_MDC_pin LOC=R19  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_PHY_MDIO_pin LOC=V20  |IOSTANDARD = LVCMOS25;
Net fpga_0_Ethernet_MAC_MDINT_pin LOC=J20  |IOSTANDARD = LVCMOS25  |TIG;
Net fpga_0_MCB_DDR3_mcbx_dram_addr_pin<0> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_addr_pin<1> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_addr_pin<2> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_addr_pin<3> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_addr_pin<4> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_addr_pin<5> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_addr_pin<6> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_addr_pin<7> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_addr_pin<8> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_addr_pin<9> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_addr_pin<10> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_addr_pin<11> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_addr_pin<12> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_ba_pin<0> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_ba_pin<1> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_ba_pin<2> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_ras_n_pin IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_cas_n_pin IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_we_n_pin IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_cke_pin IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_clk_pin IOSTANDARD = DIFF_SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_clk_n_pin IOSTANDARD = DIFF_SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<0> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<1> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<2> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<3> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<4> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<5> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<6> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<7> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<8> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<9> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<10> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<11> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<12> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<13> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<14> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dq_pin<15> IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dqs_pin IOSTANDARD = DIFF_SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_dqs_n_pin IOSTANDARD = DIFF_SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_udqs_pin IOSTANDARD = DIFF_SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_udqs_n_pin IOSTANDARD = DIFF_SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_udm_pin IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_ldm_pin IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_odt_pin IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_mcbx_dram_ddr3_rst_pin IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_rzq_pin IOSTANDARD = SSTL15_II;
Net fpga_0_MCB_DDR3_zio_pin IOSTANDARD = SSTL15_II;
Net fpga_0_clk_1_sys_clk_p_pin TNM_NET = sys_clk_pin;
TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 200000 kHz;
Net fpga_0_clk_1_sys_clk_p_pin LOC = K21  |IOSTANDARD=LVDS_25  |DIFF_TERM = TRUE;
Net fpga_0_clk_1_sys_clk_n_pin LOC = K22  |IOSTANDARD=LVDS_25  |DIFF_TERM = TRUE;
Net fpga_0_rst_1_sys_rst_pin TIG;
Net fpga_0_rst_1_sys_rst_pin LOC = H8  |IOSTANDARD=LVCMOS15  |PULLUP  |TIG;

LOC K21 和 k22 已被 microblaze 占用,我无法使用它们,问题是即使在文档中我也无法获得全局时钟引脚和它们的频率(顺便说一句,我指的是这个文档(Xilinx hardware desgin)以及为什么那个 EDK ucf 文件不包含 DDR3 引脚的 LOC ??它似乎工作正常,fpga 自己解决了吗!?

编辑: 好的,这里这张图片来自提前计划 gui,它现在显示了我的 spartan 6 中的所有 I/O 端口,因为你看到所有六边形都是 GCLK(全局时钟),可以用作我设计的时钟,问题是我不知道每个时钟的频率是多少!!

【问题讨论】:

  • 该文档中的 SP605 Master UCF 显示了所有 DDR3 引脚,名为 MEM1_* 及其 LOC。
  • hmm,所以 edk 创建没有 ddr3 引脚的 ucf 文件是一个错误,但又是如何获取全局时钟的引脚及其频率
  • @Omarshaaban - 你是什么意思“问题是我不知道每个时钟的频率是多少!!”?查看电路板的原理图,看看那里有什么连接。根据电路板的用户指南,有几个时钟网络被路由出去。两个去一个振荡器和一个用于振荡器的插座(随意将任何你想要的东西倒入插座)。否则,您有 SMA 连接器。再次:xilinx.com/support/documentation/boards_and_kits/ug526.pdf。第 28 页。

标签: vhdl clock xilinx


【解决方案1】:

您不应该编写自己的时钟分频器。您应该使用可以实际路由到全局时钟网络的内部 DCM。一个简单的方法是使用 coregen 工具,它允许您使用模板来实例化 DCM。您可以在合理范围内将时钟信号除、乘、相移等几乎任何东西。有关详细信息,请参阅数据表。如果您只是对时钟进行分频(例如使用触发器),那么您的时钟偏差将非常严重,并且很可能(几乎可以保证)会遇到严重的时序问题。您想利用 fpga 的时钟路由网络。

【讨论】:

  • DCM 可以低至 100kHz 范围吗?诚实的问题,从未测试过。编辑:哦,这个问题被编辑为 100MHz,所以现在更像是一个学术问题 :)
  • 所有我想知道的是全局引脚的位置和它们的频率......就是时钟资源文档没有说明任何内容,都是理论上的讨论......跨度>
  • @Omarshaaban pdf I linked in my answer 的第 28 页提供了有关该板上哪些引脚具有哪个时钟的信息。
  • @Joachim Isaksson 是的,这些是 3 个可用的输入时钟信号,但我想要全局时钟信号引脚的位置和频率,Spartan 6 有 16 个全局时钟可以使用并调整为我认为的 clk 频率。 ....我可以看到他们中的大多数人都在使用提前计划 gui,但我仍在研究如何使用它们
  • @Omarshaaban 查看设备的数据表。都在那里列出来。您从xilinx.com/support/documentation/data_sheets/ds160.pdf 开始。很明显,您可以单击时钟资源数据表的链接。然后在 Joachim 和我发布的链接中,您转到第 25 页,那里有您想要查找的所有信息。它不是——正如你所说——所有的理论讨论。第 25 页:xilinx.com/support/documentation/user_guides/ug382.pdf
【解决方案2】:

您必须编写一个预分频器来将时钟除以 2。(或者可能是 2000,因为 SP605 时钟的频率是 200MHz,而不是 200kHz

UCF 文件中的值仅告诉 ISE 您现有外部时钟的频率,它不会自动为您生成该频率。

【讨论】:

  • 所以使用时间限制和选择频率什么都不做......嗯,很奇怪,因为我只有 1 200khz 时钟
  • @Omarshaaban SP605 上似乎有一些时钟选项,我不是该板的专家,所以您最好查看this manual 的第 7 章。似乎可以选择将自己的时钟源放入套接字中。
  • 实际上,当我手动输入 ucf 文件或使用时间限制时,我想要一个 10MHZ 的时钟,例如它会使全局时钟线之一产生该频率,这是真的吗?顺便说一句,通过搜索我知道 k21 和 k22 是 200mhz 时钟的 LOC,但在手册中根本没有发言权,我的意思是当它甚至没有告诉你时钟的位置时,它怎么叫手册?
  • 否 - 当您在 UCF 中设置时钟频率时,您是在告诉工具您将提供的频率;这些工具只是确保设计足够快以达到该速度(或报告他们不能)。您必须生成正确的时钟。您可以使用诸如 DCM(数字时钟管理器)之类的模块进行转换。 200MHz 到 100MHz(不知道 kHz!)
  • 布赖恩·德拉蒙德是正确的。你为什么要使用 SP605 来运行 100 kHz 的东西?什么东西跑得这么慢?我的猜测是,您的意思要么是 MHz,要么您应该使用更快的时钟(至少在 spartan 3 上的 DCM 可以做到最低频率为几 MHz)和启用逻辑。用户指南:xilinx.com/support/documentation/boards_and_kits/ug526.pdf 包含您询问的所有信息,包括 FPGA 上的时钟源和引脚位置。第 29 页标题为“时钟生成”。有关约束的信息,您应该阅读约束指南。
猜你喜欢
  • 2019-06-16
  • 2020-07-28
  • 2020-12-31
  • 1970-01-01
  • 2020-02-29
  • 2019-02-09
  • 2022-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多