下面为简单的描述下问题: moudle a( assign rd_ack = state == S_READ; assign rd_data = rd_ack ? sdram_dq : 16'b0; endmodule 用signaltrap 抓信号。rd_ack 为1时。sdram_dq中抓到数据正确。 |
|
相关推荐
1个回答
|
|
从您提供的代码和描述来看,问题可能出在信号赋值的顺序上。在Verilog中,信号赋值的顺序可能会影响最终的结果。在您的代码中,`rd_ack` 和 `rd_data` 是同时被赋值的,这可能导致竞争条件(race condition)。
为了解决这个问题,您可以尝试以下方法: 1. 使用非阻塞赋值(non-blocking assignment)来避免竞争条件。非阻塞赋值使用 `<=` 而不是 `=`,这将确保信号在当前仿真时间步的末尾被赋值。 ```verilog always @(*) begin assign rd_ack = state == S_READ; rd_data <= rd_ack ? sdram_dq : 16'b0; end ``` 2. 使用一个额外的信号来存储 `rd_ack` 的值,然后在下一个仿真时间步中使用这个值来更新 `rd_data`。 ```verilog reg rd_ack_reg; always @(*) begin rd_ack_reg = state == S_READ; end always @(*) begin rd_data = rd_ack_reg ? sdram_dq : 16'b0; end ``` 3. 如果可能的话,尝试重新组织代码逻辑,以避免同时更新 `rd_ack` 和 `rd_data`。 请注意,这些解决方案可能需要根据您的具体代码和需求进行调整。希望这些建议能帮助您解决问题。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求用过的大佬们给一个AG576SL100这块CPLD的详细开发流程
请问如何用Verilog实现将ascaii码数值字符串转换成定点数?
通过FPGA实现正弦波AD采集,只得到的一半波形
本人研一,做DFB激光稳频,目前只差FPGA ADC DAC做一个反馈系统
赛灵思低温失效的原因,有没有别的方法或者一些见解?
求大佬指点,此时此刻我应该用赛灵思7010或者7020哪个型号的芯片合适呢?
MAX3590 RS422 芯片 RO输出 起初的空闲时刻为低电平 怎么检测起始位
FPGA在视频编码方面的应用有大佬做过吗?
xilinx FPGA+Sony LVDS接口图像传感器,已设计出网口输出,现想设计USB3.0输出,有没有什么解决方案?
在FPGA设计中是否可以应用ChatGPT生成想要的程序呢
扫一扫,分享给好友
电子发烧友网
电子发烧友论坛
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191