完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,
我想多闹钟。 实际上我使用50Mhz时钟频率,我想把它作为100Mhz时钟频率。 没有PLL,DCM,是否有任何其他可能性来实现使用vhdl编程逻辑? 我知道,如何将时钟分频如80Mhz时钟分频为40Mhz时钟频率 如果(rising_edge(I_CLK_80MHZ)),然后 CLK_40MHZ |
|
相关推荐
7个回答
|
|
嗨,
试试这个例子 图书馆; 使用ieee.std_logic_1164.all; 实体F2是端口(fi:in std_logic; - 输入信号fi f0:out std_logic); - fo = 2 * fi end F2; F2的架构行为是信号q,clk:std_logic; 如果rising_edge(clk)然后q结束,则开始进程(fi)开始; clk f0结束过程; 最终行为; 问候 普利文 -------------------------------------------------- -----------------------不要忘记回答,kudo,并接受为解决方案.------------- -------------------------------------------------- ---------- |
|
|
|
嗨,
感谢您的邮件.. 它不工作......那个程序中的q,clk默认值是什么..但我改变了所有可能性输入并运行它..它不工作.... 是否可以使用vhdl编程逻辑制作时钟乘数? 请告诉我 感谢致敬, M.Subash |
|
|
|
Hi Subash,可以使用触发器划分时钟频率。
但是,我认为可以通过纯数字电路执行可合成时钟倍增。但是如果可以实现输入频率的两种变体即可。 Fi和90度相移版本的Fi。上面给出的hdl代码将起作用,如果你使用fi_phase90代替fi作为xor门的输入,如下图所示clk其中fi_phase90是90度相移版本的fis时钟门控不是 一种健康的做法,理想的做法是将PLL / MMCM用于输入频率的分频和倍增。 ThanksBharath ------------------------------------------------- - --------------------------------------------请标记答案 如果提供的信息可以解决您的疑问/问题,请“接受为解决方案”。给予您认为有用的帖子。感谢.------------------------ -------------------------- ----------- ------------ -------------------- |
|
|
|
pvenugo写道:
嗨, 试试这个例子 图书馆; 使用ieee.std_logic_1164.all; 实体F2是端口(fi:in std_logic; - 输入信号fi f0:out std_logic); - fo = 2 * fi end F2; F2的架构行为是信号q,clk:std_logic; 如果rising_edge(clk)然后q结束,则开始进程(fi)开始; clk f0结束过程; 最终行为; 问候 普利文 我认为你的时钟进程应该由“fi”的上升沿而不是clk的上升沿触发。 我假设这个想法是使用时钟来Q(加上路由)延迟来产生延迟的输入时钟信号。 正如所写的那样,我看不出这个过程会如何触发(是什么让“clk”首先有一个上升的边缘)。 怎么样的: 库ieee;使用ieee.std_logic_1164.all;实体CLK_MULT2 isport(clk_in:在std_logic中; - 输入时钟信号在1/2期望频率clk_out:out std_logic - 输出时钟在所需频率);结束CLK_MULT2; CLK_MULT2的架构行为 issignal q_rise:std_logic:='0'; - 时钟 - > Q时钟信号上升沿后的延迟q_fall:std_logic:='0'; - 时钟 - > Q信号在时钟信号下降沿之后延迟clk_dly:std_logic; - 重建的延迟时钟 - 用于模拟的1 ns延迟将时钟建模为Q和LUT延迟作为单位延迟 - q_rise在每个输入时钟上升切换到上升边缘:进程(clk_in)如果rising_edge(clk_in)则开始,然后q_rise结束if;结束 进程; - q_fall切换到匹配q_rise在每个输入时钟fallin edgefalling:process(clk_in)开始如果falling_edge(clk_in)然后q_fall结束if;结束进程; - q_fall的XOR和q_fall在一些delayclk_dly之后重建输入时钟 - 输入时钟和延迟时钟脉冲的XOR是输入频率的两倍.clk_out结束行为; - Gabor |
|
|
|
你好@ gszakacs
我认为what@subash05.1989正在寻找一种可合成的RTL设计,将时钟频率乘以2(最好是占空比为50%或至少是一个确定的占空比)。使用原始延迟和路由延迟产生延迟时钟信号,如下所述。 该方法不仅会给出不确定的占空比,而且占空比也将取决于频率。 如果我错了,请纠正我。 ThanksBharath ------------------------------------------------- - --------------------------------------------请标记答案 如果提供的信息可以解决您的疑问/问题,请“接受为解决方案”。给予您认为有用的帖子。感谢.------------------------ -------------------------- ----------- ------------ -------------------- |
|
|
|
当然,LUT延迟并不理想,但只要脉冲序列从每个输入时钟边沿具有相当一致的延迟和足够的脉冲宽度以满足时钟高(或低)时间的最小元件要求,那么它就可以工作。
我猜他没有PLL或DCM(或MMCM ......)这样做的原因是他的时钟资源已用完或输入时钟不适合时钟管理磁贴结构(例如它是 不经常跑)。 我使用Spartan 6在ISE中使用了这个,并且发现如果我在LUT2中实现每个XOR然后将LUT2彼此相距一定距离,我可以得到合理的脉冲宽度。 - Gabor |
|
|
|
HI@subash05.1989
正如您现在可能已经理解的那样,使用数字逻辑将输入时钟频率乘以2背后的基本思想是将输入时钟频率与其自身的延迟版本进行异或。 (理想延迟将是输入时钟周期的1/4)你实现的延迟量和输入时钟周期一起决定了所获得的输出时钟的占空比。正如Gabor所提到的那样,要实现一个确定性的延迟并且有一个确定的任务 输出频率的周期,它更好地定位设备并修复由您使用的延迟逻辑推断的LUT的位置。 ThanksBharath ------------------------------------------------- - --------------------------------------------请标记答案 如果提供的信息可以解决您的疑问/问题,请“接受为解决方案”。给予您认为有用的帖子。感谢.------------------------ -------------------------- ----------- ------------ -------------------- |
|
|
|
只有小组成员才能发言,加入小组>>
2291 浏览 7 评论
2701 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2186 浏览 9 评论
3262 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2330 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
598浏览 1评论
1662浏览 1评论
159浏览 1评论
在使用xc5vsx95T时JTAG扫片不成功,测量TDO无信号输出
2312浏览 0评论
631浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-1 16:19 , Processed in 1.266206 second(s), Total 89, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191