集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2109|回复: 1

请问为什么会有这样的问题,在寄存器前面加一个线网再赋值就要慢一个周期

[复制链接]
HDL 发表于 2010-6-26 02:20:43 | 显示全部楼层 |阅读模式
本帖最后由 fpgaw 于 2010-7-18 13:44 编辑

比如有这样一段verilog 代码
module zz(clk,data)
input clk;
input[2:0] data;

reg[2:0] state1, state2;
wire[2:0] bus;

assign bus=data;

always@(posedge clk)
  if(data==3'b010)
  begin
   state1<=data;//比如data 也是在clk的上跳延变化的并且序列为001, 010, 011这样
   state2<=bus;//这样在modsim中的结果就是state1=010, state2=001.
  end
endmodule
这里的assign不是只是一个组合逻辑么,为什么会出现state2的结果和state1不同呢?
interig 发表于 2010-6-26 02:59:26 | 显示全部楼层
不可能,当上升沿采样到data=3'b010时,实际上data已经稳定在010差不多一个周期了,这时候bus肯定等于010了,绝对不可能state2=3'b001.
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 00:16 , Processed in 0.061453 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表