完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,
由于我是初学者,我尽可能多地尝试,看看我是否能够克服编程FPGA的学习曲线。 这次我用VHDL实现了一个二进制计数器。 图书馆IEEE; 使用IEEE.STD_LOGIC_1164.ALL; 使用IEEE.STD_LOGIC_UNSIGNED.ALL; 实体主要是 港口 ( clk,reset:in std_logic; Led0,Led1,Led2,Led3,Led4,Led5,Led6,Led7:out std_logic ); 结束主; 建筑行为主要是 类型状态是( 明确, 计数, 显示 ); signal pr_state,nx_state:state; 信号Clock_Counter:整数; signal Display_Counter:std_logic_vector(7 downto 0); 开始 - 注册 进程(clk,重置) 开始 if(reset ='1')然后 pr_state Clock_Counter'0'); nx_state Clock_Counter nx_state。 锁存器可以从不完整的case或if语句生成。 我们不建议在FPGA / CPLD设计中使用锁存器,因为它们可能会导致时序问题。 警告:Xst:737 - 找到信号的8位锁存器。 锁存器可以从不完整的case或if语句生成。 我们不建议在FPGA / CPLD设计中使用锁存器,因为它们可能会导致时序问题。 我的问题是: 1)为什么“Clock_Counter”和“Display_Counter”被识别为锁存器? 2)为什么我们可以实现触发器D边沿触发而不是电平敏感? 3)有人可以修改我的代码以正常工作吗? 提前致谢 夏甲 |
|
相关推荐
5个回答
|
|
嗨,
您编写的计数器基于pr_state的级别触发。 要推断触发器,您需要在时钟的上升沿写入它们。 库IEEE;使用IEEE.STD_LOGIC_1164.ALL;使用IEEE.STD_LOGIC_UNSIGNED.ALL; entity Main是Port(clk,reset:在std_logic中; Led0,Led1,Led2,Led3,Led4,Led5,Led6,Led7:out std_logic); end Main; 建筑行为主要是 类型状态是(清除,计数,显示); signal pr_state,nx_state:state; 信号Clock_Counter:整数; signal Display_Counter:std_logic_vector(7 downto 0); 开始 - 寄存器进程(clk,reset)如果(reset ='1')则开始,然后pr_state Clock_Counter Display_Counter'0'); nx_state Clock_Counter if(Clock_Counter = 50000000)then - Spartan 3E的时钟为50 MHz Display_Counter nx_state else nx_state end if; 当Display => nx_state结束时; 万一; 结束过程; Led0 Led1 Led2 Led3 Led4 Led5 Led6 Led7 |
|
|
|
嗨,
您编写的计数器基于pr_state的级别触发。 要推断触发器,您需要在时钟的上升沿写入它们。 库IEEE;使用IEEE.STD_LOGIC_1164.ALL;使用IEEE.STD_LOGIC_UNSIGNED.ALL; entity Main是Port(clk,reset:在std_logic中; Led0,Led1,Led2,Led3,Led4,Led5,Led6,Led7:out std_logic); end Main; 建筑行为主要是 类型状态是(清除,计数,显示); signal pr_state,nx_state:state; 信号Clock_Counter:整数; signal Display_Counter:std_logic_vector(7 downto 0); 开始 - 寄存器进程(clk,reset)如果(reset ='1')则开始,然后pr_state Clock_Counter Display_Counter'0'); nx_state Clock_Counter if(Clock_Counter = 50000000)then - Spartan 3E的时钟为50 MHz Display_Counter nx_state else nx_state end if; 当Display => nx_state结束时; 万一; 结束过程; Led0 Led1 Led2 Led3 Led4 Led5 Led6 Led7 |
|
|
|
> 1)为什么“Clock_Counter”和“Display_Counter”被识别为锁存器?
因为那就是你写的。 这是使用两个进程状态机时的典型故障。 在第二个过程中你写了“Display_Counter 3”有人可以修改我的代码才能正常工作吗? 如果您完成修改会更好。 删除第二个进程并将其作为单个进程写入。 ------您是否尝试在Google中输入问题? 如果没有,你应该在发布之前。太多结果? 尝试添加网站:www.xilinx.com |
|
|
|
嗨,
rising_edge(clk)和falling_edge(clk)中的目标合成触发器以获取更多信息,检查以下链接。 http://www.cs.sfu.ca/~ggbaker/reference/std_logic/1164/rising_edge.html 正如我在您的编码风格中看到的那样,您没有在rising_edge(clk_name)或falling_edge(clk_name)中使用Clock_Counter和Display_Counter,这是工具无法为您的目标生成触发器的原因。 谢谢, Anusheel -------------------------------------------------- --------------------------------------------请注意 - 请注明 如果提供的信息有用,请回答“接受为解决方案”。给予您认为有用并回复导向的帖子。感谢K-- -------------------------------------------------- --------------------- |
|
|
|
嗨,
您可以从本用户指南中找到FSM编码威廉希尔官方网站 ,(在FSM HDL编码威廉希尔官方网站 下,页码:199) http://www.xilinx.com/support/documentation/sw_manuals/xilinx14_7/xst.pdf |
|
|
|
只有小组成员才能发言,加入小组>>
2511 浏览 7 评论
2880 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2337 浏览 9 评论
3430 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2517 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
2620浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
670浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
534浏览 1评论
821浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-6 02:44 , Processed in 1.276373 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191