完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
模块ADD1(输入[15:0] a,b,c,d,e,f,g,h,输入时钟,输出reg [15:0]和);
reg [15:0] a1,b1,c1,d1,e1,f1,g1,h1; reg clock1; wire [15:0] sum1; 赋值sum1 =((a1 + b1)+(c1 + d1))+((e1 + f1)+(g1 + h1)); 总是@(posedge clock)开始clock1结束总是@(posedge clock1)开始a1 b1 c1 d1 e1 f1 g1 h1 sum endendmodule 模块ADD2(输入[15:0] a,b,c,d,e,f,g,h,输入时钟,输出reg [15:0]和); reg [15:0] a1,b1,c1,d1,e1,f1,g1,h1; wire [15:0] sum1; 赋值sum1 =((a1 + b1)+(c1 + d1))+((e1 + f1)+(g1 + h1)); 总是@(posedge clock)开始a1 b1 c1 d1 e1 f1 g1 h1 sum endendmodule 我已经合成了上述两个模块,并显示它们都具有相同的时钟速度。 我的想法是,当我将模块中的时钟除以2时必须显示双倍速度。 例如,如果模块2是100MHZ,那么模块1是200MHZ。 但那并没有发生 因为我是这个领域的新手。 请帮忙。 |
|
相关推荐
5个回答
|
|
一大堆东西......
首先,不建议在FPGA中使用结构分频器来分频时钟。 FPGA的结构具有专用时钟结构,包括驱动时钟网络的时钟缓冲器以及MMCM和PLL等时钟修改模块。 这些应该用于修改时钟,而不是修改结构中的触发器。 其次,我不确定你在想什么来确定你的设计速度。 如果您只是从合成中查看FMAX,它会说同样的事情 - 驱动加法器的时钟运行速度不能超过某个速度。 它不会“反向传播”到时钟输入。 定时应该以相反的方式完成 - 你告诉综合工具时钟运行的速度有多快,它会尝试使电路快速运行。 基于所请求的逻辑和频率,它可能成功也可能不成功。 频率被指定为工具作为约束 - 在ISE中这些是UCF约束(PERIOD约束),而在VIvado中,这些是XDC约束(create_clock)。 当一个时钟到达一个已知的时钟修改模块(MMCM,PLL,DCM,BUFR)时,这些工具会理解时钟修改 - 如果您已经将其中任何一个编程为除以2,那么它就会理解clock1正在运行1 / 2时钟速率,因此如果你将时钟限制在200MHz,则加法器将有10ns(两个时钟周期)执行。 但是,如果在结构中修改了时钟,它就无法理解两个时钟之间的关系 - 你必须用不同的约束告诉它; 在ISE中,您需要使用FROM TO约束,在VIvado中,您需要一个create_generated_clock来告诉工具FF驱动时钟1的输出是以时钟速率的一半运行的时钟。 我还要指出,由于clock1 |
|
|
|
如果它与ISE 10.1天的情况类似,则需要使用硬件时钟管理(即DCM模块)进行时钟分频。
否则,综合工具不够智能,无法识别clock1只会以输入时钟速度的一半变化,因此另一个模块可能需要两倍的更新时间。 如果您使用DCM模块,则会获得正确的结果。 |
|
|
|
ADD1中的信号clock1将按照您的预期以时钟频率的一半切换。
但是,如果您希望ADD2的时钟输入由clock1驱动,则需要将clock1作为ADD1的输出并将其连接到ADD2的时钟输入端口。 在您的代码中,您发布的clock1在ADD1中生成,并且不会离开ADD1。 我怀疑在实例化ADD1和ADD2的代码中,您已将相同的信号连接到它们的两个时钟输入端口。 这会让你看到它们以相同的频率切换。 大卫 |
|
|
|
一大堆东西......
首先,不建议在FPGA中使用结构分频器来分频时钟。 FPGA的结构具有专用时钟结构,包括驱动时钟网络的时钟缓冲器以及MMCM和PLL等时钟修改模块。 这些应该用于修改时钟,而不是修改结构中的触发器。 其次,我不确定你在想什么来确定你的设计速度。 如果您只是从合成中查看FMAX,它会说同样的事情 - 驱动加法器的时钟运行速度不能超过某个速度。 它不会“反向传播”到时钟输入。 定时应该以相反的方式完成 - 你告诉综合工具时钟运行的速度有多快,它会尝试使电路快速运行。 基于所请求的逻辑和频率,它可能成功也可能不成功。 频率被指定为工具作为约束 - 在ISE中这些是UCF约束(PERIOD约束),而在VIvado中,这些是XDC约束(create_clock)。 当一个时钟到达一个已知的时钟修改模块(MMCM,PLL,DCM,BUFR)时,这些工具会理解时钟修改 - 如果您已经将其中任何一个编程为除以2,那么它就会理解clock1正在运行1 / 2时钟速率,因此如果你将时钟限制在200MHz,则加法器将有10ns(两个时钟周期)执行。 但是,如果在结构中修改了时钟,它就无法理解两个时钟之间的关系 - 你必须用不同的约束告诉它; 在ISE中,您需要使用FROM TO约束,在VIvado中,您需要一个create_generated_clock来告诉工具FF驱动时钟1的输出是以时钟速率的一半运行的时钟。 我还要指出,由于clock1 |
|
|
|
@avrumw谢谢先生...谢谢你的回复......
先生正在进行PAR模拟,这就是为什么我没有初始化clock1。 这个模拟是一个例子来澄清我真正想要问的问题。这就是为什么我没有关注“总和”大小。 无论如何,再次感谢..对我来说真的很有帮助 |
|
|
|
只有小组成员才能发言,加入小组>>
2406 浏览 7 评论
2816 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2285 浏览 9 评论
3366 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2450 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
857浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
567浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
421浏览 1评论
1994浏览 0评论
717浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-13 19:55 , Processed in 1.332521 second(s), Total 56, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号