完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,
我有一个Spartan-6 FPGA,我将它用于音频应用设计。 当我在ISE中合成并实现设计时,没有警告或错误。 但是,当我运行“生成编程文件”时,有两个警告我不明白: 警告:PhysDesignRules:372 - 门控时钟。 时钟网 I2S_converter_s2p_1 / I2S_demux_1 / l_tick由组合引脚提供。 这不是好的设计实践。 使用CE引脚控制负载 数据进入触发器。 警告:PhysDesignRules:372 - 门控时钟。 时钟网 I2S_converter_s2p_1 / I2S_demux_1 / r_tick由组合引脚提供。 这不是好的设计实践。 使用CE引脚控制负载 数据进入触发器。 在设计中,我以下列方式创建一个滴答信号: --bit_clk计数器寄存器 进程(bit_clk,reset,go_signal) 开始 if(reset ='1')然后 r_reg_bit'0'); elsif(bit_clk'event和bit_clk ='0'和go_signal ='1')然后 r_reg_bit: r_tick: 进程(reset,lr_clk,l_tick,data_p,r_reg_l) 开始 如果reset ='1'那么 r_reg_l'0'); elsif(l_tick'event和l_tick ='1')然后 r_reg_l? 谢谢。 |
|
相关推荐
6个回答
|
|
我不是VHDL用户,但我已经看到足够的VHDL代码来询问以下问题。
joelby写道: 要避免错误,请使用r_tick作为时钟使能而不是时钟: 处理(lr_clk) 开始 if(reset ='1')然后 r_reg_r'0'); elsif(r_tick ='1')然后 r_reg_r 万一; 结束过程; 请注意,您可能需要确保r_tick仅在单个lr_clk周期内很高才能实现相同的行为。 我相信(请纠正我,如果我错了)正面触发的D寄存器与同步复位和时钟使能的正确推断如下: 处理(lr_clk) 开始 if(rising_edge(lr_clk))然后 if(reset ='1')然后 r_reg_r'0'); elsif(r_tick ='1')然后 r_reg_r 万一; 万一; 结束过程; 关于joelby写的其他一切,我同意他的分析和建议。 此外,对于用户9758327,请注意,时钟进程不应包括除过程灵敏度列表中的时钟和(如果使用)异步设置/重置之外的任何内容。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 在原帖中查看解决方案 |
|
|
|
这些错误是相当不言自明的:
警告:PhysDesignRules:372 - 门控时钟。 时钟网 I2S_converter_s2p_1 / I2S_demux_1 / r_tick由组合引脚提供。 这不是好的设计实践。 使用CE引脚控制负载 数据进入触发器。 然后在这个勾号中我创建两个单独的刻度: r_tick l_tick用于人字拖: 进程(reset,lr_clk,r_tick,data_p,r_reg_r) 开始 如果reset ='1'那么 r_reg_r'0'); elsif(r_tick'event和r_tick ='1')然后 r_reg_r 要避免错误,请使用r_tick作为时钟使能而不是时钟: 处理(lr_clk) 开始 if(reset ='1')然后 r_reg_r'0'); elsif(r_tick ='1')然后 r_reg_r |
|
|
|
我不是VHDL用户,但我已经看到足够的VHDL代码来询问以下问题。
joelby写道: 要避免错误,请使用r_tick作为时钟使能而不是时钟: 处理(lr_clk) 开始 if(reset ='1')然后 r_reg_r'0'); elsif(r_tick ='1')然后 r_reg_r 万一; 结束过程; 请注意,您可能需要确保r_tick仅在单个lr_clk周期内很高才能实现相同的行为。 我相信(请纠正我,如果我错了)正面触发的D寄存器与同步复位和时钟使能的正确推断如下: 处理(lr_clk) 开始 if(rising_edge(lr_clk))然后 if(reset ='1')然后 r_reg_r'0'); elsif(r_tick ='1')然后 r_reg_r 万一; 万一; 结束过程; 关于joelby写的其他一切,我同意他的分析和建议。 此外,对于用户9758327,请注意,时钟进程不应包括除过程灵敏度列表中的时钟和(如果使用)异步设置/重置之外的任何内容。 - 鲍勃埃尔金德 签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。 阅读手册或用户指南。 你读过手册了吗? 你能找到手册吗?2。 搜索论坛(并搜索网页)以寻找类似的主题。 不要在多个论坛上发布相同的问题。 不要在别人的主题上发布新主题或问题,开始新的主题!5。 学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。 提供有用的详细信息(请与网页,数据表链接).7。 您的代码中的评论不需要支付额外费用。 我没有支付论坛帖子的费用。 如果我写一篇好文章,那么我一无所获。 |
|
|
|
|
|
|
|
9758327写道:
--bit_clk计数器寄存器 进程(bit_clk,reset,go_signal) 开始 if(reset ='1')然后 r_reg_bit'0'); elsif(bit_clk'event和bit_clk ='0'和go_signal ='1')然后 r_reg_bit 万一; 结束过程; 在时钟边沿检测器逻辑中添加和go_signal ='1'会为时钟添加一个门。 如果你使用更好的成语时钟边缘,即rising_edge()函数,这将更加明显: 如果rising_edge(clk)和go_signal ='1'那么 显然,当go_signal为false时,时钟边缘被忽略 - 这就是门控时钟的定义。 go_signal应该用作时钟启用,如下: bit_clk_counter:process(bit_clk,reset)是 - 总是命名你的进程! 开始 如果reset ='1'那么 r_reg_bit'0'); elsif rising_edge(bit_clk)然后 isGo:如果go_signal ='1'那么 r_reg_bit 结束如果是Go; 万一; 结束进程bit_clk_counter; (请注意,上面的go_signal不在敏感度列表中。) 不同之处在于上述代码推断出启用时钟的触发器。 更多。 你的下一个代码,即计数器,太复杂了,它应该在时钟进程中。 你为什么这样做? 它看起来有点像双进程状态机故障! --bit_clk计数器下一状态逻辑 r_next_bit'0')当r_reg_bit =“11111”时 std_logic_vector(unsigned(r_reg_bit)+ 1); - 蜱 lr_tick_1_bit_signal 然后在这个勾号中我创建两个单独的刻度: r_tick l_tick 我使用这些刻度作为触发器的时钟输入: 进程(reset,lr_clk,l_tick,data_p,r_reg_l) 开始 如果reset ='1'那么 r_reg_l'0'); elsif(l_tick'event和l_tick ='1')然后 r_reg_l 万一; 结束过程; 进程(reset,lr_clk,r_tick,data_p,r_reg_r) 开始 如果reset ='1'那么 r_reg_r'0'); elsif(r_tick'event和r_tick ='1')然后 r_reg_r 万一; 结束过程; 任何人都可以告诉我什么是错的以及如何摆脱警告? 谢谢。 老实说 - 你的代码是一场灾难。 将其全部重写为一个同步状态机。 ----------------------------是的,我这样做是为了谋生。 |
|
|
|
嗨,
我收到了警告。 是否会影响我的硬件(使用Spartan 6 FPGA的定制板).. ?? 警告:PhysDesignRules:372 - 门控时钟。 时钟网FSM_LED / Mram__n0114由组合引脚提供。 这不是好的设计实践。 使用CE引脚控制数据加载到触发器中。 谢谢... 问候, vijji |
|
|
|
只有小组成员才能发言,加入小组>>
2380 浏览 7 评论
2797 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2262 浏览 9 评论
3335 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2428 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
756浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
545浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
366浏览 1评论
1963浏览 0评论
682浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 20:53 , Processed in 1.400555 second(s), Total 85, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号