完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我一直在研究一个从DDR3内存读取数据并通过以太网发送数据用于PC matlab数据捕获的系统。
我有两台状态机。 1个状态机只有3个状态。 写入,读取和监听状态。 读状态内部是第二状态机。 这是我遇到问题的地方。 状态机等待允许状态机运行所有状态的信号。 如果信号未被断言,状态机将不会移动到下一个状态。 这是代码的零状态:如果buff_state =“0000”则buff_wr_en如果rising_edge(next_data_sync)则buff_state结束if; 我有Chipscoped next_data_sync并且没有找到0到1的转换,状态机仍然进入下一个状态。 其他时候,我将编译代码,状态机将按预期工作。 我正在努力提高我的成功率,因为现在我必须使用相同的代码编译2到3次,然后才能获得一个有效的版本。 以前,我发布了这个问题,发现next_data_sync没有同步。 实际上它之前被称为next_data_request。 现在我使用以下代码来同步信号: 进程(mem_ui_clk_200)beginif rising_edge(mem_ui_clk_200)然后synch_reg结束if;结束进程; next_data_sync |
|
相关推荐
6个回答
|
|
状态机中的状态机听起来很混乱(虽然技术上可行,但我想。我想知道合成器如何处理......?)。
为什么2个FSM之间没有握手? 无论如何,这条线向我跳出来: 如果rising_edge(next_data_sync)那么 您不应该在非时钟信号上使用rising_edge控制字。 这个过程存在于INSIDE过程而你没有报告任何综合错误的事实让我想知道这个过程是否是同步的。 如果没有,为什么不呢? 如果next_data_sync与相关时钟同步并且您的进程是同步的,那么您只需要: 如果next_data_sync ='1'那么 继续。 我进一步猜测你正在使用2进程FSM模型。 使用单个同步FSM可能会获得更好的结果。 问候, 霍华德 ----------“我们必须学会做的事情,我们从实践中学习。” - 亚里士多德 |
|
|
|
您的ChipScope时钟有多快?
这很可能是你在ChipScope中缺少的上升沿 由于毛刺太快而无法采样,实际上已经发生了。 不幸的是ChipScope没有 毛刺捕获模式。 霍华德可能会建议使用同步状态机 但是,问题的最佳解决方案。 - Gabor - Gabor |
|
|
|
谢谢您的回复!
我使用与包含Chipscope状态机的进程相同的时钟。 状态机中的状态机如下: 如果buff_state =“0000”则buff_wr_en如果rising_edge(next_data_request)则buff_state结束if; elsif buff_state =“0001”和app_rd_data_valid ='1'然后如果app_rd_data_end = addr_int(2)则buff_data_in - buff_data_in(255 downto 27)'0'); buff_wr_en buff_state结束if; elsif buff_state =“0010”然后buff_wr_en buff_state addr_int app_addr_int else buff_state end if; 我知道这不是编码状态机的最佳方法,但它适用于成功代码中的所有其他编译结果。 我不确定这是1还是2进程状态机。 |
|
|
|
谢谢!
我完全同意,我的老板和我同意rising_edge声明似乎是可疑的。 我在下面发布了我的状态机的代码。 我确实将next_data_sync信号与进程时钟同步。 我将尝试使用next_data_sync =“1”。 如果这不起作用,我认为两个过程FSM的握手是一个好主意。 我之前也考虑过这种方法。 我非常感谢你的帮助 马特 |
|
|
|
代码高于*抱歉
|
|
|
|
时钟在哪里?
对一个信号进行分配,然后在没有时钟的同一过程中使用该信号听起来像是一个灾难的组合配方给我。 显然,你已经写了一个单一的过程,但它看起来并不像一个“经典的”FSM(实际上甚至是2个) 也许更像下面的内容(伪代码)会有益: MY_FSM:进程(时钟) 开始 如果rising_edge(时钟)那么 if(reset ='1')然后 - 如果你有一个复位条件 - 重置逻辑 其他 case buff_state是 当(条件1)=>时 - 做逻辑,例如, buff_wr_en如果next_data_request ='1'则buff_state结束if; 当(条件2)=>时 ...等 结束案例; 万一; 万一; 结束过程MY_FSM; 我认为你可以通过写得好,单一的FSM实现你想要的。 问候, 霍华德 ----------“我们必须学会做的事情,我们从实践中学习。” - 亚里士多德 |
|
|
|
只有小组成员才能发言,加入小组>>
2361 浏览 7 评论
2780 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2247 浏览 9 评论
3324 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2414 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
730浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
524浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
336浏览 1评论
742浏览 0评论
1935浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-8 13:35 , Processed in 1.313615 second(s), Total 89, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号